Skip to content

Commit 9a06a38

Browse files
committed
bond valence: set missing options if user not set
1 parent 6a80c0e commit 9a06a38

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

src/analysis.rs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,14 @@ impl PyBondValenceModel {
2424
/// * mol: The molecule to evaluate.
2525
/// * opts: optional bond valence parameters
2626
#[staticmethod]
27-
fn evaluate(mol: PyMolecule, opts: Option<Options>) -> HashMap<usize, Evaluated> {
28-
let opts = opts.unwrap_or_else(|| Options::default_from(&mol.inner));
29-
BondValenceModel::evaluate(&mol.inner, &opts)
27+
fn evaluate(mol: PyMolecule, opts: Option<&mut Options>) -> HashMap<usize, Evaluated> {
28+
// let mut opts = opts.unwrap_or_else(|| Options::default_from(&mol.inner));
29+
if let Some(opts) = opts {
30+
BondValenceModel::evaluate(&mol.inner, opts)
31+
} else {
32+
let mut opts = Options::default_from(&mol.inner);
33+
BondValenceModel::evaluate(&mol.inner, &mut opts)
34+
}
3035
}
3136

3237
/// Create chemical bonds from nearest neighbors based on bond
@@ -36,10 +41,15 @@ impl PyBondValenceModel {
3641
/// created.
3742
#[staticmethod]
3843
#[pyo3(signature = (mol, /, opts=None, ignore_pbc=false))]
39-
fn rebond(mol: &mut PyMolecule, opts: Option<Options>, ignore_pbc: bool) -> usize {
40-
let opts = opts.unwrap_or_else(|| Options::default_from(&mol.inner));
44+
fn rebond(mol: &mut PyMolecule, opts: Option<&mut Options>, ignore_pbc: bool) -> usize {
4145
let lat = if ignore_pbc { mol.unbuild_crystal() } else { None };
42-
let nbonds = BondValenceModel::rebond(&mut mol.inner, &opts);
46+
let nbonds = if let Some(opts) = opts {
47+
BondValenceModel::rebond(&mut mol.inner, opts)
48+
} else {
49+
let mut opts = Options::default_from(&mol.inner);
50+
BondValenceModel::rebond(&mut mol.inner, &mut opts)
51+
};
52+
4353
if ignore_pbc {
4454
if let Some(lat) = lat {
4555
mol.set_lattice(lat);

0 commit comments

Comments
 (0)