[][src]Struct chemfiles::TopologyRef

pub struct TopologyRef<'a> { /* fields omitted */ }

An analog to a reference to a topology (&Topology)

Methods from Deref<Target = Topology>

pub fn atom(&self, index: usize) -> AtomRef<'_>[src]

Get a reference of the atom at the given index in this topology.

Panics

If index is out of bounds.

Example

let mut topology = Topology::new();
topology.resize(6);

let atom = topology.atom(4);
assert_eq!(atom.name(), "");

pub fn size(&self) -> usize[src]

Get the current number of atoms in this topology.

Example

let mut topology = Topology::new();
assert_eq!(topology.size(), 0);

topology.resize(6);
assert_eq!(topology.size(), 6);

pub fn bonds_count(&self) -> usize[src]

Get the number of bonds in the topology.

Example

let mut topology = Topology::new();
assert_eq!(topology.bonds_count(), 0);
topology.resize(4);

topology.add_bond(0, 1);
topology.add_bond(2, 1);
topology.add_bond(2, 3);
assert_eq!(topology.bonds_count(), 3);

pub fn angles_count(&self) -> usize[src]

Get the number of angles in the topology.

Example

let mut topology = Topology::new();
assert_eq!(topology.angles_count(), 0);
topology.resize(4);

topology.add_bond(0, 1);
topology.add_bond(2, 1);
topology.add_bond(2, 3);
assert_eq!(topology.angles_count(), 2);

pub fn dihedrals_count(&self) -> usize[src]

Get the number of dihedral angles in the topology.

Example

let mut topology = Topology::new();
assert_eq!(topology.dihedrals_count(), 0);
topology.resize(4);

topology.add_bond(0, 1);
topology.add_bond(2, 1);
topology.add_bond(2, 3);
assert_eq!(topology.dihedrals_count(), 1);

pub fn impropers_count(&self) -> usize[src]

Get the number of improper dihedral angles in the topology.

Example

let mut topology = Topology::new();
assert_eq!(topology.dihedrals_count(), 0);
topology.resize(4);

topology.add_bond(0, 1);
topology.add_bond(0, 2);
topology.add_bond(0, 3);
assert_eq!(topology.impropers_count(), 1);

pub fn bonds(&self) -> Vec<[usize; 2]>[src]

Get the list of bonds in the topology.

Example

let mut topology = Topology::new();
topology.resize(4);

topology.add_bond(0, 1);
topology.add_bond(2, 1);
topology.add_bond(2, 3);
assert_eq!(topology.bonds(), vec![[0, 1], [1, 2], [2, 3]]);

pub fn angles(&self) -> Vec<[usize; 3]>[src]

Get the list of angles in the topology.

Example

let mut topology = Topology::new();
topology.resize(4);

topology.add_bond(0, 1);
topology.add_bond(2, 1);
topology.add_bond(2, 3);
assert_eq!(topology.angles(), vec![[0, 1, 2], [1, 2, 3]]);

pub fn dihedrals(&self) -> Vec<[usize; 4]>[src]

Get the list of dihedral angles in the topology.

Example

let mut topology = Topology::new();
topology.resize(4);

topology.add_bond(0, 1);
topology.add_bond(2, 1);
topology.add_bond(2, 3);

assert_eq!(topology.dihedrals(), vec![[0, 1, 2, 3]]);

pub fn impropers(&self) -> Vec<[usize; 4]>[src]

Get the list of improper dihedral angles in the topology.

Example

let mut topology = Topology::new();
topology.resize(4);

topology.add_bond(0, 1);
topology.add_bond(0, 2);
topology.add_bond(0, 3);

assert_eq!(topology.impropers(), vec![[1, 0, 2, 3]]);

pub fn bond_order(&self, i: usize, j: usize) -> BondOrder[src]

Get the bond order for the bond between the atoms at indexes i and j.

Example

let mut topology = Topology::new();
assert_eq!(topology.bonds_count(), 0);
topology.resize(2);

topology.add_bond_with_order(0, 1, BondOrder::Double);
assert_eq!(topology.bond_order(0, 1), BondOrder::Double);

pub fn bond_orders(&self) -> Vec<BondOrder>[src]

Get the bond order for all the bonds in the topology

Example

let mut topology = Topology::new();
assert_eq!(topology.bonds_count(), 0);
topology.resize(3);

topology.add_bond_with_order(0, 1, BondOrder::Double);
topology.add_bond_with_order(0, 2, BondOrder::Single);

assert_eq!(topology.bond_orders(), &[BondOrder::Double, BondOrder::Single]);

pub fn residue(&self, index: u64) -> Option<ResidueRef<'_>>[src]

Get a reference to 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();
topology.add_residue(&Residue::new("water")).unwrap();

let residue = topology.residue(0).unwrap();
assert_eq!(residue.name(), "water");

pub fn residue_for_atom(&self, index: usize) -> Option<ResidueRef<'_>>[src]

Get a copy of the residue containing the atom at index index in this topology, if any.

Example

let mut topology = Topology::new();
topology.resize(8);

let mut residue = Residue::new("water");
residue.add_atom(0);
residue.add_atom(1);
residue.add_atom(2);
topology.add_residue(&residue).unwrap();

let residue = topology.residue_for_atom(0).unwrap();
assert_eq!(residue.name(), "water");

assert!(topology.residue_for_atom(6).is_none());

pub fn residues_count(&self) -> u64[src]

Get the number of residues in this topology.

Example

let mut topology = Topology::new();
assert_eq!(topology.residues_count(), 0);

topology.add_residue(&Residue::with_id("water", 0)).unwrap();
topology.add_residue(&Residue::with_id("protein", 1)).unwrap();
assert_eq!(topology.residues_count(), 2);

pub fn are_linked(&self, first: &Residue, second: &Residue) -> 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();

topology.add_residue(&Residue::with_id("water", 0)).unwrap();
topology.add_residue(&Residue::with_id("protein", 1)).unwrap();

let first = topology.residue(0).unwrap();
let second = topology.residue(1).unwrap();
assert_eq!(topology.are_linked(&first, &second), false);

Trait Implementations

impl<'a> Deref for TopologyRef<'a>[src]

type Target = Topology

The resulting type after dereferencing.

Auto Trait Implementations

impl<'a> RefUnwindSafe for TopologyRef<'a>

impl<'a> !Send for TopologyRef<'a>

impl<'a> !Sync for TopologyRef<'a>

impl<'a> Unpin for TopologyRef<'a>

impl<'a> UnwindSafe for TopologyRef<'a>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.