batter.config.simulation.SimulationConfig#

pydantic model batter.config.simulation.SimulationConfig[source]#

Simulation configuration for ABFE/ASFE workflows. Values are fed by RunConfig.resolved_sim_config(), which merges create: and fe_sim:.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Fields:
Validators:
field all_atoms: Literal['yes', 'no'] = 'no'#

save all atoms for FE

Validated by:
  • _finalize

field analysis_fe_range: Tuple[int, int] | None = (2, -1)#

Optional tuple (start, end) limiting FE simulations analyzed per window.

Validated by:
  • _finalize

field anion: str = 'Cl-'#

Anion species

Validated by:
  • _finalize

field barostat: Literal[1, 2] = 2#

1=Berendsen, 2=MC barostat

Validated by:
  • _coerce_barostat

  • _finalize

field blocks: int = 0#

MBAR blocks

Validated by:
  • _finalize

field buffer_x: float = 10.0#

Box buffer X (Å)

Validated by:
  • _finalize

field buffer_y: float = 10.0#

Box buffer Y (Å)

Validated by:
  • _finalize

field buffer_z: float = 10.0#

Box buffer Z (Å)

Validated by:
  • _finalize

field cation: str = 'Na+'#

Cation species

Validated by:
  • _finalize

field component_lambdas: Dict[str, List[float]] [Optional]#

Lambda schedule for each component

Validated by:
  • _finalize

field component_windows: Dict[str, List[float]] [Optional]#

Per-component lambda values for overrides

Validated by:
  • _finalize

field components: List[str] [Optional]#

List of components (v, o, z, etc.)

Validated by:
  • _finalize

field cut: float = 9.0#

Nonbonded cutoff (Å)

Validated by:
  • _finalize

field dec_int: Literal['mbar', 'ti'] = 'mbar'#

Integration method (mbar/ti)

Validated by:
  • _finalize

  • _lower_enums

field dec_method: str | None = None#

Decoupling method (set for fe_type=’custom’)

Validated by:
  • _finalize

field dic_steps1: Dict[str, int] [Optional]#

Stage1 steps per component

Validated by:
  • _finalize

field dic_steps2: Dict[str, int] [Optional]#

Stage2 steps per component

Validated by:
  • _finalize

field dt: float = 0.004#

Time step (ps)

Validated by:
  • _finalize

field enable_mcwat: Literal['yes', 'no'] = 'yes'#

Enable MC water exchange moves during equilibration templates.

Validated by:
  • _coerce_yes_no

  • _finalize

field eq_steps: int = 1000000#

Steps per equilibration segment (derived)

Validated by:
  • _finalize

field eq_steps1: int = 500000#

Equilibration stage 1 steps (legacy mirror of eq_steps)

Validated by:
  • _finalize

field eq_steps2: int = 1000000#

Equilibration stage 2 steps (legacy mirror of eq_steps)

Validated by:
  • _finalize

field fe_type: Literal['custom', 'rest', 'sdr', 'dd', 'sdr-rest', 'express', 'relative', 'uno', 'uno_com', 'uno_rest', 'self', 'uno_dd', 'dd-rest', 'asfe', 'md'] [Required]#

Free-energy protocol type

Validated by:
  • _finalize

  • _lower_enums

field gamma_ln: float = 1.0#

Langevin γ (ps^-1)

Validated by:
  • _finalize

field hmr: Literal['yes', 'no'] = 'no'#

Hydrogen mass repartitioning

Validated by:
  • _coerce_yes_no

  • _finalize

field infe: bool = False#

Enable NFE (infinite) equilibration when true.

Validated by:
  • _finalize

field ion_conc: float = 0.15#

Target salt concentration (M)

Validated by:
  • _finalize

field ion_def: List[Any] [Optional]#

Ion tuple [cation, anion, conc]

Validated by:
  • _finalize

field l1_range: float | None = None#

L1 search radius (Å)

Validated by:
  • _finalize

field l1_x: float | None = None#

L1 center offset X (Å)

Validated by:
  • _finalize

field l1_y: float | None = None#

L1 center offset Y (Å)

Validated by:
  • _finalize

field l1_z: float | None = None#

L1 center offset Z (Å)

Validated by:
  • _finalize

field lambdas: List[float] [Optional]#

default lambda values

Validated by:
  • _finalize

  • _parse_lambdas

field lig_angle_force: float = 0.0#

Ligand angle/dihedral spring (kcal/mol/rad^2)

Validated by:
  • _finalize

field lig_buffer: float = 10.0#

Ligand box buffer (Å)

Validated by:
  • _finalize

field lig_com_force: float = 0.0#

Ligand COM spring

Validated by:
  • _finalize

field lig_dihcf_force: float = 0.0#

Ligand dihedral spring (kcal/mol/rad^2)

Validated by:
  • _finalize

field lig_distance_force: float = 0.0#

