Skip to content

Commit be191f0

Browse files
Birgit SchachlerBirgit Schachler
authored andcommitted
Tests for new definition linear_interpolation_extrapolation
1 parent a05d8d0 commit be191f0

File tree

1 file changed

+33
-122
lines changed

1 file changed

+33
-122
lines changed

tests/test_tools.py

Lines changed: 33 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from windpowerlib.tools import smallest_difference, linear_extra_interpolation
1+
from windpowerlib.tools import linear_interpolation_extrapolation
22
import pandas as pd
33
import numpy as np
44
from pandas.util.testing import assert_series_equal
@@ -7,124 +7,35 @@
77

88
class TestTools:
99

10-
def test_smallest_difference(self):
11-
weather = pd.DataFrame(data={'v_wind': [4.0, 5.0, 6.0]},
12-
index=[100, 150, 200])
13-
weather_series = pd.DataFrame(data={'v_wind': [
14-
pd.Series(data=[4.0, 5.0, 6.0]),
15-
pd.Series(data=[8.0, 10.0, 14.0]),
16-
pd.Series(data=[16.0, 20.0, 28.0])]}, index=[100, 150, 200])
17-
weather_arr = pd.DataFrame(data={'v_wind': [
18-
np.array(weather_series['v_wind'][weather_series.index[0]]),
19-
np.array(weather_series['v_wind'][weather_series.index[1]]),
20-
np.array(weather_series['v_wind'][weather_series.index[2]])]},
21-
index=weather_series.index)
22-
parameters = {'comp_value': 100,
23-
'column_name': 'v_wind'}
24-
25-
# comparative value is an index of data frame
26-
exp_output = (100, 4.0)
27-
assert smallest_difference(weather, **parameters) == exp_output
28-
exp_series = pd.Series(data=[4.0, 5.0, 6.0])
29-
assert_series_equal(smallest_difference(weather_series,
30-
**parameters)[1], exp_series)
31-
exp_arr = np.array(exp_series)
32-
assert_array_equal(smallest_difference(weather_arr,
33-
**parameters)[1], exp_arr)
34-
# comparative value between indices of data frame
35-
exp_output = (150, 5.0)
36-
parameters['comp_value'] = 175
37-
assert smallest_difference(weather, **parameters) == exp_output
38-
exp_series = pd.Series(data=[8.0, 10.0, 14.0])
39-
assert_series_equal(smallest_difference(weather_series,
40-
**parameters)[1], exp_series)
41-
exp_arr = np.array(exp_series)
42-
assert_array_equal(smallest_difference(weather_arr,
43-
**parameters)[1], exp_arr)
44-
# comparative value > indices of data frame
45-
exp_output = (200, 6.0)
46-
parameters['comp_value'] = 250
47-
assert smallest_difference(weather, **parameters) == exp_output
48-
exp_series = pd.Series(data=[16.0, 20.0, 28.0])
49-
assert_series_equal(smallest_difference(weather_series,
50-
**parameters)[1], exp_series)
51-
exp_arr = np.array(exp_series)
52-
assert_array_equal(smallest_difference(weather_arr,
53-
**parameters)[1], exp_arr)
54-
# comparative value < indices of data frame
55-
exp_output = (100, 4.0)
56-
parameters['comp_value'] = 90
57-
assert smallest_difference(weather, **parameters) == exp_output
58-
exp_series = pd.Series(data=[4.0, 5.0, 6.0])
59-
assert_series_equal(smallest_difference(weather_series,
60-
**parameters)[1], exp_series)
61-
exp_arr = np.array(exp_series)
62-
assert_array_equal(smallest_difference(weather_arr,
63-
**parameters)[1], exp_arr)
64-
65-
def test_linear_extra_interpolation(self):
66-
parameters = {'requested_height': 100,
67-
'column_name': 'v_wind'}
68-
weather = pd.DataFrame(data={'v_wind': [4.0, 5.0, 6.0]},
69-
index=[100, 150, 200])
70-
weather_series = pd.DataFrame(data={'v_wind': [
71-
pd.Series(data=[4.0, 5.0, 6.0]),
72-
pd.Series(data=[8.0, 10.0, 14.0]),
73-
pd.Series(data=[16.0, 20.0, 28.0])]}, index=[100, 150, 200])
74-
weather_arr = pd.DataFrame(data={'v_wind': [
75-
np.array(weather_series['v_wind'][weather_series.index[0]]),
76-
np.array(weather_series['v_wind'][weather_series.index[1]]),
77-
np.array(weather_series['v_wind'][weather_series.index[2]])]},
78-
index=weather_series.index)
79-
80-
# requested_height is an index of data frame
81-
exp_output = 4.0
82-
assert (linear_extra_interpolation(weather, **parameters) ==
83-
exp_output)
84-
exp_series = pd.Series(data=[4.0, 5.0, 6.0])
85-
assert_series_equal(linear_extra_interpolation(weather_series,
86-
**parameters),
87-
exp_series)
88-
exp_arr = np.array(exp_series)
89-
assert_array_equal(linear_extra_interpolation(weather_arr,
90-
**parameters),
91-
exp_arr)
92-
# requested_height is between indices of data frame
93-
exp_output = 5.5
94-
parameters['requested_height'] = 175
95-
assert (linear_extra_interpolation(weather, **parameters) ==
96-
exp_output)
97-
exp_series = pd.Series(data=[12.0, 15.0, 21.0])
98-
assert_series_equal(linear_extra_interpolation(weather_series,
99-
**parameters),
100-
exp_series)
101-
exp_arr = np.array(exp_series)
102-
assert_array_equal(linear_extra_interpolation(weather_arr,
103-
**parameters),
104-
exp_arr)
105-
# requested_height > indices of data frame
106-
exp_output = 7.0
107-
parameters['requested_height'] = 250
108-
assert (linear_extra_interpolation(weather, **parameters) ==
109-
exp_output)
110-
exp_series = pd.Series(data=[24.0, 30.0, 42.0])
111-
assert_series_equal(linear_extra_interpolation(weather_series,
112-
**parameters),
113-
exp_series)
114-
exp_arr = np.array(exp_series)
115-
assert_array_equal(linear_extra_interpolation(weather_arr,
116-
**parameters),
117-
exp_arr)
118-
# requested_height is < indices of data frame
119-
exp_output = 3.5
120-
parameters['requested_height'] = 75
121-
assert (linear_extra_interpolation(weather, **parameters) ==
122-
exp_output)
123-
exp_series = pd.Series(data=[2.0, 2.5, 2.0])
124-
assert_series_equal(linear_extra_interpolation(weather_series,
125-
**parameters),
126-
exp_series)
127-
exp_arr = np.array(exp_series)
128-
assert_array_equal(linear_extra_interpolation(weather_arr,
129-
**parameters),
130-
exp_arr)
10+
def test_linear_interpolation_extrapolation(self):
11+
parameters = {'target_height': 80}
12+
df = pd.DataFrame(data={10: [2.0, 2.0, 3.0],
13+
80: [4.0, 5.0, 6.0],
14+
200: [5.0, 8.0, 10.0]},
15+
index=[0, 1, 2])
16+
# target_height is equal to height given in a column of the DataFrame
17+
exp_output = pd.Series(data=[4.0, 5.0, 6.0])
18+
assert_series_equal(linear_interpolation_extrapolation(
19+
df, **parameters), exp_output)
20+
# target_height is between heights given in the columns of the
21+
# DataFrame
22+
exp_output = pd.Series(data=[4.5, 6.5, 8.0])
23+
parameters['target_height'] = 140
24+
assert_series_equal(linear_interpolation_extrapolation(
25+
df, **parameters), exp_output)
26+
exp_output = pd.Series(data=[4.285714, 5.428571, 6.428571])
27+
parameters['target_height'] = 90
28+
assert_series_equal(linear_interpolation_extrapolation(
29+
df, **parameters), exp_output)
30+
# target_height is greater than the heights given in the columns of the
31+
# DataFrame
32+
exp_output = pd.Series(data=[5.333333, 9.0, 11.333333])
33+
parameters['target_height'] = 240
34+
assert_series_equal(linear_interpolation_extrapolation(
35+
df, **parameters), exp_output)
36+
# target_height is smaller than the heights given in the columns of the
37+
# DataFrame
38+
exp_output = pd.Series(data=[1.857143, 1.785714, 2.785714])
39+
parameters['target_height'] = 5
40+
assert_series_equal(linear_interpolation_extrapolation(
41+
df, **parameters), exp_output)

0 commit comments

Comments
 (0)