use std::path::Path;
use bio_files::{MmCif, Mol2};
use dynamics::{
ComputationDevice, FfMolType, MdConfig, MdState, MolDynamics,
params::{FfParamSet, prepare_peptide_mmcif},
};
fn main() {
let dev = ComputationDevice::Cpu;
let param_set = FfParamSet::new_amber().unwrap();
let mut protein = MmCif::load(Path::new("1c8k.cif")).unwrap();
let mol = Mol2::load(Path::new("CPB.mol2")).unwrap();
let (_bonds, _dihedrals) = prepare_peptide_mmcif(
&mut protein,
¶m_set.peptide_ff_q_map.as_ref().unwrap(),
7.0,
)
.unwrap();
let mols = vec![
MolDynamics::from_mol2(&mol, None),
MolDynamics {
ff_mol_type: FfMolType::Peptide,
atoms: protein.atoms.clone(),
static_: true,
..Default::default()
},
];
let mut md = MdState::new(&dev, &MdConfig::default(), &mols, ¶m_set).unwrap();
let n_steps = 100;
let dt = 0.002;
for _ in 0..n_steps {
md.step(&dev, dt, None);
}
let snap = &md.snapshots[md.snapshots.len() - 1]; println!(
"KE: {}, PE: {}, Atom posits:",
snap.energy_kinetic, snap.energy_potential
);
for posit in &snap.atom_posits {
println!("Posit: {posit}");
}
for snap in &md.snapshots {}
}