Struct chemfiles::Selection[][src]

pub struct Selection { /* fields omitted */ }
Expand description

A Selection allow to select atoms in a Frame, from a selection language. The selection language is built by combining basic operations. Each basic operation follows the <selector>[(<variable>)] <operator> <value> structure, where <operator> is a comparison operator in == != < <= > >=.

Implementations

Create a new selection from the given selection string.

Errors

This function fails if the selection string is invalid.

Example

let selection = Selection::new("pairs: name(#1) H and name(#2) O").unwrap();

Get the size of the selection, i.e. the number of atoms we are selecting together.

This value is 1 for the ‘atom’ context, 2 for the ‘pair’ and ‘bond’ context, 3 for the ‘three’ and ‘angles’ context and 4 for the ‘four’ and ‘dihedral’ context.

Example

let selection = Selection::new("pairs: name(#1) H and name(#2) O").unwrap();
assert_eq!(selection.size(), 2);

Get the selection string used to create this selection.

Example

let selection = Selection::new("name H").unwrap();
assert_eq!(selection.string(), "name H");

Evaluate a selection for a given frame, and return the corresponding matches.

Example

let mut frame = Frame::new();
frame.add_atom(&Atom::new("H"), [1.0, 0.0, 0.0], None);
frame.add_atom(&Atom::new("O"), [0.0, 0.0, 0.0], None);
frame.add_atom(&Atom::new("H"), [-1.0, 0.0, 0.0], None);

let mut selection = Selection::new("pairs: name(#1) H and name(#2) O").unwrap();
let matches = selection.evaluate(&frame);

assert_eq!(matches.len(), 2);

assert_eq!(matches[0].len(), 2);
assert_eq!(matches[0][0], 0);
assert_eq!(matches[0][1], 1);

assert_eq!(matches[1].len(), 2);
assert_eq!(matches[1][0], 2);
assert_eq!(matches[1][1], 1);

Evaluates a selection of size 1 on a given frame. This function returns the list of atomic indexes in the frame matching this selection.

Panics

If the selection size is not 1

Example

let mut frame = Frame::new();
frame.add_atom(&Atom::new("H"), [1.0, 0.0, 0.0], None);
frame.add_atom(&Atom::new("O"), [0.0, 0.0, 0.0], None);
frame.add_atom(&Atom::new("H"), [-1.0, 0.0, 0.0], None);

let mut selection = Selection::new("name H").unwrap();
let matches = selection.list(&frame);

assert_eq!(matches.len(), 2);
assert_eq!(matches[0], 0);
assert_eq!(matches[1], 2);

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Executes the destructor for this type. Read more

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 resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

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.