Comparison with PVLIB MATLAB¶
PVLIB was originally developed as a library for MATLAB at Sandia National Lab, and Sandia remains the official maintainer of the MATLAB library. Sandia supported the initial Python port and then released further project maintenance and development to the pvlib-python maintainers.
The pvlib-python maintainers collaborate with the PVLIB MATLAB maintainers but operate independently. We’d all like to keep the core functionality of the Python and MATLAB projects synchronized, but this will require the efforts of the larger pvlib-python community, not just the maintainers. Therefore, do not expect feature parity between the libaries, only similarity.
The PV_LIB Matlab help webpage is a good reference for this comparison.
See pvlib-python GitHub issue #2 for a list of functions missing from the Python version of the library.
pvlib-python uses git version control to track all changes to the code. A summary of changes is included in the whatsnew file for each release. PVLIB MATLAB documents changes in Changelog.docx
pvlib-python has a comprehensive test suite, whereas PVLIB MATLAB does not have a test suite at all. Specifically, pvlib-python
Uses TravisCI for automated testing on Linux.
Uses Appveyor for automated testing on Windows.
Uses Coveralls to measure test coverage.
Using readthedocs for automated documentation building and hosting.
pvl_from module/function names.
Consolidated similar functions into topical modules. For example, functions from
pvl_clearsky_haurwitz.mhave been consolidated into
PVLIB MATLAB uses
locationstructs as the input to some functions. pvlib-python just uses the lat, lon, etc. as inputs to the functions. Furthermore, pvlib-python replaces the structs with classes, and these classes have methods, such as
get_solarposition(), that automatically reference the appropriate data. See Modeling paradigms for more information.
Very few tests of input validitity exist in the Python code. We believe that the vast majority of these tests were not necessary. We also make use of Python’s robust support for raising and catching exceptions.
Removed unnecessary and sometimes undesired behavior such as setting maximum zenith=90 or airmass=0. Instead, we make extensive use of
nanvalues in returned arrays.
Implemented the NREL solar position calculation algorithm. Also added a PyEphem option to solar position calculations.
Specify time zones using a string from the standard IANA Time Zone Database naming conventions or using a pytz.timezone instead of an integer GMT offset.
clearsky.ineichensupports interpolating monthly Linke Turbidities to daily resolution.
Instead of requiring effective irradiance as an input,
pvsystem.sapmcalculates and returns it based on input POA irradiance, AM, and AOI.
pvlib-python does not come with as much example data.
pvlib-python does not currently implement as many algorithms as PVLIB MATLAB.
Using Sphinx to build the documentation, including dynamically created inline examples.
Additional Jupyter tutorials in