11import datetime
22import logging
3- import pprint
3+ # import pprint
44
5- from dateutil .relativedelta import *
5+ from dateutil .relativedelta import relativedelta
66import ee
77import openet .core .interpolate
88# TODO: import utils from openet.core
@@ -172,30 +172,36 @@ def from_scene_et_fraction(
172172 if type (et_reference_source ) is str :
173173 # Assume a string source is a single image collection ID
174174 # not a list of collection IDs or ee.ImageCollection
175- if (et_reference_date_type is None or
176- et_reference_date_type . lower () == 'daily' ):
177- daily_et_ref_coll = ee .ImageCollection (et_reference_source ) \
178- .filterDate (start_date , end_date ) \
175+ if (et_reference_date_type is None ) or ( et_reference_date_type . lower () == 'daily' ):
176+ daily_et_ref_coll = (
177+ ee .ImageCollection (et_reference_source )
178+ .filterDate (start_date , end_date )
179179 .select ([et_reference_band ], ['et_reference' ])
180+ )
180181 elif et_reference_date_type .lower () == 'doy' :
181182 # Assume the image collection is a climatology with a "DOY" property
182183 def doy_image (input_img ):
183184 """Return the doy-based reference et with daily time properties from GRIDMET"""
184185 image_date = ee .Algorithms .Date (input_img .get ('system:time_start' ))
185186 image_doy = ee .Number (image_date .getRelative ('day' , 'year' )).add (1 ).int ()
186- doy_coll = ee .ImageCollection (et_reference_source )\
187- .filterMetadata ('DOY' , 'equals' , image_doy )\
187+ doy_coll = (
188+ ee .ImageCollection (et_reference_source )
189+ .filterMetadata ('DOY' , 'equals' , image_doy )
188190 .select ([et_reference_band ], ['et_reference' ])
191+ )
189192 # CGM - Was there a reason to use rangeContains if limiting to one DOY?
190193 # .filter(ee.Filter.rangeContains('DOY', doy, doy))\
191194 return ee .Image (doy_coll .first ())\
192195 .set ({'system:index' : input_img .get ('system:index' ),
193196 'system:time_start' : input_img .get ('system:time_start' )})
194197 # Note, the collection and band that are used are important as
195198 # long as they are daily and available for the time period
196- daily_et_ref_coll = ee .ImageCollection ('IDAHO_EPSCOR/GRIDMET' )\
197- .filterDate (start_date , end_date ).select (['eto' ])\
199+ daily_et_ref_coll = (
200+ ee .ImageCollection ('IDAHO_EPSCOR/GRIDMET' )
201+ .filterDate (start_date , end_date )
202+ .select (['eto' ])
198203 .map (doy_image )
204+ )
199205 # elif isinstance(et_reference_source, computedobject.ComputedObject):
200206 # # Interpret computed objects as image collections
201207 # daily_et_reference_coll = ee.ImageCollection(et_reference_source)\
@@ -208,9 +214,12 @@ def doy_image(input_img):
208214 # CGM - Resampling is not working correctly so not including for now
209215 if et_reference_factor and et_reference_factor != 1 :
210216 def et_reference_adjust (input_img ):
211- return input_img .multiply (et_reference_factor ) \
212- .copyProperties (input_img ) \
217+ return (
218+ input_img .multiply (et_reference_factor )
219+ .copyProperties (input_img )
213220 .set ({'system:time_start' : input_img .get ('system:time_start' )})
221+ )
222+
214223 daily_et_ref_coll = daily_et_ref_coll .map (et_reference_adjust )
215224
216225 # Initialize variable list to only variables that can be interpolated
@@ -235,9 +244,7 @@ def et_reference_adjust(input_img):
235244 # For count, compute the composite/mosaic image for the mask band only
236245 if 'count' in variables :
237246 aggregate_coll = openet .core .interpolate .aggregate_to_daily (
238- image_coll = scene_coll .select (['mask' ]),
239- start_date = start_date ,
240- end_date = end_date ,
247+ image_coll = scene_coll .select (['mask' ]), start_date = start_date , end_date = end_date ,
241248 )
242249
243250 # The following is needed because the aggregate collection can be
@@ -247,7 +254,7 @@ def et_reference_adjust(input_img):
247254 # bands will be which causes a non-homogeneous image collection.
248255 aggregate_coll = aggregate_coll .merge (
249256 ee .Image .constant (0 ).rename (['mask' ])
250- .set ({'system:time_start' : ee .Date (start_date ).millis ()})
257+ .set ({'system:time_start' : ee .Date (start_date ).millis ()})
251258 )
252259
253260 # Interpolate to a daily time step
@@ -294,13 +301,13 @@ def aggregate_image(agg_start_date, agg_end_date, date_format):
294301
295302 """
296303 if 'et' in variables or 'et_fraction' in variables :
297- et_img = daily_coll .filterDate (agg_start_date , agg_end_date ) \
298- .select (['et' ]).sum ()
304+ et_img = daily_coll .filterDate (agg_start_date , agg_end_date ).select (['et' ]).sum ()
299305 if 'et_reference' in variables or 'et_fraction' in variables :
300- # et_reference_img = daily_coll \
301- et_reference_img = daily_et_ref_coll \
302- .filterDate (agg_start_date , agg_end_date ) \
306+ et_reference_img = (
307+ daily_et_ref_coll
308+ .filterDate (agg_start_date , agg_end_date )
303309 .select (['et_reference' ]).sum ()
310+ )
304311
305312 image_list = []
306313 if 'et' in variables :
@@ -309,25 +316,26 @@ def aggregate_image(agg_start_date, agg_end_date, date_format):
309316 image_list .append (et_reference_img .float ())
310317 if 'et_fraction' in variables :
311318 # Compute average et fraction over the aggregation period
312- image_list .append (
313- et_img .divide (et_reference_img ).rename (['et_fraction' ]).float ()
314- )
319+ image_list .append (et_img .divide (et_reference_img ).rename (['et_fraction' ]).float ())
315320 if 'ndvi' in variables :
316321 # Compute average ndvi over the aggregation period
317- ndvi_img = daily_coll \
318- .filterDate (agg_start_date , agg_end_date ) \
322+ ndvi_img = (
323+ daily_coll .filterDate (agg_start_date , agg_end_date )
319324 .mean ().select (['ndvi' ]).float ()
325+ )
320326 image_list .append (ndvi_img )
321327 if 'count' in variables :
322- count_img = aggregate_coll \
323- .filterDate (agg_start_date , agg_end_date ) \
328+ count_img = (
329+ aggregate_coll .filterDate (agg_start_date , agg_end_date )
324330 .select (['mask' ]).sum ().rename ('count' ).uint8 ()
331+ )
325332 image_list .append (count_img )
326333
327334 return ee .Image (image_list ) \
328335 .set ({
329336 'system:index' : ee .Date (agg_start_date ).format (date_format ),
330- 'system:time_start' : ee .Date (agg_start_date ).millis ()})
337+ 'system:time_start' : ee .Date (agg_start_date ).millis (),
338+ })
331339 # .set(interp_properties) \
332340
333341 # Combine input, interpolated, and derived values
@@ -386,6 +394,5 @@ def agg_annual(agg_start_date):
386394 elif t_interval .lower () == 'custom' :
387395 # Returning an ImageCollection to be consistent
388396 return ee .ImageCollection (aggregate_image (
389- agg_start_date = start_date , agg_end_date = end_date ,
390- date_format = 'YYYYMMdd' ,
397+ agg_start_date = start_date , agg_end_date = end_date , date_format = 'YYYYMMdd' ,
391398 ))
0 commit comments