3 unstable releases
new 0.2.0 | Nov 17, 2024 |
---|---|
0.1.1 | Apr 17, 2024 |
0.1.0 | Apr 17, 2024 |
#169 in Science
63 downloads per month
24KB
190 lines
Voronota-LT
Voronota-LT (pronounced ‘voronota lite’) is an alternative version of Voronota for constructing tessellation-derived atomic contact areas and volumes. Voronota-LT was written from scratch and does not use any external code, even from the core Voronota. The primary motivation for creating Voronota-LT was drastically increasing the speed of computing tessellation-based atom-atom contact areas and atom solvent-accessible surface areas.
Like Voronota, Voronota-LT can compute contact areas derived from the additively weighted Voronoi tessellation, but the main increase in speed comes when utilizing a simpler, radical tessellation variant, also known as Laguerre-Laguerre tessellation or power diagram. This is the default tessellation variant in Voronota-LT. It considers radii of atoms together with the rolling probe radius to define radical planes as bisectors between atoms.
Example
The following illustrates basic use and how to e.g. calculate the total solvent accessible surface area:
use voronota::{Ball, RadicalTessellation};
let balls = vec![
Ball { x: 0.0, y: 0.0, z: 0.0, r: 2.0 },
Ball { x: 1.0, y: 0.0, z: 0.0, r: 2.0 },
];
let tessellation = RadicalTessellation::from_balls(1.4, &balls, None);
assert_eq!(tessellation.balls.len(), 2);
assert_eq!(tessellation.contacts.len(), 1);
assert_eq!(tessellation.cells.len(), 2);
let area = tessellation.cells.iter().map(|c| c.sas_area).sum::<f64>();
assert_eq!(area, 166.6300743464026);
Current Status
- Calculates contacts, surface areas and volumes.
- Support for periodic boundary conditions.
- Unit tests and examples.
- Bindings via the
cxx
crate. - Partial update of positions.
Dependencies
~0.5–2.2MB
~33K SLoC