@@ -100,10 +100,47 @@ def test_hazard_forecast_concat(haz_fc, lead_time, member):
100100 npt .assert_array_equal (haz_fc_concat .member , np .concatenate ([member , member ]))
101101
102102
103- def test_hazard_forecast_select (haz_fc , lead_time , member ):
103+ def test_hazard_forecast_select (haz_fc , lead_time , member , haz_kwargs ):
104104 """Check if Hazard.select works on the derived class"""
105- haz_fc_select = haz_fc .select (event_id = [4 , 1 ])
106- # NOTE: Events keep their original order
107- npt .assert_array_equal (haz_fc_select .event_id , haz_fc .event_id [np .array ([3 , 0 ])])
108- npt .assert_array_equal (haz_fc_select .member , member [np .array ([3 , 0 ])])
109- npt .assert_array_equal (haz_fc_select .lead_time , lead_time [np .array ([3 , 0 ])])
105+ # haz_fc_select = haz_fc.select(event_id=[4, 1])
106+ # # NOTE: Events keep their original order
107+ # npt.assert_array_equal(haz_fc_select.event_id, haz_fc.event_id[np.array([3, 0])])
108+ # npt.assert_array_equal(haz_fc_select.member, member[np.array([3, 0])])
109+ # npt.assert_array_equal(haz_fc_select.lead_time, lead_time[np.array([3, 0])])
110+
111+ select_mask = np .array ([2 , 3 ])
112+ ordered_select_mask = np .array ([2 , 3 ])
113+ vars_to_select = {
114+ "event_id" : "event_id" ,
115+ "event_name" : "event_names" ,
116+ "date" : "date" ,
117+ }
118+
119+ for var , var_select in vars_to_select .items ():
120+ var_value = np .array (haz_kwargs [var ])[select_mask ]
121+ # event_name is a list, convert to numpy array for indexing
122+ haz_fc_sel = haz_fc .select (** {var_select : var_value })
123+ npt .assert_array_equal (
124+ haz_fc_sel .event_id ,
125+ haz_fc .event_id [ordered_select_mask ],
126+ )
127+ npt .assert_array_equal (
128+ haz_fc_sel .event_name ,
129+ np .array (haz_fc .event_name )[ordered_select_mask ],
130+ )
131+ npt .assert_array_equal (haz_fc_sel .date , haz_fc .date [ordered_select_mask ])
132+ npt .assert_array_equal (
133+ haz_fc_sel .frequency , haz_fc .frequency [ordered_select_mask ]
134+ )
135+ npt .assert_array_equal (haz_fc_sel .member , member [ordered_select_mask ])
136+ npt .assert_array_equal (haz_fc_sel .lead_time , lead_time [ordered_select_mask ])
137+ npt .assert_array_equal (
138+ haz_fc_sel .intensity .todense (),
139+ haz_fc .intensity .todense ()[ordered_select_mask ],
140+ )
141+ npt .assert_array_equal (
142+ haz_fc_sel .fraction .todense (),
143+ haz_fc .fraction .todense ()[ordered_select_mask ],
144+ )
145+
146+ assert haz_fc_sel .centroids == haz_fc .centroids
0 commit comments