Loading...
Searching...
No Matches
shapeMatch.hpp
Go to the documentation of this file.
1//-----------------------------------------------------------------------------------
2// d-SEAMS - Deferred Structural Elucidation Analysis for Molecular Simulations
3//
4// Copyright (c) 2018--present d-SEAMS core team
5//
6// This program is free software: you can redistribute it and/or modify
7// it under the terms of the MIT License as published by
8// the Open Source Initiative.
9//
10// A copy of the MIT License is included in the LICENSE file of this repository.
11// You should have received a copy of the MIT License along with this program.
12// If not, see <https://opensource.org/licenses/MIT>.
13//-----------------------------------------------------------------------------------
14
15#ifndef SEAMS_SHAPEMATCH_H_
16#define SEAMS_SHAPEMATCH_H_
17
18#include <algorithm>
19#include <array>
20#include <fstream>
21#include <iostream>
22#include <iterator>
23#include <cmath>
24#include <memory>
25#include <sstream>
26#include <string>
27#include <vector>
28
29#include <absOrientation.hpp>
30#include <mol_sys.hpp>
31#include <pntCorrespondence.hpp>
32#include <ring.hpp>
33#include <seams_input.hpp>
34#include <seams_output.hpp>
35
36namespace match {
37
41 const std::vector<std::vector<int>> &nList,
42 const Eigen::MatrixXd &refPoints, std::vector<int> &basal1,
43 std::vector<int> &basal2, std::vector<double> &rmsdPerAtom,
44 bool isPerfect = true);
45
49 const molSys::PointCloud<molSys::Point<double>, double> &yCloud,
50 const std::vector<std::vector<int>> &nList, const Eigen::MatrixXd &refPoints,
51 std::vector<int> &basal1, std::vector<int> &basal2,
52 std::vector<double> &rmsdPerAtom);
53
57 const std::vector<std::vector<int>> &nList,
58 const Eigen::MatrixXd &refPoints, std::vector<int> &basal1,
59 std::vector<int> &basal2, int &beginIndex);
60
62[[nodiscard]] int updatePerAtomRMSDRing(const std::vector<int> &basalRing, int startingIndex,
63 const std::vector<double> &rmsdFromMatch,
64 std::vector<double> &rmsdPerAtom);
65
68[[nodiscard]] int updateRMSDRing(const std::vector<int> &basalRing, int startingIndex,
69 double rmsdVal, std::vector<double> &rmsdPerAtom);
70
71} // namespace match
72
73#endif // SEAMS_SHAPEMATCH_H_
The main molecular system handler.
bool matchUntetheredPrism(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, const Eigen::MatrixXd &refPoints, std::vector< int > &basal1, std::vector< int > &basal2, std::vector< double > &rmsdPerAtom)
bool matchPrismBlock(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, const Eigen::MatrixXd &refPoints, std::vector< int > &basal1, std::vector< int > &basal2, int &beginIndex)
int updatePerAtomRMSDRing(const std::vector< int > &basalRing, int startingIndex, const std::vector< double > &rmsdFromMatch, std::vector< double > &rmsdPerAtom)
Update the per-particle RMSD for a prism block basal ring.
int updateRMSDRing(const std::vector< int > &basalRing, int startingIndex, double rmsdVal, std::vector< double > &rmsdPerAtom)
bool matchPrism(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, const Eigen::MatrixXd &refPoints, std::vector< int > &basal1, std::vector< int > &basal2, std::vector< double > &rmsdPerAtom, bool isPerfect=true)
File containing common functions used by bulk and confined topological network critera.
File for functions that read in files).
This contains a collection of points; contains information for a particular frame.
Definition mol_sys.hpp:173
This contains per-particle information.
Definition mol_sys.hpp:152