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}