Skip to main content

dreid_pack/pack/
config.rs

1/// Configuration for [`pack()`](super::pack).
2#[derive(Debug, Clone)]
3pub struct PackConfig {
4    /// Coulomb electrostatics with a distance-dependent dielectric model.
5    ///
6    /// `None` disables electrostatics; `Some(D)` enables the ε(r) = D·r model
7    /// using dielectric coefficient D, where D = 1.0 is the standard unscaled
8    /// form.
9    ///
10    /// Default `None`.
11    pub electrostatics: Option<f32>,
12
13    /// Sample additional polar-hydrogen orientations during conformer generation.
14    ///
15    /// When `true`, each polar-hydrogen torsion is sampled at multiple
16    /// orientations determined by the hybridization of the parent heavy atom.
17    ///
18    /// Default `true`.
19    pub sample_polar_h: bool,
20
21    /// Include the input side-chain conformation as an additional candidate.
22    ///
23    /// When `true`, the side-chain coordinates already present in the input
24    /// structure are included as an additional candidate conformation.
25    ///
26    /// Default `false`.
27    pub include_input_conformation: bool,
28
29    /// Self-energy window above the lowest-energy rotamer conformation (kcal/mol).
30    ///
31    /// Rotamer conformations whose self-energy exceeds the lowest-energy rotamer
32    /// + this threshold are discarded before pair-energy computation.
33    ///
34    /// Default `30.0` kcal/mol.
35    pub self_energy_threshold: f32,
36
37    /// Minimum Dunbrack rotamer probability required to include a rotamer.
38    ///
39    /// Rotamers whose backbone-dependent probability falls below this threshold
40    /// are discarded before packing begins. Set to `0.0` to include all rotamers
41    /// in the library.
42    ///
43    /// Default `0.0`.
44    pub rotamer_prob_cutoff: f32,
45}
46
47impl Default for PackConfig {
48    fn default() -> Self {
49        Self {
50            electrostatics: None,
51            sample_polar_h: true,
52            include_input_conformation: false,
53            self_energy_threshold: 30.0,
54            rotamer_prob_cutoff: 0.0,
55        }
56    }
57}