Trajectories are handled natively, either as collections of single-coordinate frame files (such as "*.pdb") or dedicated trajectory files (such as "coords.dcd"). Multiple trajectory files of different formats can be concatenated, just by adding them to the sire.load call, e.g. sire.load("topology.top", "frame0.pdb", "frame1.pdb", "frames.dcd", "frames.xtc"). This, combined with the molecular search engine, makes it very easy to use the sire API to process the trajectory of a system containing many molecules, and to extract specific frames or specific subsets of atoms, while simultaneously applying molecular smoothing or alignment. Trajectory frames are loaded lazily, in parallel, meaning that frames are only read into memory as needed, using all of the processor cores available. This enables rapid processing of large trajectories with size greater than available memory. Quantities such as RMSDs, distances, angles, etc. can be readily calculated across frames using built-in analysis tools.