diff --git a/dnadna/cli/simulation.py b/dnadna/cli/simulation.py index ef25457bff1298fcac52b43601577f97006d94f4..fe143c5817a22a2a861cbce42df42d9812c5d9eb 100644 --- a/dnadna/cli/simulation.py +++ b/dnadna/cli/simulation.py @@ -9,7 +9,7 @@ import textwrap from .. import __version__ from ..utils.cli import Command, CommandWithPlugins -from ..utils.config import save_dict_annotated +from ..utils.config import save_dict_annotated, Config from ..utils.misc import desphinxify, first_paragraph, indent @@ -71,6 +71,7 @@ class SimulationInitCommand(CommandWithPlugins): # Don't accidentally modify the original default config object config = config.copy() + if args.name: config['dataset_name'] = args.name @@ -86,6 +87,10 @@ class SimulationInitCommand(CommandWithPlugins): config['dnadna_version'] = __version__ + # Merge with the default dataset config in case there are any other + # properties missing + config = Config(config, Config.from_default('dataset')) + simulations_root = pth.normpath(args.simulations_root) simulation_dir = pth.join(simulations_root, dataset_name) os.makedirs(simulation_dir, exist_ok=True) @@ -189,6 +194,6 @@ class SimulationCommand(CommandWithPlugins): for name, cls in Simulator.get_plugins(): print(name, cls, sep=': ') - doc = desphinxify(first_paragraph(cls.__doc__)) + doc = desphinxify(first_paragraph(cls.__doc__ or '')) print(indent('\n'.join(textwrap.wrap(doc)))) sys.exit() diff --git a/dnadna/schemas/simulation.yml b/dnadna/schemas/simulation.yml index 72e4bbd03a36369a0467d03147d71aa596fe8a41..22de159bd324aa56a866be2a70eda844a7ba8f5e 100644 --- a/dnadna/schemas/simulation.yml +++ b/dnadna/schemas/simulation.yml @@ -27,6 +27,7 @@ allOf: outputs--the number of replicates of each scenario should be listed in the scenario parameters table minimum: 1 + default: 1 seed: type: "integer" @@ -34,6 +35,7 @@ allOf: fixed seed to use for seeding the random number generator at the beginning of the simulation; if absent then the PRNG's default seeding method is used + summary_statistics: {"$ref": "summary-statistics.yml#/definitions/summary_statistics"} required: diff --git a/dnadna/simulator.py b/dnadna/simulator.py index c0930e94d7ea9db01f8d23831c33b798b4ef7175..030dde99028bbe140facfadb6760a796d95d1531 100644 --- a/dnadna/simulator.py +++ b/dnadna/simulator.py @@ -73,13 +73,13 @@ class Simulator(ConfigMixIn, Pluggable, metaclass=abc.ABCMeta): ``dataset_name`` from the config as a template variable. """ - preprocessing_config_default = {} + preprocessing_config_default = Config() """ Simulators may extend the default preprocessing configuration file with additional settings optimized for the simulator. """ - training_config_default = {} + training_config_default = Config() """ Simulators may extend the default training configuration file with additional settings optimized for the simulator.