[+] A3 P4 Q1 calculate_ffwi_outputs
This commit is contained in:
@@ -61,7 +61,40 @@ def calculate_ffwi_outputs(readings: list[WeatherMetrics]) -> dict[tuple[int, in
|
|||||||
Preconditions:
|
Preconditions:
|
||||||
- Every reading in readings has a unique (month, day) pair
|
- Every reading in readings has a unique (month, day) pair
|
||||||
"""
|
"""
|
||||||
# todo
|
# Sort by month and day
|
||||||
|
readings = sorted(readings, key=lambda x: (x.month, x.day))
|
||||||
|
|
||||||
|
# # Create a input dictionary mapping by month and day
|
||||||
|
# inputs: dict[tuple[int, int], WeatherMetrics] = {(r.month, r.day): r for r in readings}
|
||||||
|
|
||||||
|
# Accumulator
|
||||||
|
output: dict[tuple[int, int], FfwiOutput] = {}
|
||||||
|
|
||||||
|
# Initial values
|
||||||
|
# ASSUME that the input dates are CONTINUOUS
|
||||||
|
# ASSUME that the input dates does not wrap around a year
|
||||||
|
last = FfwiOutput(ffwi.INITIAL_FFMC, ffwi.INITIAL_DMC, ffwi.INITIAL_DC, 0, 0, 0)
|
||||||
|
|
||||||
|
# Loop through inputs
|
||||||
|
for x in readings:
|
||||||
|
# # Calculate yesterday's month and day
|
||||||
|
# yesterday = (x.month, x.day - 1)
|
||||||
|
# # Wrap to last month
|
||||||
|
# if x.day == 0:
|
||||||
|
#
|
||||||
|
# # Wrap to last year
|
||||||
|
# if x.month == 1:
|
||||||
|
# yesterday = (12, )
|
||||||
|
# yesterday = (x.month - 1)
|
||||||
|
ffmc = ffwi.calculate_ffmc(x, last.ffmc)
|
||||||
|
dmc = ffwi.calculate_dmc(x, last.dmc)
|
||||||
|
dc = ffwi.calculate_dc(x, last.dc)
|
||||||
|
isi = ffwi.calculate_isi(x, ffmc)
|
||||||
|
bui = ffwi.calculate_bui(dmc, dc)
|
||||||
|
fwi = ffwi.calculate_fwi(isi, bui)
|
||||||
|
output[(x.month, x.day)] = FfwiOutput(ffmc, dmc, dc, isi, bui, fwi)
|
||||||
|
|
||||||
|
return output
|
||||||
|
|
||||||
|
|
||||||
def get_xy_data(outputs: dict[tuple[int, int], FfwiOutput], attribute: str) -> \
|
def get_xy_data(outputs: dict[tuple[int, int], FfwiOutput], attribute: str) -> \
|
||||||
|
|||||||
Reference in New Issue
Block a user