Source code for pyretis.initiation

# -*- coding: utf-8 -*-
# Copyright (c) 2023, PyRETIS Development Team.
# Distributed under the LGPLv2.1+ License. See LICENSE for more info.
"""This package defines methods for initiating path ensembles.

Package structure
-----------------

Modules
~~~~~~~

__init__.py
    This file, imports from the other modules and defines some helper
    methods for the initiation.

initiate_kick.py (:py:mod:`pyretis.initiation.initiate_kick`)
    Methods for initiating using the ``kick`` method.

initiate_load.py (:py:mod:`pyretis.initiation.initiate_load`)
    Methods for initiating by loading already existing paths from
    files.

initiate_restart.py (:py:mod:`pyretis.initiation.initiate_restart`)
    Methods for initiating by loading PyRETIS restart files.


Important methods defined in this package
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

get_initiation_method (:py:func:`.get_initiation_method`)
    Method to select initiation method from settings.

initiate_path_simulation (:py:func:`initiate_path_simulation`)
    Method to initiate a path simulation.

"""
import logging
from pyretis.inout import print_to_screen
from .initiate_kick import initiate_kick
from .initiate_load import initiate_load
from .initiate_restart import initiate_restart
logger = logging.getLogger(__name__)  # pylint: disable=invalid-name
logger.addHandler(logging.NullHandler())


__all__ = ['initiate_path_simulation', 'get_initiation_method']


[docs]def get_initiation_method(settings): """Return the initiation method from given settings. Parameters ---------- settings : dict This dictionary contains the settings for the initiation. Returns ------- out : callable The method to be used for the initiation. """ _methods = { 'kick': initiate_kick, 'load': initiate_load, 'restart': initiate_restart, } method = settings['initial-path']['method'].lower() if method not in _methods: logger.error('Unknown initiation method "%s" requested', method) logger.error('Known methods: %s', _methods.keys()) raise ValueError('Unknown initiation method requested!') print_to_screen('Will initiate paths using method "{}".'.format(method)) logger.info('Initiation method "%s" selected', method) return _methods[method]
[docs]def initiate_path_simulation(simulation, settings): """Initialise a path simulation. Parameters ---------- simulation : object like :py:class:`.PathSimulation` The simulation we are doing the initiation for. settings : dict A dictionary with settings for the initiation. Returns ------- out : callable The method to be used for the initiation. """ cycle = simulation.cycle['step'] method = get_initiation_method(settings) return method(simulation, settings, cycle)