added comparison with old tech
authorAnatoly Titov <toluk@omrb.pnpi.spb.ru>
Thu, 21 Jun 2018 11:30:18 +0000 (14:30 +0300)
committerAnatoly Titov <toluk@omrb.pnpi.spb.ru>
Thu, 21 Jun 2018 11:30:18 +0000 (14:30 +0300)
src/fitng.cpp

index 94714d7072f95495ac47fa44f36e3a0b08fa01a8..ec25e5e8af611222f812ead4361ff680467f6e71 100644 (file)
@@ -196,7 +196,10 @@ void MyFitNew (std::vector< RVec > a, std::vector< RVec > &b, std::vector< std::
                 f26 += F(a[pairs[i].first][0], a[pairs[i].first][1], a[pairs[i].first][2], b[pairs[i].second][0], b[pairs[i].second][1], b[pairs[i].second][2], x, y, z, A, B, C - l6 * fc);
                 */
             }
-            std::cout << f1 << " " << f2 << "\n";
+            /*count++;
+            if (count % 100 == 0) {
+                std::cout << f1 << " " << f2 << "\n";
+            }*/
             if (f2 < f1) {
                 x -= l * fx; y -= l * fy; z -= l * fz; A -= l * fa; B -= l * fb; C -= l * fc;
                 //x -= l1 * fx; y -= l2 * fy; z -= l3 * fz; A -= l4 * fa; B -= l5 * fb; C -= l6 * fc;
@@ -381,15 +384,44 @@ Fitng::finishAnalysis(int nframes)
     }
 
     std::cout << "\n\n\n";
+    std::cout << "\n\n\n" << "old dist = " << dist1 << "\n";
 
-    MyFitNew(trajectory[0], trajectory.back(), pairs);
+    rvec *traj1, *traj2;
+    snew(traj1, index.size());
+    snew(traj2, index.size());
+    for (int i = 0; i < index.size(); i++) {
+        copy_rvec(trajectory[0][i].as_vec(), traj1[i]);
+        copy_rvec(trajectory.back()[i].as_vec(), traj2[i]);
+    }
 
+    //
+    //  My Fit
+    //
+
+    MyFitNew(trajectory[0], trajectory.back(), pairs);
     for (int i = 0; i < index.size(); i++) {
         dist2 += F(trajectory[0][i][0], trajectory[0][i][1], trajectory[0][i][2], trajectory.back()[i][0], trajectory.back()[i][1], trajectory.back()[i][2], 0, 0, 0, 0, 0, 0);
     }
+    std::cout << "\n" << "my fit dist = " << dist2 << "\n";
 
-    std::cout << "\n\n\n" << "old dist = " << dist1 << "\nnew dist = " << dist2 << "\n\n";
 
+    dist2 = 0;
+    std::vector< real > w_rls;
+    w_rls.resize(index.size(), 1);
+    reset_x(index.size(), NULL, index.size(), NULL, traj1, &w_rls[0]);
+    reset_x(index.size(), NULL, index.size(), NULL, traj2, &w_rls[0]);
+    //
+    //  Old Fit
+    //
+    do_fit(index.size(), &w_rls[0], traj1, traj2);
+
+    for (int i = 0; i < index.size(); i++) {
+        dist2 += F(traj1[i][0], traj1[i][1], traj1[i][2], traj2[i][0], traj2[i][1], traj2[i][2], 0, 0, 0, 0, 0, 0);
+    }
+    std::cout << "\n" << "old fit dist = " << dist2 << "\n";
+
+    sfree(traj1);
+    sfree(traj2);
 }
 
 void