Skip to content

updated imports in the solarposition.py file and applied ruff linter+formatter to the whole directory tree #2338

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
2 changes: 1 addition & 1 deletion .github/workflows/pytest-remote-data.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ jobs:
strategy:
fail-fast: false # don't cancel other matrix jobs when one fails
matrix:
python-version: [3.9, "3.10", "3.11", "3.12"]
python-version: [3.9, 3.10, 3.11, 3.12, 3.13]
suffix: [''] # the alternative to "-min"
include:
- python-version: 3.9
Expand Down
24 changes: 14 additions & 10 deletions benchmarks/benchmarks/detect_clearsky.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,26 @@

class DetectClear:
params = [1, 10, 100] # number of days
param_names = ['ndays']
param_names = ["ndays"]

def setup(self, ndays):
self.times = pd.date_range(start='20180601', freq='1min',
periods=1440*ndays)
self.times = pd.date_range(
start="20180601", freq="1min", periods=1440 * ndays
)
self.lat = 35.1
self.lon = -106.6
self.solar_position = solarposition.get_solarposition(
self.times, self.lat, self.lon)
self.times, self.lat, self.lon
)
clearsky_df = clearsky.simplified_solis(
self.solar_position['apparent_elevation'])
self.clearsky = clearsky_df['ghi']
measured_dni = clearsky_df['dni'].where(
(self.times.hour % 2).astype(bool), 0)
cos_zen = np.cos(np.deg2rad(self.solar_position['apparent_zenith']))
self.measured = measured_dni * cos_zen + clearsky_df['dhi']
self.solar_position["apparent_elevation"]
)
self.clearsky = clearsky_df["ghi"]
measured_dni = clearsky_df["dni"].where(
(self.times.hour % 2).astype(bool), 0
)
cos_zen = np.cos(np.deg2rad(self.solar_position["apparent_zenith"]))
self.measured = measured_dni * cos_zen + clearsky_df["dhi"]
self.measured *= 0.98
self.window_length = 10

Expand Down
64 changes: 31 additions & 33 deletions benchmarks/benchmarks/infinite_sheds.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,12 @@


class InfiniteSheds:

# benchmark variant parameters (run both vectorize=True and False)
params = [True, False]
param_names = ['vectorize']
param_names = ["vectorize"]

