#include <iostream>
#include <algorithm>
#include <omp.h>
+#include <set>
#include <gromacs/trajectoryanalysis.h>
#include <gromacs/utility/smalloc.h>
std::fclose(file);
}
+void make_best_corrs_graphics(std::vector< std::vector< std::vector< double > > > correlations,
+ std::vector< std::pair< int, int > > corr_pairs,
+ std::vector< int > indx,
+ const char* file_name)
+{
+ FILE *file;
+ file = std::fopen(file_name, "w+");
+ for (int i = 0; i < corr_pairs.size(); i++) {
+ std::fprintf(file, "%3d %3d", indx[corr_pairs[i].first] + 1, indx[corr_pairs[i].second] + 1);
+ for (int j = 0; j < correlations.size(); j++) {
+ std::fprintf(file, "%3.2f ", correlations[j][corr_pairs[i].first][corr_pairs[i].second]);
+ }
+ std::fprintf(file, "\n");
+ }
+ std::fclose(file);
+}
+
bool mysortfunc (std::vector< int > a, std::vector< int > b) { return (a.size() > b.size()); }
/*! \brief
int basic_frame = 0;
int tau = 0;
double crl_border = 0;
+ double eff_rad = 1.5;
real **w_rls;
int domains_ePBC;
options->addOption(DoubleOption("crl")
.store(&crl_border)
.description("make graph based on corrs > constant"));
+ // Add option for eff_rad constant
+ options->addOption(DoubleOption("ef_rad")
+ .store(&eff_rad)
+ .description("effective radius for atoms to evaluate corrs"));
// Add option for selection list
options->addOption(SelectionOption("select_domains_and_residue").storeVector(&sel_)
.required().dynamicMask().multiValue()
make_correlation_file(crltns, "corrs_vectors.txt", m);
std::cout << "done\n" ;
+ int imax = 0;
for (int i1 = 0; i1 < 100; i1++) {
int i5 = 0;
for (int i2 = 1; i2 < crltns.size(); i2++) {
}
}
}
+ if (i5 > 0) {
+ imax = i1;
+ }
std::cout << i1 << " - " << i5 << " | ";
if (i1 % 10 == 0) {
std::cout << "\n" ;
}
std::cout << "\n";
+ std::set< std::pair< int, int > > crr_prs;
+ std::vector< std::pair< int, int > > corr_prs;
+ for (int i2 = 0; i2 < crltns.size(); i2++) {
+ for (int i3 = 0; i3 < crltns[i2].size(); i3++) {
+ for (int i4 = i3 + 1; i4 < crltns[i2][i3].size(); i4++) {
+ if (crltns[i2][i3][i4] >= (double)imax / 100) {
+ crr_prs.insert(std::make_pair(i3, i4));
+ }
+ }
+ }
+ }
+ for (std::set< std::pair< int, int > >::iterator it = crr_prs.begin(); it != crr_prs.end(); it++) {
+ corr_prs.push_back(*it);
+ }
+ make_best_corrs_graphics(crltns, corr_prs, index, "best_graphics.txt");
+
std::vector< std::vector< int > > graph;
graph.resize(index.size());
+ rvec temp;
for (int i = 1; i <= k; i++) {
for (int j = 0; j < index.size(); j++) {
for (int f = 0; f < index.size(); f++) {
- if (std::abs(crltns[i][j][f]) >= crl_border) {
+ copy_rvec(frankenstein_trajectory[basic_frame][j], temp);
+ rvec_dec(temp, frankenstein_trajectory[basic_frame][f]);
+ if (std::abs(crltns[i][j][f]) >= crl_border && norm(temp) <= eff_rad) {
bool local_flag = true;
for (int f2 = 0; f2 < graph[j].size(); f2++) {
if (graph[j][f2] == f) {