graph LR
File_Based_Data_Ingestors["File-Based Data Ingestors"]
API_Based_Data_Fetchers["API-Based Data Fetchers"]
Internal_File_Parsing_Logic["Internal File Parsing Logic"]
Internal_API_Communication_Logic["Internal API Communication Logic"]
Shared_Data_Transformation_Utilities["Shared Data Transformation Utilities"]
Error_Handling_and_Validation["Error Handling and Validation"]
File_Based_Data_Ingestors -- "delegates to" --> Internal_File_Parsing_Logic
File_Based_Data_Ingestors -- "sends data to" --> Shared_Data_Transformation_Utilities
API_Based_Data_Fetchers -- "delegates to" --> Internal_API_Communication_Logic
API_Based_Data_Fetchers -- "sends data to" --> Shared_Data_Transformation_Utilities
Internal_File_Parsing_Logic -- "sends data to" --> Shared_Data_Transformation_Utilities
Internal_File_Parsing_Logic -- "interacts with" --> Error_Handling_and_Validation
Internal_API_Communication_Logic -- "sends data to" --> Shared_Data_Transformation_Utilities
Internal_API_Communication_Logic -- "interacts with" --> Error_Handling_and_Validation
Error_Handling_and_Validation -- "validates" --> Internal_File_Parsing_Logic
Error_Handling_and_Validation -- "validates" --> Internal_API_Communication_Logic
The Data Input/Output (IO) subsystem is a critical part of pvlib-python, responsible for ingesting diverse meteorological and PV system data. It adheres to the project's architectural bias towards a modular, functional design, providing clear interfaces for data acquisition while encapsulating the complexities of various data formats and external APIs.
This component aggregates the functionality for reading and initially structuring meteorological and PV system data from various local file formats, such as EnergyPlus Weather (EPW), Typical Meteorological Year (TMY), Photovoltaic Array Network Operations Data (PANOND), and file-based aspects of Baseline Surface Radiation Network (BSRN) and Measurement and Instrumentation Data Center (MIDC) data. It acts as a facade for specific file parsing logic.
Related Classes/Methods:
This component is responsible for retrieving meteorological and PV system data from external web services and APIs, including Applied Climate Information System (ACIS), Physical Solar Model 3 (PSM3), Physical Solar Model 4 (PSM4), Photovoltaic Geographical Information System (PVGIS), Solcast, and API-based aspects of BSRN and MIDC. It abstracts the complexities of network communication and API interactions.
Related Classes/Methods:
pvlib.iotools.acispvlib.iotools.psm3pvlib.iotools.psm4pvlib.iotools.pvgispvlib.iotools.solcastpvlib.iotools.bsrnpvlib.iotools.midc
This foundational component provides the core routines for parsing raw data from various file formats into an initial structured format, typically pandas.DataFrame objects. It handles the low-level details of file reading and data extraction.
Related Classes/Methods:
This component manages the low-level HTTP requests, API authentication, and communication protocols required to interact with external web services. It ensures reliable data retrieval from remote sources.
Related Classes/Methods:
This component standardizes the ingested data, performing crucial transformations such as data type conversions, time zone handling, column renaming, and ensuring the data conforms to pvlib's internal pandas.DataFrame conventions. This prepares the data for subsequent processing by core PV models.
Related Classes/Methods:
This component provides robust mechanisms for identifying and reporting issues such as malformed input files, API errors, or data quality problems. It includes validation routines to ensure the integrity and usability of the ingested data.
Related Classes/Methods: