Rust bindings for pymbar. Requires nightly for const generics.
```rust use mbar_rs::*;
fn main() { // Construct the MBar struct let mbar = MBar::builder() // The potential energies of each snapshot, evaluated at all states .ukn([ [1.4, 2.3, 3.7, 4.1, 7.7, 9.1], [-1.6, -2.3, 9.7, 34.1, 27.7, 19.1], [4.4, 7.3, 9.7, 8.1, 4.7, 3.1], ]) // The number of snapshots from each state .nk([2, 2, 2]) .build() .unwrap();
// And then compute a PMF
let pmf = mbar
.compute_pmf(
// The potential energies at the target state
[1.4, 2.3, 3.7, 4.1, 7.7, 9.1],
// The bins of each snapshot
[0, 1, 2, 0, 2, 1],
// The number of bins
3,
// How to compute the uncertainties
PmfUncertainties::FromLowest,
)
// If there's a Python error, display it nicely
// This shouldn't happen, as the Rust API should catch everything (mostly at compile time!)
.map_err(|e| {
println!("{}", e);
e
});
// Print out the pmf!
println!("{:?}", pmf)
} ```