@@ -75,19 +75,19 @@ function get_all_output_vars(obs_dir, diagnostic_var2d, diagnostic_var3d)
75
75
# specific humidity
76
76
hus = resample (era5_outputvar (joinpath (obs_dir, " era5_monthly_avg_pressure_level_q.nc" )))
77
77
78
- # Cloud specific liquid water content
79
- ql = era5_outputvar (joinpath (obs_dir, " era5_specific_cloud_liquid_water_content_1deg.nc" ))
80
- # Cloud specific ice water content
81
- qi = era5_outputvar (joinpath (obs_dir, " era5_specific_cloud_ice_water_content_1deg.nc" ))
82
- foreach ((ql, qi)) do var
83
- # Convert from hPa to Pa in-place so we don't create more huge OutputVars
84
- @assert var. dim_attributes[pressure_name (var)][" units" ] == " hPa"
85
- var. dims[pressure_name (var)] .*= 100.0
86
- set_dim_units! (var, pressure_name (var), " Pa" )
87
- end
78
+ # # Cloud specific liquid water content
79
+ # ql = era5_outputvar(joinpath(obs_dir, "era5_specific_cloud_liquid_water_content_1deg.nc"))
80
+ # # Cloud specific ice water content
81
+ # qi = era5_outputvar(joinpath(obs_dir, "era5_specific_cloud_ice_water_content_1deg.nc"))
82
+ # foreach((ql, qi)) do var
83
+ # # Convert from hPa to Pa in-place so we don't create more huge OutputVars
84
+ # @assert var.dim_attributes[pressure_name(var)]["units"] == "hPa"
85
+ # var.dims[pressure_name(var)] .*= 100.0
86
+ # set_dim_units!(var, pressure_name(var), "Pa")
87
+ # end
88
88
# TODO : determine where time is spent here
89
- ql = resample (reverse_dim (reverse_dim (ql, latitude_name (ql)), pressure_name (ql)))
90
- qi = resample (reverse_dim (reverse_dim (qi, latitude_name (qi)), pressure_name (qi)))
89
+ # ql = resample(reverse_dim(reverse_dim(ql, latitude_name(ql)), pressure_name(ql)))
90
+ # qi = resample(reverse_dim(reverse_dim(qi, latitude_name(qi)), pressure_name(qi)))
91
91
92
92
return (; rlut, rsut, rsutcs, rlutcs, pr, net_rad, cre, shf, ts, ta, hur, hus)# , ql, qi)
93
93
end
111
111
# ####
112
112
# Processing to create EKP.ObservationSeries
113
113
# ####
114
-
114
+ function to_datetime (var:: OutputVar )
115
+ start_date = DateTime (var. attributes[" start_date" ], dateformat " yyyy-mm-ddTHH:MM:SS" )
116
+ return [start_date + Second (t) for t in times (var)]
117
+ end
115
118
to_datetime (start_date, time) = DateTime (start_date) + Second (time)
116
119
to_datetime (time) = DateTime (start_date) + Second (time)
117
120
@@ -140,14 +143,17 @@ function get_yearly_averages(var)
140
143
return year_averaged_matrices
141
144
end
142
145
143
- # Given an outputvar, compute the standard deviation at each point for each season.
146
+ # TODO : compute seasonal stdev properly
144
147
function get_seasonal_stdev (output_var)
145
148
all_seasonal_averages = get_seasonal_averages (output_var)
146
149
all_seasonal_averages = downsample .(all_seasonal_averages, 3 )
147
- seasonal_average_matrix = cat (all_seasonal_averages... ; dims = 3 )
148
- interannual_stdev = std (seasonal_average_matrix, dims = 3 )
149
- # TODO : Add spatial variance
150
- return dropdims (interannual_stdev; dims = 3 )
150
+
151
+ # Determine dimensionality of the data
152
+ dims = ndims (all_seasonal_averages[1 ]) + 1
153
+
154
+ seasonal_average_matrix = cat (all_seasonal_averages... ; dims)
155
+ interannual_stdev = std (seasonal_average_matrix; dims)
156
+ return dropdims (interannual_stdev; dims)
151
157
end
152
158
153
159
# Given an outputvar, compute the covariance for each season.
@@ -226,15 +232,15 @@ function create_observation_vector(nt, yrs = 19)
226
232
# shf_obs = make_single_year_of_seasonal_observations(shf, yr)
227
233
ts_obs = make_single_year_of_seasonal_observations (ts, yr)
228
234
229
- # ta_obs = make_single_year_of_seasonal_observations(ta, yr)
230
- # hur_obs = make_single_year_of_seasonal_observations(hur, yr)
231
- # hus_obs = make_single_year_of_seasonal_observations(hus, yr)
232
- EKP. combine_observations ([net_rad_obs, rsut_obs, rlut_obs, cre_obs, pr_obs, ts_obs]) # , ta_obs, hur_obs, hus_obs])
235
+ ta_obs = make_single_year_of_seasonal_observations (ta, yr)
236
+ hur_obs = make_single_year_of_seasonal_observations (hur, yr)
237
+ hus_obs = make_single_year_of_seasonal_observations (hus, yr)
238
+ EKP. combine_observations ([net_rad_obs, rsut_obs, rlut_obs, cre_obs, pr_obs, ts_obs, ta_obs, hur_obs, hus_obs])
233
239
end
234
240
235
241
return all_observations # NOT an EKP.ObservationSeries
236
242
end
237
- # TODO : Ask kevin to implement in
243
+ # TODO : Ask kevin to implement in ClimaAnalysis
238
244
downsample (var:: ClimaAnalysis.OutputVar , n) = downsample (var. data, n)
239
245
240
246
function downsample (arr:: AbstractArray , n)
0 commit comments