@@ -927,13 +927,17 @@ def crop_date_range(self, case_date_range: util.DateRange, xr_ds, time_coord) ->
927
927
date_range_cf_start = self .cast_to_cftime (case_date_range .start .lower , cal )
928
928
date_range_cf_end = self .cast_to_cftime (case_date_range .end .lower , cal )
929
929
930
+ # dataset has no overlap with the user-specified date range
930
931
if ds_start < date_range_cf_start and ds_end < date_range_cf_start or \
931
932
ds_end > date_range_cf_end and ds_start > date_range_cf_end :
932
933
new_xr_ds = None
933
934
# dataset falls entirely within user-specified date range
934
935
elif ds_start >= date_range_cf_start and ds_end <= date_range_cf_end :
935
936
new_xr_ds = xr_ds .sel ({time_coord .name : slice (ds_start , ds_end )})
936
- # dataset overlaps user-specified date range start
937
+ # dataset overlaps user-specified date range start (corrected)
938
+ elif ds_start <= date_range_cf_start <= ds_end <= date_range_cf_end :
939
+ new_xr_ds = xr_ds .sel ({time_coord .name : slice (date_range_cf_start , ds_end )})
940
+ # dataset overlaps user-specified date range start (orig)
937
941
elif date_range_cf_start < ds_start and \
938
942
date_range_cf_start <= ds_end <= date_range_cf_end :
939
943
new_xr_ds = xr_ds .sel ({time_coord .name : slice (date_range_cf_start , ds_end )})
@@ -943,6 +947,12 @@ def crop_date_range(self, case_date_range: util.DateRange, xr_ds, time_coord) ->
943
947
# dataset contains all of requested date range
944
948
elif date_range_cf_start >= ds_start and date_range_cf_end <= ds_end :
945
949
new_xr_ds = xr_ds .sel ({time_coord .name : slice (date_range_cf_start , date_range_cf_end )})
950
+ else :
951
+ print (f'ERROR: new_xr_ds is unset because of incompatibility of time:' )
952
+ print (f' Dataset start: { ds_start = } ' )
953
+ print (f' Dataset end : { ds_end = } ' )
954
+ print (f' Requested start: { date_range_cf_start = } ' )
955
+ print (f' Requested end : { date_range_cf_end = } ' )
946
956
947
957
return new_xr_ds
948
958
0 commit comments