Ligand COM distance spring (kcal/mol/Å^2)

Validated by:
  • _finalize

field ligand_dict: Dict[str, Any] [Optional]#

Ligand dictionary

Validated by:
  • _finalize

field ligand_ff: str = 'gaff2'#

Ligand FF

Validated by:
  • _finalize

field lipid_ff: str = 'lipid21'#

Lipid FF

Validated by:
  • _finalize

field lipid_mol: List[str] [Optional]#

Lipid molecules

Validated by:
  • _finalize

field max_adis: float | None = None#

Max anchor distance (Å)

Validated by:
  • _finalize

field membrane_simulation: bool = True#

Whether system includes a membrane

Validated by:
  • _finalize

field min_adis: float | None = None#

Min anchor distance (Å)

Validated by:
  • _finalize

field n_steps_dict: Dict[str, int] [Optional]#

Per-component steps (keys: ‘{comp}_steps1|2’)

Validated by:
  • _finalize

field neut: str = ''#

Alias of neutralize_only

Validated by:
  • _finalize

field neutralize_only: Literal['yes', 'no'] = 'no'#

Neutralize only

Validated by:
  • _coerce_yes_no

  • _finalize

field ntpr: int = 1000#

Print energy every ntpr steps

Validated by:
  • _finalize

field ntwe: int = 0#

Write energy every ntwe steps

Validated by:
  • _finalize

field ntwr: int = 10000#

Write restart every ntwr steps

Validated by:
  • _finalize

field ntwx: int = 2500#

Write trajectory every ntwx steps

Validated by:
  • _finalize

field num_equil_extends: int = 0#

Number of equilibration extends (derived)

Validated by:
  • _finalize

field num_fe_extends: int = 10#

# restarts per λ

Validated by:
  • _finalize

field other_mol: List[str] [Optional]#

Other co-binders

Validated by:
  • _finalize

field p1: str = ''#

Anchor P1 “RESID@ATOM” (e.g., “85@CA”)

Validated by:
  • _finalize

  • _validate_anchor

field p2: str = ''#

Anchor P2 “RESID@ATOM

Validated by:
  • _finalize

  • _validate_anchor

field p3: str = ''#

Anchor P3 “RESID@ATOM

Validated by:
  • _finalize

  • _validate_anchor

field protein_align: str = 'name CA'#

Alignment selection

Validated by:
  • _finalize

field rec_com_force: float = 0.0#

Protein COM spring

Validated by:
  • _finalize

field receptor_ff: str = 'protein.ff14SB'#

Receptor FF

Validated by:
  • _finalize

field receptor_segment: str | None = None#

Segment to embed in membrane

Validated by:
  • _finalize

field release_eq: List[float] [Optional]#

Equilibration release weights (derived)

Validated by:
  • _finalize

field remd: Literal['yes', 'no'] = 'no'#

H-REMD toggle

Validated by:
  • _coerce_yes_no

  • _finalize

field remd_nstlim: int = 100#

Steps per REMD segment (applied to mdin-*-remd copies).

Validated by:
  • _finalize

field remd_numexchg: int = 3000#

Exchange attempt interval for REMD (numexchg).

Validated by:
  • _finalize

field rest: List[float] [Optional]#

Packed restraint constants

Validated by:
  • _finalize

field rng: int = 0#

Range of release_eq

Validated by:
  • _finalize

field rocklin_correction: Literal['yes', 'no'] = 'no'#

Rocklin correction

Validated by:
  • _coerce_yes_no

  • _finalize

field sdr_dist: float | None = 0.0#

SDR placement distance (Å)

Validated by:
  • _finalize

field solv_shell: float | None = 15.0#

Initial solvent shell radius (Å)

Validated by:
  • _finalize

field system_name: str [Required]#

System name (required)

Validated by:
  • _finalize

field temperature: float = 298.15#

Temperature (K)

Validated by:
  • _finalize

field ti_points: int | None = 0#
  1. TI points (not implemented)

Validated by:
  • _finalize

field unbound_threshold: float = 8.0#

Distance (Å) between ligand COMs that classifies equilibration as unbound.

Constraints:
  • ge = 0.0

Validated by:
  • _finalize

field water_model: Literal['SPCE', 'TIP4PEW', 'TIP3P', 'TIP3PF', 'OPC'] = 'TIP3P'#

Water model

Validated by:
  • _finalize

classmethod from_sections(create: CreateArgs, fe: FESimArgs, *, protocol: str | None = None, fe_type: str | None = None, slurm_header_dir: Path | None = None) SimulationConfig[source]#

Construct a SimulationConfig from run sections.

Parameters:
  • create (CreateArgs) – System creation inputs taken from the create YAML section.

  • fe (FESimArgs) – Free-energy simulation overrides from the fe_sim section.

Returns:

Fully merged simulation configuration ready for downstream use.

Return type:

SimulationConfig

to_dict() Dict[str, Any][source]#