.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "generated/gallery/irradiance-quality/clearsky-limits-irradiance.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_generated_gallery_irradiance-quality_clearsky-limits-irradiance.py: Clearsky Limits for Irradiance Data =================================== Checking the clearsky limits of irradiance data. .. GENERATED FROM PYTHON SOURCE LINES 9-15 Identifying and filtering out invalid irradiance data is a useful way to reduce noise during analysis. In this example, we use :py:func:`pvanalytics.quality.irradiance.clearsky_limits` to identify irradiance values that do not exceed a limit based on a clear-sky model. For this example we will use GHI data from the RMIS weather system located on the NREL campus in CO. .. GENERATED FROM PYTHON SOURCE LINES 15-24 .. code-block:: default import pvanalytics from pvanalytics.quality.irradiance import clearsky_limits from pvanalytics.features.daytime import power_or_irradiance import pvlib import matplotlib.pyplot as plt import pandas as pd import pathlib .. GENERATED FROM PYTHON SOURCE LINES 25-28 First, read in data from the RMIS NREL system. This data set contains 5-minute right-aligned POA, GHI, DNI, DHI, and GNI measurements, but only the GHI is relevant here. .. GENERATED FROM PYTHON SOURCE LINES 28-37 .. code-block:: default pvanalytics_dir = pathlib.Path(pvanalytics.__file__).parent rmis_file = pvanalytics_dir / 'data' / 'irradiance_RMIS_NREL.csv' data = pd.read_csv(rmis_file, index_col=0, parse_dates=True) freq = '5T' # Make the datetime index tz-aware. data.index = data.index.tz_localize("Etc/GMT+7") .. GENERATED FROM PYTHON SOURCE LINES 38-42 Now model clear-sky irradiance for the location and times of the measured data. You can do this using :py:meth:`pvlib.location.Location.get_clearsky`, using the lat-long coordinates associated the RMIS NREL system. .. GENERATED FROM PYTHON SOURCE LINES 42-46 .. code-block:: default location = pvlib.location.Location(39.7407, -105.1686) clearsky = location.get_clearsky(data.index) .. GENERATED FROM PYTHON SOURCE LINES 47-54 Use :py:func:`pvanalytics.quality.irradiance.clearsky_limits`. Here, we check GHI data in field 'irradiance_ghi__7981'. :py:func:`pvanalytics.quality.irradiance.clearsky_limits` returns a mask that identifies data that falls between lower and upper limits. The defaults (used here) are upper bound of 110% of clear-sky GHI, and no lower bound. .. GENERATED FROM PYTHON SOURCE LINES 54-59 .. code-block:: default clearsky_limit_mask = clearsky_limits(data['irradiance_ghi__7981'], clearsky['ghi']) .. GENERATED FROM PYTHON SOURCE LINES 60-63 Mask nighttime values in the GHI time series using the :py:func:`pvanalytics.features.daytime.power_or_irradiance` function. We will then remove nighttime values from the GHI time series. .. GENERATED FROM PYTHON SOURCE LINES 63-67 .. code-block:: default day_night_mask = power_or_irradiance(series=data['irradiance_ghi__7981'], freq=freq) .. GENERATED FROM PYTHON SOURCE LINES 68-74 Plot the 'irradiance_ghi__7981' data stream and its associated clearsky GHI data stream. Mask the GHI time series by its clearsky_limit_mask for daytime periods. Please note that a simple Ineichen model with static monthly turbidities isn't always accurate, as in this case. Other models that may provide better clear-sky estimates include McClear or PSM3. .. GENERATED FROM PYTHON SOURCE LINES 74-85 .. code-block:: default data['irradiance_ghi__7981'].plot() clearsky['ghi'].plot() data.loc[clearsky_limit_mask & day_night_mask][ 'irradiance_ghi__7981'].plot(ls='', marker='.') plt.legend(labels=["RMIS GHI", "Clearsky GHI", "Under Clearsky Limit"], loc="upper left") plt.xlabel("Date") plt.ylabel("GHI (W/m^2)") plt.tight_layout() plt.show() .. image-sg:: /generated/gallery/irradiance-quality/images/sphx_glr_clearsky-limits-irradiance_001.png :alt: clearsky limits irradiance :srcset: /generated/gallery/irradiance-quality/images/sphx_glr_clearsky-limits-irradiance_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 0.548 seconds) .. _sphx_glr_download_generated_gallery_irradiance-quality_clearsky-limits-irradiance.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: clearsky-limits-irradiance.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: clearsky-limits-irradiance.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_