Skip to content

Commit b19d408

Browse files
committed
use soil thickness instead of depth
1 parent 3ab42ab commit b19d408

2 files changed

Lines changed: 52 additions & 10 deletions

File tree

data_assimilation_engine/soil_moisture/mapping/simulated_data.py

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -156,17 +156,37 @@ def __init__(self, csv_directory: str, dates: list, output_file: str):
156156

157157
def convert_units(self, df: pd.DataFrame, mask: pd.DataFrame):
158158
"""Convert Units."""
159-
return np.average(df.loc[mask, self.columns].values,axis=1,weights=self.depths)
160-
159+
return np.average(
160+
df.loc[mask, self.columns].values, axis=1, weights=self.soil_thickness
161+
)
161162

162163
@property
163164
def depths(self):
164165
"""Get depths from column names."""
165-
depths=[]
166+
depths = []
166167
for column in self.columns:
167-
depths.append(float(column.replace("sm_profile_","").replace("_",".").replace("m","")))
168+
depths.append(
169+
float(
170+
column.replace("sm_profile_", "").replace("_", ".").replace("m", "")
171+
)
172+
)
168173
return depths
169-
174+
175+
@property
176+
def soil_thickness(self):
177+
"""Get soil thickness from column names."""
178+
sorted_depths = sorted(self.depths, reverse=True) + [0]
179+
soil_thickness = [
180+
sorted_depths[i] - sorted_depths[i + 1]
181+
for i in range(len(sorted_depths) - 1)
182+
if i + 1 < len(sorted_depths + [0])
183+
]
184+
ordered_soil_thickness = []
185+
for depth in self.depths:
186+
idx = sorted_depths.index(depth)
187+
ordered_soil_thickness.append(soil_thickness[idx])
188+
return ordered_soil_thickness
189+
170190
def check_columns(self, df: pd.DataFrame, file_path: str):
171191
"""Check that columns exists."""
172192
columns = [column for column in df.columns if "sm_profile" in column]

data_assimilation_engine/soil_moisture/timeseries/timeseries.py

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,21 +113,43 @@ def check_columns(self, df: pd.DataFrame, file_path: str):
113113
logger.info(f"{self.variable_name} columns not found in {file_path}")
114114
return False
115115

116-
self.columns=columns
116+
self.columns = columns
117117
return True
118118

119119
def convert_units(self, df: pd.DataFrame, mask: pd.DataFrame):
120120
"""Convert Units."""
121-
return np.average(df.loc[mask, self.columns].values,axis=1,weights=self.depths)
121+
return np.average(
122+
df.loc[mask, self.columns].values, axis=1, weights=self.soil_thickness
123+
)
122124

123125
@property
124126
def depths(self):
125127
"""Get depths from column names."""
126-
depths=[]
128+
depths = []
127129
for column in self.columns:
128-
depths.append(float(column.replace("sm_profile_","").replace("_",".").replace("m","")))
130+
depths.append(
131+
float(
132+
column.replace("sm_profile_", "").replace("_", ".").replace("m", "")
133+
)
134+
)
129135
return depths
130-
136+
137+
@property
138+
def soil_thickness(self):
139+
"""Get soil thickness from column names."""
140+
sorted_depths = sorted(self.depths, reverse=True) + [0]
141+
soil_thickness = [
142+
sorted_depths[i] - sorted_depths[i + 1]
143+
for i in range(len(sorted_depths) - 1)
144+
if i + 1 < len(sorted_depths + [0])
145+
]
146+
ordered_soil_thickness = []
147+
for depth in self.depths:
148+
idx = sorted_depths.index(depth)
149+
ordered_soil_thickness.append(soil_thickness[idx])
150+
return ordered_soil_thickness
151+
152+
131153
class SoilMoistureS3Loader(S3Loader):
132154
"""Handles loading and retrieving soil moisture data from S3."""
133155

0 commit comments

Comments
 (0)