rdtools 2.2.0b1__tar.gz → 3.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rdtools-3.0.0/PKG-INFO +83 -0
- {rdtools-2.2.0b1 → rdtools-3.0.0}/README.md +19 -16
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools/__init__.py +14 -6
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools/_version.py +4 -4
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools/aggregation.py +2 -2
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools/analysis_chains.py +602 -311
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools/availability.py +37 -24
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools/bootstrap.py +8 -3
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools/clearsky_temperature.py +10 -4
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools/degradation.py +14 -26
- rdtools-3.0.0/rdtools/filtering.py +1109 -0
- rdtools-3.0.0/rdtools/models/xgboost_clipping_model.json +1 -0
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools/normalization.py +16 -151
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools/plotting.py +6 -15
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools/soiling.py +38 -22
- rdtools-3.0.0/rdtools/utilities.py +79 -0
- rdtools-3.0.0/rdtools.egg-info/PKG-INFO +83 -0
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools.egg-info/SOURCES.txt +1 -0
- rdtools-3.0.0/rdtools.egg-info/requires.txt +42 -0
- {rdtools-2.2.0b1 → rdtools-3.0.0}/setup.cfg +1 -1
- {rdtools-2.2.0b1 → rdtools-3.0.0}/setup.py +39 -37
- {rdtools-2.2.0b1 → rdtools-3.0.0}/versioneer.py +795 -340
- rdtools-2.2.0b1/PKG-INFO +0 -35
- rdtools-2.2.0b1/rdtools/filtering.py +0 -745
- rdtools-2.2.0b1/rdtools/models/xgboost_clipping_model.json +0 -1
- rdtools-2.2.0b1/rdtools.egg-info/PKG-INFO +0 -35
- rdtools-2.2.0b1/rdtools.egg-info/requires.txt +0 -40
- {rdtools-2.2.0b1 → rdtools-3.0.0}/LICENSE +0 -0
- {rdtools-2.2.0b1 → rdtools-3.0.0}/MANIFEST.in +0 -0
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools/_deprecation.py +0 -0
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools/data/temperature.hdf5 +0 -0
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools.egg-info/dependency_links.txt +0 -0
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools.egg-info/not-zip-safe +0 -0
- {rdtools-2.2.0b1 → rdtools-3.0.0}/rdtools.egg-info/top_level.txt +0 -0
rdtools-3.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: rdtools
|
|
3
|
+
Version: 3.0.0
|
|
4
|
+
Summary: Functions for reproducible timeseries analysis of photovoltaic systems.
|
|
5
|
+
Home-page: https://github.com/NREL/rdtools
|
|
6
|
+
Author: Rdtools Python Developers
|
|
7
|
+
Author-email: RdTools@nrel.gov
|
|
8
|
+
Maintainer-email: RdTools@nrel.gov
|
|
9
|
+
License: MIT
|
|
10
|
+
Project-URL: Bug Tracker, https://github.com/NREL/rdtools/issues
|
|
11
|
+
Project-URL: Documentation, https://rdtools.readthedocs.io/
|
|
12
|
+
Project-URL: Source Code, https://github.com/NREL/rdtools
|
|
13
|
+
Keywords: photovoltaic,solar,analytics,analysis,performance,degradation,PV
|
|
14
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Intended Audience :: Science/Research
|
|
18
|
+
Classifier: Programming Language :: Python
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Topic :: Scientific/Engineering
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: matplotlib>=3.5.3
|
|
27
|
+
Requires-Dist: numpy>=1.22.4
|
|
28
|
+
Requires-Dist: pandas>=1.4.4
|
|
29
|
+
Requires-Dist: statsmodels>=0.13.5
|
|
30
|
+
Requires-Dist: scipy>=1.8.1
|
|
31
|
+
Requires-Dist: h5py>=3.7.0
|
|
32
|
+
Requires-Dist: plotly>=4.0.0
|
|
33
|
+
Requires-Dist: xgboost>=1.6.0
|
|
34
|
+
Requires-Dist: pvlib<0.12.0,>=0.11.0
|
|
35
|
+
Requires-Dist: scikit-learn<1.6.0,>=1.1.3
|
|
36
|
+
Requires-Dist: arch>=5.0
|
|
37
|
+
Requires-Dist: filterpy>=1.4.2
|
|
38
|
+
Provides-Extra: doc
|
|
39
|
+
Requires-Dist: sphinx==7.4.7; extra == "doc"
|
|
40
|
+
Requires-Dist: nbsphinx==0.9.5; extra == "doc"
|
|
41
|
+
Requires-Dist: nbsphinx-link==1.3.1; extra == "doc"
|
|
42
|
+
Requires-Dist: sphinx_rtd_theme==3.0.1; extra == "doc"
|
|
43
|
+
Requires-Dist: ipython; extra == "doc"
|
|
44
|
+
Requires-Dist: sphinx-gallery==0.18.0; extra == "doc"
|
|
45
|
+
Provides-Extra: test
|
|
46
|
+
Requires-Dist: pytest>=3.6.3; extra == "test"
|
|
47
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
48
|
+
Requires-Dist: coverage; extra == "test"
|
|
49
|
+
Requires-Dist: flake8; extra == "test"
|
|
50
|
+
Requires-Dist: nbval<=0.9.6; extra == "test"
|
|
51
|
+
Requires-Dist: pytest-mock; extra == "test"
|
|
52
|
+
Provides-Extra: all
|
|
53
|
+
Requires-Dist: coverage; extra == "all"
|
|
54
|
+
Requires-Dist: flake8; extra == "all"
|
|
55
|
+
Requires-Dist: ipython; extra == "all"
|
|
56
|
+
Requires-Dist: nbsphinx-link==1.3.1; extra == "all"
|
|
57
|
+
Requires-Dist: nbsphinx==0.9.5; extra == "all"
|
|
58
|
+
Requires-Dist: nbval<=0.9.6; extra == "all"
|
|
59
|
+
Requires-Dist: pytest>=3.6.3; extra == "all"
|
|
60
|
+
Requires-Dist: pytest-cov; extra == "all"
|
|
61
|
+
Requires-Dist: pytest-mock; extra == "all"
|
|
62
|
+
Requires-Dist: sphinx-gallery==0.18.0; extra == "all"
|
|
63
|
+
Requires-Dist: sphinx==7.4.7; extra == "all"
|
|
64
|
+
Requires-Dist: sphinx_rtd_theme==3.0.1; extra == "all"
|
|
65
|
+
Dynamic: author
|
|
66
|
+
Dynamic: author-email
|
|
67
|
+
Dynamic: classifier
|
|
68
|
+
Dynamic: description
|
|
69
|
+
Dynamic: home-page
|
|
70
|
+
Dynamic: keywords
|
|
71
|
+
Dynamic: license
|
|
72
|
+
Dynamic: maintainer-email
|
|
73
|
+
Dynamic: project-url
|
|
74
|
+
Dynamic: provides-extra
|
|
75
|
+
Dynamic: requires-dist
|
|
76
|
+
Dynamic: summary
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
RdTools is an open-source library to support reproducible technical analysis of
|
|
80
|
+
PV time series data. The library aims to provide best practice analysis
|
|
81
|
+
routines along with the building blocks for users to tailor their own analyses.
|
|
82
|
+
|
|
83
|
+
Source code: https://github.com/NREL/rdtools
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
<img src="./docs/sphinx/source/_images/logo_horizontal_highres.png" width="500" alt="RdTools logo"/>
|
|
2
2
|
|
|
3
|
-
Master branch:
|
|
4
|
-
[](https://github.com/NREL/rdtools/actions?query=branch%3Amaster)
|
|
3
|
+
Master branch:
|
|
4
|
+
[](https://github.com/NREL/rdtools/actions?query=branch%3Amaster)
|
|
5
5
|
|
|
6
|
-
Development branch:
|
|
6
|
+
Development branch:
|
|
7
7
|
[](https://github.com/NREL/rdtools/actions?query=branch%3Adevelopment)
|
|
8
8
|
|
|
9
|
+
Code coverage:
|
|
10
|
+
[](https://codecov.io/gh/NREL/rdtools)
|
|
11
|
+
|
|
9
12
|
RdTools is an open-source library to support reproducible technical analysis of
|
|
10
13
|
time series data from photovoltaic energy systems. The library aims to provide
|
|
11
14
|
best practice analysis routines along with the building blocks for users to
|
|
12
|
-
tailor their own analyses.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
tailor their own analyses. Current applications include the evaluation of PV
|
|
16
|
+
production over several years to obtain rates of performance degradation and
|
|
17
|
+
soiling loss. RdTools can handle both high frequency (hourly or better) or low
|
|
18
|
+
frequency (daily, weekly, etc.) datasets. Best results are obtained with higher
|
|
19
|
+
frequency data.
|
|
17
20
|
|
|
18
21
|
RdTools can be installed automatically into Python from PyPI using the
|
|
19
22
|
command line:
|
|
@@ -24,17 +27,17 @@ pip install rdtools
|
|
|
24
27
|
|
|
25
28
|
For API documentation and full examples, please see the [documentation](https://rdtools.readthedocs.io).
|
|
26
29
|
|
|
27
|
-
RdTools currently is tested on Python 3.
|
|
30
|
+
RdTools currently is tested on Python 3.9+.
|
|
28
31
|
|
|
29
32
|
## Citing RdTools
|
|
30
33
|
|
|
31
34
|
To cite RdTools, please use the following along with the version number
|
|
32
35
|
and the specific DOI coresponding to that version from [Zenodo](https://doi.org/10.5281/zenodo.1210316):
|
|
33
36
|
|
|
34
|
-
- Michael G. Deceglie,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
RdTools, version {insert version},
|
|
37
|
+
- Michael G. Deceglie, Kevin Anderson, Adam Shinn, Ambarish Nag, Mark Mikofski,
|
|
38
|
+
Martin Springer, Jiyang Yan, Kirsten Perry, Sandra Villamar, Will Vining,
|
|
39
|
+
Gregory Kimball, Daniel Ruth, Noah Moyer, Quyen Nguyen, Dirk Jordan,
|
|
40
|
+
Matthew Muller, and Chris Deline, RdTools, version {insert version}, Computer Software,
|
|
38
41
|
https://github.com/NREL/rdtools. DOI:{insert DOI}
|
|
39
42
|
|
|
40
43
|
The underlying workflow of RdTools has been published in several places.
|
|
@@ -57,11 +60,11 @@ appropriate:
|
|
|
57
60
|
Detection Techniques in AC Power Time Series," 2021 IEEE 48th Photovoltaic
|
|
58
61
|
Specialists Conference (PVSC), pp. 1638-1643 2021, DOI: [10.1109/PVSC43889.2021.9518733](https://doi.org/10.1109/PVSC43889.2021.9518733).
|
|
59
62
|
|
|
60
|
-
|
|
63
|
+
|
|
61
64
|
## References
|
|
62
65
|
The clear sky temperature calculation, `clearsky_temperature.get_clearsky_tamb()`, uses data
|
|
63
|
-
from images created by Jesse Allen, NASA’s Earth Observatory using data courtesy of the MODIS Land Group.
|
|
64
|
-
https://neo.sci.gsfc.nasa.gov/view.php?datasetId=MOD_LSTD_CLIM_M
|
|
66
|
+
from images created by Jesse Allen, NASA’s Earth Observatory using data courtesy of the MODIS Land Group.
|
|
67
|
+
https://neo.sci.gsfc.nasa.gov/view.php?datasetId=MOD_LSTD_CLIM_M
|
|
65
68
|
https://neo.sci.gsfc.nasa.gov/view.php?datasetId=MOD_LSTN_CLIM_M
|
|
66
69
|
|
|
67
70
|
Other useful references which may also be consulted for degradation rate methodology include:
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
from rdtools.normalization import normalize_with_sapm
|
|
2
1
|
from rdtools.normalization import normalize_with_pvwatts
|
|
3
2
|
from rdtools.normalization import irradiance_rescale
|
|
4
3
|
from rdtools.normalization import energy_from_power
|
|
@@ -9,7 +8,9 @@ from rdtools.degradation import degradation_classical_decomposition
|
|
|
9
8
|
from rdtools.degradation import degradation_year_on_year
|
|
10
9
|
from rdtools.aggregation import aggregation_insol
|
|
11
10
|
from rdtools.clearsky_temperature import get_clearsky_tamb
|
|
11
|
+
from rdtools.filtering import clearsky_filter
|
|
12
12
|
from rdtools.filtering import csi_filter
|
|
13
|
+
from rdtools.filtering import pvlib_clearsky_filter
|
|
13
14
|
from rdtools.filtering import poa_filter
|
|
14
15
|
from rdtools.filtering import tcell_filter
|
|
15
16
|
from rdtools.filtering import clip_filter
|
|
@@ -17,6 +18,11 @@ from rdtools.filtering import quantile_clip_filter
|
|
|
17
18
|
from rdtools.filtering import logic_clip_filter
|
|
18
19
|
from rdtools.filtering import xgboost_clip_filter
|
|
19
20
|
from rdtools.filtering import normalized_filter
|
|
21
|
+
from rdtools.filtering import two_way_window_filter
|
|
22
|
+
from rdtools.filtering import insolation_filter
|
|
23
|
+
from rdtools.filtering import hampel_filter
|
|
24
|
+
from rdtools.filtering import hour_angle_filter
|
|
25
|
+
from rdtools.filtering import directional_tukey_filter
|
|
20
26
|
# from rdtools.soiling import soiling_srr
|
|
21
27
|
# from rdtools.soiling import soiling_cods
|
|
22
28
|
# from rdtools.soiling import monthly_soiling_rates
|
|
@@ -28,9 +34,11 @@ from rdtools.plotting import degradation_timeseries_plot
|
|
|
28
34
|
# from rdtools.plotting import soiling_monte_carlo_plot
|
|
29
35
|
# from rdtools.plotting import soiling_interval_plot
|
|
30
36
|
# from rdtools.plotting import soiling_rate_histogram
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
from rdtools.plotting import availability_summary_plots
|
|
38
|
+
from rdtools.availability import AvailabilityAnalysis
|
|
39
|
+
from rdtools.utilities import robust_quantile
|
|
40
|
+
from rdtools.utilities import robust_median
|
|
41
|
+
from rdtools.utilities import robust_mean
|
|
33
42
|
|
|
34
|
-
from .
|
|
35
|
-
__version__ = get_versions()['version']
|
|
36
|
-
del get_versions
|
|
43
|
+
from . import _version
|
|
44
|
+
__version__ = _version.get_versions()['version']
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
# This file was generated by 'versioneer.py' (0.
|
|
2
|
+
# This file was generated by 'versioneer.py' (0.29) from
|
|
3
3
|
# revision-control system data, or from the parent directory name of an
|
|
4
4
|
# unpacked source archive. Distribution tarballs contain a pre-generated copy
|
|
5
5
|
# of this file.
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "
|
|
11
|
+
"date": "2025-01-22T17:42:14-0700",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "
|
|
14
|
+
"full-revisionid": "569177fd18992f4ffe0133c5ce2dbcee1833c1f0",
|
|
15
|
+
"version": "3.0.0"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -22,7 +22,7 @@ def aggregation_insol(energy_normalized, insolation, frequency='D'):
|
|
|
22
22
|
aggregated : pandas.Series
|
|
23
23
|
Insolation weighted average, aggregated at frequency
|
|
24
24
|
'''
|
|
25
|
-
aggregated = (insolation * energy_normalized).resample(frequency).sum() / \
|
|
26
|
-
insolation.resample(frequency).sum()
|
|
25
|
+
aggregated = (insolation * energy_normalized).resample(frequency, origin='start_day').sum() / \
|
|
26
|
+
insolation.resample(frequency, origin='start_day').sum()
|
|
27
27
|
|
|
28
28
|
return aggregated
|