1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 package ffx.algorithms.groovy;
39
40 import ffx.algorithms.groovy.test.OSTGradient;
41 import ffx.algorithms.misc.AlgorithmsTest;
42 import org.apache.commons.math3.util.FastMath;
43 import org.junit.Test;
44 import org.junit.runner.RunWith;
45 import org.junit.runners.Parameterized;
46 import org.junit.runners.Parameterized.Parameters;
47
48 import java.util.Arrays;
49 import java.util.Collection;
50
51 import static java.lang.Math.random;
52 import static org.apache.commons.math3.util.FastMath.floor;
53 import static org.junit.Assert.assertEquals;
54
55
56 @RunWith(Parameterized.class)
57 public class OSTGradientTest extends AlgorithmsTest {
58
59 private String info;
60 private String filename;
61 private int nAtoms;
62 private double tolerance = 1.0e-2;
63
64 public OSTGradientTest(String info, String filename, int nAtoms) {
65 this.info = info;
66 this.filename = filename;
67 this.nAtoms = nAtoms;
68 }
69
70 @Parameters
71 public static Collection<Object[]> data() {
72 return Arrays.asList(
73 new Object[][] {
74 {
75 "C23 OST Test",
76 "compound23.xyz",
77 43
78 }
79 });
80 }
81
82 @Test
83 public void testOSTBiasHelp() {
84
85 String[] args = {"-h"};
86 binding.setVariable("args", args);
87
88
89 OSTGradient ostGradient = new OSTGradient(binding).run();
90 algorithmsScript = ostGradient;
91 }
92
93 @Test
94 public void testOSTGradient() {
95
96 double lambda = random();
97 int atomID = (int) floor(FastMath.random() * nAtoms) + 1;
98
99
100 String[] args = {
101 "--ac", "ALL",
102 "-l", Double.toString(lambda),
103 "--ga", Integer.toString(atomID),
104 getResourcePath(filename)
105 };
106 binding.setVariable("args", args);
107
108
109 OSTGradient ostGradient = new OSTGradient(binding).run();
110 algorithmsScript = ostGradient;
111
112 double dUdLError = ostGradient.dUdLError;
113 double nFailures = ostGradient.nFailures;
114
115
116 assertEquals(info + ": dUdL error: ", 0.0, dUdLError, tolerance);
117 assertEquals(info + ": Number of coordinate gradient errors: ", 0, nFailures, 0);
118 }
119
120 @Test
121 public void testMetaDynamicsGradient() {
122
123 double lambda = random();
124 int atomID = (int) floor(FastMath.random() * nAtoms) + 1;
125
126
127 String[] args = {
128 "--ac", "ALL",
129 "--meta",
130 "-l", Double.toString(lambda),
131 "--ga", Integer.toString(atomID),
132 getResourcePath(filename)
133 };
134 binding.setVariable("args", args);
135
136
137 OSTGradient ostGradient = new OSTGradient(binding).run();
138 algorithmsScript = ostGradient;
139
140 double dUdLError = ostGradient.dUdLError;
141 double nFailures = ostGradient.nFailures;
142
143
144 assertEquals(info + ": dUdL error: ", 0.0, dUdLError, tolerance);
145 assertEquals(info + ": Number of coordinate gradient errors: ", 0, nFailures, 0);
146 }
147 }