Loading...
Searching...
No Matches
bulkTUM.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_BULKTUM_H_
16#define SEAMS_BULKTUM_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 <franzblau.hpp>
30#include <neighbours.hpp>
31#include <pntCorrespondence.hpp>
32#include <topo_bulk.hpp>
33
38
43
44namespace tum3 {
45
48[[nodiscard]] int topoUnitMatchingBulk(
49 std::string path, const std::vector<std::vector<int>> &rings,
50 const std::vector<std::vector<int>> &nList,
51 molSys::PointCloud<molSys::Point<double>, double> &yCloud, int firstFrame,
52 bool printClusters, bool onlyTetrahedral,
53 std::string templatePath = "templates");
54
56Eigen::MatrixXd buildRefHC(const std::string &fileName);
57
59Eigen::MatrixXd buildRefDDC(const std::string &fileName);
60
62[[nodiscard]] int shapeMatchHC(molSys::PointCloud<molSys::Point<double>, double> &yCloud,
63 const Eigen::MatrixXd &refPoints, cage::Cage cageUnit,
64 const std::vector<std::vector<int>> &rings,
65 const std::vector<std::vector<int>> &nList, std::vector<double> &quat,
66 double &rmsd);
67
69[[nodiscard]] int shapeMatchDDC(molSys::PointCloud<molSys::Point<double>, double> &yCloud,
70 const Eigen::MatrixXd &refPoints,
71 const std::vector<cage::Cage> &cageList, int cageIndex,
72 const std::vector<std::vector<int>> &rings,
73 std::vector<double> &quat, double &rmsd);
74
77[[nodiscard]] int updateRMSDatom(const std::vector<std::vector<int>> &rings, cage::Cage cageUnit,
78 double rmsd, std::vector<double> &rmsdPerAtom,
79 std::vector<int> &noOfCommonAtoms,
80 const std::vector<cage::iceType> &atomTypes);
81
83[[nodiscard]] int averageRMSDatom(std::vector<double> &rmsdPerAtom,
84 std::vector<int> &noOfCommonAtoms);
85
88std::vector<cage::Cage>
89topoBulkCriteria(std::string path, const std::vector<std::vector<int>> &rings,
90 const std::vector<std::vector<int>> &nList,
92 int firstFrame, int &numHC, int &numDDC,
93 std::vector<ring::strucType> &ringType);
94
98[[nodiscard]] int clusterCages(molSys::PointCloud<molSys::Point<double>, double> &yCloud,
99 std::string path, const std::vector<std::vector<int>> &rings,
100 const std::vector<cage::Cage> &cageList, int numHC, int numDDC);
101
103std::vector<int> atomsFromCages(const std::vector<std::vector<int>> &rings,
104 const std::vector<cage::Cage> &cageList,
105 const std::vector<int> &clusterCages);
106
107} // namespace tum3
108
109#endif // SEAMS_BULKTUM_H_
File for generating shortest-path rings according to the Franzblau algorithm.
std::vector< cage::Cage > topoBulkCriteria(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, int &numHC, int &numDDC, std::vector< ring::strucType > &ringType)
std::vector< int > atomsFromCages(const std::vector< std::vector< int > > &rings, const std::vector< cage::Cage > &cageList, const std::vector< int > &clusterCages)
Gets the atoms in the cages of a given cluster.
int updateRMSDatom(const std::vector< std::vector< int > > &rings, cage::Cage cageUnit, double rmsd, std::vector< double > &rmsdPerAtom, std::vector< int > &noOfCommonAtoms, const std::vector< cage::iceType > &atomTypes)
int shapeMatchHC(molSys::PointCloud< molSys::Point< double >, double > &yCloud, const Eigen::MatrixXd &refPoints, cage::Cage cageUnit, const std::vector< std::vector< int > > &rings, const std::vector< std::vector< int > > &nList, std::vector< double > &quat, double &rmsd)
Shape-matching for a target HC.
int clusterCages(molSys::PointCloud< molSys::Point< double >, double > &yCloud, std::string path, const std::vector< std::vector< int > > &rings, const std::vector< cage::Cage > &cageList, int numHC, int numDDC)
Eigen::MatrixXd buildRefHC(const std::string &fileName)
Build a reference Hexagonal cage, reading in from a template XYZ file.
Eigen::MatrixXd buildRefDDC(const std::string &fileName)
Build a reference Double-Diamond cage, reading in from a template XYZ file.
int shapeMatchDDC(molSys::PointCloud< molSys::Point< double >, double > &yCloud, const Eigen::MatrixXd &refPoints, const std::vector< cage::Cage > &cageList, int cageIndex, const std::vector< std::vector< int > > &rings, std::vector< double > &quat, double &rmsd)
Shape-matching for a target DDC.
int topoUnitMatchingBulk(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 printClusters, bool onlyTetrahedral, std::string templatePath="templates")
int averageRMSDatom(std::vector< double > &rmsdPerAtom, std::vector< int > &noOfCommonAtoms)
Average the RMSD per atom.
Header file for neighbour list generation.
This contains a cage, with the constituent rings.
Definition cage.hpp:86
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
File containing functions used specific to bulk topological network critera.