Skip to content

Commit 7fefe43

Browse files
committed
Misc. formatting cleanup and flake8 changes
Letting line lengths go to ~100 where it seems to improves readability. Also, trying to move away from using trailing slashes.
1 parent f3fd19c commit 7fefe43

File tree

7 files changed

+311
-286
lines changed

7 files changed

+311
-286
lines changed

openet/ssebop/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@
99

1010
MODEL_NAME = 'SSEBOP'
1111

12-
# __version__ = metadata.version(__package__ or __name__)
12+
# # __version__ = metadata.version(__package__ or __name__)
13+
# __version__ = metadata.version(__package__.replace('.', '-') or __name__.replace('.', '-'))
14+
# # __version__ = metadata.version('openet-ssebop')

openet/ssebop/collection.py

Lines changed: 134 additions & 101 deletions
Large diffs are not rendered by default.

openet/ssebop/image.py

Lines changed: 116 additions & 129 deletions
Large diffs are not rendered by default.

openet/ssebop/interpolate.py

Lines changed: 38 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import datetime
22
import logging
3-
import pprint
3+
# import pprint
44

5-
from dateutil.relativedelta import *
5+
from dateutil.relativedelta import relativedelta
66
import ee
77
import 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
))

openet/ssebop/landsat.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,19 @@ def emissivity(landsat_image):
2222
2323
"""
2424
ndvi_img = ndvi(landsat_image)
25-
Pv = ndvi_img.expression('((ndvi - 0.2) / 0.3) ** 2', {'ndvi': ndvi_img})
25+
pv = ndvi_img.expression('((ndvi - 0.2) / 0.3) ** 2', {'ndvi': ndvi_img})
2626
# ndviRangevalue = ndvi_image.where(
2727
# ndvi_image.gte(0.2).And(ndvi_image.lte(0.5)), ndvi_image
2828
# )
29-
# Pv = ndviRangevalue.expression(
29+
# pv = ndviRangevalue.expression(
3030
# '(((ndviRangevalue - 0.2) / 0.3) ** 2',
3131
# {'ndviRangevalue':ndviRangevalue}
3232
# )
3333

3434
# Assuming typical Soil Emissivity of 0.97 and Veg Emissivity of 0.99
3535
# and shape Factor mean value of 0.553
36-
dE = Pv.expression(
37-
'(1 - 0.97) * (1 - Pv) * (0.55 * 0.99)', {'Pv': Pv}
38-
)
39-
RangeEmiss = dE.expression(
40-
'(0.99 * Pv) + (0.97 * (1 - Pv)) + dE', {'Pv': Pv, 'dE': dE}
41-
)
36+
de = pv.expression('(1 - 0.97) * (1 - Pv) * (0.55 * 0.99)', {'Pv': pv})
37+
RangeEmiss = de.expression('(0.99 * Pv) + (0.97 * (1 - Pv)) + dE', {'Pv': pv, 'dE': de})
4238

4339
return (
4440
ndvi_img
@@ -128,8 +124,7 @@ def ndvi(landsat_image):
128124
ee.Image
129125
130126
"""
131-
return ee.Image(landsat_image).normalizedDifference(['nir', 'red'])\
132-
.rename(['ndvi'])
127+
return ee.Image(landsat_image).normalizedDifference(['nir', 'red']).rename(['ndvi'])
133128

134129

135130
def ndwi(landsat_image):
@@ -145,8 +140,7 @@ def ndwi(landsat_image):
145140
ee.Image
146141
147142
"""
148-
return ee.Image(landsat_image).normalizedDifference(['green', 'swir1'])\
149-
.rename(['ndwi'])
143+
return ee.Image(landsat_image).normalizedDifference(['green', 'swir1']).rename(['ndwi'])
150144

151145

152146
def landsat_c2_qa_water_mask(landsat_image):

openet/ssebop/model.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,8 +216,10 @@ def elr_adjust(temperature, elevation, radius=80):
216216
# Then generate the smoothed elevation image
217217
elev_tmax_smoothed = (
218218
elev_tmax_fine
219-
.reduceNeighborhood(reducer=ee.Reducer.median(),
220-
kernel=ee.Kernel.square(radius=radius, units='pixels'))
219+
.reduceNeighborhood(
220+
reducer=ee.Reducer.median(),
221+
kernel=ee.Kernel.square(radius=radius, units='pixels')
222+
)
221223
.reproject(crs=tmax_projection)
222224
)
223225

openet/ssebop/utils.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,18 @@ def getinfo(ee_obj, n=4):
3838
# I'm not sure how to make them fixtures and allow input parameters
3939
def constant_image_value(image, crs='EPSG:32613', scale=1):
4040
"""Extract the output value from a calculation done with constant images"""
41-
return getinfo(ee.Image(image).reduceRegion(
42-
reducer=ee.Reducer.first(), scale=scale,
43-
geometry=ee.Geometry.Rectangle([0, 0, 10, 10], crs, False)))
41+
rr_params = {
42+
'reducer': ee.Reducer.first(),
43+
'geometry': ee.Geometry.Rectangle([0, 0, 10, 10], crs, False),
44+
'scale': scale,
45+
}
46+
return getinfo(ee.Image(image).reduceRegion(**rr_params))
4447

4548

4649
def point_image_value(image, xy, scale=1):
4750
"""Extract the output value from a calculation at a point"""
48-
return getinfo(ee.Image(image).reduceRegion(
49-
reducer=ee.Reducer.first(), geometry=ee.Geometry.Point(xy),
50-
scale=scale))
51+
rr_params = {'reducer': ee.Reducer.first(), 'geometry': ee.Geometry.Point(xy), 'scale': scale}
52+
return getinfo(ee.Image(image).reduceRegion(**rr_params))
5153

5254

5355
def point_coll_value(coll, xy, scale=1):
@@ -62,8 +64,7 @@ def point_coll_value(coll, xy, scale=1):
6264
col_dict[k] = i + 4
6365
info_dict[k] = {}
6466
for row in output[1:]:
65-
date = datetime.datetime.utcfromtimestamp(row[3] / 1000.0).strftime(
66-
'%Y-%m-%d')
67+
date = datetime.datetime.utcfromtimestamp(row[3] / 1000.0).strftime('%Y-%m-%d')
6768
for k, v in col_dict.items():
6869
info_dict[k][date] = row[col_dict[k]]
6970
return info_dict
@@ -97,8 +98,7 @@ def date_to_time_0utc(date):
9798
ee.Number
9899
99100
"""
100-
return ee.Date.fromYMD(date.get('year'), date.get('month'),
101-
date.get('day')).millis()
101+
return ee.Date.fromYMD(date.get('year'), date.get('month'), date.get('day')).millis()
102102
# Extra operations are needed since update() does not set milliseconds to 0.
103103
# return date.update(hour=0, minute=0, second=0).millis()\
104104
# .divide(1000).floor().multiply(1000)

0 commit comments

Comments
 (0)