diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..aa567a0 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Executable scripts must keep LF endings — a CRLF shebang breaks execution on HPC/Linux. +scripts/*.py eol=lf diff --git a/scripts/convert_config.py b/scripts/convert_config.py index f7abba7..4c8f6f6 100755 --- a/scripts/convert_config.py +++ b/scripts/convert_config.py @@ -1,37 +1,37 @@ -#!/usr/bin/env python -""" -Converts the configuration files and directories in a given directory into YAML configs. - -Usage: -./convert_config.py path/to/directory -""" - -import os -import shutil -import sys -from pathlib import Path - -import yaml - -from autoconf.directory_config import RecursiveConfig, YAMLConfig - -target_path = Path(sys.argv[1]) - -config = RecursiveConfig(str(target_path)) - -for key in config.keys(): - value = config[key] - if isinstance(value, YAMLConfig): - continue - - d = value.dict() - path = target_path / key - with open(path.with_suffix(".yaml"), "w") as f: - yaml.dump(d, f) - - try: - os.remove(path.with_suffix(".ini")) - except FileNotFoundError: - pass - - shutil.rmtree(path, ignore_errors=True) +#!/usr/bin/env python +""" +Converts the configuration files and directories in a given directory into YAML configs. + +Usage: +./convert_config.py path/to/directory +""" + +import os +import shutil +import sys +from pathlib import Path + +import yaml + +from autoconf.directory_config import RecursiveConfig, YAMLConfig + +target_path = Path(sys.argv[1]) + +config = RecursiveConfig(str(target_path)) + +for key in config.keys(): + value = config[key] + if isinstance(value, YAMLConfig): + continue + + d = value.dict() + path = target_path / key + with open(path.with_suffix(".yaml"), "w") as f: + yaml.dump(d, f) + + try: + os.remove(path.with_suffix(".ini")) + except FileNotFoundError: + pass + + shutil.rmtree(path, ignore_errors=True) diff --git a/scripts/convert_prior_configs.py b/scripts/convert_prior_configs.py index c005cc1..28fe401 100755 --- a/scripts/convert_prior_configs.py +++ b/scripts/convert_prior_configs.py @@ -1,55 +1,55 @@ -#!/usr/bin/env python -""" -Converts JSON prior configs to YAML equivalent. - -Usage: -./convert_prior_configs.py /path/to/prior/directory -""" -import json -import os -import sys -from pathlib import Path - -import oyaml as yaml - -ORDER = [ - "type", - "mean", - "sigma", - "lower_limit", - "upper_limit", - "width_modifier", - "limits", -] - -for path in Path(sys.argv[1]).rglob("*.json"): - with open(path) as f: - d = json.load(f) - - with open(path.with_suffix(".yaml"), "w") as f: - yaml.dump(d, f) - - os.remove(path) - - -def sort_dict(obj): - if isinstance(obj, dict): - return { - key: sort_dict(value) - for key, value in sorted( - obj.items(), - key=lambda item: ORDER.index(item[0]) if item[0] in ORDER else 999, - ) - } - if isinstance(obj, list): - return list(map(sort_dict, obj)) - return obj - - -for path in Path(sys.argv[1]).rglob("*.yaml"): - with open(path) as f: - d = yaml.safe_load(f) - - print(sort_dict(d)) - with open(path, "w") as f: - yaml.dump(sort_dict(d), f) +#!/usr/bin/env python +""" +Converts JSON prior configs to YAML equivalent. + +Usage: +./convert_prior_configs.py /path/to/prior/directory +""" +import json +import os +import sys +from pathlib import Path + +import oyaml as yaml + +ORDER = [ + "type", + "mean", + "sigma", + "lower_limit", + "upper_limit", + "width_modifier", + "limits", +] + +for path in Path(sys.argv[1]).rglob("*.json"): + with open(path) as f: + d = json.load(f) + + with open(path.with_suffix(".yaml"), "w") as f: + yaml.dump(d, f) + + os.remove(path) + + +def sort_dict(obj): + if isinstance(obj, dict): + return { + key: sort_dict(value) + for key, value in sorted( + obj.items(), + key=lambda item: ORDER.index(item[0]) if item[0] in ORDER else 999, + ) + } + if isinstance(obj, list): + return list(map(sort_dict, obj)) + return obj + + +for path in Path(sys.argv[1]).rglob("*.yaml"): + with open(path) as f: + d = yaml.safe_load(f) + + print(sort_dict(d)) + with open(path, "w") as f: + yaml.dump(sort_dict(d), f) diff --git a/scripts/edenise.py b/scripts/edenise.py index 93dcdd1..19fff62 100755 --- a/scripts/edenise.py +++ b/scripts/edenise.py @@ -1,23 +1,23 @@ -#!/usr/bin/env python - -from configparser import ConfigParser -from sys import argv - -from autofit.tools import edenise - - -def main(root_directory): - try: - config = ConfigParser() - config.read(f"{root_directory}/eden.ini") - - edenise.edenise( - root_directory, config.get("eden", "name"), config.get("eden", "prefix") - ) - except ValueError: - print("Usage: ./edenise.py root_directory") - exit(1) - - -if __name__ == "__main__": - main(argv[1]) +#!/usr/bin/env python + +from configparser import ConfigParser +from sys import argv + +from autofit.tools import edenise + + +def main(root_directory): + try: + config = ConfigParser() + config.read(f"{root_directory}/eden.ini") + + edenise.edenise( + root_directory, config.get("eden", "name"), config.get("eden", "prefix") + ) + except ValueError: + print("Usage: ./edenise.py root_directory") + exit(1) + + +if __name__ == "__main__": + main(argv[1]) diff --git a/scripts/generate_priors.py b/scripts/generate_priors.py index 5ab4862..74755dc 100755 --- a/scripts/generate_priors.py +++ b/scripts/generate_priors.py @@ -1,14 +1,14 @@ -#!/usr/bin/env python -""" -Generate prior configuration for all classes in a package, recursively -""" - -from sys import argv - -from autoconf.json_prior import generate - -if __name__ == "__main__": - try: - generate.generate(argv[1]) - except KeyError: - print("Usage: ./generate_priors.py /path/to/project") +#!/usr/bin/env python +""" +Generate prior configuration for all classes in a package, recursively +""" + +from sys import argv + +from autoconf.json_prior import generate + +if __name__ == "__main__": + try: + generate.generate(argv[1]) + except KeyError: + print("Usage: ./generate_priors.py /path/to/project")