@@ -19,6 +19,10 @@ function Climate(file_path::String, p_id, et_id; t_id="_T")
1919end
2020
2121"""
22+ extract_flow(
23+ data::DataFrame, gauge_id::String; suffix::String="_Q"
24+ )::DataFrame
25+
2226Extract streamflow data from file.
2327
2428Streamflow (Q) column is identified the Gauge ID.
@@ -35,13 +39,13 @@ e.g., ("000001_Q")
3539DataFrame of observations for selected gauge.
3640"""
3741@inline function extract_flow (
38- data:: DataFrame , gauge_id:: String , suffix:: String = " _Q"
42+ data:: DataFrame , gauge_id:: String ; suffix:: String = " _Q"
3943):: DataFrame
4044 target = data[:, [" Date" , gauge_id * suffix]]
4145 try
42- target[! , gauge_id * suffix] = convert .(Float64, target[! , gauge_id * suffix])
46+ target[! , gauge_id* suffix] = convert .(Float64, target[! , gauge_id* suffix])
4347 catch
44- target[! , gauge_id * suffix] = convert .(Union{Float64,Missing}, target[! , gauge_id * suffix])
48+ target[! , gauge_id* suffix] = convert .(Union{Float64,Missing}, target[! , gauge_id* suffix])
4549 end
4650
4751 rename! (target, gauge_id * suffix => gauge_id)
@@ -78,8 +82,9 @@ Extract rainfall data for a given node.
7882function rainfall_data (node:: NetworkNode , climate:: Climate ):: DataFrame
7983 data = climate. climate_data
8084 rain_col = filter (x -> occursin (node. name, x)
81- & occursin (climate. rainfall_id, x),
82- names (data))[1 ]
85+ &
86+ occursin (climate. rainfall_id, x),
87+ names (data))[1 ]
8388
8489 return data[:, rain_col]
8590end
@@ -107,15 +112,18 @@ function climate_values(node::NetworkNode, climate::Climate, timestep::Int)
107112
108113 # TODO : Catch instances where data is not found (raises BoundsError)
109114 rain_col = filter (x -> occursin (node_name, x)
110- & occursin (climate. rainfall_id, x),
111- names (data))[1 ]
115+ &
116+ occursin (climate. rainfall_id, x),
117+ names (data))[1 ]
112118 et_col = filter (x -> occursin (node_name, x)
113- & occursin (climate. et_id, x),
114- names (data))[1 ]
119+ &
120+ occursin (climate. et_id, x),
121+ names (data))[1 ]
115122 t_col = try
116123 filter (x -> occursin (node_name, x)
117- & occursin (climate. t_id, x),
118- names (data))[1 ]
124+ &
125+ occursin (climate. t_id, x),
126+ names (data))[1 ]
119127 catch err
120128 if ! (err isa BoundsError)
121129 rethrow (err)
@@ -148,11 +156,13 @@ function climate_values(node::NetworkNode, climate::Climate)
148156
149157 # TODO : Catch instances where data is not found (raises BoundsError)
150158 rain_col = filter (x -> occursin (node. name, x)
151- & occursin (climate. rainfall_id, x),
152- names (data))[1 ]
159+ &
160+ occursin (climate. rainfall_id, x),
161+ names (data))[1 ]
153162 et_col = filter (x -> occursin (node. name, x)
154- & occursin (climate. et_id, x),
155- names (data))[1 ]
163+ &
164+ occursin (climate. et_id, x),
165+ names (data))[1 ]
156166
157167 if isempty (rain_col) | isempty (et_col)
158168 throw (ArgumentError (" No climate data found for $(node. name) at time step: $(timestep) " ))
0 commit comments