Source code for pydna_epbd.configs

[docs]class InputConfigs: def __init__( self, temperature: float, sequences: list, outputs_dir: str, n_iterations: int, n_preheating_steps: int, n_steps_after_preheating: int, n_nodes: int, save_full=False, save_runtime=False, ) -> None: """This initializes an input configuration object to use throughout the simulation process. Args: temperature (float): In Kelvin scale. sequences (list): List of tuples of sequences in [("output_dir", "seq_id", "seq")] format outputs_dir (str): The directory path to save the simulation outputs. n_iterations (int): The number of independent iterations with different initial conditions. n_preheating_steps (int): The number of preheating steps. n_steps_after_preheating (int): The number of post preheating steps. n_nodes (int): The computing nodes where the input sequences are divided equally for faster execution of bulk sequences. save_full (bool, optional): Whether or not save the full outputs of the simulation. If True, first axis denotes n_iterations. Defaults to False. save_runtime (bool, optional): Whether or not save the runtime for each sequence. Defaults to False. """ self.n_iterations = n_iterations self.n_preheating_steps = n_preheating_steps self.n_steps_after_preheating = n_steps_after_preheating self.total_steps = n_preheating_steps + n_steps_after_preheating self.outputs_dir = outputs_dir self.n_nodes = n_nodes self.sequences = sequences self.n_sequences = len(sequences) self.temperature = temperature self.save_full = save_full self.save_runtime = save_runtime print("An example input seq: ", self.sequences[0]) def __str__(self) -> str: return ( f"The configs are: \n" f"\t#-Iterations: {self.n_iterations}\n\t#-PreheatingSteps: {self.n_preheating_steps}\n\t#-PostPreheatingSteps: {self.n_steps_after_preheating}\n\t" f"#-TotalSteps: {self.total_steps}\n\t#-Sequences: {self.n_sequences}\n\tTemperature: {self.temperature}K\n\t" f"#-Nodes: {self.n_nodes}\n\tOutputsDir: {self.outputs_dir}\n\tIsSavingFull: {self.save_full}\n\tIsSavingRuntime: {self.save_runtime}" )
# from dataclasses import dataclass # @dataclass(frozen=True) # class InputLimits: # immutable, not using decorator which makes codes slower # MAX_SEEDS = 4000 # MAX_SEQUENCES = 25000 # MAX_TEMPERATURES = 150 # MAX_BASES = 20000 # MAX_STRING_LENGTH = 256