#include "gromacs/topology/topology.h"
#include "gromacs/topology/index.h"
+//#include "/home/titov_ai/Develop/fittingLib/fittinglib.h"
#define MAX_NTRICVEC 12
midB[2] = 0;
for (unsigned int i = 0; i < pairs.size(); i++) {
- rvec_inc(midA, a[pairs[i].first]);
- rvec_inc(midB, b[pairs[i].second]);
+ midA += a[pairs[i].first];
+ midB += b[pairs[i].second];
+ //rvec_inc(midA, a[pairs[i].first]);
+ //rvec_inc(midB, b[pairs[i].second]);
}
midA[0] /= pairs.size();
midA[1] /= pairs.size();
double f1 = 0, f2 = 0, fx = 0, fy = 0, fz = 0, fa = 0, fb = 0, fc = 0, l = 1;
RVec ma, mb;
CalcMid(a, b, ma, mb, pairs);
- rvec_dec(ma, mb);
+ ma -= mb;
+ //rvec_dec(ma, mb);
double x = static_cast< double >(ma[0]), y = static_cast< double >(ma[1]), z = static_cast< double >(ma[2]), A = 0, B = 0, C = 0;
for (unsigned int i = 0; i < pairs.size(); i++) {
f1 += F(static_cast< double >(a[pairs[i].first][0]), static_cast< double >(a[pairs[i].first][1]), static_cast< double >(a[pairs[i].first][2]),
if (f1 == 0) {
return;
} else {
- int count = 0;
while (f1 - f2 < 0 || f1 - f2 > FtCnst) {
f1 = 0; fx = 0; fy = 0; fz = 0; fa = 0; fb = 0; fc = 0; l = 1;
for (unsigned int i = 0; i < pairs.size(); i++) {
static_cast< double >(b[pairs[i].second][0]) + (x - l * fx), static_cast< double >(b[pairs[i].second][1]) + (y - l * fy),
static_cast< double >(b[pairs[i].second][2]) + (z - l * fz), A - l * fa, B - l * fb, C - l * fc);
}
- count++;
if (f2 < f1) {
x -= l * fx; y -= l * fy; z -= l * fz; A -= l * fa; B -= l * fb; C -= l * fc;
fx = 0; fy = 0; fz = 0; fa = 0; fb = 0; fc = 0;
break;
} else {
- //l *= 0.85;
l *= 0.50;
- /*if (count >= 14) {
- std::cout << count << " " << l << "\n";
- }*/
- if (l == DBL_MIN) { /*DBL_TRUE_MIN*/
+ if (l == DBL_MIN) { //DBL_TRUE_MIN
break;
}
}
}
- count++;
- if (count % 100000 == 0) {
- std::cout << "+100k\n";
- }
}
ApplyFit(b, x, y, z, A, B, C);
}
}
std::fprintf(fpNdx_,"\n");
std::fclose(fpNdx_);
+ //std::fprintf(fpNdx2_,"\n");
+ std::fclose(fpNdx2_);
}
/*! \brief
private:
- std::string fnNdx_;
-
- //std::vector< std::vector< std::vector< node > > > graph;
- std::vector< std::vector< std::vector< std::vector< node > > > > graph;
+ std::string fnNdx_;
+ std::vector< std::vector< std::vector< std::vector< node > > > > graph;
- //std::vector< std::vector< std::vector< unsigned int > > > domains;
- std::vector< std::vector< unsigned int > > domains;
- std::vector< std::vector< int > > domsizes;
+ std::vector< std::vector< unsigned int > > domains;
+ std::vector< std::vector< int > > domsizes;
- std::vector< int > index;
- std::vector< int > numbers;
- std::vector< RVec > trajectory;
- std::vector< RVec > reference;
- Selection selec;
- int frames = 0;
- int window = 1000; // selectable
- int domain_min_size = 4; // selectable
+ std::vector< int > index;
+ std::vector< int > numbers;
+ std::vector< RVec > trajectory;
+ std::vector< RVec > reference;
+ Selection selec;
+ int frames = 0;
+ int window = 1000; // selectable
+ int domain_min_size = 4; // selectable
- std::vector< std::vector< std::pair< unsigned int, unsigned int > > > w_rls2;
- unsigned int bone;
- double delta = 0.95; // selectable
- double epsi = 0.10; // selectable
+ std::vector< std::vector< std::pair< unsigned int, unsigned int > > > w_rls2;
+ unsigned int bone;
+ double delta = 0.95; // selectable
+ double epsi = 0.10; // selectable
- int DomainSearchingAlgorythm = 0; // selectable
+ int DomainSearchingAlgorythm = 0; // selectable
// Copy and assign disallowed by base.
};
graph.resize(1);
graph.front().resize(bone);
- //graph.resize(bone);
w_rls2.resize(bone);
for (unsigned int i = 0; i < bone; i++) {
w_rls2[i].push_back(std::make_pair(j + i, j + i));
}
make_graph(index.size(), reference, graph.front()[i]);
- //make_graph(index.size(), reference, graph[i]);
}
trajectory.resize(index.size());
-
- std::vector< int > a;
-
- /*for (int i = 0; i < 10; i++) {
- a.push_back(i);
- }
- a.erase(a.begin());
- for (int i = 0; i < 10; i++) {
- std::cout << a[i] << " ";
- }*/
}
void
find_domain_sizes(graph[0], domsizes);
}
graph.erase(graph.begin());
- graph.resize(graph.size() - 1);
std::cout << (frnr + 1) / (window / tau_jump) - tau_jump << " window's domains have been evaluated\n";
print_domains(domains, index, fnNdx_, domain_min_size, epsi, delta, window, (frnr + 1) / (window / tau_jump) - tau_jump); // see function for details | numbers from index
}
}
#pragma omp barrier
-
std::cout << "frame: " << frnr << " analyzed\n";
}
void
Domains::finishAnalysis(int nframes)
{
- /*graph.resize(graph.size() - tau_jump);
- std::cout << "graph size: " << graph.size() << "\n";
- frames -= 1;
-
- domains.resize(graph.size());
-
- std::vector< unsigned int > a;
- a.resize(0);
-
- std::cout << "final cheking\n";
- for (unsigned int i = 0; i < graph.size(); i++) {
- domsizes.resize(0);
- domains[i].resize(0);
- check_domains(delta, window, graph[i]);
- std::cout << "finding domains' sizes\n";
- find_domain_sizes(graph[i], domsizes);
-
- while (check_domsizes(domsizes, domain_min_size)) {
- domains[i].push_back(a);
- if (DomainSearchingAlgorythm == 0) {
- get_maxsized_domain(domains[i].back(), graph[i], domsizes);
- } else if (DomainSearchingAlgorythm == 1) {
- get_min_domain(domains[i].back(), graph[i], domsizes, domain_min_size);
- }
- std::cout << "new domain: " << domains[i].back().size() << " atoms\n";
- delete_domain_from_graph(graph[i], domains[i].back());
- domsizes.resize(0);
- find_domain_sizes(graph[i], domsizes);
- }
- std::cout << i * window / tau_jump << " window's domains have been evaluated\n";
- }*/
}
void
Domains::writeOutput()
{
- //std::cout << "making output file\n";
- //print_domains(domains, index, fnNdx_, domain_min_size, epsi, delta, window); // see function for details | numbers from index
std::cout << "\n END \n";
}