Loading...
Searching...
No Matches
pntCorrespondence.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_PNTCORRESPONDENCE_H_
16#define SEAMS_PNTCORRESPONDENCE_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// External
30#include <Eigen/Core>
31
32#include <cage.hpp>
33#include <mol_sys.hpp>
34#include <seams_input.hpp>
35#include <seams_output.hpp>
36
37namespace pntToPnt {
38
41Eigen::MatrixXd getPointSetRefRing(int n, int axialDim);
42
46Eigen::MatrixXd
48 const Eigen::MatrixXd &refPoints, int ringSize,
49 const std::vector<int> &basal1, const std::vector<int> &basal2);
50
53double
55 const std::vector<int> &basal1, const std::vector<int> &basal2);
56
60 const molSys::PointCloud<molSys::Point<double>, double> &yCloud,
61 const std::vector<int> &basal1, const std::vector<int> &basal2);
62
68[[nodiscard]] int relOrderPrismBlock(
69 const molSys::PointCloud<molSys::Point<double>, double> &yCloud,
70 const std::vector<int> &basal1, const std::vector<int> &basal2,
71 const std::vector<std::vector<int>> &nList, std::vector<int> &outBasal1,
72 std::vector<int> &outBasal2);
73
78[[nodiscard]] int relOrderPrismBlock(
79 const molSys::PointCloud<molSys::Point<double>, double> &yCloud,
80 const std::vector<int> &basal1, const std::vector<int> &basal2,
81 std::vector<int> &outBasal1, std::vector<int> &outBasal2);
82
85Eigen::MatrixXd
87 const std::vector<int> &basalRing, int startingIndex);
88
91Eigen::MatrixXd fillPointSetPrismBlock(
92 const molSys::PointCloud<molSys::Point<double>, double> &yCloud,
93 const std::vector<int> &basal1, const std::vector<int> &basal2, int startingIndex);
94
98Eigen::MatrixXd getPointSetCage(ring::strucType type);
99
101[[nodiscard]] int relOrderHC(const molSys::PointCloud<molSys::Point<double>, double> &yCloud,
102 const std::vector<int> &basal1, const std::vector<int> &basal2,
103 const std::vector<std::vector<int>> &nList,
104 std::vector<int> &matchedBasal1,
105 std::vector<int> &matchedBasal2);
106
108std::vector<int> relOrderDDC(int index, const std::vector<std::vector<int>> &rings,
109 const std::vector<cage::Cage> &cageList);
110
114std::vector<int> relOrderDDC(const std::vector<int> &equatorial, int index,
115 const std::vector<std::vector<int>> &rings,
116 const std::vector<cage::Cage> &cageList);
117
121Eigen::MatrixXd
123 const std::vector<int> &basal1, const std::vector<int> &basal2,
124 int startingIndex = 0);
125
128Eigen::MatrixXd
130 const std::vector<int> &ddcOrder, int startingIndex = 0);
131
132} // namespace pntToPnt
133
134#endif // SEAMS_PNTCORRESPONDENCE_H_
File for cage types for topological network criteria.
strucType
Definition ring.hpp:115
The main molecular system handler.
double getRadiusFromRings(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< int > &basal1, const std::vector< int > &basal2)
Eigen::MatrixXd getPointSetCage(ring::strucType type)
Eigen::MatrixXd getPointSetRefRing(int n, int axialDim)
Eigen::MatrixXd changeHexCageOrder(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< int > &basal1, const std::vector< int > &basal2, int startingIndex=0)
Eigen::MatrixXd changeDiaCageOrder(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< int > &ddcOrder, int startingIndex=0)
int relOrderPrismBlock(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< int > &basal1, const std::vector< int > &basal2, const std::vector< std::vector< int > > &nList, std::vector< int > &outBasal1, std::vector< int > &outBasal2)
Eigen::MatrixXd createPrismBlock(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const Eigen::MatrixXd &refPoints, int ringSize, const std::vector< int > &basal1, const std::vector< int > &basal2)
Eigen::MatrixXd fillPointSetPrismBlock(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< int > &basal1, const std::vector< int > &basal2, int startingIndex)
Eigen::MatrixXd fillPointSetPrismRing(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< int > &basalRing, int startingIndex)
int relOrderHC(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< int > &basal1, const std::vector< int > &basal2, const std::vector< std::vector< int > > &nList, std::vector< int > &matchedBasal1, std::vector< int > &matchedBasal2)
Matches the order of the basal rings of an HC or a potential HC.
double getAvgHeightPrismBlock(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< int > &basal1, const std::vector< int > &basal2)
std::vector< int > relOrderDDC(int index, const std::vector< std::vector< int > > &rings, const std::vector< cage::Cage > &cageList)
Matches the order of the basal rings of an DDC or a potential HC.
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