diff --git a/FireFuncs.py b/FireFuncs.py index a651ec3217c650d14619384b4c1677792a47ca32..585bc7e751eb815cca07c05b83314821ffa55cff 100644 --- a/FireFuncs.py +++ b/FireFuncs.py @@ -108,10 +108,13 @@ def set_ftype(fire): vLCT = FireIO.get_LCT_CONUS( uselocs ) # call get_LCT to get all LCT for the fire pixels - LCTmax = max( - set(vLCT), key=vLCT.count - ) # extract the LCT with most pixel counts - + try: + LCTmax = max( + set(vLCT), key=vLCT.count) # extract the LCT with most pixel counts + except: + print('No LCT data available, setting ftype to 0...') + ftype = 0 + return ftype # get and record fm1000 value at ignition ignct = fire.ignlocsMP.centroid # ignition centroid loc = (ignct.y, ignct.x) # (lat,lon) diff --git a/FireGpkg.py b/FireGpkg.py index 33c536b32b020e4e3cdf1644ff7535bdf5690b01..964bb8319747f014ce579b6d7313fb78482e1969 100644 --- a/FireGpkg.py +++ b/FireGpkg.py @@ -98,6 +98,7 @@ def make_gdf_snapshot(allfires, regnm, layer="perimeter"): gdf = FireIO.load_gpkgobj(t_pt, regnm, layer=layer) # try to read data at t_pt if gdf is None: # when no previous time step data, initialize the GeoDataFrame + print('No previous Snapshot found. Making file from allfires obj.') gdf = gpd.GeoDataFrame( columns=(list(dd.keys()) + ["fireID"]), crs="epsg:" + str(epsg), geometry=[] ) diff --git a/FireGpkg_sfs.py b/FireGpkg_sfs.py index 428e51b74d1f9f98dcff3440239b49cd8fb03b46..dbc0e276302d158ff0fdcae09af6eb72e68f238d 100644 --- a/FireGpkg_sfs.py +++ b/FireGpkg_sfs.py @@ -25,6 +25,9 @@ Modules required import warnings warnings.simplefilter(action='ignore', category=FutureWarning) +# Use a logger to record console output +from FireLog import logger +import time def find_largefires(allfires, falim=4): """ Given an allfires object, extract large fires to be used for single fire @@ -265,6 +268,7 @@ def make_sfts_1f(allfires, fid, regnm, dd, layer="perimeter"): if FireTime.t_dif(t, f.t_st) == 0: gdf_all = make_sf(t, regnm, layer, fids_m + [fid], fid, sfkeys) + if gdf_all is None: print('Warning, this initial instance of gdf_all is None.') else: if gdf_all is None: print('Warning: variable gdf_all is was previously None. Resetting to current timestep...') @@ -469,11 +473,16 @@ def save_sfts_trng( endloop = False # flag to control the ending olf the loop t = list(tst) # t is the time (year,month,day,ampm) for each step while endloop == False: + print("Single fire saving", t) - + logger.info('Single fire saving: '+str(t)) + # create and save all gpkg files at time t + tstart = time.time() save_sfts_all(t, regnm, layers=layers) - + tend = time.time() + + logger.info(f"{(tend-tstart)/60.} minutes used to save Largefire data for this time.") # time flow control # - if t reaches ted, set endloop to True to stop the loop if FireTime.t_dif(t, ted) == 0: diff --git a/FireIO.py b/FireIO.py index 0d4c0a73be3d070c59d43a7693ba129c1911c85e..468a337f591e4a470756f52964e8abd84536f9ba 100644 --- a/FireIO.py +++ b/FireIO.py @@ -1630,9 +1630,9 @@ def save_gpkgsfs( gdf_nfplist.to_file(f"{fnm}/nfplist.fgb", driver="FlatGeobuf") + def load_gpkgobj(t, regnm, layer="perimeter"): """ Load geopandas from a gpkg fire object file - Parameters ---------- t : tuple, (int,int,int,str) @@ -1650,39 +1650,27 @@ def load_gpkgobj(t, regnm, layer="perimeter"): # get file name fnm = get_gpkgobj_fnm(t, regnm) - - itry = 0 - maxtries = 5 - while itry < maxtries: - if os_path_exists(fnm): - try: - gdf = read_gpkg(fnm, layer=layer) - - # set fireID as index column (force to be int type) - if "t" in gdf.columns: - gdf["t"] = pd.to_datetime(gdf.t) - if "t_st" in gdf.columns: - gdf["t_st"] = pd.to_datetime(gdf.t_st) - if "t_ed" in gdf.columns: - gdf["t_ed"] = pd.to_datetime(gdf.t_ed) - - gdf.fireID = gdf.fireID.astype("int") - gdf = gdf.set_index("fireID") - return gdf + try: + gdf = read_gpkg(fnm, layer=layer) + if gdf is None: + return gdf + # set fireID as index column (force to be int type) + if "t" in gdf.columns: + gdf["t"] = pd.to_datetime(gdf.t) + if "t_st" in gdf.columns: + gdf["t_st"] = pd.to_datetime(gdf.t_st) + if "t_ed" in gdf.columns: + gdf["t_ed"] = pd.to_datetime(gdf.t_ed) + + gdf.fireID = gdf.fireID.astype("int") + gdf = gdf.set_index("fireID") + return gdf - except Exception as e: - print('File exists but the following error was encountered:',e) - gdf = None - return gdf - - else: - itry += 1 - print(f"Read attempt {itry}/{maxtries} failed.") - if not itry < maxtries: - print(str(fnm),'does not exist.') - return None - sleep(5) - + except Exception as e: + print('Encountered the following error:',e) + gdf = None + return gdf + def load_gpkgsfs(t, fid, regnm, layer="perimeter"): """ Load geopandas from a gpkg fire object file diff --git a/algorithm_config.yaml b/algorithm_config.yaml index 557c4869954e1fa04a878ddea77da85a84a8b685..20ac0854aafc933840081216c55fab730c85ec3f 100644 --- a/algorithm_config.yaml +++ b/algorithm_config.yaml @@ -1,10 +1,11 @@ # DO NOT DELETE # THIS CONFIG IS AUTO-GENERATED BY ADE UI -algo_name: "eis-fire-feds-v2" +======= +algo_name: eis-fire-feds-v2-eo # Branch or tag -version: "conus-dps-4" -environment: "ubuntu" -repository_url: "https://repo.ops.maap-project.org/ashiklom/fireatlas.git" +version: conus-dps +environment: ubuntu +repository_url: https://repo.ops.maap-project.org/eorland_gee/fireatlas.git # Container used for running docker_url: "mas.maap-project.org:5000/root/ade-base-images/vanilla:latest" # queue chosen when registering