from .Chain import Chain
from .Config import Config
from .Trajectory import Trajectory
from .Monty import Monty
from .Replica import Replica
[docs]class LatticeFactory(object):
"""
*LatticeFactory* objects orchestrate the creation of other objects
in the HP model, namely chains, replicas, monte carlo samplers,
trajectories, and configurations.
:param callable chain_cls: optional, chain class
:param callable replica_cls: optional, replica class
:param callable monty_cls: optional, monte carlo sampler class
:param callable trajectory_cls: optional, trajectory class
:param callable conf_cls: optional, HP configuration class
"""
def __init__(self, chain_cls=Chain, replica_cls=Replica, monty_cls=Monty,
trajectory_cls=Trajectory, conf_cls=Config):
self.chain_cls = chain_cls
self.replica_cls = replica_cls
self.monty_cls = monty_cls
self.trajectory_cls = trajectory_cls
self.conf_cls = conf_cls
[docs] def make_chain(self, *args, **kwargs):
"""
Make a chain object.
"""
return self.chain_cls(*args, **kwargs)
[docs] def make_replica(self, *args, **kwargs):
"""
Make a replica object.
"""
return self.replica_cls(*args, **kwargs)
[docs] def make_monty(self, *args, **kwargs):
"""
Make a monte carlo sampler object.
"""
return self.monty_cls(*args, **kwargs)
[docs] def make_trajectory(self, *args, **kwargs):
"""
Make a trajectory object.
"""
return self.trajectory_cls(*args, **kwargs)
[docs] def make_configuration(self, *args, **kwargs):
"""
Make a configuration object.
"""
return self.conf_cls(*args, **kwargs)