Skip to content

ModelChainResult.cell_temperature is not always a pandas.Series  #1139

@alorenzo175

Description

@alorenzo175

For a ModelChain configured as below, the cell_temperature when running the model chain with a list of data like ModelChain.run_model([data]) is a tuple with a single number instead of the expected Series

To Reproduce

import pandas as pd from pvlib.location import Location from pvlib.pvsystem import PVSystem, Array from pvlib.modelchain import ModelChain data = pd.DataFrame( { "ghi": [1100.0, 1101.0], "dni": [1000.0, 1001], "dhi": [100.0, 100], "temp_air": [25.0, 25], "wind_speed": [10.0, 10], }, index=pd.DatetimeIndex( [pd.Timestamp("2021-01-20T12:00-05:00"), pd.Timestamp("2021-01-20T12:05-05:00")] ), ) array_params = { "name": None, "surface_tilt": 20.0, "surface_azimuth": 180.0, "module": "Canadian_Solar_Inc__CS5P_220M", "albedo": 0.2, "temperature_model_parameters": { "u_c": 29.0, "u_v": 0.0, "eta_m": 0.1, "alpha_absorption": 0.9, }, "strings": 5, "modules_per_string": 7, "module_parameters": { "alpha_sc": 0.004539, "gamma_ref": 1.2, "mu_gamma": -0.003, "I_L_ref": 5.11426, "I_o_ref": 8.10251e-10, "R_sh_ref": 381.254, "R_sh_0": 400.0, "R_s": 1.06602, "cells_in_series": 96, "R_sh_exp": 5.5, "EgRef": 1.121, }, } inverter_parameters = { "Paco": 250.0, "Pdco": 259.589, "Vdco": 40.0, "Pso": 2.08961, "C0": -4.1e-05, "C1": -9.1e-05, "C2": 0.000494, "C3": -0.013171, "Pnt": 0.075, } location = Location(latitude=33.98, longitude=-115.323, altitude=2300) array_sys = PVSystem( arrays=[Array(**array_params)], inverter_parameters=inverter_parameters ) assert isinstance( ModelChain(array_sys, location, aoi_model="no_loss", spectral_model="no_loss") .run_model(data) .results.cell_temperature, pd.Series, ) array_run = ModelChain( array_sys, location, aoi_model="no_loss", spectral_model="no_loss" ).run_model([data]) assert array_run.results.cell_temperature == array_run.cell_temperature print(array_run.results.cell_temperature) # (45.329789874660285,)  array_params["strings_per_inverter"] = array_params.pop("strings") standard_sys = PVSystem(**array_params, inverter_parameters=inverter_parameters) assert isinstance( ModelChain(standard_sys, location, aoi_model="no_loss", spectral_model="no_loss") .run_model(data) .results.cell_temperature, pd.Series, ) standard_run = ModelChain( standard_sys, location, aoi_model="no_loss", spectral_model="no_loss" ).run_model([data]) assert standard_run.results.cell_temperature == standard_run.cell_temperature print(standard_run.results.cell_temperature) # (45.329789874660285,)  assert not isinstance(standard_run.results.cell_temperature, pd.Series) 

Expected behavior
type(ModelChain.run_model([data]).results.cell_temperature) == pd.Series
__

Versions:

  • pvlib.__version__: 0.8.1+4.gba4a199
  • pandas.__version__: 1.1.4
  • python: 3.8.5

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions