From de9f20371b562ffe852e9bf6504cd0c623aa2b40 Mon Sep 17 00:00:00 2001 From: jgaffiot Date: Fri, 7 Dec 2018 09:03:56 +0100 Subject: [PATCH 1/5] Fix incorrect call to pvsystem instead of self.system --- pvlib/modelchain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvlib/modelchain.py b/pvlib/modelchain.py index b1e5f07b82..b1cd6ecfa7 100644 --- a/pvlib/modelchain.py +++ b/pvlib/modelchain.py @@ -622,7 +622,7 @@ def infer_spectral_model(self): return self.sapm_spectral_loss elif ((('Technology' in params or 'Material' in params) and - (pvsystem._infer_cell_type() is not None)) or + (self.system._infer_cell_type() is not None)) or 'first_solar_spectral_coefficients' in params): return self.first_solar_spectral_loss else: From 2231a048b72ffffd916dfce75735bacdb7fb4428 Mon Sep 17 00:00:00 2001 From: jgaffiot Date: Fri, 7 Dec 2018 09:04:10 +0100 Subject: [PATCH 2/5] Update whatsnew --- docs/sphinx/source/whatsnew/v0.6.1.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/sphinx/source/whatsnew/v0.6.1.rst b/docs/sphinx/source/whatsnew/v0.6.1.rst index e92e5a11b8..dc1be857b2 100644 --- a/docs/sphinx/source/whatsnew/v0.6.1.rst +++ b/docs/sphinx/source/whatsnew/v0.6.1.rst @@ -55,6 +55,7 @@ Bug fixes and < 1900, fix year 2050 which was returning 0. * Fix and improve :func:`~pvlib.solarposition.hour_angle` (:issue:`598`) * Fix error in :func:`pvlib.clearsky.detect_clearsky` (:issue:`506`) +* Fix error in :func:`pvlib.modelchain.ModelChain.infer_spectral_model` (:issue:`619`) Testing From 4d9915928114a9bb34eaf607697d9479b90fb13f Mon Sep 17 00:00:00 2001 From: jgaffiot Date: Fri, 7 Dec 2018 09:50:23 +0100 Subject: [PATCH 3/5] Add a test for infer_spectral_model --- pvlib/modelchain.py | 2 +- pvlib/test/test_modelchain.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/pvlib/modelchain.py b/pvlib/modelchain.py index b1cd6ecfa7..0e00974b67 100644 --- a/pvlib/modelchain.py +++ b/pvlib/modelchain.py @@ -629,7 +629,7 @@ def infer_spectral_model(self): raise ValueError('could not infer spectral model from ' 'system.module_parameters. Check that the ' 'parameters contain valid ' - 'first_solar_spectral_coefficients or a valid ' + 'first_solar_spectral_coefficients and a valid ' 'Material or Technology value') def first_solar_spectral_loss(self): diff --git a/pvlib/test/test_modelchain.py b/pvlib/test/test_modelchain.py index be7b331223..c358482576 100644 --- a/pvlib/test/test_modelchain.py +++ b/pvlib/test/test_modelchain.py @@ -54,6 +54,19 @@ def cec_dc_snl_ac_system(sam_data): return system +@pytest.fixture +def cec_dc_native_snl_ac_system(sam_data): + module = 'Canadian_Solar_CS5P_220M' + module_parameters = sam_data['cecmod'][module].copy() + inverters = sam_data['cecinverter'] + inverter = inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'].copy() + system = PVSystem(surface_tilt=32.2, surface_azimuth=180, + module=module, + module_parameters=module_parameters, + inverter_parameters=inverter) + return system + + @pytest.fixture def pvsyst_dc_snl_ac_system(sam_data, pvsyst_module_params): module = 'PVsyst test module' @@ -251,6 +264,21 @@ def test_infer_dc_model(system, cec_dc_snl_ac_system, pvsyst_dc_snl_ac_system, assert isinstance(mc.dc, (pd.Series, pd.DataFrame)) +@pytest.mark.parametrize('dc_model', [ + 'sapm', + pytest.param('cec', marks=requires_scipy), + pytest.param('cec_native', marks=requires_scipy)]) +def test_infer_spectral_model(location, system, cec_dc_snl_ac_system, + cec_dc_native_snl_ac_system, dc_model): + dc_systems = {'sapm': system, + 'cec': cec_dc_snl_ac_system, + 'cec_native': cec_dc_native_snl_ac_system} + system = dc_systems[dc_model] + mc = ModelChain(system, location, + orientation_strategy='None', aoi_model='physical') + assert isinstance(mc, ModelChain) + + def test_dc_model_user_func(pvwatts_dc_pvwatts_ac_system, location, weather, mocker): m = mocker.spy(sys.modules[__name__], 'poadc') From 858e71f7205e60ebbaeb1e1f0a3ca8106b93f762 Mon Sep 17 00:00:00 2001 From: jgaffiot Date: Fri, 7 Dec 2018 15:32:37 +0100 Subject: [PATCH 4/5] Add name to whatsnew --- docs/sphinx/source/whatsnew/v0.6.1.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/sphinx/source/whatsnew/v0.6.1.rst b/docs/sphinx/source/whatsnew/v0.6.1.rst index dc1be857b2..5ab9de106b 100644 --- a/docs/sphinx/source/whatsnew/v0.6.1.rst +++ b/docs/sphinx/source/whatsnew/v0.6.1.rst @@ -73,3 +73,4 @@ Contributors * Cliff Hansen (:ghuser:`cwhanse`) * Mark Mikofski (:ghuser:`mikofski`) * Anton Driesse (:ghuser:`adriesse`) +* Jonathan Gaffiot (:ghuser:`jgaffiot`) From b65952e33f27a92ed8ecff16db6f239db976a1e2 Mon Sep 17 00:00:00 2001 From: jgaffiot Date: Mon, 10 Dec 2018 11:17:34 +0100 Subject: [PATCH 5/5] Revert change in comment --- pvlib/modelchain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvlib/modelchain.py b/pvlib/modelchain.py index 0e00974b67..b1cd6ecfa7 100644 --- a/pvlib/modelchain.py +++ b/pvlib/modelchain.py @@ -629,7 +629,7 @@ def infer_spectral_model(self): raise ValueError('could not infer spectral model from ' 'system.module_parameters. Check that the ' 'parameters contain valid ' - 'first_solar_spectral_coefficients and a valid ' + 'first_solar_spectral_coefficients or a valid ' 'Material or Technology value') def first_solar_spectral_loss(self):