Struct chemfiles::Trajectory
[−]
[src]
pub struct Trajectory { /* fields omitted */ }
The Trajectory
type is the main entry point when using chemfiles. A
Trajectory
behave a bit like a file, allowing to read and/or write
Frame
.
Methods
impl Trajectory
[src]
fn open<P>(path: P, mode: char) -> Result<Trajectory> where
P: AsRef<Path>,
P: AsRef<Path>,
Open the file at the given path
in the given mode
.
Valid modes are 'r'
for read, 'w'
for write and 'a'
for append.
Example
let trajectory = Trajectory::open("water.xyz", 'r').unwrap();
fn open_with_format<'a, P, S>(
filename: P,
mode: char,
format: S
) -> Result<Trajectory> where
P: AsRef<Path>,
S: Into<&'a str>,
filename: P,
mode: char,
format: S
) -> Result<Trajectory> where
P: AsRef<Path>,
S: Into<&'a str>,
Open the file at the given path
using a specific file format
and
the given mode
.
Valid modes are 'r'
for read, 'w'
for write and 'a'
for append.
Specifying a format is needed when the file format does not match the
extension, or when there is not standard extension for this format. If
format
is an empty string, the format will be guessed from the
extension.
Example
let trajectory = Trajectory::open_with_format("water.zeo", 'r', "XYZ").unwrap();
fn read(&mut self, frame: &mut Frame) -> Result<()>
Read the next step of this trajectory into a frame
.
If the number of atoms in frame does not correspond to the number of atom in the next step, the frame is resized.
Example
let mut trajectory = Trajectory::open("water.xyz", 'r').unwrap(); let mut frame = Frame::new().unwrap(); trajectory.read(&mut frame).unwrap();
fn read_step(&mut self, step: u64, frame: &mut Frame) -> Result<()>
Read a specific step
of this trajectory into a frame
.
If the number of atoms in frame does not correspond to the number of atom at this step, the frame is resized.
Example
let mut trajectory = Trajectory::open("water.xyz", 'r').unwrap(); let mut frame = Frame::new().unwrap(); trajectory.read_step(10, &mut frame).unwrap();
fn write(&mut self, frame: &Frame) -> Result<()>
Write a frame
to this trajectory.
Example
let mut trajectory = Trajectory::open("water.pdb", 'w').unwrap(); let mut frame = Frame::new().unwrap(); trajectory.write(&mut frame).unwrap();
fn set_topology(&mut self, topology: &Topology) -> Result<()>
Set the topology
associated with this trajectory. This topology will
be used when reading and writing the files, replacing any topology in
the frames or files.
Example
let mut topology = Topology::new().unwrap(); topology.add_atom(&Atom::new("H").unwrap()).unwrap(); topology.add_atom(&Atom::new("O").unwrap()).unwrap(); topology.add_atom(&Atom::new("H").unwrap()).unwrap(); topology.add_bond(0, 1).unwrap(); topology.add_bond(1, 2).unwrap(); let mut trajectory = Trajectory::open("water.xyz", 'r').unwrap(); trajectory.set_topology(&topology).unwrap();
fn set_topology_file<P>(&mut self, path: P) -> Result<()> where
P: AsRef<Path>,
P: AsRef<Path>,
Set the topology associated with this trajectory by reading the first
frame of the file at the given path
using the file format in
format
; and extracting the topology of this frame.
Example
let mut trajectory = Trajectory::open("water.nc", 'r').unwrap(); trajectory.set_topology_file("topology.pdb").unwrap();
fn set_topology_with_format<'a, P, S>(
&mut self,
path: P,
format: S
) -> Result<()> where
P: AsRef<Path>,
S: Into<&'a str>,
&mut self,
path: P,
format: S
) -> Result<()> where
P: AsRef<Path>,
S: Into<&'a str>,
Set the topology associated with this trajectory by reading the first
frame of the file at the given path
using the file format in
format
; and extracting the topology of this frame.
If format
is an empty string or NULL
, the format will be guessed
from the path extension.
Example
let mut trajectory = Trajectory::open("water.nc", 'r').unwrap(); trajectory.set_topology_with_format("topology.mol", "PDB").unwrap();
fn set_cell(&mut self, cell: &UnitCell) -> Result<()>
Set the unit cell
associated with a trajectory. This cell will be
used when reading and writing the files, replacing any unit cell in the
frames or files.
Example
let mut trajectory = Trajectory::open("water.xyz", 'r').unwrap(); trajectory.set_cell(&UnitCell::new(10.0, 11.0, 12.5).unwrap()).unwrap();
fn nsteps(&mut self) -> Result<u64>
Get the number of steps (the number of frames) in a trajectory.
Example
let mut trajectory = Trajectory::open("water.xyz", 'r').unwrap(); let steps = trajectory.nsteps().unwrap(); println!("This trajectory contains {} steps", steps);