9 releases
0.1.7 | Jul 3, 2023 |
---|---|
0.1.6 | Jun 24, 2023 |
0.1.4 | Feb 12, 2023 |
0.1.1 |
|
0.0.40 | Feb 25, 2020 |
#166 in Science
27 downloads per month
Used in 13 crates
(6 directly)
69KB
51 lines
gchemol
gchemol is a graph-based chemical object library implemented in Rust programming language. This project is still in early development.
Features
- Fast and safe codes empowered by Rust.
- Static build without external dependencies: easy to deploy in HPC environment.
- Core graph data structure using petgraph
- Read/write molecules in common chemcial file formats.
- Linear algebra backed by nalgebra
- Render molecule in user defined formats by templating with handlebars and tera
How to use
Setup
follow the official guide:
add gchemol dependency to your Cargo.toml:
[dependencies]
gchemol = "0.1"
Atom
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");
Molecule
-
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")?;
Related projects
References
Dependencies
~28–39MB
~691K SLoC