def setup(self, vectorize):
self.times = pd.date_range(start='20180601', freq='1min',
periods=1440)
self.times = pd.date_range(start="20180601", freq="1min", periods=1440)
self.location = location.Location(40, -80)
self.solar_position = self.location.get_solarposition(self.times)
self.clearsky_irradiance = self.location.get_clearsky(
Expand All @@ -27,50 +25,50 @@ def setup(self, vectorize):
self.surface_azimuth = 180
self.gcr = 0.35
self.height = 2.5
self.pitch = 5.
self.pitch = 5.0
self.albedo = 0.2
self.npoints = 100

with np.errstate(invalid='ignore'):
with np.errstate(invalid="ignore"):
self.tracking = tracking.singleaxis(
self.solar_position['apparent_zenith'],
self.solar_position['azimuth'],
self.solar_position["apparent_zenith"],
self.solar_position["azimuth"],
axis_tilt=0,
axis_azimuth=0,
max_angle=60,
backtrack=True,
gcr=self.gcr
gcr=self.gcr,
)

def time_get_irradiance_poa_fixed(self, vectorize):
infinite_sheds.get_irradiance_poa(
surface_tilt=self.surface_tilt,
surface_azimuth=self.surface_azimuth,
solar_zenith=self.solar_position['apparent_zenith'],
solar_azimuth=self.solar_position['azimuth'],
solar_zenith=self.solar_position["apparent_zenith"],
solar_azimuth=self.solar_position["azimuth"],
gcr=self.gcr,
height=self.height,
pitch=self.pitch,
ghi=self.clearsky_irradiance['ghi'],
dhi=self.clearsky_irradiance['dhi'],
dni=self.clearsky_irradiance['dni'],
ghi=self.clearsky_irradiance["ghi"],
dhi=self.clearsky_irradiance["dhi"],
dni=self.clearsky_irradiance["dni"],
albedo=self.albedo,
npoints=self.npoints,
vectorize=vectorize,
)

def time_get_irradiance_poa_tracking(self, vectorize):
infinite_sheds.get_irradiance_poa(
surface_tilt=self.tracking['surface_tilt'],
surface_azimuth=self.tracking['surface_azimuth'],
solar_zenith=self.solar_position['apparent_zenith'],
solar_azimuth=self.solar_position['azimuth'],
surface_tilt=self.tracking["surface_tilt"],
surface_azimuth=self.tracking["surface_azimuth"],
solar_zenith=self.solar_position["apparent_zenith"],
solar_azimuth=self.solar_position["azimuth"],
gcr=self.gcr,
height=self.height,
pitch=self.pitch,
ghi=self.clearsky_irradiance['ghi'],
dhi=self.clearsky_irradiance['dhi'],
dni=self.clearsky_irradiance['dni'],
ghi=self.clearsky_irradiance["ghi"],
dhi=self.clearsky_irradiance["dhi"],
dni=self.clearsky_irradiance["dni"],
albedo=self.albedo,
npoints=self.npoints,
vectorize=vectorize,
Expand All @@ -80,31 +78,31 @@ def time_get_irradiance_fixed(self, vectorize):
infinite_sheds.get_irradiance(
surface_tilt=self.surface_tilt,
surface_azimuth=self.surface_azimuth,
solar_zenith=self.solar_position['apparent_zenith'],
solar_azimuth=self.solar_position['azimuth'],
solar_zenith=self.solar_position["apparent_zenith"],
solar_azimuth=self.solar_position["azimuth"],
gcr=self.gcr,
height=self.height,
pitch=self.pitch,
ghi=self.clearsky_irradiance['ghi'],
dhi=self.clearsky_irradiance['dhi'],
dni=self.clearsky_irradiance['dni'],
ghi=self.clearsky_irradiance["ghi"],
dhi=self.clearsky_irradiance["dhi"],
dni=self.clearsky_irradiance["dni"],
albedo=self.albedo,
npoints=self.npoints,
vectorize=vectorize,
)

def time_get_irradiance_tracking(self, vectorize):
infinite_sheds.get_irradiance(
surface_tilt=self.tracking['surface_tilt'],
surface_azimuth=self.tracking['surface_azimuth'],
solar_zenith=self.solar_position['apparent_zenith'],
solar_azimuth=self.solar_position['azimuth'],
surface_tilt=self.tracking["surface_tilt"],
surface_azimuth=self.tracking["surface_azimuth"],
solar_zenith=self.solar_position["apparent_zenith"],
solar_azimuth=self.solar_position["azimuth"],
gcr=self.gcr,
height=self.height,
pitch=self.pitch,
ghi=self.clearsky_irradiance['ghi'],
dhi=self.clearsky_irradiance['dhi'],
dni=self.clearsky_irradiance['dni'],
ghi=self.clearsky_irradiance["ghi"],
dhi=self.clearsky_irradiance["dhi"],
dni=self.clearsky_irradiance["dni"],
albedo=self.albedo,
npoints=self.npoints,
vectorize=vectorize,
Expand Down
86 changes: 53 additions & 33 deletions benchmarks/benchmarks/irradiance.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,62 +7,82 @@


class Irradiance:

def setup(self):
self.times = pd.date_range(start='20180601', freq='1min',
periods=14400)
self.days = pd.date_range(start='20180601', freq='d', periods=30)
self.times = pd.date_range(
start="20180601", freq="1min", periods=14400
)
self.days = pd.date_range(start="20180601", freq="d", periods=30)
self.location = location.Location(40, -80)
self.solar_position = self.location.get_solarposition(self.times)
self.clearsky_irradiance = self.location.get_clearsky(self.times)
self.tilt = 20
self.azimuth = 180
self.aoi = irradiance.aoi(self.tilt, self.azimuth,
self.solar_position.apparent_zenith,
self.solar_position.azimuth)
self.aoi = irradiance.aoi(
self.tilt,
self.azimuth,
self.solar_position.apparent_zenith,
self.solar_position.azimuth,
)

def time_get_extra_radiation(self):
irradiance.get_extra_radiation(self.days)

def time_aoi(self):
irradiance.aoi(self.tilt, self.azimuth,
self.solar_position.apparent_zenith,
self.solar_position.azimuth)
irradiance.aoi(
self.tilt,
self.azimuth,
self.solar_position.apparent_zenith,
self.solar_position.azimuth,
)

def time_aoi_projection(self):
irradiance.aoi_projection(self.tilt, self.azimuth,
self.solar_position.apparent_zenith,
self.solar_position.azimuth)
irradiance.aoi_projection(
self.tilt,
self.azimuth,
self.solar_position.apparent_zenith,
self.solar_position.azimuth,
)

def time_get_ground_diffuse(self):
irradiance.get_ground_diffuse(self.tilt, self.clearsky_irradiance.ghi)

def time_get_total_irradiance(self):
irradiance.get_total_irradiance(self.tilt, self.azimuth,
self.solar_position.apparent_zenith,
self.solar_position.azimuth,
self.clearsky_irradiance.dni,
self.clearsky_irradiance.ghi,
self.clearsky_irradiance.dhi)
irradiance.get_total_irradiance(
self.tilt,
self.azimuth,
self.solar_position.apparent_zenith,
self.solar_position.azimuth,
self.clearsky_irradiance.dni,
self.clearsky_irradiance.ghi,
self.clearsky_irradiance.dhi,
)

def time_disc(self):
irradiance.disc(self.clearsky_irradiance.ghi,
self.solar_position.apparent_zenith,
self.times)
irradiance.disc(
self.clearsky_irradiance.ghi,
self.solar_position.apparent_zenith,
self.times,
)

def time_dirint(self):
irradiance.dirint(self.clearsky_irradiance.ghi,
self.solar_position.apparent_zenith,
self.times)
irradiance.dirint(
self.clearsky_irradiance.ghi,
self.solar_position.apparent_zenith,
self.times,
)

def time_dirindex(self):
irradiance.dirindex(self.clearsky_irradiance.ghi,
self.clearsky_irradiance.ghi,
self.clearsky_irradiance.dni,
self.solar_position.apparent_zenith,
self.times)
irradiance.dirindex(
self.clearsky_irradiance.ghi,
self.clearsky_irradiance.ghi,
self.clearsky_irradiance.dni,
self.solar_position.apparent_zenith,
self.times,
)

def time_erbs(self):
irradiance.erbs(self.clearsky_irradiance.ghi,
self.solar_position.apparent_zenith,
self.times)
irradiance.erbs(
self.clearsky_irradiance.ghi,
self.solar_position.apparent_zenith,
self.times,
)
30 changes: 15 additions & 15 deletions benchmarks/benchmarks/location.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,17 @@


def set_solar_position(obj):
obj.location = pvlib.location.Location(32, -110, altitude=700,
tz='Etc/GMT+7')
obj.times = pd.date_range(start='20180601', freq='3min',
periods=1440)
obj.days = pd.date_range(start='20180101', freq='d', periods=365,
tz=obj.location.tz)
obj.location = pvlib.location.Location(
32, -110, altitude=700, tz="Etc/GMT+7"
)
obj.times = pd.date_range(start="20180601", freq="3min", periods=1440)
obj.days = pd.date_range(
start="20180101", freq="d", periods=365, tz=obj.location.tz
)
obj.solar_position = obj.location.get_solarposition(obj.times)


class Location:

def setup(self):
set_solar_position(self)

Expand All @@ -30,22 +30,22 @@ def time_location_get_solarposition(self):
self.location.get_solarposition(times=self.times)

def time_location_get_clearsky(self):
self.location.get_clearsky(times=self.times,
solar_position=self.solar_position)
self.location.get_clearsky(
times=self.times, solar_position=self.solar_position
)


class Location_0_6_1:

def setup(self):
if Version(pvlib.__version__) < Version('0.6.1'):
if Version(pvlib.__version__) < Version("0.6.1"):
raise NotImplementedError

set_solar_position(self)

def time_location_get_sun_rise_set_transit_pyephem(self):
self.location.get_sun_rise_set_transit(times=self.days,
method='pyephem')
self.location.get_sun_rise_set_transit(
times=self.days, method="pyephem"
)

def time_location_get_sun_rise_set_transit_spa(self):
self.location.get_sun_rise_set_transit(times=self.days,
method='spa')
self.location.get_sun_rise_set_transit(times=self.days, method="spa")
23 changes: 13 additions & 10 deletions benchmarks/benchmarks/scaling.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,22 @@


class Scaling:

def setup(self):
self.n = 1000
lat = np.array((9.99, 10, 10.01))
lon = np.array((4.99, 5, 5.01))
self.coordinates = np.array([(lati, loni) for
(lati, loni) in zip(lat, lon)])
self.times = pd.date_range('2019-01-01', freq='1T', periods=self.n)
self.coordinates = np.array(
[(lati, loni) for (lati, loni) in zip(lat, lon)]
)
self.times = pd.date_range("2019-01-01", freq="1T", periods=self.n)
self.positions = np.array([[0, 0], [100, 0], [100, 100], [0, 100]])
self.clearsky_index = pd.Series(np.random.rand(self.n),
index=self.times)
self.clearsky_index = pd.Series(
np.random.rand(self.n), index=self.times
)
self.cloud_speed = 5
self.tmscales = np.array((1, 2, 4, 8, 16, 32, 64,
128, 256, 512, 1024, 2048, 4096))
self.tmscales = np.array(
(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096)
)

def time_latlon_to_xy(self):
scaling.latlon_to_xy(self.coordinates)
Expand All @@ -33,5 +35,6 @@ def time__compute_vr(self):
scaling._compute_vr(self.positions, self.cloud_speed, self.tmscales)

def time_wvm(self):
scaling.wvm(self.clearsky_index, self.positions,
self.cloud_speed, dt=1)
scaling.wvm(
self.clearsky_index, self.positions, self.cloud_speed, dt=1
)
Loading
Loading