Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
d95896a
config.py now object oriented and contains update_config() function
btobers Feb 27, 2025
0b8209c
all prior calls to config updated for compatability with new config.C…
btobers Feb 27, 2025
f8f6eb0
raise errors, and ensure that dictionary keys are not overwritten
btobers Feb 27, 2025
16f85d4
create_config() function created and _prompt_overwrite() function rem…
btobers Feb 27, 2025
81531be
config test created
btobers Feb 28, 2025
b6db8d8
update source_config_path
btobers Feb 28, 2025
b981c1d
remove self.package_dir definition
btobers Feb 28, 2025
4314f85
update source path
btobers Feb 28, 2025
4fd5493
rename ruamel.yaml.YAML() as ryaml
btobers Feb 28, 2025
4308e79
call ensure_config() upon __init__
btobers Feb 28, 2025
2922e6d
user config validation, make sure necessary keys exist
btobers Feb 28, 2025
4cc29ac
ConfigManager.ensure_config() calls removed, now handled on __init__
btobers Feb 28, 2025
d3d2092
bug fix with commit:4fd5493
btobers Feb 28, 2025
197ea6d
more tests added to test_config
btobers Feb 28, 2025
441da21
more tests and TypeError checks in update_config
btobers Feb 28, 2025
ceb00c0
test ensure config, no overwrite
btobers Feb 28, 2025
0b4b162
remove CLI update_config funcitonality
btobers Feb 28, 2025
9b9dce2
Handle datatypes in `config.yaml` and expand tests (#79)
ddundo Mar 2, 2025
f8f6204
clean up imports
btobers Mar 2, 2025
7207d04
add `advanced_test_tw.ipynb` test
btobers Mar 2, 2025
4d745b7
typo fix
btobers Mar 2, 2025
43adb9c
add __all__ variable
btobers Mar 2, 2025
8f57b64
cleanup commenting
btobers Mar 2, 2025
8319561
cleanup commenting
btobers Mar 2, 2025
3fefb43
more descriptive variable in validate_config
btobers Mar 2, 2025
e87e35e
private methods and expanded docstrings
btobers Mar 2, 2025
95f773b
Merge branch 'dev' into 72_update_config
btobers Mar 2, 2025
b9694a5
swap PyGEM-Notebooks clone repo back to main branch
btobers Mar 2, 2025
a0a91be
clone appropriate PyGEM-notebook brach
btobers Mar 3, 2025
47b1bd7
comment added
btobers Mar 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/test_suite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,10 @@ jobs:

- name: 'Clone the PyGEM-notebooks repo'
run: |
git clone --depth 1 https://github.com/pygem-community/PyGEM-notebooks.git
# Use PyGEM-notebook:main for master branch and PyGEM-notebooks:dev otherwise
BRANCH=${GITHUB_REF#refs/heads/}
git clone --depth 1 --branch $([[ "$BRANCH" == "master" ]] && echo "main" || echo "dev") \
https://github.com/pygem-community/PyGEM-notebooks.git
echo "PYGEM_NOTEBOOKS_DIRPATH=$(pwd)/PyGEM-notebooks" >> $GITHUB_ENV

- name: 'Run tests'
Expand Down
8 changes: 4 additions & 4 deletions pygem/bin/op/duplicate_gdirs.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@
import os
import shutil
# pygem imports
import pygem.setup.config as config
# check for config
config.ensure_config()
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config.read_config()
pygem_prms = config_manager.read_config()

def main():
parser = argparse.ArgumentParser(description="Script to make duplicate oggm glacier directories - primarily to avoid corruption if parellelizing runs on a single glacier")
Expand Down
26 changes: 6 additions & 20 deletions pygem/bin/op/initialize.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,11 @@
import zipfile
import os,sys
import shutil
from ruamel.yaml import YAML
# set up config.yaml
import pygem.setup.config as config
config.ensure_config(overwrite=True)

def update_config_root(conf_path, datapath):
yaml = YAML()
yaml.preserve_quotes = True # Preserve quotes around string values

# Read the YAML file
with open(conf_path, 'r') as file:
config = yaml.load(file)

# Update the key with the new value
config['root'] = datapath

# Save the updated configuration back to the file
with open(conf_path, 'w') as file:
yaml.dump(config, file)
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager(overwrite=True)
# read the config
pygem_prms = config_manager.read_config()

def print_file_tree(start_path, indent=""):
# Loop through all files and directories in the current directory
Expand Down Expand Up @@ -136,7 +122,7 @@ def main():

# update root path in config.yaml
try:
update_config_root(config.config_file, out+'/sample_data/')
config_manager.update_config(updates={'root':f'{out}/sample_data'})
except:
pass

Expand Down
8 changes: 4 additions & 4 deletions pygem/bin/op/list_failed_simulations.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@
import argparse
import numpy as np
# pygem imports
import pygem.setup.config as config
# check for config
config.ensure_config()
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config.read_config()
pygem_prms = config_manager.read_config()
import pygem.pygem_modelsetup as modelsetup

def run(reg, simpath, gcm, scenario, calib_opt, bias_adj, gcm_startyear, gcm_endyear):
Expand Down
8 changes: 5 additions & 3 deletions pygem/bin/postproc/postproc_binned_monthly_mass.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,11 @@
import numpy as np
import xarray as xr
# pygem imports
import pygem.setup.config as config
# read config
pygem_prms = config.read_config()
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config_manager.read_config()

# ----- FUNCTIONS -----
def getparser():
Expand Down
8 changes: 4 additions & 4 deletions pygem/bin/postproc/postproc_compile_simulations.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@

# pygem imports
import pygem
import pygem.setup.config as config
# check for config
config.ensure_config()
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config.read_config()
pygem_prms = config_manager.read_config()
import pygem.pygem_modelsetup as modelsetup

rgi_reg_dict = {'all':'Global',
Expand Down
8 changes: 5 additions & 3 deletions pygem/bin/postproc/postproc_distribute_ice.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@
from oggm import workflow, tasks, cfg
from oggm.sandbox import distribute_2d
# pygem imports
import pygem.setup.config as config
# read config
pygem_prms = config.read_config()
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config_manager.read_config()
import pygem
import pygem.pygem_modelsetup as modelsetup
from pygem.oggm_compat import single_flowline_glacier_directory
Expand Down
8 changes: 5 additions & 3 deletions pygem/bin/postproc/postproc_monthly_mass.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,11 @@
import xarray as xr
# pygem imports
import pygem
import pygem.setup.config as config
# read config
pygem_prms = config.read_config()
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config_manager.read_config()
import pygem.pygem_modelsetup as modelsetup


Expand Down
8 changes: 4 additions & 4 deletions pygem/bin/preproc/preproc_fetch_mbdata.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@
# oggm
from oggm import utils
# pygem imports
import pygem.setup.config as config
# check for config
config.ensure_config()
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config.read_config()
pygem_prms = config_manager.read_config()
import pygem.pygem_modelsetup as modelsetup


Expand Down
8 changes: 4 additions & 4 deletions pygem/bin/preproc/preproc_wgms_estimate_kp.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@
from scipy.stats import median_abs_deviation
# pygem imports
from pygem import class_climate
import pygem.setup.config as config
# check for config
config.ensure_config()
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config.read_config()
pygem_prms = config_manager.read_config()
import pygem.pygem_modelsetup as modelsetup


Expand Down
8 changes: 4 additions & 4 deletions pygem/bin/run/run_calibration.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@
import sklearn.model_selection

# pygem imports
import pygem.setup.config as config
# check for config
config.ensure_config()
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config.read_config()
pygem_prms = config_manager.read_config()
from pygem import mcmc
from pygem import class_climate
from pygem.massbalance import PyGEMMassBalance
Expand Down
8 changes: 4 additions & 4 deletions pygem/bin/run/run_calibration_frontalablation.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@
from scipy.stats import linregress
import xarray as xr
# pygem imports
import pygem.setup.config as config
# check for config
config.ensure_config()
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config.read_config()
pygem_prms = config_manager.read_config()
import pygem.pygem_modelsetup as modelsetup
from pygem.massbalance import PyGEMMassBalance
from pygem.glacierdynamics import MassRedistributionCurveModel
Expand Down
10 changes: 5 additions & 5 deletions pygem/bin/run/run_calibration_reg_glena.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@
from scipy.optimize import brentq
# pygem imports
import pygem
import pygem.setup.config as config
# Check for config
config.ensure_config() # This will ensure the config file is created
# Read the config
pygem_prms = config.read_config() # This reads the configuration file
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config_manager.read_config()
from pygem import class_climate
from pygem.massbalance import PyGEMMassBalance
from pygem.oggm_compat import single_flowline_glacier_directory
Expand Down
8 changes: 4 additions & 4 deletions pygem/bin/run/run_mcmc_priors.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@
from scipy import stats

# pygem imports
import pygem.setup.config as config
# check for config
config.ensure_config()
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config.read_config()
pygem_prms = config_manager.read_config()
import pygem.pygem_modelsetup as modelsetup

# Region dictionary for titles
Expand Down
8 changes: 4 additions & 4 deletions pygem/bin/run/run_simulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@

# pygem imports
import pygem
import pygem.setup.config as config
# check for config
config.ensure_config()
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config.read_config()
pygem_prms = config_manager.read_config()
import pygem.gcmbiasadj as gcmbiasadj
import pygem.pygem_modelsetup as modelsetup
from pygem.massbalance import PyGEMMassBalance
Expand Down
9 changes: 5 additions & 4 deletions pygem/class_climate.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@ class of climate data and functions associated with manipulating the dataset to
import pandas as pd
import numpy as np
import xarray as xr
# Local libraries
import pygem.setup.config as config
# Read the config
pygem_prms = config.read_config() # This reads the configuration file
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config_manager.read_config()

class GCM():
"""
Expand Down
9 changes: 5 additions & 4 deletions pygem/gcmbiasadj.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,11 @@
import numpy as np
from scipy.ndimage import uniform_filter
from scipy.stats import percentileofscore
# load pygem config
import pygem.setup.config as config
# Read the config
pygem_prms = config.read_config()
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config_manager.read_config()

#%% FUNCTIONS
def annual_avg_2darray(x):
Expand Down
9 changes: 5 additions & 4 deletions pygem/glacierdynamics.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@
from oggm.core.flowline import FlowlineModel
from oggm.exceptions import InvalidParamsError
from oggm import __version__
# Local libraries
import pygem.setup.config as config
# Read the config
pygem_prms = config.read_config() # This reads the configuration file
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config_manager.read_config()

cfg.initialize()

Expand Down
9 changes: 5 additions & 4 deletions pygem/massbalance.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@
# Local libraries
from oggm.core.massbalance import MassBalanceModel
from pygem.utils._funcs import annualweightedmean_array
# Local libraries
import pygem.setup.config as config
# Read the config
pygem_prms = config.read_config() # This reads the configuration file
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config_manager.read_config()

#%%
class PyGEMMassBalance(MassBalanceModel):
Expand Down
9 changes: 5 additions & 4 deletions pygem/mcmc.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@
from tqdm import tqdm
import matplotlib.pyplot as plt
import matplotlib.cm as cm
# Local libraries
import pygem.setup.config as config
# Read the config
pygem_prms = config.read_config() # This reads the configuration file
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config_manager.read_config()

torch.set_default_dtype(torch.float64)
plt.rcParams["font.family"] = "arial"
Expand Down
9 changes: 5 additions & 4 deletions pygem/oggm_compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,11 @@
from oggm.core.massbalance import MassBalanceModel
#from oggm.shop import rgitopo
from pygem.shop import debris, mbdata, icethickness
# Local libraries
import pygem.setup.config as config
# read config
pygem_prms = config.read_config()
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config_manager.read_config()


class CompatGlacDir:
Expand Down
8 changes: 5 additions & 3 deletions pygem/output.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@
import pandas as pd
import xarray as xr
import os, types, json, cftime, collections
import pygem.setup.config as config
# Read the config
pygem_prms = config.read_config() # This reads the configuration file
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config_manager.read_config()

### single glacier output parent class ###
@dataclass
Expand Down
10 changes: 6 additions & 4 deletions pygem/pygem_modelsetup.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,12 @@
import pandas as pd
import numpy as np
from datetime import datetime
# Local libraries
import pygem.setup.config as config
# Read the config
pygem_prms = config.read_config() # This reads the configuration file
from pygem.setup.config import ConfigManager
# instantiate ConfigManager
config_manager = ConfigManager()
# read the config
pygem_prms = config_manager.read_config()


def datesmodelrun(startyear=pygem_prms['climate']['ref_startyear'], endyear=pygem_prms['climate']['ref_endyear'],
spinupyears=pygem_prms['climate']['ref_spinupyears'], option_wateryear=pygem_prms['climate']['ref_wateryear']):
Expand Down
Loading