#include <gromacs/trajectoryanalysis.h>
#include <gromacs/utility/smalloc.h>
#include <gromacs/math/do_fit.h>
+#include <gromacs/trajectoryanalysis/topologyinformation.h>
using namespace gmx;
file = std::fopen(file_name, "w+");
for (int i = start; i < correlations.size(); i++) {
if (correlations.size() - start > 1) {
- std::fprintf(file, "correlation between 'n' and 'n + %d' frames\n", i);
+ std::fprintf(file, "correlation frame '%d'\n", i);
}
- if (i % 50 == 0) {
- std::cout << "correlation between 'n' and 'n + " << i << "' frames\n";
+ if (i % 100 == 0) {
+ std::cout << "correlation " << i << " done\n";
}
for (int j = 0; j < correlations[i].size(); j++) {
for (int f = 0; f < correlations[i][j].size(); f++) {
}
std::fprintf(file, "\n");
}
- if (i % 10 == 0) {
- std::cout << "correlations in row " << i << " out of " << correlations.front().size() << " completed\n";
- }
+ std::cout << "correlations in row " << i << " out of " << correlations.front().size() << " completed\n";
}
std::fclose(file);
}
-void correlation_evaluation(std::vector< std::vector< RVec > > traj, int window_size, std::vector< std::vector< std::vector< float > > > &crl) {
- crl.resize(traj.size() - window_size + 1);
+void correlation_evaluation(std::vector< RVec > ref, std::vector< std::vector< RVec > > traj, int window_size, std::vector< std::vector< std::vector< float > > > &crl) {
+ crl.resize(traj.size() - window_size);
for (int i = 0; i < crl.size(); i++) {
crl[i].resize(traj.front().size());
for (int j = 0; j < crl[i].size(); j++) {
//{
#pragma omp parallel for schedule(dynamic)
for (int i = 0; i < crl.size(); i++) {
- std::vector< RVec > medx, medy;
+ //std::vector< RVec > medx, medy;
RVec temp1, temp2;
- float tmp;
- medx.resize(traj.front().size(), temp_zero);
- medy.resize(traj.front().size(), temp_zero);
+ //medx.resize(traj.front().size(), temp_zero);
+ //medy.resize(traj.front().size(), temp_zero);
//#pragma omp for schedule(dynamic)
- for (int j = i; j < i + window_size - 1; j++) {
+ /*for (int j = i; j < i + window_size; j++) {
for (int f = 0; f < traj.front().size(); f++) {
- medx[f] += (traj[i][f] - traj[j][f]);
- medy[f] += (traj[i][f] - traj[j][f]);
+ /*medx[f] += (traj[i][f] - traj[j][f]);
+ medy[f] += (traj[i][f] - traj[j][f]);*/
+ /*medx[f] += traj[j][f];
+ medy[f] += traj[j][f];
}
- }
+ }*/
//#pragma omp barrier
//#pragma omp for schedule(dynamic)
- for (int j = 0; j < traj.front().size(); j++) {
- tmp = traj.size() - 1;
- tmp -= i;
- tmp = 1 / tmp;
- //tmp = 1 / (traj.size() - 1 - i);
- medx[j] *= tmp;
- medy[j] *= tmp;
- }
+ /*for (int j = 0; j < traj.front().size(); j++) {
+ medx[j] /= window_size;
+ medy[j] /= window_size;
+ }*/
//#pragma omp barrier
std::vector< std::vector< float > > a, b, c;
a.resize(traj.front().size(), d);
b.resize(traj.front().size(), d);
c.resize(traj.front().size(), d);
- for (int j = i; j < i + window_size - 1; j++) {
+ for (int j = i; j < i + window_size; j++) {
for (int f1 = 0; f1 < traj.front().size(); f1++) {
//#pragma omp for schedule(dynamic)
for (int f2 = 0; f2 < traj.front().size(); f2++) {
- temp1 = traj[i][f1] - traj[j][f1] - medx[f1];
- temp2 = traj[i][f2] - traj[j][f2] - medy[f2];
+ temp1 = /*traj[i][f1] - */traj[j][f1] - /*medx[f1]*/ ref[f1];
+ temp2 = /*traj[i][f2] - */traj[j][f2] - /*medy[f2]*/ ref[f2];
a[f1][f2] += (temp1[0] * temp2[0] + temp1[1] * temp2[1] + temp1[2] * temp2[2]);
b[f1][f2] += (temp1[0] * temp1[0] + temp1[1] * temp1[1] + temp1[2] * temp1[2]);
c[f1][f2] += (temp2[0] * temp2[0] + temp2[1] * temp2[1] + temp2[2] * temp2[2]);
}
}
//#pragma omp barrier
- medx.resize(0);
- medy.resize(0);
+ //medx.resize(0);
+ //medy.resize(0);
std::cout << i << " corr done\n";
}
#pragma omp barrier
SelectionList sel_;
std::vector< std::vector< RVec > > trajectory;
+ std::vector< RVec > reference;
std::vector< int > index;
int frames = 0;
.description("<your name here> + <local file tag>.txt"));
// Control input settings
settings->setFlags(TrajectoryAnalysisSettings::efNoUserPBC);
+ settings->setFlag(TrajectoryAnalysisSettings::efUseTopX);
settings->setPBC(true);
}
index.push_back(*ai);
}
trajectory.resize(0);
+
+ reference.resize(0);
+ if (top.hasFullTopology()) {
+ for (int i = 0; i < index.size(); i++) {
+ reference.push_back(top.x().at(index[i]));
+ }
+ }
}
void
// -s '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/trp-cage.pdb' -f '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/trp-cage.md_npt.no-sol.xtc' -n '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/CA.ndx' -sf '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/SLca' -Window 100000 -out_put '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/window100'
// -s '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv2/trp-cage.pdb' -f '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv2/trp-cage.md_npt.no-sol.xtc' -n '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv2/CA.ndx' -sf '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv2/SLca' -Window 100000 -out_put '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv2/window100'
+// -s '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/trp-cage.pdb' -f '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/800-900k-stFit.xtc' -n '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/CA1-20.ndx' -sf '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/SLca' -Window 10000 -out_put '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/window10new'
+// -s '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/trp-cage.pdb' -f '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/900-1000k-stFit.xtc' -n '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/CA1-20.ndx' -sf '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/SLca' -Window 10000 -out_put '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/w-test9001000'
+// -s '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/trp-cage.pdb' -f '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/800-1000k-stFit.xtc' -n '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/CA1-20.ndx' -sf '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/SLca' -Window 100000 -out_put '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/w100-test8001000'
+
+// -s '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/trp-cage.tpr' -f '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/900-1000k-stFit.xtc' -n '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/CA.ndx' -sf '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/SLca' -Window 10000 -out_put '/home/titov_ai/BioStore/titov_ai/trp_cage/fullTrj/kv1/w10-test9001000'
+
+
void
SimpleCorr::analyzeFrame(int frnr, const t_trxframe &fr, t_pbc *pbc,
TrajectoryAnalysisModuleData *pdata)
std::vector< std::vector< std::vector< float > > > crltns;
std::cout << "\nCorrelation's evaluation - start\n";
- correlation_evaluation(trajectory, W_size, crltns);
+ correlation_evaluation(reference, trajectory, W_size, crltns);
std::cout << "\nCorrelation's evaluation - end\n";
std::cout << "corelation matrix - start printing\n";