pub struct Selection { /* private fields */ }
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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.

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

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.