Skip to content

Commit

Permalink
Add prefix/suffix to run_id
Browse files Browse the repository at this point in the history
  • Loading branch information
burggraaff committed Mar 22, 2024
1 parent decc1bd commit 7372f68
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 6 deletions.
7 changes: 4 additions & 3 deletions experiments/rdmsol_generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,8 @@ def run_pcse(soildata_and_depth: tuple[fpcup.soil.SoilType, int], *,
soildata = copy(_soildata)
soildata["RDMSOL"] = depth

run_id = f"{args.crop}_{_soildata.name}_RDMSOL-{depth:d}_dos{sowdate:%Y%j}_lat{coordinates[0]:.7f}-lon{coordinates[1]:.7f}"

# Combine input data
run = fpcup.model.RunData(sitedata=sitedata, soildata=soildata, cropdata=cropdata, weatherdata=weatherdata, agromanagement=agromanagement, geometry=coordinates, crs=crs, run_id=run_id)
run = fpcup.model.RunData(sitedata=sitedata, soildata=soildata, cropdata=cropdata, weatherdata=weatherdata, agromanagement=agromanagement, geometry=coordinates, crs=crs, suffix=f"RDMSOL-{depth:d}")

# Run model
output = fpcup.model.run_pcse_single(run)
Expand All @@ -72,6 +70,9 @@ def run_pcse(soildata_and_depth: tuple[fpcup.soil.SoilType, int], *,
if __name__ == "__main__":
fpcup.multiprocessing.freeze_support()
### Setup
# Make the output folder if it does not exist yet
fpcup.io.makedirs(args.output_dir, exist_ok=True)

# Feedback on constants
if args.verbose:
print(f"Save folder: {args.output_dir.absolute()}")
Expand Down
9 changes: 6 additions & 3 deletions fpcup/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ def __new__(cls, sitedata: PCSESiteDataProvider, soildata: SoilType, cropdata: M
return super().__new__(cls, (parameters, weatherdata, agromanagement))

def __init__(self, sitedata: PCSESiteDataProvider, soildata: SoilType, cropdata: MultiCropDataProvider, weatherdata: WeatherDataProvider, agromanagement: AgromanagementData, *,
run_id: Optional[str]=None, geometry: Optional[shapely.Geometry | tuple]=None, crs=None):
run_id: Optional[str]=None, prefix: Optional[str]="", suffix: Optional[str]="",
geometry: Optional[shapely.Geometry | tuple]=None, crs=None):
# Easier access
self.sitedata = sitedata
self.soildata = soildata
Expand All @@ -87,6 +88,7 @@ def __init__(self, sitedata: PCSESiteDataProvider, soildata: SoilType, cropdata:
# Assign a run_id, either from user input or from the run parameters
if run_id is None:
run_id = self.generate_run_id()
run_id = "_".join(s for s in (prefix, run_id, suffix) if s)
self.run_id = run_id

def __repr__(self) -> str:
Expand Down Expand Up @@ -137,7 +139,8 @@ class RunDataBRP(RunData):
"""
Same as RunData but specific to the BRP.
"""
def __init__(self, sitedata: PCSESiteDataProvider, soildata: CABOFileReader, cropdata: MultiCropDataProvider, weatherdata: WeatherDataProvider, agromanagement: AgromanagementData, brpdata: pd.Series, brpyear: int, crs=CRS_AMERSFOORT):
def __init__(self, sitedata: PCSESiteDataProvider, soildata: CABOFileReader, cropdata: MultiCropDataProvider, weatherdata: WeatherDataProvider, agromanagement: AgromanagementData, brpdata: pd.Series, brpyear: int, *,
crs=CRS_AMERSFOORT, **kwargs):
"""
Use a BRP data series to initialise the RunData object.
`brpyear` is the BRP year, not the weatherdata year, so that e.g. a plot from the 2021 BRP can be simulated in 2022.
Expand All @@ -151,7 +154,7 @@ def __init__(self, sitedata: PCSESiteDataProvider, soildata: CABOFileReader, cro

self.brpyear = brpyear

super().__init__(sitedata, soildata, cropdata, weatherdata, agromanagement, geometry=brpdata["geometry"], crs=crs)
super().__init__(sitedata, soildata, cropdata, weatherdata, agromanagement, geometry=brpdata["geometry"], crs=crs, **kwargs)

def generate_run_id(self) -> str:
sowdate = self.agromanagement.crop_start_date
Expand Down
3 changes: 3 additions & 0 deletions test/batch_locations.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ def run_pcse(coordinates: fpcup._typing.Coordinates) -> bool | fpcup.model.RunDa
if __name__ == "__main__":
fpcup.multiprocessing.freeze_support()
### Setup
# Make the output folder if it does not exist yet
fpcup.io.makedirs(args.output_dir, exist_ok=True)

# Feedback on constants
if args.verbose:
print("Loaded soil data")
Expand Down

0 comments on commit 7372f68

Please sign in to comment.