Source code for wormpose.config.experiment_config
import json
import os
from typing import Tuple, List
[docs]def add_config_argument(parser):
"""
For command line arguments, add the option to pass the path of the configuration file
:param parser: Argparse parser
"""
parser.add_argument(
"--config",
type=str,
help="Path of the configuration file."
" The file is created when generating the training dataset."
" If not set, will look for it in the default location: at"
" {work_dir}/{dataset_name}/config.json",
)
[docs]class ExperimentConfig(object):
"""
Data container for the experiment config, created when generating training data
"""
def __init__(
self,
num_train_samples: int = None,
num_eval_samples: int = None,
image_shape: Tuple[int, int] = None,
dataset_loader: str = None,
theta_dimensions: int = None,
resize_factor: float = 1.0,
video_names: List[str] = None,
worm_is_lighter: bool = False,
):
self.num_train_samples = num_train_samples
self.num_eval_samples = num_eval_samples
self.image_shape = image_shape
self.dataset_loader = dataset_loader
self.theta_dimensions = theta_dimensions
self.resize_factor = resize_factor
self.video_names = video_names
self.worm_is_lighter = worm_is_lighter
[docs]def save_config(experiment_config: ExperimentConfig, config_filepath: str):
"""
Save the experiment config to a json file
:param experiment_config: config object to save
:param config_filepath: path where to write the config json file
"""
with open(config_filepath, "w") as f:
json.dump(experiment_config, f, indent=4, default=lambda x: x.__dict__)
[docs]def load_config(config_filepath: str) -> ExperimentConfig:
"""
Load the experiment config from a json file
:param config_filepath: path of the config json file to load
:return: loaded config object
"""
if not os.path.isfile(config_filepath):
raise FileNotFoundError(f"Configuration file not found at path: '{config_filepath}'.")
with open(config_filepath, "r") as f:
return ExperimentConfig(**json.load(f))