Skip to content

Commit 4590ec7

Browse files
Birgit SchachlerBirgit Schachler
authored andcommitted
Merge branch 'API_Changes' into features/weather_df_multiindex
Conflicts: windpowerlib/modelchain.py
2 parents 38a3223 + 4d4be1f commit 4590ec7

File tree

12 files changed

+325
-320
lines changed

12 files changed

+325
-320
lines changed

pytest.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[pytest]
2+
addopts = --doctest-modules

tests/test_density.py

Lines changed: 15 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,13 @@
1-
from windpowerlib.density import (temperature_gradient,
2-
rho_barometric, rho_ideal_gas)
1+
from windpowerlib.density import barometric, ideal_gas
32
import pandas as pd
43
from pandas.util.testing import assert_series_equal
5-
from numpy.testing import assert_array_equal, assert_allclose
4+
from numpy.testing import assert_allclose
65
import numpy as np
76

87

9-
class TestDensityTemperature:
8+
class TestDensity:
109

11-
def test_temperature_gradient(self):
12-
parameters = {'temperature': pd.Series(data=[267, 268]),
13-
'temperature_height': 2,
14-
'hub_height': 100}
15-
16-
# Test temperature as pd.Series
17-
temp_hub_exp = pd.Series(data=[266.363, 267.36300])
18-
assert_series_equal(temperature_gradient(**parameters), temp_hub_exp)
19-
20-
# Test temperature as np.array
21-
temp_hub_exp = np.array([266.363, 267.36300])
22-
parameters['temperature'] = np.array(parameters['temperature'])
23-
assert_array_equal(temperature_gradient(**parameters), temp_hub_exp)
24-
assert isinstance(temperature_gradient(**parameters), np.ndarray)
25-
26-
def test_rho_barometric(self):
10+
def test_barometric(self):
2711
parameters = {'pressure': pd.Series(data=[101125, 101000]),
2812
'pressure_height': 0,
2913
'hub_height': 100,
@@ -32,25 +16,25 @@ def test_rho_barometric(self):
3216
# Test pressure as pd.Series and temperature_hub_height as pd.Series
3317
# and np.array
3418
rho_exp = pd.Series(data=[1.30305336, 1.29656645])
35-
assert_series_equal(rho_barometric(**parameters), rho_exp)
19+
assert_series_equal(barometric(**parameters), rho_exp)
3620
parameters['temperature_hub_height'] = np.array(
3721
parameters['temperature_hub_height'])
38-
assert_series_equal(rho_barometric(**parameters), rho_exp)
22+
assert_series_equal(barometric(**parameters), rho_exp)
3923

4024
# Test pressure as np.array and temperature_hub_height as pd.Series
4125
parameters['pressure'] = np.array(parameters['pressure'])
4226
parameters['temperature_hub_height'] = pd.Series(
4327
data=parameters['temperature_hub_height'])
44-
assert_series_equal(rho_barometric(**parameters), rho_exp)
28+
assert_series_equal(barometric(**parameters), rho_exp)
4529

4630
# Test pressure as np.array and temperature_hub_height as np.array
4731
rho_exp = np.array([1.30305336, 1.29656645])
4832
parameters['temperature_hub_height'] = np.array(
4933
parameters['temperature_hub_height'])
50-
assert_allclose(rho_barometric(**parameters), rho_exp)
51-
assert isinstance(rho_barometric(**parameters), np.ndarray)
34+
assert_allclose(barometric(**parameters), rho_exp)
35+
assert isinstance(barometric(**parameters), np.ndarray)
5236

53-
def test_rho_ideal_gas(self):
37+
def test_ideal_gas(self):
5438
parameters = {'pressure': pd.Series(data=[101125, 101000]),
5539
'pressure_height': 0,
5640
'hub_height': 100,
@@ -59,20 +43,20 @@ def test_rho_ideal_gas(self):
5943
# Test pressure as pd.Series and temperature_hub_height as pd.Series
6044
# and np.array
6145
rho_exp = pd.Series(data=[1.30309439, 1.29660728])
62-
assert_series_equal(rho_ideal_gas(**parameters), rho_exp)
46+
assert_series_equal(ideal_gas(**parameters), rho_exp)
6347
parameters['temperature_hub_height'] = np.array(
6448
parameters['temperature_hub_height'])
65-
assert_series_equal(rho_ideal_gas(**parameters), rho_exp)
49+
assert_series_equal(ideal_gas(**parameters), rho_exp)
6650

6751
# Test pressure as np.array and temperature_hub_height as pd.Series
6852
parameters['pressure'] = np.array(parameters['pressure'])
6953
parameters['temperature_hub_height'] = pd.Series(
7054
data=parameters['temperature_hub_height'])
71-
assert_allclose(rho_ideal_gas(**parameters), rho_exp)
55+
assert_allclose(ideal_gas(**parameters), rho_exp)
7256

7357
# Test pressure as np.array and temperature_hub_height as np.array
7458
rho_exp = np.array([1.30309439, 1.29660728])
7559
parameters['temperature_hub_height'] = np.array(
7660
parameters['temperature_hub_height'])
77-
assert_allclose(rho_ideal_gas(**parameters), rho_exp)
78-
assert isinstance(rho_ideal_gas(**parameters), np.ndarray)
61+
assert_allclose(ideal_gas(**parameters), rho_exp)
62+
assert isinstance(ideal_gas(**parameters), np.ndarray)

tests/test_power_output.py

Lines changed: 81 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,126 @@
11
from pandas.util.testing import assert_series_equal
2-
from windpowerlib.power_output import (cp_curve, cp_curve_density_corr,
3-
p_curve, p_curve_density_corr)
2+
from windpowerlib.power_output import (power_coefficient_curve,
3+
power_curve, _p_curve_density_corr)
44
import pandas as pd
55
import numpy as np
66
from numpy.testing import assert_allclose
7+
import pytest
78

89

910
class TestPowerOutput:
1011

11-
def test_cp_curve(self):
12+
def test_power_coefficient_curve(self):
1213
parameters = {'wind_speed': pd.Series(data=[2.0, 5.5, 7.0]),
1314
'density': pd.Series(data=[1.3, 1.3, 1.3]),
1415
'rotor_diameter': 80,
15-
'cp_values': pd.DataFrame(data={'cp': [0.3, 0.4, 0.5]},
16-
index=[4.0, 5.0, 6.0])}
16+
'cp_values': pd.Series([0.3, 0.4, 0.5],
17+
index=[4.0, 5.0, 6.0])}
1718

19+
# Tests without density correction:
1820
# Test wind_speed as pd.Series with density as pd.Series and np.array
1921
power_output_exp = pd.Series(data=[0.0, 244615.399, 0.0],
2022
name='feedin_wind_turbine')
21-
assert_series_equal(cp_curve(**parameters), power_output_exp)
23+
assert_series_equal(power_coefficient_curve(**parameters),
24+
power_output_exp)
2225
parameters['density'] = np.array(parameters['density'])
23-
assert_series_equal(cp_curve(**parameters), power_output_exp)
24-
26+
assert_series_equal(power_coefficient_curve(**parameters),
27+
power_output_exp)
2528
# Test wind_speed as np.array with density as np.array and pd.Series
2629
power_output_exp = np.array([0.0, 244615.399, 0.0])
2730
parameters['wind_speed'] = np.array(parameters['wind_speed'])
28-
assert_allclose(cp_curve(**parameters), power_output_exp)
29-
assert isinstance(cp_curve(**parameters), np.ndarray)
31+
assert_allclose(power_coefficient_curve(**parameters),
32+
power_output_exp)
33+
assert isinstance(power_coefficient_curve(**parameters), np.ndarray)
3034
parameters['density'] = pd.Series(data=parameters['density'])
31-
assert_allclose(cp_curve(**parameters), power_output_exp)
32-
assert isinstance(cp_curve(**parameters), np.ndarray)
33-
34-
def test_cp_curve_density_corrected(self):
35-
parameters = {'wind_speed': pd.Series(data=[2.0, 5.5, 7.0]),
36-
'density': pd.Series(data=[1.3, 1.3, 1.3]),
37-
'rotor_diameter': 80,
38-
'cp_values': pd.DataFrame(data={'cp': [0.3, 0.4, 0.5]},
39-
index=[4.0, 5.0, 6.0])}
35+
assert_allclose(power_coefficient_curve(**parameters),
36+
power_output_exp)
37+
assert isinstance(power_coefficient_curve(**parameters), np.ndarray)
4038

41-
# Test wind_speed as pd.Series with density as pd.Series and np.array
39+
# Tests with density correction:
40+
# Test wind_speed as np.array with density as pd.Series and np.array
41+
power_output_exp = np.array([0.0, 262869.785, 0.0])
42+
parameters['density_corr'] = True
43+
assert_allclose(power_coefficient_curve(**parameters),
44+
power_output_exp)
45+
assert isinstance(power_coefficient_curve(**parameters), np.ndarray)
46+
parameters['density'] = np.array(parameters['density'])
47+
assert_allclose(power_coefficient_curve(**parameters),
48+
power_output_exp)
49+
assert isinstance(power_coefficient_curve(**parameters), np.ndarray)
50+
# Test wind_speed as pd.Series with density as np. array and pd.Series
4251
power_output_exp = pd.Series(data=[0.0, 262869.785, 0.0],
4352
name='feedin_wind_turbine')
44-
assert_series_equal(cp_curve_density_corr(**parameters),
53+
parameters['wind_speed'] = pd.Series(data=parameters['wind_speed'])
54+
assert_series_equal(power_coefficient_curve(**parameters),
4555
power_output_exp)
46-
parameters['density'] = np.array(parameters['density'])
47-
assert_series_equal(cp_curve_density_corr(**parameters),
56+
parameters['density'] = pd.Series(data=parameters['density'])
57+
assert_series_equal(power_coefficient_curve(**parameters),
4858
power_output_exp)
4959

50-
# Test wind_speed as np.array with density as np.array and pd.Series
51-
power_output_exp = np.array([0.0, 262869.785, 0.0])
52-
parameters['wind_speed'] = np.array(parameters['wind_speed'])
53-
assert_allclose(cp_curve_density_corr(**parameters),
54-
power_output_exp)
55-
assert isinstance(cp_curve_density_corr(**parameters), np.ndarray)
56-
parameters['density'] = pd.Series(data=parameters['density'])
57-
assert_allclose(cp_curve_density_corr(**parameters),
58-
power_output_exp)
59-
assert isinstance(cp_curve_density_corr(**parameters), np.ndarray)
60+
# Raise TypeErrors due to wrong type of `density_corr`
61+
with pytest.raises(TypeError):
62+
parameters['density'] = 'wrong_type'
63+
power_coefficient_curve(**parameters)
6064

61-
def test_p_curve(self):
65+
def test_power_curve(self):
6266
parameters = {'wind_speed': pd.Series(data=[2.0, 5.5, 7.0]),
63-
'p_values': pd.DataFrame(data={'p': [300, 400, 500]},
64-
index=[4.0, 5.0, 6.0])}
67+
'p_values': pd.Series([300, 400, 500],
68+
index=[4.0, 5.0, 6.0]),
69+
'density': pd.Series(data=[1.3, 1.3, 1.3]),
70+
'density_corr': False}
6571

72+
# Tests without density correction:
6673
# Test wind_speed as pd.Series
6774
power_output_exp = pd.Series(data=[0.0, 450.0, 0.0],
6875
name='feedin_wind_turbine')
69-
assert_series_equal(p_curve(**parameters), power_output_exp)
70-
76+
assert_series_equal(power_curve(**parameters), power_output_exp)
7177
# Test wind_speed as np.array
7278
power_output_exp = np.array([0.0, 450.0, 0.0])
7379
parameters['wind_speed'] = np.array(parameters['wind_speed'])
74-
assert_allclose(p_curve(**parameters), power_output_exp)
75-
assert isinstance(p_curve(**parameters), np.ndarray)
80+
assert_allclose(power_curve(**parameters), power_output_exp)
81+
assert isinstance(power_curve(**parameters), np.ndarray)
82+
83+
# Tests with density correction:
84+
# Test wind_speed as np.array with density as pd.Series and np.array
85+
power_output_exp = np.array([0.0, 461.00290572, 0.0])
86+
parameters['density_corr'] = True
87+
assert_allclose(power_curve(**parameters), power_output_exp)
88+
assert isinstance(power_curve(**parameters), np.ndarray)
89+
parameters['density'] = np.array(parameters['density'])
90+
assert_allclose(power_curve(**parameters), power_output_exp)
91+
assert isinstance(power_curve(**parameters), np.ndarray)
92+
# Test wind_speed as pd.Series with density as np. array and pd.Series
93+
power_output_exp = pd.Series(data=[0.0, 461.00290572, 0.0],
94+
name='feedin_wind_turbine')
95+
parameters['wind_speed'] = pd.Series(data=parameters['wind_speed'])
96+
assert_series_equal(power_curve(**parameters), power_output_exp)
97+
parameters['density'] = pd.Series(data=parameters['density'])
98+
assert_series_equal(power_curve(**parameters),
99+
power_output_exp)
100+
101+
# Raise TypeErrors due to wrong type of `density_corr`
102+
with pytest.raises(TypeError):
103+
parameters['density'] = 'wrong_type'
104+
power_curve(**parameters)
76105

77106
def test_p_curve_density_corrected(self):
78107
parameters = {'wind_speed': pd.Series(data=[2.0, 5.5, 7.0]),
79108
'density': pd.Series(data=[1.3, 1.3, 1.3]),
80-
'p_values': pd.DataFrame(data={'p': [300, 400, 500]},
81-
index=[4.0, 5.0, 6.0])}
109+
'p_values': pd.Series([300, 400, 500],
110+
index=[4.0, 5.0, 6.0])}
82111

83112
# Test wind_speed as pd.Series with density as pd.Series and np.array
84-
power_output_exp = pd.Series(data=[0.0, 461.00290572, 0.0],
85-
name='feedin_wind_turbine')
86-
assert_series_equal(p_curve_density_corr(**parameters),
87-
power_output_exp)
113+
power_output_exp = [0.0, 461.00290572240806, 0.0]
114+
assert _p_curve_density_corr(**parameters) == power_output_exp
88115
parameters['density'] = np.array(parameters['density'])
89-
assert_series_equal(p_curve_density_corr(**parameters),
90-
power_output_exp)
116+
assert _p_curve_density_corr(**parameters) == power_output_exp
91117

92118
# Test wind_speed as np.array with density as np.array and pd.Series
93-
power_output_exp = np.array([0.0, 461.00290572, 0.0])
94-
parameters['wind_speed'] = np.array(parameters['wind_speed'])
95-
assert_allclose(p_curve_density_corr(**parameters),
96-
power_output_exp)
97-
assert isinstance(p_curve_density_corr(**parameters), np.ndarray)
119+
assert _p_curve_density_corr(**parameters) == power_output_exp
98120
parameters['density'] = pd.Series(data=parameters['density'])
99-
assert_allclose(p_curve_density_corr(**parameters),
100-
power_output_exp)
101-
assert isinstance(p_curve_density_corr(**parameters), np.ndarray)
121+
assert _p_curve_density_corr(**parameters) == power_output_exp
122+
123+
# Raise TypeError due to density is None
124+
with pytest.raises(TypeError):
125+
parameters['density'] = None
126+
_p_curve_density_corr(**parameters)

tests/test_temperature.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from windpowerlib.temperature import linear_gradient
2+
import pandas as pd
3+
from pandas.util.testing import assert_series_equal
4+
from numpy.testing import assert_array_equal
5+
import numpy as np
6+
7+
8+
class TestTemperature:
9+
10+
def test_linear_gradient(self):
11+
parameters = {'temperature': pd.Series(data=[267, 268]),
12+
'temperature_height': 2,
13+
'hub_height': 100}
14+
15+
# Test temperature as pd.Series
16+
temp_hub_exp = pd.Series(data=[266.363, 267.36300])
17+
assert_series_equal(linear_gradient(**parameters), temp_hub_exp)
18+
19+
# Test temperature as np.array
20+
temp_hub_exp = np.array([266.363, 267.36300])
21+
parameters['temperature'] = np.array(parameters['temperature'])
22+
assert_array_equal(linear_gradient(**parameters), temp_hub_exp)
23+
assert isinstance(linear_gradient(**parameters), np.ndarray)

0 commit comments

Comments
 (0)