STORMM Source Documentation
Loading...
Searching...
No Matches
rmsd.h
1// -*-c++-*-
2#ifndef STORMM_STRUCTURE_RMSD_H
3#define STORMM_STRUCTURE_RMSD_H
4
5#include "copyright.h"
6#include "Analysis/comparison_guide.h"
7#include "Constants/behavior.h"
8#include "DataTypes/common_types.h"
9#include "Math/matrix_ops.h"
10#include "Math/rounding.h"
11#include "Math/summation.h"
12#include "Synthesis/condensate.h"
13#include "Synthesis/phasespace_synthesis.h"
14#include "Synthesis/synthesis_abstracts.h"
15#include "Synthesis/synthesis_cache_map.h"
16#include "Synthesis/synthesis_enumerators.h"
17#include "Topology/atomgraph.h"
18#include "Topology/atomgraph_abstracts.h"
19#include "Trajectory/coordinateframe.h"
20#include "Trajectory/coordinate_series.h"
21#include "Trajectory/phasespace.h"
22#include "rmsd_plan.h"
23#include "structure_enumerators.h"
24
25namespace stormm {
26namespace structure {
27
28using analysis::ComparisonGuide;
29using constants::PrecisionModel;
30using data_types::isSignedIntegralScalarType;
31using stmath::EigenWork;
32using stmath::jacobiEigensolver;
33using stmath::realSymmEigensolver;
34using stmath::roundUp;
35using stmath::sum;
36using topology::AtomGraph;
37using topology::ChemicalDetailsKit;
38using synthesis::Condensate;
39using synthesis::CondensateReader;
40using synthesis::PhaseSpaceSynthesis;
41using synthesis::PsSynthesisReader;
42using synthesis::SyNonbondedKit;
43using synthesis::SynthesisCacheMap;
44using synthesis::SynthesisMapReader;
45using synthesis::SystemGrouping;
46using trajectory::CoordinateFrame;
47using trajectory::CoordinateFrameReader;
48using trajectory::CoordinateFrameWriter;
49using trajectory::CoordinateSeries;
50using trajectory::CoordinateSeriesReader;
51using trajectory::CoordinateSeriesWriter;
52using trajectory::PhaseSpace;
53using trajectory::PhaseSpaceReader;
54using trajectory::PhaseSpaceWriter;
55
74template <typename T>
75void checkCompatibility(const ComparisonGuide &cg, const RMSDPlan &rplan,
76 const PhaseSpaceSynthesis &poly_ps, const Hybrid<T> *result,
77 RMSDTask process, SystemGrouping organization);
78
79template <typename T>
80void checkCompatibility(const ComparisonGuide &cg, const RMSDPlan &rplan,
81 const PhaseSpaceSynthesis &poly_ps, const Condensate &cdns,
82 const Hybrid<T> *result, RMSDTask process, SystemGrouping organization);
84
136template <typename Tcoord, typename Tcalc>
137Tcalc rmsd(const Tcoord* xcrd_a, const Tcoord* ycrd_a, const Tcoord* zcrd_a, const Tcoord* xcrd_b,
138 const Tcoord* ycrd_b, const Tcoord* zcrd_b, const Tcalc* masses, RMSDMethod method,
139 int lower_limit, int upper_limit, Tcalc inv_gpos_scale_factor = 1.0);
140
141double rmsd(const double* xcrd_a, const double* ycrd_a, const double* zcrd_a, const double* xcrd_b,
142 const double* ycrd_b, const double* zcrd_b, const double* masses, RMSDMethod method,
143 int lower_limit, int upper_limit);
144
145double rmsd(const PhaseSpaceReader &psr_a, const PhaseSpaceReader &psr_b,
146 const ChemicalDetailsKit &cdk, RMSDMethod method, int lower_limit = 0,
147 int upper_limit = 0);
148
149double rmsd(const PhaseSpaceWriter &psw_a, const PhaseSpaceWriter &psw_b,
150 const ChemicalDetailsKit &cdk, RMSDMethod method, int lower_limit = 0,
151 int upper_limit = 0);
152
153double rmsd(const PhaseSpace &ps_a, const PhaseSpace &ps_b, const AtomGraph &ag, RMSDMethod method,
154 int lower_limit = 0, int upper_limit = 0);
155
156double rmsd(const CoordinateFrameReader &cfr_a, const CoordinateFrameReader &cfr_b,
157 const ChemicalDetailsKit &cdk, RMSDMethod method, int lower_limit = 0,
158 int upper_limit = 0);
159
160double rmsd(const CoordinateFrameWriter &cfw_a, const CoordinateFrameWriter &cfw_b,
161 const ChemicalDetailsKit &cdk, RMSDMethod method, int lower_limit = 0,
162 int upper_limit = 0);
163
164double rmsd(const CoordinateFrame &cf_a, const CoordinateFrame &cf_b, const AtomGraph &ag,
165 RMSDMethod method, int lower_limit = 0, int upper_limit = 0);
166
167template <typename Tcoord, typename Tcalc>
168Tcalc rmsd(const CoordinateSeriesReader<Tcoord> &csr, const size_t frame_a, const size_t frame_b,
169 const ChemicalDetailsKit &cdk, const RMSDMethod method, const int lower_limit,
170 const int upper_limit);
171
172template <typename Tcoord, typename Tcalc>
173Tcalc rmsd(const CoordinateSeriesWriter<Tcoord> &csw, const size_t frame_a, const size_t frame_b,
174 const ChemicalDetailsKit &cdk, const RMSDMethod method, const int lower_limit,
175 const int upper_limit);
176
177template <typename Tcoord, typename Tcalc>
178Tcalc rmsd(const CoordinateSeries<Tcoord> &cs, const size_t frame_a, const size_t frame_b,
179 const AtomGraph &ag, const RMSDMethod method, const int lower_limit,
180 const int upper_limit);
181
182double rmsd(const RMSDPlan &rplan, const PhaseSpaceReader &reference,
183 const PhaseSpaceReader &snapshot);
184
185double rmsd(const RMSDPlan &rplan, const PhaseSpace &reference, const PhaseSpace &snapshot);
186
187double rmsd(const RMSDPlan &rplan,
188 const CoordinateFrameReader &reference, const CoordinateFrameReader &snapshot);
189
190double rmsd(const RMSDPlan &rplan, const CoordinateFrame &reference,
191 const CoordinateFrame &snapshot);
192
193template <typename T>
194std::vector<double> rmsd(const ComparisonGuide &cg, const RMSDPlan &rplan,
195 const CoordinateFrame &reference, const CoordinateSeries<T> &snapshots);
196
197template <typename T>
198std::vector<double> rmsd(const ComparisonGuide &cg, const RMSDPlan &rplan,
199 const CoordinateSeries<T> &snapshots, int reference_frame);
200
201template <typename T>
202void rmsd(const ComparisonGuide &cg, const RMSDPlan &rplan, const CoordinateFrame &reference,
203 const CoordinateSeries<T> &snapshots, Hybrid<T> *result);
204
205template <typename T>
206void rmsd(const ComparisonGuide &cg, const RMSDPlan &rplan, const CoordinateSeries<T> &snapshots,
207 int reference_frame, Hybrid<T> *result);
208
209template <typename T>
210void rmsd(const ComparisonGuide &cg, const RMSDPlan &rplan, const CoordinateSeries<T> &snapshots,
211 Hybrid<T> *result);
212
213template <typename T>
214void rmsd(const ComparisonGuide &cg, const RMSDPlan &rplan, const PhaseSpaceSynthesis &snapshots,
215 const Hybrid<int> &reference_frames, Hybrid<T> *result,
216 SystemGrouping organization = SystemGrouping::TOPOLOGY);
217
218template <typename T>
219void rmsd(const ComparisonGuide &cg, const RMSDPlan &rplan, const PhaseSpaceSynthesis &snapshots,
220 Hybrid<T> *result, SystemGrouping organization = SystemGrouping::TOPOLOGY);
221
222template <typename T>
223void rmsd(const ComparisonGuide &cg, const RMSDPlan &rplan, const PhaseSpaceSynthesis &snapshots,
224 const Condensate &cdns, const Hybrid<int> &reference_frames, Hybrid<T> *result,
225 SystemGrouping organization = SystemGrouping::TOPOLOGY);
226
227template <typename T>
228void rmsd(const ComparisonGuide &cg, const RMSDPlan &rplan, const PhaseSpaceSynthesis &snapshots,
229 const Condensate &cdns, Hybrid<T> *result,
230 SystemGrouping organization = SystemGrouping::TOPOLOGY);
232
233} // namespace structure
234} // namespace stormm
235
236#include "rmsd.tpp"
237
238#endif
239
An evolution of GpuBuffer in pmemd.cuda, the Composite array has elements that are accessible from ei...
Definition hybrid.h:202
Collect instructions for one or more systems (intend to work with any coordinate object,...
Definition rmsd_plan.h:89
Condense the data format, and possibly offer a reduced representation of coordinates,...
Definition condensate.h:146
A fixed-precision representation of coordinates, velocities, and forces to manage a set of simulation...
Definition phasespace_synthesis.h:325
A struct to hold information relating to an Amber topology. This struct's member functions are limite...
Definition atomgraph.h:50
Store the coordinates and box information for a frame, only. This abridged struct can serve when the ...
Definition coordinateframe.h:111
Store the coordinates and box information for a series of frames, in one of several levels of precisi...
Definition coordinate_series.h:137
An object to complement a topology and hold positions, velocities, and forces of all particles in a s...
Definition phasespace.h:141
Information on atoms and residues which may be useful for applying atom masks or identifying specific...
Definition atomgraph_abstracts.h:382
Collect C-style pointers for the elements of a read-only CoordinateFrame object.
Definition coordinateframe.h:65
Collect C-style pointers for the elements of a writable CoordinateFrame object.
Definition coordinateframe.h:30
Collect C-style pointers and critical constants for a read-only CoordinateSeries object.
Definition coordinate_series.h:96
Collect C-style pointers and critical constants for a writeable CoordinateSeries object.
Definition coordinate_series.h:66
Collect constants and pointers to the components of a read-only PhaseSpace object.
Definition phasespace.h:81
Collect constants and pointers to the components of a modifiable PhaseSpace object.
Definition phasespace.h:31