c50c30697fa3dd415d2f48fbf3ace20dfbdf7ed1
[alexxy/gromacs-spacetimecorr.git] / src / spacetimecorrtests.cpp
1 #include <vector>
2 #include <cfloat>
3 #include <iostream>
4
5 #include "gtest/gtest.h"
6 #include <gromacs/trajectoryanalysis.h>
7 // #include <gromacs/trajectoryanalysis/topologyinformation.h>
8 #include "/home/titov_ai/Develop/gromacs-original/src/gromacs/trajectoryanalysis/topologyinformation.h"
9
10 #include "newfit.h"
11 #include "corrtype.h"
12
13 TEST( corrTests, corrTests_trajectoryPartition )
14 {
15     correlationType testCorrs;
16     std::vector< RVec >                                         testReference;
17     testReference.resize(0);
18     std::vector< std::vector < std::vector < unsigned int > > > testSels;
19     testSels.resize(0);
20     std::vector< int >                                          testIndex;
21     testIndex.resize(0);
22     RVec                                                        a; a[0] = 1; a[1] = 2; a[2] = 3;
23
24     testSels.resize(1);
25     testSels[0].resize(1);
26     testSels[0][0].resize(0);
27     for (unsigned int i = 0; i < 100; i++) {
28         testReference.push_back(a);
29         testSels[0][0].push_back(i);
30         testIndex.push_back(i);
31     }
32     testCorrs.reference = testReference;
33     testCorrs.selections = testSels;
34     testCorrs.index = testIndex;
35
36     testCorrs.trajectoryPartition();
37     // по аналогии проверить различные варианты дробления молекулы
38 }
39
40 TEST( corrTests, corrTests_setDefaults )
41 {
42     std::vector< std::string >                                  testResNms;
43     testResNms.resize(0);
44     std::vector< RVec >                                         testReference;
45     testReference.resize(0);
46     std::vector< std::vector < std::vector < unsigned int > > > testSels;
47     testSels.resize(0);
48     std::vector< int >                                          testIndex;
49     testIndex.resize(0);
50
51     int                                                         testTau_jump            = 100;
52     int                                                         testWindow              = 1000;
53     int                                                         testTau                 = 500;
54     float                                                       testCrl_border          = 0.5;
55     float                                                       testEff_rad             = 1.5;
56     std::string                                                 testOutPutName          = "testString";
57     RVec                                                        a; a[0] = 1; a[1] = 2; a[2] = 3;
58     correlationType                                             testCorrs;
59
60
61     testSels.resize(1);
62     testSels[0].resize(1);
63     testSels[0][0].resize(0);
64     for (unsigned int i = 0; i < 100; i++) {
65         testReference.push_back(a);
66         testResNms.push_back(std::to_string(i));
67         testSels[0][0].push_back(i);
68         testIndex.push_back(i);
69     }
70
71     testCorrs.setDefaults(testReference, testWindow, testTau, testTau_jump, testCrl_border, testEff_rad, 0, testOutPutName, testIndex, testSels, testResNms);
72
73     ASSERT_EQ(testCorrs.window, testWindow);
74     ASSERT_EQ(testCorrs.tau, testTau);
75     ASSERT_EQ(testCorrs.tauStep, testTau_jump);
76     ASSERT_EQ(testCorrs.crlUpBorder, testCrl_border);
77     ASSERT_EQ(testCorrs.effRadius, testEff_rad);
78     ASSERT_EQ(testCorrs.mode, 0);
79     ASSERT_EQ(testCorrs.outputName, testOutPutName);
80     for (unsigned int i = 0; i < 100; i++) {
81         ASSERT_EQ(testCorrs.reference[i][0], testReference[i][0]);
82         ASSERT_EQ(testCorrs.reference[i][1], testReference[i][1]);
83         ASSERT_EQ(testCorrs.reference[i][2], testReference[i][2]);
84         ASSERT_EQ(testCorrs.index[i], testIndex[i]);
85         ASSERT_EQ(testCorrs.selections[0][0][i], testSels[0][0][i]);
86         ASSERT_EQ(testCorrs.resNames[i], testResNms[i]);
87     }
88 }
89
90 TEST( corrTests, corrTests_correlationEval )
91 {
92     std::vector< std::vector< RVec > > testTraj;
93     testTraj.resize(0);
94     RVec testA;
95     for (unsigned int i0 = 0; i0 < 1000; i0++) {
96         testTraj.resize(testTraj.size() + 1);
97         for (unsigned int i1 = 0; i1 < 10; i1++) {
98             testA[0] = std::sin(i0 * 2 * M_PI / 1000);
99             testA[1] = std::sin(i0 * 2 * M_PI / 1000);
100             testA[2] = std::sin(i0 * 2 * M_PI / 1000);
101             testTraj.back().push_back(testA);
102         }
103     }
104     // вычисление корреляционных матриц на основе траектории
105 }
106
107 TEST( corrTests, corrTests_graphCalculations )
108 {
109     std::vector< std::vector< std::vector< double > > >                                     matrixes;
110     std::vector< std::vector< std::pair< double, int > > >                                  graph;
111     std::vector< std::vector< unsigned int > >                                              subGraphPoints;
112     std::vector< std::vector< std::pair< unsigned int, unsigned int > > >                   subGraphRbr;
113     std::vector< int >                                                                      index;
114     std::vector< RVec >                                                                     reference;
115
116
117
118     // создание графа на основе посчитанных матриц
119 }
120
121 TEST( corrTests, corrTests_graphBackBoneEvaluation )
122 {
123     std::vector< int >                                                                      index;
124     std::vector< std::vector< std::pair< double, int > > >                                  graph;
125     std::vector< std::vector< unsigned int > >                                              subGraphPoints;
126     std::vector< std::vector< std::pair< unsigned int, unsigned int > > >                   subGraphRbr;
127     std::vector< std::vector< std::vector< std::pair< unsigned int, unsigned int > > > >    subGraphRouts;
128
129
130
131
132     // выделение остовного(?) графа на базе полного графа
133 }
134
135 TEST( corrTests, corrTests_update )
136 {
137     // инициализация
138     // траектория
139     // основная работа программы целиком
140 }
141
142 int main(int argc, char *argv[]) {
143     ::testing::InitGoogleTest( &argc, argv );
144     return RUN_ALL_TESTS();
145 }