15#ifndef SEAMS_SEAMS_OUTPUT_H_
16#define SEAMS_SEAMS_OUTPUT_H_
26namespace fs = std::filesystem;
36[[nodiscard]]
inline int makePath(
const std::string &path) {
38 if (fs::is_directory(path)) {
41 if (fs::create_directories(path, ec)) {
48[[nodiscard]]
int writeRings(
const std::vector<std::vector<int>> &rings,
49 std::string filename =
"rings.dat");
53[[nodiscard]]
int writePrismNum(std::string path,
const std::vector<int> &nPrisms,
54 const std::vector<int> &nDefPrisms,
55 const std::vector<double> &heightPercent,
int maxDepth,
56 int currentFrame,
int firstFrame);
60[[nodiscard]]
int writeRingNum(std::string path,
int currentFrame,
const std::vector<int> &nRings,
61 const std::vector<double> &coverageAreaXY,
62 const std::vector<double> &coverageAreaXZ,
63 const std::vector<double> &coverageAreaYZ,
int maxDepth,
68[[nodiscard]]
int writeRingNumBulk(std::string path,
int currentFrame,
const std::vector<int> &nRings,
int maxDepth,
72[[nodiscard]]
int printRDF(std::string fileName, std::vector<double> &rdfValues,
73 double binwidth,
int nbin);
77[[nodiscard]]
int writeTopoBulkData(std::string path,
int currentFrame,
int numHC,
int numDDC,
78 int mixedRings,
int basalRings,
int prismaticRings,
82[[nodiscard]]
int writePrisms(std::vector<int> &basal1, std::vector<int> &basal2,
88 int numOfClusters,
int smallestCluster,
89 double avgClusterSize,
int firstFrame);
101 std::vector<std::vector<int>> rings,
102 std::vector<std::vector<int>> bonds,
103 std::string filename =
"system-rings.data");
108 const std::vector<double> &rmsdPerAtom,
const std::vector<int> &atomTypes,
int maxDepth,
119 const std::vector<double> &rmsdPerAtom,
const std::vector<int> &atomTypes,
120 std::string path,
int firstFrame);
125 const std::vector<std::vector<int>> &nList,
const std::vector<int> &atomTypes,
126 int maxDepth, std::string path,
bool doShapeMatching =
false);
131 const std::vector<std::vector<int>> &nList,
const std::vector<int> &atomTypes,
132 int maxDepth, std::string path,
bool isMonolayer =
true);
138 const std::vector<std::vector<int>> &nList,
const std::vector<cage::iceType> &atomTypes,
139 std::string path,
bool bondsBetweenDummy =
false);
144 const std::vector<std::vector<int>> &rings,
bool useBondFile, std::string bondFile,
145 const std::vector<int> &listPrism,
const std::vector<std::vector<int>> &nList,
146 std::string filename =
"system-prisms.data");
152 const std::vector<std::vector<int>> &rings, std::vector<cage::Cage> &cageList,
154 std::string filename =
"system-cages.data");
158[[nodiscard]]
int writeAllCages(std::string path, std::vector<cage::Cage> &cageList,
159 const std::vector<std::vector<int>> &rings,
160 const std::vector<std::vector<int>> &nList,
165[[nodiscard]]
int writeEachCage(
const std::vector<int> ¤tCage,
int cageNum,
171 const std::vector<std::vector<int>> &nList,
172 const std::vector<std::vector<int>> &rings);
176 std::vector<int> &basal1, std::vector<int> &basal2,
int prismNum,
177 const std::vector<std::vector<int>> &nList,
182 std::string path, std::string outFile);
187 const std::vector<std::vector<int>> &nList,
const std::vector<double> &avgQ6);
191 std::string fileName =
"cluster.txt",
bool isSlice =
false,
192 int largestIceCluster = 0);
197 const std::vector<int> &atoms,
int clusterID,
cage::cageType type);
File for bond-related analyses (hydrogen bonds, bonded atoms for data file write-outs etc....
File for cage types for topological network criteria.
File for containing generic or common functions.
The main molecular system handler.
int writeLAMMPSdataTopoBulk(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, const std::vector< cage::iceType > &atomTypes, std::string path, bool bondsBetweenDummy=false)
int writeLAMMPSdumpCages(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< double > &rmsdPerAtom, const std::vector< int > &atomTypes, std::string path, int firstFrame)
Write out a LAMMPS dump file containing the RMSD per atom for bulk ice.
int writeHisto(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, const std::vector< double > &avgQ6)
int writeXYZcluster(std::string path, const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< int > &atoms, int clusterID, cage::cageType type)
Function for writing out the XYZ files for each cluster.
int writeBasalRingsHex(const std::vector< int > ¤tCage, int cageNum, const std::vector< std::vector< int > > &nList, const std::vector< std::vector< int > > &rings)
Write out the basal rings of a particular Hexagonal cage.
int makePath(const std::string &path)
Inline function for creating the desired directory (and parents).
int writeLAMMPSdumpINT(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< double > &rmsdPerAtom, const std::vector< int > &atomTypes, int maxDepth, std::string path)
Write out a LAMMPS dump file containing the RMSD per atom.
int writeLAMMPSdumpSlice(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, std::string path)
int writeLAMMPSdataAllPrisms(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, const std::vector< int > &atomTypes, int maxDepth, std::string path, bool doShapeMatching=false)
Write a data file for prisms of every type.
int writeRingNum(std::string path, int currentFrame, const std::vector< int > &nRings, const std::vector< double > &coverageAreaXY, const std::vector< double > &coverageAreaXZ, const std::vector< double > &coverageAreaYZ, int maxDepth, int firstFrame)
int writeLAMMPSdata(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, std::vector< std::vector< int > > rings, std::vector< std::vector< int > > bonds, std::string filename="system-rings.data")
Write a data file for rings.
int writePrisms(std::vector< int > &basal1, std::vector< int > &basal2, int prismNum, const molSys::PointCloud< molSys::Point< double >, double > &yCloud)
Function for writing out each prism.
int writeTopoBulkData(std::string path, int currentFrame, int numHC, int numDDC, int mixedRings, int basalRings, int prismaticRings, int firstFrame)
int writeMoleculeIDsInSlice(std::string path, const molSys::PointCloud< molSys::Point< double >, double > &yCloud)
int writeDump(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, std::string path, std::string outFile)
Generic function for writing out to a dump file.
int writePrismNum(std::string path, const std::vector< int > &nPrisms, const std::vector< int > &nDefPrisms, const std::vector< double > &heightPercent, int maxDepth, int currentFrame, int firstFrame)
int printRDF(std::string fileName, std::vector< double > &rdfValues, double binwidth, int nbin)
Function for printing out the RDF, given the filename.
int writeRingNumBulk(std::string path, int currentFrame, const std::vector< int > &nRings, int maxDepth, int firstFrame)
int writeEachCage(const std::vector< int > ¤tCage, int cageNum, cage::cageType type, const std::vector< std::vector< int > > &rings, const molSys::PointCloud< molSys::Point< double >, double > &yCloud)
Write out a particular cage to a file.
int writeRings(const std::vector< std::vector< int > > &rings, std::string filename="rings.dat")
Function for printing out ring info, when there is no volume slice.
int writeAllCages(std::string path, std::vector< cage::Cage > &cageList, const std::vector< std::vector< int > > &rings, const std::vector< std::vector< int > > &nList, const molSys::PointCloud< molSys::Point< double >, double > &yCloud, int currentFrame)
int writeBasalRingsPrism(std::vector< int > &basal1, std::vector< int > &basal2, int prismNum, const std::vector< std::vector< int > > &nList, const molSys::PointCloud< molSys::Point< double >, double > &yCloud, bool isDeformed)
Write out the basal rings for a particular prism.
int writeLAMMPSdataAllRings(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, const std::vector< int > &atomTypes, int maxDepth, std::string path, bool isMonolayer=true)
Write a data file for rings of every type for a monolayer.
int writeCluster(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, std::string fileName="cluster.txt", bool isSlice=false, int largestIceCluster=0)
Function for printing the largest ice cluster.
int writeClusterStats(std::string path, int currentFrame, int largestCluster, int numOfClusters, int smallestCluster, double avgClusterSize, int firstFrame)
Function for writing out cluster statistics.
int writeLAMMPSdataPrisms(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &rings, bool useBondFile, std::string bondFile, const std::vector< int > &listPrism, const std::vector< std::vector< int > > &nList, std::string filename="system-prisms.data")
Write a data file for prisms of a single type.
int writeMoleculeIDsExpressionSelectOVITO(std::string path, const molSys::PointCloud< molSys::Point< double >, double > &yCloud)
int writeLAMMPSdataCages(const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &rings, std::vector< cage::Cage > &cageList, cage::cageType type, int numCages, std::string filename="system-cages.data")
This contains a collection of points; contains information for a particular frame.
This contains per-particle information.