Struct chemfiles::Topology
[−]
[src]
pub struct Topology { /* fields omitted */ }
A Topology
contains the definition of all the atoms in the system, and
the liaisons between the atoms (bonds, angles, dihedrals, ...). It will
also contain all the residues information if it is available.
Methods
impl Topology
[src]
fn new() -> Result<Topology>
[src]
Create a new empty topology.
Example
let topology = Topology::new().unwrap(); assert_eq!(topology.size(), Ok(0));
fn atom(&self, index: u64) -> Result<Atom>
[src]
Get a copy of the atom at index index
from this topology.
Example
let mut topology = Topology::new().unwrap(); topology.resize(6).unwrap(); let atom = topology.atom(4).unwrap(); assert_eq!(atom.name(), Ok(String::new()));
fn size(&self) -> Result<u64>
[src]
Get the current number of atoms in this topology.
Example
let mut topology = Topology::new().unwrap(); assert_eq!(topology.size(), Ok(0)); topology.resize(6).unwrap(); assert_eq!(topology.size(), Ok(6));
fn resize(&mut self, natoms: u64) -> Result<()>
[src]
Resize this topology to hold natoms
atoms, inserting dummy atoms if
the new size if bigger than the old one.
Example
let mut topology = Topology::new().unwrap(); assert_eq!(topology.size(), Ok(0)); topology.resize(6).unwrap(); assert_eq!(topology.size(), Ok(6));
fn add_atom(&mut self, atom: &Atom) -> Result<()>
[src]
Add an Atom
at the end of this topology
Example
let mut topology = Topology::new().unwrap(); topology.add_atom(&Atom::new("Mg").unwrap()).unwrap(); let atom = topology.atom(0).unwrap(); assert_eq!(atom.name(), Ok(String::from("Mg")));
fn remove(&mut self, index: u64) -> Result<()>
[src]
Remove an Atom
from this topology by index. This modify all the other
atoms indexes.
Example
let mut topology = Topology::new().unwrap(); topology.resize(9).unwrap(); assert_eq!(topology.size(), Ok(9)); topology.remove(7).unwrap(); assert_eq!(topology.size(), Ok(8));
fn bonds_count(&self) -> Result<u64>
[src]
Get the number of bonds in the topology.
Example
let mut topology = Topology::new().unwrap(); assert_eq!(topology.bonds_count(), Ok(0)); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_bond(0, 1).unwrap(); topology.add_bond(2, 1).unwrap(); topology.add_bond(2, 3).unwrap(); assert_eq!(topology.bonds_count(), Ok(3));
fn angles_count(&self) -> Result<u64>
[src]
Get the number of angles in the topology.
Example
let mut topology = Topology::new().unwrap(); assert_eq!(topology.angles_count(), Ok(0)); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_bond(0, 1).unwrap(); topology.add_bond(2, 1).unwrap(); topology.add_bond(2, 3).unwrap(); assert_eq!(topology.angles_count(), Ok(2));
fn dihedrals_count(&self) -> Result<u64>
[src]
Get the number of dihedral angles in the topology.
Example
let mut topology = Topology::new().unwrap(); assert_eq!(topology.dihedrals_count(), Ok(0)); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_bond(0, 1).unwrap(); topology.add_bond(2, 1).unwrap(); topology.add_bond(2, 3).unwrap(); assert_eq!(topology.dihedrals_count(), Ok(1));
fn impropers_count(&self) -> Result<u64>
[src]
Get the number of improper dihedral angles in the topology.
Example
let mut topology = Topology::new().unwrap(); assert_eq!(topology.dihedrals_count(), Ok(0)); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_bond(0, 1).unwrap(); topology.add_bond(0, 2).unwrap(); topology.add_bond(0, 3).unwrap(); assert_eq!(topology.impropers_count(), Ok(1));
fn bonds(&self) -> Result<Vec<[u64; 2]>>
[src]
Get the list of bonds in the topology.
Example
let mut topology = Topology::new().unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_bond(0, 1).unwrap(); topology.add_bond(2, 1).unwrap(); topology.add_bond(2, 3).unwrap(); assert_eq!(topology.bonds(), Ok(vec![[0, 1], [1, 2], [2, 3]]));
fn angles(&self) -> Result<Vec<[u64; 3]>>
[src]
Get the list of angles in the topology.
Example
let mut topology = Topology::new().unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_bond(0, 1).unwrap(); topology.add_bond(2, 1).unwrap(); topology.add_bond(2, 3).unwrap(); assert_eq!(topology.angles(), Ok(vec![[0, 1, 2], [1, 2, 3]]));
fn dihedrals(&self) -> Result<Vec<[u64; 4]>>
[src]
Get the list of dihedral angles in the topology.
Example
let mut topology = Topology::new().unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_bond(0, 1).unwrap(); topology.add_bond(2, 1).unwrap(); topology.add_bond(2, 3).unwrap(); assert_eq!(topology.dihedrals(), Ok(vec![[0, 1, 2, 3]]));
fn impropers(&self) -> Result<Vec<[u64; 4]>>
[src]
Get the list of improper dihedral angles in the topology.
Example
let mut topology = Topology::new().unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_bond(0, 1).unwrap(); topology.add_bond(0, 2).unwrap(); topology.add_bond(0, 3).unwrap(); assert_eq!(topology.impropers(), Ok(vec![[1, 0, 2, 3]]));
fn add_bond(&mut self, i: u64, j: u64) -> Result<()>
[src]
Add a bond between the atoms at indexes i
and j
in the topology.
Example
let mut topology = Topology::new().unwrap(); assert_eq!(topology.bonds_count(), Ok(0)); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_bond(0, 1).unwrap(); topology.add_bond(0, 2).unwrap(); assert_eq!(topology.bonds_count(), Ok(2));
fn remove_bond(&mut self, i: u64, j: u64) -> Result<()>
[src]
Remove any existing bond between the atoms at indexes i
and j
in
this topology.
This function does nothing if there is no bond between i
and j
.
Example
let mut topology = Topology::new().unwrap(); assert_eq!(topology.bonds_count(), Ok(0)); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_atom(&Atom::new("F").unwrap()).unwrap(); topology.add_bond(0, 1).unwrap(); topology.add_bond(1, 2).unwrap(); assert_eq!(topology.bonds_count(), Ok(2)); topology.remove_bond(0, 1).unwrap(); assert_eq!(topology.bonds_count(), Ok(1)); // Removing a bond that does not exists topology.remove_bond(0, 2).unwrap(); assert_eq!(topology.bonds_count(), Ok(1));
fn residue(&self, index: u64) -> Result<Residue>
[src]
Get a copy of the residue at index index
from this topology.
The residue index in the topology is not always the same as the residue
id
.
Example
let mut topology = Topology::new().unwrap(); topology.add_residue(&Residue::new("water").unwrap()).unwrap(); let residue = topology.residue(0).unwrap(); assert_eq!(residue.name(), Ok(String::from("water")));
fn residue_for_atom(&self, index: u64) -> Result<Option<Residue>>
[src]
Get a copy of the residue containing the atom at index index
in this
topology, if any.
Example
let mut topology = Topology::new().unwrap(); topology.resize(8).unwrap(); let mut residue = Residue::new("water").unwrap(); residue.add_atom(0).unwrap(); residue.add_atom(1).unwrap(); residue.add_atom(2).unwrap(); topology.add_residue(&residue).unwrap(); let residue = topology.residue_for_atom(0).unwrap().unwrap(); assert_eq!(residue.name(), Ok(String::from("water"))); let residue = topology.residue_for_atom(6).unwrap(); assert!(residue.is_none());
fn residues_count(&self) -> Result<u64>
[src]
Get the number of residues in this topology.
Example
let mut topology = Topology::new().unwrap(); assert_eq!(topology.residues_count(), Ok(0)); topology.add_residue(&Residue::with_id("water", 0).unwrap()).unwrap(); topology.add_residue(&Residue::with_id("protein", 1).unwrap()).unwrap(); assert_eq!(topology.residues_count(), Ok(2));
fn add_residue(&mut self, residue: &Residue) -> Result<()>
[src]
Add a residue to this topology.
The residue id
must not already be in the topology, and the residue
must contain only atoms that are not already in another residue.
Example
let mut topology = Topology::new().unwrap(); topology.add_residue(&Residue::new("water").unwrap()).unwrap(); let residue = topology.residue(0).unwrap(); assert_eq!(residue.name(), Ok(String::from("water")));
fn are_linked(&self, first: &Residue, second: &Residue) -> Result<bool>
[src]
Check if the two residues first
and second
from the topology
are
linked together, i.e. if there is a bond between one atom in the
first residue and one atom in the second one.
Example
let mut topology = Topology::new().unwrap(); topology.add_residue(&Residue::with_id("water", 0).unwrap()).unwrap(); topology.add_residue(&Residue::with_id("protein", 1).unwrap()).unwrap(); let first = topology.residue(0).unwrap(); let second = topology.residue(1).unwrap(); assert_eq!(topology.are_linked(&first, &second), Ok(false));
Trait Implementations
impl Clone for Topology
[src]
fn clone(&self) -> Topology
[src]
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more