gchemol is a graph-based chemical object library implemented in Rust programming language. This project is still in early development.
follow the official guide:
add gchemol dependency to your Cargo.toml:
[dependencies]
gchemol = "0.1"
use gchemol::Atom;
// construct from element and position
let a = Atom::new("C", [0.0, 0.0, 0.0]);
let b = Atom::new("C", [1.2, 1.2, 1.2]);
or simply convert from a string:
let a: Atom = "C 1.0 1.0 0.2"
.parse()
.expect("atom from string");
Creating a molecule manually
use gchemol::Molecule;
let atoms = [
Atom::new("C", [ 0.000000, 0.000000, 0.000000]),
Atom::new("C", [ 0.000000, 0.000000, 1.089000]),
Atom::new("C", [ 1.026719, 0.000000, -0.363000]),
Atom::new("C", [-0.513360, -0.889165, -0.363000]),
Atom::new("C", [-0.513360, 0.889165, -0.363000])];
// create a molecule from these atoms
let mut mol = Molecule::from_atoms(atoms);
Reading and writing molecules
use gchemol::io;
use gchemol::prelude::*;
use gchemol::Molecule;
// Read an xyz file and write to a Gaussian Input file.
let mol = Molecule::from_file("path/to/file.xyz")?;
mol.to_file("methane.gjf")?;
// get the total number of atoms
let na = mol.natoms();
// get the total number of bonds
let nb = mol.nbonds();
// read multiple molecules (trajectory) from a chemical file
// the number of atoms in different frame could be different
let mols = io::read("path/to/trajectory.xyz")?;