15#ifndef SEAMS_TOPO_BULK_H_
16#define SEAMS_TOPO_BULK_H_
52 std::string path,
const std::vector<std::vector<int>> &rings,
53 const std::vector<std::vector<int>> &nList,
62[[nodiscard]]
int topoBulkAnalysis(std::string path,
const std::vector<std::vector<int>> &rings,
63 const std::vector<std::vector<int>> &nList,
65 int firstFrame,
bool onlyTetrahedral =
true);
85std::vector<int>
findDDC(
const std::vector<std::vector<int>> &rings,
86 std::vector<strucType> &ringType,
87 const std::vector<int> &listHC,
88 std::vector<cage::Cage> &cageList);
91std::vector<int>
findDDC(
const std::vector<std::vector<int>> &rings,
92 std::vector<strucType> &ringType,
93 const std::vector<int> &listHC,
94 std::vector<cage::Cage> &cageList,
101 std::vector<strucType> &ringType,
102 std::vector<int> &listDDC,
103 std::vector<int> &listHC);
107std::vector<int>
findHC(
const std::vector<std::vector<int>> &rings,
108 std::vector<strucType> &ringType,
109 const std::vector<std::vector<int>> &nList,
110 std::vector<cage::Cage> &cageList);
113std::vector<int>
findHC(
const std::vector<std::vector<int>> &rings,
114 std::vector<strucType> &ringType,
115 const std::vector<std::vector<int>> &nList,
116 std::vector<cage::Cage> &cageList,
122 std::vector<int> &peripheralRings,
int iring);
126 std::vector<int> &peripheralRings,
int iring,
132 std::vector<int> &peripheralRings,
int iring);
136 std::vector<int> &peripheralRings,
int iring,
142 std::vector<int> &peripheralRings);
146 const std::vector<int> &basal1,
147 const std::vector<int> &basal2);
152 std::vector<int> &triplet,
int atomOne,
int atomTwo);
157 std::vector<int> &triplet,
158 const std::vector<int> &
ring);
161[[nodiscard]]
int findPrismatic(
const std::vector<std::vector<int>> &rings, std::vector<int> &listHC,
162 std::vector<strucType> &ringType,
int iring,
int jring,
163 std::vector<int> &prismaticRings);
167 std::vector<int> &listHC,
168 std::vector<strucType> &ringType,
int iring,
169 int jring, std::vector<int> &prismaticRings,
175 const std::vector<ring::strucType> &ringType,
176 std::vector<cage::iceType> &atomTypes);
180 const std::vector<cage::Cage> &cageList,
int &numHC,
int &numDDC,
181 int &mixedRings,
int &prismaticRings,
int &basalRings);
195 std::vector<ring::strucType> &ringType,
196 const std::vector<std::vector<int>> &nList,
198 std::vector<double> &rmsdPerAtom,
double heightCutoff = 8);
203 std::vector<int> &basal1, std::vector<int> &basal2);
208 std::vector<int> &basal1, std::vector<int> &basal2);
213 const std::vector<int> &basal1,
const std::vector<int> &basal2,
double heightCutoff = 8);
File for cage types for topological network criteria.
The main molecular system handler.
int findBulkPrisms(const std::vector< std::vector< int > > &rings, std::vector< ring::strucType > &ringType, const std::vector< std::vector< int > > &nList, molSys::PointCloud< molSys::Point< double >, double > &yCloud, std::vector< double > &rmsdPerAtom, double heightCutoff=8)
Find out which rings are prisms.
bool basalPrismConditions(const std::vector< std::vector< int > > &nList, std::vector< int > &basal1, std::vector< int > &basal2)
bool relaxedPrismConditions(const std::vector< std::vector< int > > &nList, std::vector< int > &basal1, std::vector< int > &basal2)
bool basalRingsSeparation(molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< int > &basal1, const std::vector< int > &basal2, double heightCutoff=8)
Check to see that candidate basal prisms are not really far from each other.
Topological network criteria functions.
bool basalConditions(const std::vector< std::vector< int > > &nList, const std::vector< int > &basal1, const std::vector< int > &basal2)
Tests whether two rings are basal rings (true) or not (false).
RingSearchIndex buildRingSearchIndex(const std::vector< std::vector< int > > &rings, int numAtoms)
Builds the inverted atom-to-rings index used by the cage searches.
bool basalNeighbours(const std::vector< std::vector< int > > &nList, std::vector< int > &triplet, int atomOne, int atomTwo)
int getAtomTypesTopoBulk(const std::vector< std::vector< int > > &rings, const std::vector< ring::strucType > &ringType, std::vector< cage::iceType > &atomTypes)
int bulkPolygonRingAnalysis(std::string path, const std::vector< std::vector< int > > &rings, const std::vector< std::vector< int > > &nList, molSys::PointCloud< molSys::Point< double >, double > &yCloud, int maxDepth, int firstFrame)
std::vector< int > findDDC(const std::vector< std::vector< int > > &rings, std::vector< strucType > &ringType, const std::vector< int > &listHC, std::vector< cage::Cage > &cageList)
int findPrismatic(const std::vector< std::vector< int > > &rings, std::vector< int > &listHC, std::vector< strucType > &ringType, int iring, int jring, std::vector< int > &prismaticRings)
Finds the prismatic rings from basal rings iring and jring.
bool conditionTwoDDC(const std::vector< std::vector< int > > &rings, std::vector< int > &peripheralRings, int iring)
bool notNeighboursOfRing(const std::vector< std::vector< int > > &nList, std::vector< int > &triplet, const std::vector< int > &ring)
std::vector< int > findMixedRings(const std::vector< std::vector< int > > &rings, std::vector< strucType > &ringType, std::vector< int > &listDDC, std::vector< int > &listHC)
bool conditionOneDDC(const std::vector< std::vector< int > > &rings, std::vector< int > &peripheralRings, int iring)
int getStrucNumbers(const std::vector< ring::strucType > &ringType, const std::vector< cage::Cage > &cageList, int &numHC, int &numDDC, int &mixedRings, int &prismaticRings, int &basalRings)
Determines the number of HCs, DDCs, Mixed rings, prismatic and basal rings.
bool conditionThreeDDC(const std::vector< std::vector< int > > &rings, std::vector< int > &peripheralRings)
int topoBulkAnalysis(std::string path, const std::vector< std::vector< int > > &rings, const std::vector< std::vector< int > > &nList, molSys::PointCloud< molSys::Point< double >, double > &yCloud, int firstFrame, bool onlyTetrahedral=true)
std::vector< int > findHC(const std::vector< std::vector< int > > &rings, std::vector< strucType > &ringType, const std::vector< std::vector< int > > &nList, std::vector< cage::Cage > &cageList)
File containing common functions used by bulk and confined topological network critera.
This contains a collection of points; contains information for a particular frame.
This contains per-particle information.
Inverted index from an atom to the rings that contain it.
std::vector< std::vector< int > > ringsContainingAtom