Struct chemfiles::TopologyRef[][src]

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

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

Methods from Deref<Target = Topology>

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(), "");

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);

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);

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);

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);

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);

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]]);

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]]);

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]]);

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]]);

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);

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]);

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");

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());

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);

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

The resulting type after dereferencing.

Dereferences the value.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.