.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "generated/gallery/qcrad-consistency-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_qcrad-consistency-irradiance.py: QCrad Consistency for Irradiance Data ===================================== Check consistency of GHI, DHI and DNI using QCRad criteria. .. GENERATED FROM PYTHON SOURCE LINES 9-16 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.check_irradiance_consistency_qcrad` to check the consistency of GHI, DHI and DNI data using QCRad criteria. For this example we will use data from the RMIS weather system located on the NREL campus in Colorado, USA. .. GENERATED FROM PYTHON SOURCE LINES 16-25 .. code-block:: default import pvanalytics from pvanalytics.quality.irradiance import check_irradiance_consistency_qcrad import pvlib import matplotlib.pyplot as plt import pandas as pd import pathlib .. GENERATED FROM PYTHON SOURCE LINES 26-29 First, read in data from the RMIS NREL system. This data set contains 5-minute right-aligned data. It includes POA, GHI, DNI, DHI, and GNI measurements. .. GENERATED FROM PYTHON SOURCE LINES 29-34 .. 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) .. GENERATED FROM PYTHON SOURCE LINES 35-38 Now generate solar zenith estimates for the location, based on the data's time zone and site latitude-longitude coordinates. .. GENERATED FROM PYTHON SOURCE LINES 38-46 .. code-block:: default latitude = 39.742 longitude = -105.18 time_zone = "Etc/GMT+7" data = data.tz_localize(time_zone) solar_position = pvlib.solarposition.get_solarposition(data.index, latitude, longitude) .. GENERATED FROM PYTHON SOURCE LINES 47-50 Use :py:func:`pvanalytics.quality.irradiance.check_irradiance_consistency_qcrad` to generate the QCRAD consistency mask. .. GENERATED FROM PYTHON SOURCE LINES 50-58 .. code-block:: default qcrad_consistency_mask = check_irradiance_consistency_qcrad( solar_zenith=solar_position['zenith'], ghi=data['irradiance_ghi__7981'], dhi=data['irradiance_dhi__7983'], dni=data['irradiance_dni__7982']) .. GENERATED FROM PYTHON SOURCE LINES 59-61 Plot the GHI, DHI, and DNI data streams with the QCRAD consistency mask overlay. This mask applies to all 3 data streams. .. GENERATED FROM PYTHON SOURCE LINES 61-73 .. code-block:: default fig = data[['irradiance_ghi__7981', 'irradiance_dhi__7983', 'irradiance_dni__7982']].plot() # Highlight periods where the QCRAD consistency mask is True fig.fill_between(data.index, fig.get_ylim()[0], fig.get_ylim()[1], where=qcrad_consistency_mask[0], alpha=0.4) fig.legend(labels=["RMIS GHI", "RMIS DHI", "RMIS DNI", "QCRAD Consistent"], loc="upper center") plt.xlabel("Date") plt.ylabel("Irradiance (W/m^2)") plt.tight_layout() plt.show() .. image-sg:: /generated/gallery/images/sphx_glr_qcrad-consistency-irradiance_001.png :alt: qcrad consistency irradiance :srcset: /generated/gallery/images/sphx_glr_qcrad-consistency-irradiance_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 74-77 Plot the GHI, DHI, and DNI data streams with the diffuse ratio limit mask overlay. This mask is true when the DHI / GHI ratio passes the limit test. .. GENERATED FROM PYTHON SOURCE LINES 77-89 .. code-block:: default fig = data[['irradiance_ghi__7981', 'irradiance_dhi__7983', 'irradiance_dni__7982']].plot() # Highlight periods where the GHI ratio passes the limit test fig.fill_between(data.index, fig.get_ylim()[0], fig.get_ylim()[1], where=qcrad_consistency_mask[1], alpha=0.4) fig.legend(labels=["RMIS GHI", "RMIS DHI", "RMIS DNI", "Within Diffuse Ratio Limit"], loc="upper center") plt.xlabel("Date") plt.ylabel("Irradiance (W/m^2)") plt.tight_layout() plt.show() .. image-sg:: /generated/gallery/images/sphx_glr_qcrad-consistency-irradiance_002.png :alt: qcrad consistency irradiance :srcset: /generated/gallery/images/sphx_glr_qcrad-consistency-irradiance_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 0.628 seconds) .. _sphx_glr_download_generated_gallery_qcrad-consistency-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: qcrad-consistency-irradiance.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: qcrad-consistency-irradiance.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_