@sjcrh/proteinpaint-rust 2.12.0 → 2.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cargo.toml +8 -0
- package/package.json +1 -1
- package/src/test_examples.rs +642 -0
- package/src/wilcoxon.rs +427 -0
package/Cargo.toml
CHANGED
|
@@ -24,6 +24,10 @@ libmath = "^0.2.1"
|
|
|
24
24
|
json = "^0.12.4"
|
|
25
25
|
serde = {version = "^1.0.147", features = ["derive"]}
|
|
26
26
|
serde_json="^1.0.88"
|
|
27
|
+
num = "^0.4.1"
|
|
28
|
+
#r_stats = { git = "https://github.com/derekdreery/r_stats.git"}
|
|
29
|
+
#r_stats = { git = "https://github.com/robinpaul85/r_stats.git"}
|
|
30
|
+
|
|
27
31
|
|
|
28
32
|
[profile.release]
|
|
29
33
|
lto = "fat"
|
|
@@ -58,3 +62,7 @@ path="src/sv.rs"
|
|
|
58
62
|
[[bin]]
|
|
59
63
|
name="cluster"
|
|
60
64
|
path="src/cluster.rs"
|
|
65
|
+
|
|
66
|
+
#[[bin]]
|
|
67
|
+
#name="wilcoxon"
|
|
68
|
+
#path="src/wilcoxon.rs"
|
package/package.json
CHANGED
|
@@ -0,0 +1,642 @@
|
|
|
1
|
+
#[cfg(test)]
|
|
2
|
+
mod tests {
|
|
3
|
+
|
|
4
|
+
#[test]
|
|
5
|
+
fn test_wilcoxon_rank_sum() {
|
|
6
|
+
use crate::wilcoxon_rank_sum_test;
|
|
7
|
+
assert_eq!(
|
|
8
|
+
wilcoxon_rank_sum_test(
|
|
9
|
+
vec![
|
|
10
|
+
3.7, 2.5, 5.9, 13.1, 1.0, 10.6, 3.2, 3.0, 6.5, 15.5, 2.6, 16.5, 2.6, 4.0, 8.6,
|
|
11
|
+
8.3, 1.9, 7.9, 7.9, 6.1, 17.6, 3.1, 3.0, 1.5, 8.1, 18.2, -1.8, 3.6, 6.0, 1.9,
|
|
12
|
+
8.9, 3.2, 0.3, -1.0, 11.2, 6.2, 16.2, 7.5, 9.0, 9.4, 18.9, 0.1, 11.5, 10.1,
|
|
13
|
+
12.5, 14.6, 1.5, 17.3, 15.4, 7.6, 2.4, 13.5, 3.8, 17.0
|
|
14
|
+
],
|
|
15
|
+
vec![11.5, 5.1, 21.1, 4.4, -0.04],
|
|
16
|
+
50,
|
|
17
|
+
't',
|
|
18
|
+
true
|
|
19
|
+
),
|
|
20
|
+
0.8917448488576822
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
assert_eq!(
|
|
24
|
+
wilcoxon_rank_sum_test(
|
|
25
|
+
vec![
|
|
26
|
+
22.3950723737944,
|
|
27
|
+
33.8227081589866,
|
|
28
|
+
45.1407992918976,
|
|
29
|
+
28.3479649920482,
|
|
30
|
+
18.2336819062475,
|
|
31
|
+
4.32351183332503,
|
|
32
|
+
11.9014307267498,
|
|
33
|
+
48.0554144773632,
|
|
34
|
+
14.9064014137257,
|
|
35
|
+
11.2484716628678,
|
|
36
|
+
42.857265946921,
|
|
37
|
+
6.14226084970869,
|
|
38
|
+
13.765204195166,
|
|
39
|
+
23.7536687662359,
|
|
40
|
+
35.0198161723092,
|
|
41
|
+
30.1217778825667,
|
|
42
|
+
1.55535256816074,
|
|
43
|
+
38.5163993313909,
|
|
44
|
+
34.6145691110287,
|
|
45
|
+
8.42882150504738
|
|
46
|
+
],
|
|
47
|
+
vec![
|
|
48
|
+
35.3232058370486,
|
|
49
|
+
38.4726115851663,
|
|
50
|
+
63.7901770556346,
|
|
51
|
+
63.6540996702388,
|
|
52
|
+
54.1668611462228,
|
|
53
|
+
86.2734804977663,
|
|
54
|
+
87.4467799020931,
|
|
55
|
+
71.2533111660741,
|
|
56
|
+
90.7283631013706,
|
|
57
|
+
36.3230113568716,
|
|
58
|
+
33.9395571127534,
|
|
59
|
+
92.234949907288,
|
|
60
|
+
77.9833765677176,
|
|
61
|
+
43.5002030362375,
|
|
62
|
+
79.9727810896002,
|
|
63
|
+
37.503333974164,
|
|
64
|
+
39.9319424736314,
|
|
65
|
+
33.0334767652676,
|
|
66
|
+
47.5299863377586,
|
|
67
|
+
80.9905858896673
|
|
68
|
+
],
|
|
69
|
+
50,
|
|
70
|
+
't',
|
|
71
|
+
true
|
|
72
|
+
),
|
|
73
|
+
1.1260929189061898e-6
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
assert_eq!(
|
|
77
|
+
wilcoxon_rank_sum_test(
|
|
78
|
+
vec![0.73, 0.74, 0.8, 0.83, 0.88, 0.90, 1.04, 1.15],
|
|
79
|
+
vec![1.21, 1.38, 1.45, 1.46, 1.64, 1.89, 1.91],
|
|
80
|
+
50,
|
|
81
|
+
't',
|
|
82
|
+
true
|
|
83
|
+
),
|
|
84
|
+
0.0003108003108003108
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
assert_eq!(
|
|
88
|
+
wilcoxon_rank_sum_test(
|
|
89
|
+
vec![
|
|
90
|
+
1890.0, 26.0, 21.0, 16.0, 29.0, 1680.0, 25.0, 19.0, 29.0, 35.0, 36.0, 15.0,
|
|
91
|
+
0.0, 15.0, 4.7, 36.0, 0.0, 0.0, 0.0, 0.0, 14.0, 22.0, 11.0, 0.0, 23.0, 0.0,
|
|
92
|
+
0.0, 43.0, 31.0, 26.0, 31.0, 21.0, 37.0, 0.0, 33.0, 0.0, 33.0, 28.0, 25.0, 0.0,
|
|
93
|
+
7.7, 0.0, 4.4, 0.0, 0.0, 25.0, 1.7, 0.0, 0.0, 13.0, 0.0, 8.9, 10.0, 0.0, 22.0,
|
|
94
|
+
15.0, 0.0, 17.0, 0.0, 1410.0, 22.0, 23.0, 17.0, 3690.0, 1440.0, 3220.0, 25.0,
|
|
95
|
+
29.0, 1.8, 0.0, 31.0, 31.0, 9.6, 0.0, 48.0, 40.0, 41.0, 33.0, 45.0, 1960.0,
|
|
96
|
+
31.0, 28.0, 23.0, 36.0, 19.0, 0.0, 0.0, 0.0, 5.4, 0.0, 11.0, 13.0, 2060.0, 0.0,
|
|
97
|
+
0.0, 0.0, 3360.0, 210.0, 4350.0, 1850.0, 270.0, 160.0, 1770.0, 4190.0, 230.0,
|
|
98
|
+
360.0, 3450.0, 34.0, 55.0, 2090.0, 1570.0, 21.0, 1610.0, 1760.0, 1260.0,
|
|
99
|
+
4020.0, 0.0, 28.0, 280.0, 1790.0, 1760.0, 1600.0, 4180.0, 3600.0, 1450.0,
|
|
100
|
+
1110.0, 25.0, 0.0, 0.0, 11.0, 37.0, 2370.0, 18.0, 20.0, 19.0, 26.0, 51.0, 40.0,
|
|
101
|
+
1130.0, 25.0, 39.0, 0.0, 27.0, 30.0, 37.0, 27.0, 16.0, 17.0, 0.0, 31.0, 41.0,
|
|
102
|
+
36.0, 40.0, 1330.0, 39.0, 37.0, 28.0, 0.0, 34.0, 15.0, 17.0, 1320.0, 1200.0,
|
|
103
|
+
13.0, 14.0, 1200.0, 11.0, 4.8, 17.0, 8.6, 6.8, 0.0, 0.0, 0.0, 8.9, 2.9, 3.8,
|
|
104
|
+
0.0, 4.6, 3.2, 6.1, 4.4, 9.6, 12.0, 0.0, 0.0, 5.2, 8.4, 0.0, 14.0, 10.0, 12.0,
|
|
105
|
+
40.0, 36.0, 23.0, 8.6, 28.0, 0.0, 0.0, 0.0, 44.0, 1510.0, 16.0, 28.0, 1780.0,
|
|
106
|
+
28.0, 9.2, 6.0, 1060.0, 0.0, 17.0, 4.7, 0.0, 1060.0, 13.0, 0.0, 130.0, 22.0,
|
|
107
|
+
1270.0, 0.5, 6.1, 0.0, 0.0, 0.0, 12.0, 23.0, 10.0, 0.0, 9.0, 0.0, 0.0, 1560.0,
|
|
108
|
+
17.0, 0.0, 20.0, 8.1, 34.0, 0.0, 20.0, 0.0, 15.0, 1060.0, 0.0, 14.0, 0.0,
|
|
109
|
+
1200.0, 19.0, 14.0, 17.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.9, 11.0, 980.0, 11.0, 0.0,
|
|
110
|
+
27.0, 17.0, 0.0, 23.0, 0.0, 0.0, 0.0, 0.0, 2.9, 840.0, 0.0, 0.0, 8.7, 3.6,
|
|
111
|
+
12.0, 0.0, 0.0, 6.2, 1040.0, 230.0, 62.0, 120.0, 4.7, 0.0, 0.0, 700.0, 0.8,
|
|
112
|
+
1.5, 0.0, 2150.0, 0.0, 34.0, 19.0, 30.0, 1800.0, 31.0, 1900.0, 16.0, 15.0,
|
|
113
|
+
41.0, 45.0, 12.0, 3390.0, 32.0, 25.0, 17.0, 16.0, 33.0, 30.0, 48.0, 49.0, 41.0,
|
|
114
|
+
5.9, 25.0, 31.0, 32.0, 64.0, 51.0, 37.0, 27.0, 31.0, 41.0, 18.0, 38.0, 33.0,
|
|
115
|
+
28.0, 14.0, 1590.0, 14.0, 47.0, 31.0, 41.0, 44.0, 21.0, 44.0, 46.0, 25.0, 41.0,
|
|
116
|
+
30.0, 14.0, 40.0, 40.0, 45.0, 26.0, 43.0, 1640.0, 36.0, 47.0, 4.2, 23.0, 41.0,
|
|
117
|
+
33.0, 37.0, 14.0, 29.0, 1300.0, 27.0, 49.0, 22.0, 41.0, 40.0, 48.0, 45.0, 17.0,
|
|
118
|
+
40.0, 20.0, 39.0, 40.0, 15.0, 16.0, 37.0, 33.0, 14.0, 32.0, 46.0, 13.0, 29.0,
|
|
119
|
+
37.0, 31.0, 37.0, 28.0, 21.0, 25.0, 49.0, 38.0, 44.0, 18.0, 18.0, 65.0, 34.0,
|
|
120
|
+
32.0, 38.0, 28.0, 50.0, 43.0, 24.0, 31.0, 48.0, 1240.0, 1070.0, 0.0, 0.0, 12.0,
|
|
121
|
+
4.8, 3.3, 16.0, 0.7, 3.3, 0.0, 1100.0, 20.0, 15.0, 12.0, 17.0, 12.0, 0.0, 0.0,
|
|
122
|
+
41.0, 0.0, 0.0, 12.0, 0.0, 0.0, 1200.0, 3.5, 18.0, 0.0, 3.6, 10.0, 11.0, 0.0,
|
|
123
|
+
20.0, 0.0, 31.0, 880.0, 5.0, 0.0, 5.8, 6.6, 0.0, 8.6, 8.2, 12.0, 0.0, 7.1, 0.0,
|
|
124
|
+
6.7, 6.9, 0.0, 25.0, 32.0, 0.0, 17.0, 23.0, 14.0, 0.0, 0.0, 250.0, 160.0, 0.0,
|
|
125
|
+
3850.0, 74.0, 0.5, 5.9, 4.1, 0.0, 4.4, 4.2, 2.9, 0.0, 0.0, 4.4, 15.0, 5.7, 0.0,
|
|
126
|
+
0.0, 1090.0, 8.9, 42.0, 0.0, 6.7, 10.0, 0.0, 10.0, 2.9, 0.0, 0.0, 0.0, 4.8,
|
|
127
|
+
0.0, 0.0, 7.2, 10.0, 11.0, 13.0, 6.3, 0.0, 0.0, 0.0, 0.0, 3.9, 0.0, 3.9, 0.0,
|
|
128
|
+
0.0, 7.3, 7.9, 0.0, 7.6, 51.0, 3530.0, 0.0, 3260.0, 0.0, 0.0, 1860.0, 8.2,
|
|
129
|
+
3200.0, 0.0, 0.0, 1160.0, 0.0, 0.0, 0.0, 87.0, 0.0, 1300.0, 92.0, 380.0, 0.0,
|
|
130
|
+
1540.0, 0.0, 0.0, 1290.0, 0.0, 1290.0, 0.0, 92.0, 93.0, 0.0, 0.0, 2090.0,
|
|
131
|
+
2140.0, 3670.0, 1480.0, 0.0, 0.0, 2.0, 13.0, 480.0, 3400.0, 0.0, 0.0, 3540.0,
|
|
132
|
+
2010.0, 24.0, 2110.0, 35.0, 0.0, 1940.0, 0.0, 4650.0, 0.0, 2140.0, 190.0,
|
|
133
|
+
690.0, 0.0, 0.0, 2530.0, 3830.0, 0.0, 0.0, 2590.0, 0.0, 79.0, 0.0, 35.0, 0.0,
|
|
134
|
+
0.0, 53.0, 2480.0, 0.0, 3970.0, 30.0, 2110.0, 5.1, 2110.0, 0.0, 36.0, 4.8, 0.0,
|
|
135
|
+
0.0, 18.0, 0.0, 2040.0, 0.0, 0.0, 0.0, 7.9, 2260.0, 3550.0, 13.0, 0.0, 12.0,
|
|
136
|
+
0.0, 0.0, 6.0, 0.0, 0.0, 1100.0, 5.9, 2110.0, 0.0, 19.0, 0.0, 0.0, 0.0, 1570.0,
|
|
137
|
+
11.0, 4.5, 4710.0, 90.0, 8.4, 0.0, 50.0, 8.5, 0.0, 5.6, 2110.0, 0.0, 0.0,
|
|
138
|
+
2120.0, 0.0, 19.0, 0.0, 0.0, 2140.0, 0.0, 2020.0, 0.0, 2060.0, 0.0, 0.0, 50.0,
|
|
139
|
+
250.0, 3590.0, 4700.0, 140.0, 31.0, 0.0, 0.0, 270.0, 1410.0, 4050.0, 3680.0,
|
|
140
|
+
0.0, 0.0, 1500.0, 0.0, 130.0, 150.0, 2240.0, 1310.0, 0.0, 0.0, 0.0, 11.0, 0.0,
|
|
141
|
+
3780.0, 200.0, 35.0, 0.0, 100.0, 0.0, 290.0, 8.3, 0.0, 0.0, 0.0, 2040.0, 120.0,
|
|
142
|
+
2110.0, 200.0, 3560.0, 5.3, 0.0, 68.0, 0.0, 0.0, 3770.0, 0.0, 0.0, 1850.0, 0.0,
|
|
143
|
+
4.5, 110.0, 66.0, 20.0, 8.7, 31.0, 23.0, 0.0, 0.0, 2160.0, 0.0, 2200.0, 0.0,
|
|
144
|
+
0.0, 0.0, 0.0, 110.0, 0.0, 13.0, 0.0, 2590.0, 0.0, 63.0, 550.0, 2.1, 0.0, 0.0,
|
|
145
|
+
11.0, 17.0, 0.0, 0.0, 10.0, 0.0, 1540.0, 0.0, 0.0, 2080.0, 120.0, 12.0, 4.8,
|
|
146
|
+
1290.0, 1700.0, 3890.0, 0.0, 0.0, 2130.0, 0.0, 0.0, 180.0, 0.0, 2410.0, 0.0,
|
|
147
|
+
0.0, 2800.0, 350.0, 0.0, 3630.0, 0.0, 270.0, 0.0, 0.0, 0.0, 0.0, 1800.0,
|
|
148
|
+
2110.0, 2170.0, 10.0, 0.0, 0.0, 3910.0, 0.0, 0.0, 12.0, 0.0, 0.0, 230.0, 0.0,
|
|
149
|
+
0.0, 360.0, 2170.0, 110.0, 22.0, 0.0, 0.0, 0.0, 1630.0, 95.0, 0.0, 2140.0,
|
|
150
|
+
3950.0, 62.0, 2140.0, 150.0, 220.0, 270.0, 1760.0, 0.0, 4270.0, 2180.0, 1620.0,
|
|
151
|
+
3660.0, 0.0, 2800.0, 56.0, 1570.0, 1880.0, 29.0, 0.0, 130.0, 0.0, 240.0,
|
|
152
|
+
3890.0, 1350.0, 6.4, 1200.0, 0.0, 0.0, 14.0, 0.0, 0.0, 620.0, 0.0, 2170.0,
|
|
153
|
+
1820.0, 3650.0, 0.0, 280.0, 2170.0, 50.0, 28.0, 30.0, 0.0, 3680.0, 0.0, 3190.0,
|
|
154
|
+
0.0, 0.0, 1600.0, 2140.0, 0.0, 0.0, 0.0, 0.0, 4120.0, 54.0, 2290.0, 1350.0,
|
|
155
|
+
4430.0, 89.0, 2610.0, 3660.0, 1890.0, 0.0, 2120.0, 150.0, 2030.0, 92.0, 1200.0,
|
|
156
|
+
1310.0, 0.0, 0.0, 0.0, 0.0, 290.0, 110.0, 0.0, 0.0, 18.0, 31.0, 0.0, 2790.0,
|
|
157
|
+
21.0, 0.0, 200.0, 23.0, 3940.0, 250.0, 3940.0, 0.0, 150.0, 260.0, 35.0, 230.0,
|
|
158
|
+
1190.0, 2370.0, 130.0, 200.0, 3360.0, 3740.0, 0.0, 0.0, 0.0, 3250.0, 23.0,
|
|
159
|
+
1200.0, 0.0, 230.0, 3530.0, 7.0, 0.0, 0.0, 120.0, 0.0, 0.0, 5.2, 0.0, 0.0,
|
|
160
|
+
38.0, 0.0, 120.0, 0.0, 0.9, 0.0, 220.0, 290.0, 3650.0, 4.3, 3120.0, 1990.0,
|
|
161
|
+
3540.0, 0.0, 0.0, 0.0, 60.0, 0.0, 0.0, 280.0, 0.0, 0.0, 87.0, 0.0, 0.0, 270.0,
|
|
162
|
+
3350.0, 0.0, 2020.0, 1720.0, 0.0, 3960.0, 0.0, 870.0, 3470.0, 3990.0, 3470.0,
|
|
163
|
+
3630.0, 0.0, 0.0, 980.0, 2090.0, 81.0, 3840.0, 2520.0, 2320.0, 30.0, 92.0, 0.0,
|
|
164
|
+
25.0, 40.0, 2400.0, 77.0, 0.0, 0.0, 130.0, 0.0, 200.0, 3580.0, 0.0, 1980.0,
|
|
165
|
+
200.0, 780.0, 0.0, 690.0, 0.0, 33.0, 3220.0, 7.7, 0.0, 0.0, 2000.0, 0.0, 0.0,
|
|
166
|
+
95.0, 0.0, 100.0, 42.0, 56.0, 3960.0, 0.0, 610.0, 0.0, 0.0, 60.0, 3.0, 160.0,
|
|
167
|
+
0.0, 390.0, 380.0, 2130.0, 740.0, 47.0, 850.0, 100.0, 150.0, 7.1, 870.0, 38.0,
|
|
168
|
+
12.0, 180.0, 180.0, 0.0, 0.0, 5.5, 2630.0, 0.0, 2680.0, 76.0, 3880.0, 10.0,
|
|
169
|
+
0.0, 270.0, 0.0, 8.9, 2260.0, 0.0, 0.0, 0.0, 66.0, 0.0, 2690.0, 2690.0, 0.0,
|
|
170
|
+
2260.0, 1050.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.0,
|
|
171
|
+
30.0, 0.0, 2310.0, 0.0, 18.0, 0.0, 1590.0, 0.0, 8.7, 2480.0, 2640.0, 0.0,
|
|
172
|
+
2530.0, 1170.0, 0.0, 2750.0, 0.0, 0.0, 5.2, 1680.0, 2590.0, 0.0, 14.0, 0.0,
|
|
173
|
+
22.0, 0.0, 0.0, 1400.0, 0.0, 0.0, 22.0, 0.0, 0.0, 2700.0, 6.4, 1400.0, 17.0,
|
|
174
|
+
1400.0, 1100.0, 46.0, 0.0, 0.0, 21.0, 0.0, 37.0, 0.0, 0.0, 3650.0, 0.0, 2170.0,
|
|
175
|
+
0.0, 1590.0, 12.0, 0.0, 0.0, 2720.0, 1400.0, 8.5, 12.0, 1690.0, 2070.0, 0.0,
|
|
176
|
+
0.0, 4510.0, 1400.0, 2320.0, 0.0, 0.0, 0.0, 16.0, 2390.0, 0.0, 2780.0, 0.0,
|
|
177
|
+
0.0, 25.0, 10.0, 0.0, 0.0, 860.0, 0.0, 31.0, 830.0, 0.0, 3880.0, 2120.0, 15.0,
|
|
178
|
+
0.0, 3470.0, 0.0, 0.0, 1400.0, 2040.0, 2560.0, 8.5, 1200.0, 1200.0, 0.0, 0.0,
|
|
179
|
+
0.0, 1060.0, 0.0, 20.0, 0.0, 22.0, 0.0, 3930.0, 0.0, 280.0, 28.0, 3730.0, 0.0,
|
|
180
|
+
0.0, 1400.0, 1730.0, 0.0, 0.0, 490.0, 0.0, 2070.0, 0.0, 2750.0, 0.0, 0.0, 0.0,
|
|
181
|
+
0.0, 0.0, 2130.0, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 29.0, 0.0, 3750.0, 2810.0, 0.0,
|
|
182
|
+
2230.0, 2970.0, 0.0, 0.0, 2.2, 16.0, 0.0, 66.0, 0.0, 11.0, 2010.0, 2700.0,
|
|
183
|
+
1410.0, 0.0, 2590.0, 0.7, 2160.0, 1860.0, 770.0, 2500.0, 2260.0, 0.0, 2300.0,
|
|
184
|
+
0.0, 0.0, 0.0, 1170.0, 0.0, 2080.0, 8.7, 24.0, 2720.0, 0.0, 0.0, 4.1, 0.0, 0.0,
|
|
185
|
+
18.0, 0.0, 0.0, 11.0, 9.2, 0.0, 0.0, 2380.0, 0.0, 1280.0, 2330.0, 220.0,
|
|
186
|
+
2790.0, 81.0, 0.0, 70.0, 0.0, 2500.0, 0.0, 0.0, 0.0, 0.0, 22.0, 150.0, 19.0,
|
|
187
|
+
0.0, 21.0, 3770.0, 4.5, 1530.0, 0.0, 0.0, 19.0, 0.0, 0.0, 4050.0, 0.0, 10.0,
|
|
188
|
+
0.0, 0.0, 0.0, 0.0, 15.0, 0.0, 16.0, 0.0, 1460.0, 0.0, 2480.0, 0.0, 0.0,
|
|
189
|
+
1170.0, 0.0, 97.0, 2700.0, 0.0, 0.0, 2480.0, 0.0, 1070.0, 0.0, 0.0, 35.0, 0.0,
|
|
190
|
+
2130.0, 46.0, 0.0, 1980.0, 0.0, 2260.0, 0.0, 480.0, 2110.0, 22.0, 0.0, 2400.0,
|
|
191
|
+
0.0, 0.0, 0.0, 2150.0, 2920.0, 0.0, 16.0, 0.0, 0.0, 2620.0, 0.0, 0.0, 0.0, 0.0,
|
|
192
|
+
0.0, 9.5, 48.0, 0.0, 0.0, 0.0, 0.0, 2590.0, 48.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
193
|
+
75.0, 0.0, 0.0, 24.0, 2220.0, 1200.0, 0.0, 0.0, 20.0, 0.0, 0.0, 15.0, 0.0, 0.0,
|
|
194
|
+
8.2, 2480.0, 0.0, 15.0, 0.0, 65.0, 13.0, 0.0, 0.0, 0.0, 0.0, 2330.0, 0.0, 6.5,
|
|
195
|
+
9.7, 14.0, 2280.0, 4.8, 0.0, 24.0, 7.5, 2300.0, 0.0, 0.0, 0.0, 300.0, 2660.0,
|
|
196
|
+
2100.0, 0.0, 0.0, 0.0, 2670.0, 0.0, 0.0, 1140.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
197
|
+
0.0, 280.0, 0.0, 6.6, 12.0, 1750.0, 0.0, 1.2, 0.0, 0.0, 5.2, 0.0, 0.0, 0.0,
|
|
198
|
+
2100.0, 0.0, 2680.0, 7.1, 0.0, 0.0, 0.0, 0.0, 19.0, 0.0, 2060.0, 0.8, 2330.0,
|
|
199
|
+
2670.0, 2330.0, 0.0, 7.0, 0.0, 470.0, 5.5, 0.5, 1290.0, 0.0, 19.0, 6.1, 0.0,
|
|
200
|
+
3880.0, 13.0, 6.9, 0.0, 1330.0, 0.0, 13.0, 2630.0, 0.0, 23.0, 0.0, 9.8, 0.0,
|
|
201
|
+
0.0, 0.0, 4.9, 1710.0, 14.0, 2700.0, 0.0, 11.0, 2150.0, 14.0, 0.0, 0.0, 0.0,
|
|
202
|
+
2770.0, 0.0, 0.0, 9.0, 12.0, 2290.0, 510.0, 69.0, 0.0, 0.0, 4.9, 0.0, 240.0,
|
|
203
|
+
0.0, 23.0, 0.0, 9.1, 17.0, 0.0, 2320.0, 0.0, 0.0, 0.0, 6.1, 1610.0, 2750.0,
|
|
204
|
+
2630.0, 0.0, 0.0, 0.0, 0.0, 1950.0, 19.0, 72.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.0,
|
|
205
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2340.0, 2650.0, 5.7,
|
|
206
|
+
3230.0, 2110.0, 230.0, 1270.0, 2450.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2030.0, 0.0,
|
|
207
|
+
12.0, 0.0, 2890.0, 0.0, 40.0, 0.0, 14.0, 0.0, 0.0, 5.7, 2610.0, 0.0, 0.0, 0.0,
|
|
208
|
+
1180.0, 0.0, 6.8, 7.0, 2600.0, 2340.0, 660.0, 0.0, 1290.0, 0.1, 3740.0, 1640.0,
|
|
209
|
+
0.0, 0.0, 1290.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.0, 3830.0, 0.0, 0.0, 0.0, 2250.0,
|
|
210
|
+
0.0, 2270.0, 120.0, 12.0, 0.0, 27.0, 18.0, 2390.0, 0.0, 0.0, 830.0, 7.5,
|
|
211
|
+
1200.0, 0.0, 0.0, 2510.0, 1400.0, 310.0, 2680.0, 0.0, 2150.0, 0.0, 0.0, 5.5,
|
|
212
|
+
2290.0, 4.0, 0.0, 0.0, 10.0, 2250.0, 0.0, 130.0, 300.0, 13.0, 2250.0, 3710.0,
|
|
213
|
+
1950.0, 9.6, 0.0, 0.0, 5.3, 980.0, 0.0, 2190.0, 0.0, 0.0, 0.0, 0.0, 6.3, 0.0,
|
|
214
|
+
0.0, 2040.0, 2800.0, 0.0, 19.0, 1400.0, 1200.0, 5.3, 19.0, 2080.0, 16.0, 12.0,
|
|
215
|
+
0.0, 0.0, 5.2, 2080.0, 7.9, 0.0, 0.0, 150.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1400.0,
|
|
216
|
+
1400.0, 1200.0, 0.0, 1950.0, 3020.0, 0.0, 96.0, 0.0, 0.0, 1400.0, 3480.0, 6.6,
|
|
217
|
+
0.0, 0.0, 2.3, 2030.0, 1200.0, 2160.0, 2370.0, 53.0, 0.0, 2420.0, 0.0, 2030.0,
|
|
218
|
+
5.5, 2380.0, 0.0, 0.0, 0.0, 0.0, 340.0, 1980.0, 1410.0, 0.0, 0.0, 34.0, 22.0,
|
|
219
|
+
2020.0, 1580.0, 0.0, 6.6, 0.0, 0.0, 2660.0, 39.0, 0.0, 0.0, 16.0, 1400.0,
|
|
220
|
+
1860.0, 19.0, 1400.0, 0.0, 0.0, 0.0, 0.0, 2850.0, 50.0, 2070.0, 0.0, 0.0, 11.0,
|
|
221
|
+
0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 0.0, 1200.0, 4270.0, 0.0, 280.0, 0.0, 300.0,
|
|
222
|
+
230.0, 240.0, 28.0, 0.0, 260.0, 47.0, 0.0, 220.0, 49.0, 31.0, 43.0, 4270.0,
|
|
223
|
+
94.0, 25.0, 46.0, 3290.0, 3110.0, 46.0, 42.0, 30.0, 18.0, 45.0, 28.0, 40.0,
|
|
224
|
+
44.0, 26.0, 0.0, 1790.0, 16.0, 1890.0, 110.0, 4240.0, 43.0, 1970.0, 1650.0,
|
|
225
|
+
1400.0, 1810.0, 1810.0, 4650.0, 1820.0, 1580.0, 1730.0, 1930.0, 4790.0, 1840.0,
|
|
226
|
+
180.0, 35.0, 840.0, 1610.0, 290.0, 4160.0, 1730.0, 1590.0, 38.0, 1100.0,
|
|
227
|
+
1790.0, 30.0, 1660.0, 0.0, 34.0, 0.0, 63.0, 41.0, 140.0, 34.0, 35.0, 35.0, 0.0,
|
|
228
|
+
44.0, 3410.0, 3670.0, 0.0, 160.0, 46.0, 0.0, 0.0, 2310.0, 0.0, 0.0, 0.0, 0.0,
|
|
229
|
+
0.0, 0.0, 0.0, 0.0, 230.0, 0.0, 0.0, 0.0, 190.0, 0.0, 0.0, 0.0, 2830.0, 210.0,
|
|
230
|
+
13.0, 38.0, 41.0, 0.0, 0.0, 0.0, 23.0, 0.0, 0.0, 24.0, 0.0, 3160.0, 36.0, 0.0,
|
|
231
|
+
0.0, 8.5, 0.0, 7.2, 1390.0, 310.0, 0.0, 2090.0, 3860.0, 0.0, 0.0, 18.0, 0.0,
|
|
232
|
+
0.0, 0.0, 5.7, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.8, 180.0, 2240.0, 8.7, 0.0,
|
|
233
|
+
23.0, 7.2, 2620.0, 5.0, 0.0, 100.0, 74.0, 0.0, 0.0, 0.0, 16.0, 4350.0, 0.0,
|
|
234
|
+
2100.0, 0.0, 970.0, 0.0, 6.7, 10.0, 0.0, 9.1, 0.0, 0.0, 0.0, 0.0, 0.0, 16.0,
|
|
235
|
+
0.0, 81.0, 0.0, 220.0, 0.0, 15.0, 0.0, 0.0, 0.0, 0.0, 14.0, 0.0, 0.0, 0.0,
|
|
236
|
+
10.0, 11.0, 0.0, 2600.0, 1730.0, 94.0, 0.0, 650.0, 0.0, 0.0, 7.0, 0.0, 180.0,
|
|
237
|
+
0.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 2510.0, 85.0, 15.0, 0.0, 0.0, 0.0, 0.0,
|
|
238
|
+
0.0, 440.0, 0.0, 0.0, 2530.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0, 2.1, 1.7, 0.0,
|
|
239
|
+
0.0, 0.0, 0.0, 83.0, 7.0, 0.1, 390.0, 0.0, 0.0, 0.0, 160.0, 5.3, 3040.0, 0.0,
|
|
240
|
+
4.4, 25.0, 180.0, 2420.0, 2.0, 670.0, 15.0, 0.0, 0.0, 0.0, 0.0, 1.5, 1670.0,
|
|
241
|
+
2170.0, 240.0, 1590.0, 0.0, 0.0, 96.0, 0.0, 0.0, 62.0, 8.8, 0.0, 1600.0,
|
|
242
|
+
1230.0, 3.2, 0.0, 100.0, 13.0, 0.0, 1.7, 140.0, 0.0, 0.0, 0.0, 0.0, 7.4, 5.2,
|
|
243
|
+
71.0, 0.0, 11.0, 51.0, 0.0, 0.0, 0.0, 0.0, 1.8, 6.0, 21.0, 250.0, 0.0, 1.9,
|
|
244
|
+
1750.0, 11.0, 0.0, 8.1, 0.0, 21.0, 18.0, 4.2, 13.0, 1.8, 680.0, 0.0, 1930.0,
|
|
245
|
+
1680.0, 5.5, 2180.0, 2820.0, 0.0, 130.0, 0.0, 17.0, 19.0, 0.0, 5.8, 0.0, 0.0,
|
|
246
|
+
0.0, 0.0, 0.0, 18.0, 11.0, 1090.0, 150.0, 2200.0, 0.0, 15.0, 2080.0, 0.0, 9.9,
|
|
247
|
+
11.0, 1200.0, 0.0, 3020.0, 22.0, 0.0, 37.0, 0.0, 0.0, 0.0, 0.0, 7.0, 0.0, 0.0,
|
|
248
|
+
55.0, 0.0, 2170.0, 41.0, 16.0, 18.0, 0.0, 6.9, 1400.0, 8.3, 0.0, 0.0, 63.0,
|
|
249
|
+
0.0, 0.0, 4520.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2900.0, 120.0, 0.0, 0.0, 1400.0,
|
|
250
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.3, 0.0, 0.2, 350.0,
|
|
251
|
+
0.0, 1400.0, 0.0, 3400.0, 0.0, 17.0, 1200.0, 0.0, 0.0, 1200.0, 1200.0, 0.0,
|
|
252
|
+
44.0, 0.0, 930.0, 0.0, 1210.0, 1200.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 1400.0,
|
|
253
|
+
2060.0, 0.0, 0.0, 1200.0, 1400.0, 1400.0, 2660.0, 1200.0, 0.0, 2650.0, 170.0,
|
|
254
|
+
0.0, 0.0, 0.0, 0.0, 260.0, 0.0, 5.5, 0.0, 0.0, 1400.0, 1400.0, 0.0, 0.0, 0.0,
|
|
255
|
+
260.0, 0.0, 2200.0, 0.0, 180.0, 0.9, 0.0, 0.0, 6.5, 0.0, 6.8, 2880.0, 0.6,
|
|
256
|
+
2660.0, 12.0, 2680.0, 0.0, 0.0, 2230.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2310.0, 47.0,
|
|
257
|
+
1240.0, 1890.0, 0.0, 15.0, 0.0, 0.0, 0.0, 0.0, 2710.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
258
|
+
0.0, 0.0, 590.0, 320.0, 4.6, 0.0, 0.8, 4.1, 0.0, 0.0, 1200.0, 23.0, 0.0, 0.0,
|
|
259
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.0, 0.0, 0.0, 7.1, 0.0, 1.2, 0.0, 0.8,
|
|
260
|
+
17.0, 0.0, 0.0, 0.0, 0.0, 5.0, 3830.0, 0.0, 0.0, 46.0, 3.5, 0.0, 17.0, 1200.0,
|
|
261
|
+
32.0, 0.0, 14.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1400.0,
|
|
262
|
+
0.0, 2490.0, 2550.0, 13.0, 18.0, 0.0, 0.0, 0.0, 1400.0, 67.0, 0.0, 140.0, 0.0,
|
|
263
|
+
0.0, 0.0, 12.0, 0.0, 1730.0, 0.0, 17.0, 0.0, 1200.0, 0.0, 7.0, 1140.0, 4.4,
|
|
264
|
+
4.9, 1.0, 10.0, 0.0, 0.0, 11.0, 3.1, 0.0, 0.0, 1790.0, 17.0, 0.0, 12.0, 0.0,
|
|
265
|
+
7.0, 0.0, 0.0, 0.0, 4920.0, 27.0, 0.0, 2780.0, 0.0, 2770.0, 1200.0, 0.0, 0.0,
|
|
266
|
+
2700.0, 0.0, 9.3, 2260.0, 2680.0, 0.0, 0.0, 0.0, 14.0, 0.0, 11.0, 2700.0, 0.0,
|
|
267
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1410.0, 0.0, 0.0, 0.0, 0.0, 53.0, 0.0,
|
|
268
|
+
4180.0, 7.2, 3.9, 0.0, 2740.0, 0.0, 0.0, 0.0, 2530.0, 0.0, 0.0, 0.0, 0.0, 10.0,
|
|
269
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 1200.0, 0.0, 9.9, 10.0, 31.0, 0.0, 0.0, 6.6, 12.0,
|
|
270
|
+
5.0, 1770.0, 2930.0, 1440.0, 2340.0, 3180.0, 2640.0, 1330.0, 2590.0, 0.0, 0.0,
|
|
271
|
+
0.0, 0.0, 1250.0, 0.0, 0.0, 0.0, 160.0, 0.0, 0.0, 0.0, 4.8, 0.1, 1.1, 0.0,
|
|
272
|
+
140.0, 60.0, 2140.0, 0.0, 1660.0, 0.0, 0.0, 0.0, 950.0, 0.0, 0.0, 0.0, 0.0,
|
|
273
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 27.0, 0.0, 0.0, 3160.0, 11.0, 0.0,
|
|
274
|
+
0.0, 0.0, 1940.0, 1880.0, 2790.0, 0.0, 2530.0, 9.5, 1820.0, 7.5, 2510.0,
|
|
275
|
+
2650.0, 2.1, 0.0, 7.8, 0.0, 0.0, 2730.0, 0.0, 0.0, 1650.0, 9.3, 800.0, 310.0,
|
|
276
|
+
0.0, 1640.0, 0.0, 0.0, 0.0, 2700.0, 0.0, 7.6, 0.0, 5000.0, 0.0, 0.0, 0.0, 9.6,
|
|
277
|
+
750.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2570.0, 0.0, 0.0,
|
|
278
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.2, 0.0, 0.0,
|
|
279
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
280
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
281
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
282
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
283
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
284
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
285
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
286
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
287
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
288
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
289
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
290
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
291
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
292
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
293
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
294
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
295
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
296
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
297
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
298
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
299
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
300
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
301
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
302
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
303
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
304
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
305
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
306
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
307
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
308
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
309
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
310
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
311
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
312
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
313
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
314
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
315
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
316
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
317
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
318
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
319
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
320
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
321
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
322
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
323
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
324
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
325
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
326
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
327
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
328
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
329
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
330
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
331
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
332
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
333
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
334
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
335
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
336
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
337
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
338
|
+
0.0, 0.0, 0.0
|
|
339
|
+
],
|
|
340
|
+
vec![
|
|
341
|
+
40.0, 38.0, 22.0, 0.0, 4530.0, 3820.0, 15.0, 4520.0, 300.0, 1390.0, 10.0, 0.0,
|
|
342
|
+
1100.0, 7.8, 37.0, 15.0, 6.6, 0.0, 61.0, 64.0, 8.9, 0.0, 9.4, 0.0, 12.0, 8.1,
|
|
343
|
+
0.0, 1700.0, 0.0, 23.0, 22.0, 49.0, 12.0, 0.0, 1130.0, 1200.0, 11.0, 5.6, 15.0,
|
|
344
|
+
15.0, 100.0, 3920.0, 6.6, 13.0, 0.0, 21.0, 0.0, 0.0, 28.0, 0.0, 86.0, 27.0,
|
|
345
|
+
2150.0, 0.0, 0.0, 0.0, 5.9, 0.0, 0.0, 2150.0, 2110.0, 0.0, 0.0, 0.0, 70.0,
|
|
346
|
+
3800.0, 0.0, 0.0, 0.0, 0.0, 710.0, 3390.0, 0.0, 2580.0, 18.0, 0.0, 2120.0, 0.0,
|
|
347
|
+
0.0, 2090.0, 0.0, 1120.0, 5.8, 1150.0, 3.9, 2050.0, 0.0, 0.0, 0.0, 1310.0,
|
|
348
|
+
3380.0, 4390.0, 230.0, 4110.0, 0.0, 4190.0, 2100.0, 6.0, 110.0, 3480.0, 240.0,
|
|
349
|
+
0.0, 190.0, 3440.0, 2700.0, 0.0, 0.0, 200.0, 0.0, 2.2, 0.0, 0.0, 140.0, 3430.0,
|
|
350
|
+
32.0, 1250.0, 0.0, 24.0, 300.0, 370.0, 27.0, 0.0, 0.0, 0.0, 0.0, 2400.0, 280.0,
|
|
351
|
+
0.0, 1020.0, 41.0, 6.6, 2110.0, 2110.0, 190.0, 0.0, 0.0, 0.0, 65.0, 12.0, 3.5,
|
|
352
|
+
0.0, 13.0, 670.0, 0.0, 85.0, 8.0, 1310.0, 0.0, 0.0, 24.0, 11.0, 0.0, 10.0,
|
|
353
|
+
1980.0, 0.0, 1400.0, 51.0, 0.0, 0.0, 7.0, 2620.0, 0.0, 5.7, 2720.0, 0.0, 18.0,
|
|
354
|
+
0.0, 47.0, 0.0, 32.0, 0.0, 85.0, 0.0, 0.0, 34.0, 4320.0, 0.0, 0.0, 110.0, 4.2,
|
|
355
|
+
0.0, 19.0, 9.3, 0.0, 2700.0, 0.0, 130.0, 0.0, 0.0, 3810.0, 2730.0, 6.0, 0.0,
|
|
356
|
+
6.5, 0.0, 2570.0, 0.0, 0.0, 6.7, 0.0, 1370.0, 1730.0, 1200.0, 2280.0, 66.0,
|
|
357
|
+
0.0, 76.0, 0.0, 0.0, 2760.0, 0.0, 0.0, 750.0, 0.0, 0.0, 83.0, 2600.0, 0.0,
|
|
358
|
+
68.0, 0.0, 8.1, 0.0, 3110.0, 1340.0, 2460.0, 2860.0, 0.0, 16.0, 0.0, 5.7,
|
|
359
|
+
2300.0, 2020.0, 0.0, 1800.0, 6.7, 6.7, 800.0, 1400.0, 0.0, 99.0, 0.0, 0.0,
|
|
360
|
+
330.0, 0.0, 3130.0, 58.0, 1780.0, 200.0, 0.0, 120.0, 210.0, 100.0, 36.0, 55.0,
|
|
361
|
+
0.0, 160.0, 0.0, 32.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
362
|
+
0.0, 0.0, 0.0, 5.3, 0.0, 0.0, 140.0, 10.0, 62.0, 0.0, 18.0, 0.0, 2490.0, 0.0,
|
|
363
|
+
0.0, 38.0, 0.0, 66.0, 0.0, 13.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 46.0, 0.0,
|
|
364
|
+
0.0, 38.0, 50.0, 0.0, 67.0, 3.0, 0.0, 0.0, 0.8, 2.1, 0.0, 0.0, 52.0, 1.6, 14.0,
|
|
365
|
+
0.0, 23.0, 0.0, 13.0, 0.0, 0.0, 34.0, 11.0, 59.0, 97.0, 12.0, 0.0, 0.0, 65.0,
|
|
366
|
+
0.0, 0.0, 1650.0, 1440.0, 0.0, 1780.0, 0.0, 0.0, 0.0, 2210.0, 0.0, 0.0, 0.0,
|
|
367
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1200.0, 14.0, 0.0, 1230.0, 0.0, 0.0, 2290.0, 0.0,
|
|
368
|
+
0.0, 4.0, 0.0, 0.0, 140.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2880.0, 2250.0, 0.0, 0.0,
|
|
369
|
+
18.0, 0.0, 0.0, 0.1, 0.0, 1660.0, 460.0, 0.0, 0.0, 0.0, 180.0, 2.3, 0.0, 8.1,
|
|
370
|
+
0.0, 0.0, 1740.0, 130.0, 0.0, 0.0, 0.0, 330.0, 2650.0, 0.0, 0.0, 2840.0, 0.0,
|
|
371
|
+
0.0, 0.0, 1270.0, 15.0, 0.0, 11.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
372
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
373
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
374
|
+
70.0, 1200.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
375
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
376
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
377
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
378
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
379
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
380
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
381
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
382
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
383
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
384
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
385
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
386
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
387
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
|
|
388
|
+
],
|
|
389
|
+
50,
|
|
390
|
+
't',
|
|
391
|
+
true
|
|
392
|
+
),
|
|
393
|
+
0.00019394092218582207
|
|
394
|
+
);
|
|
395
|
+
|
|
396
|
+
assert_eq!(
|
|
397
|
+
wilcoxon_rank_sum_test(
|
|
398
|
+
vec![1.0, 2.0, 4.0, 7.0],
|
|
399
|
+
vec![3.0, 7.0, 7.0, 7.0, 7.0, 12.0],
|
|
400
|
+
50,
|
|
401
|
+
't',
|
|
402
|
+
true
|
|
403
|
+
),
|
|
404
|
+
0.08806011270956263
|
|
405
|
+
);
|
|
406
|
+
|
|
407
|
+
assert_eq!(
|
|
408
|
+
wilcoxon_rank_sum_test(
|
|
409
|
+
vec![
|
|
410
|
+
47.8, 12.26, 11.42, 38.42, 12.03, 16.28, 37.63, 48.57, 12.82, 3.95, 40.98,
|
|
411
|
+
30.89, 3.17, 4.51, 49.7, 45.32, 6.03, 3.15, 39.09, 18.92, 5.67, 31.51, 25.66,
|
|
412
|
+
13.35, 12.15, 18.77, 3.37, 9.38, 24.91, 12.86, 9.93, 5.22, 32.52, 20.05, 46.99,
|
|
413
|
+
26.61, 19.36, 37.07, 39.65, 33.67, 46.87, 13.98, 23.53, 11.46, 2.71, 37.03,
|
|
414
|
+
4.23, 28.89, 18.42, 18.0, 16.69, 27.05, 46.98, 14.28, 41.31, 38.66, 48.01,
|
|
415
|
+
28.02, 27.19, 6.17
|
|
416
|
+
],
|
|
417
|
+
vec![
|
|
418
|
+
74.49, 39.0, 71.82, 38.79, 35.39, 87.33, 38.78, 49.59, 96.0, 55.23, 32.53,
|
|
419
|
+
94.79, 43.63, 80.14, 65.88, 95.97, 90.67, 80.5, 73.07, 44.16
|
|
420
|
+
],
|
|
421
|
+
50,
|
|
422
|
+
't',
|
|
423
|
+
true
|
|
424
|
+
),
|
|
425
|
+
1.3209445059614108e-8
|
|
426
|
+
);
|
|
427
|
+
|
|
428
|
+
assert_eq!(
|
|
429
|
+
wilcoxon_rank_sum_test(
|
|
430
|
+
vec![
|
|
431
|
+
47.8, 12.26, 11.42, 38.42, 12.03, 16.28, 37.63, 48.57, 12.82, 3.95, 40.98,
|
|
432
|
+
30.89, 3.17, 4.51, 49.7, 45.32, 6.03, 3.15, 39.09, 18.92, 5.67, 31.51, 25.66,
|
|
433
|
+
13.35, 12.15, 18.77, 3.37, 9.38, 24.91, 12.86, 9.93, 5.22, 32.52, 20.05, 46.99,
|
|
434
|
+
26.61, 19.36, 37.07, 39.65, 33.67, 46.87, 13.98, 23.53, 11.46, 2.71, 37.03,
|
|
435
|
+
4.23, 28.89, 18.42, 18.0, 16.69, 27.05, 46.98, 14.28, 41.31, 38.66, 48.01,
|
|
436
|
+
28.02, 27.19, 6.17
|
|
437
|
+
],
|
|
438
|
+
vec![
|
|
439
|
+
74.49, 39.0, 71.82, 38.79, 35.39, 87.33, 38.78, 49.59, 96.0, 55.23, 32.53,
|
|
440
|
+
94.79, 43.63, 80.14, 65.88, 95.97, 90.67, 80.5, 73.07, 44.16
|
|
441
|
+
],
|
|
442
|
+
50,
|
|
443
|
+
'g',
|
|
444
|
+
true
|
|
445
|
+
),
|
|
446
|
+
0.999999993811286
|
|
447
|
+
);
|
|
448
|
+
|
|
449
|
+
assert_eq!(
|
|
450
|
+
wilcoxon_rank_sum_test(
|
|
451
|
+
vec![
|
|
452
|
+
47.8, 12.26, 11.42, 38.42, 12.03, 16.28, 37.63, 48.57, 12.82, 3.95, 40.98,
|
|
453
|
+
30.89, 3.17, 4.51, 49.7, 45.32, 6.03, 3.15, 39.09, 18.92, 5.67, 31.51, 25.66,
|
|
454
|
+
13.35, 12.15, 18.77, 3.37, 9.38, 24.91, 12.86, 9.93, 5.22, 32.52, 20.05, 46.99,
|
|
455
|
+
26.61, 19.36, 37.07, 39.65, 33.67, 46.87, 13.98, 23.53, 11.46, 2.71, 37.03,
|
|
456
|
+
4.23, 28.89, 18.42, 18.0, 16.69, 27.05, 46.98, 14.28, 41.31, 38.66, 48.01,
|
|
457
|
+
28.02, 27.19, 6.17
|
|
458
|
+
],
|
|
459
|
+
vec![
|
|
460
|
+
74.49, 39.0, 71.82, 38.79, 35.39, 87.33, 38.78, 49.59, 96.0, 55.23, 32.53,
|
|
461
|
+
94.79, 43.63, 80.14, 65.88, 95.97, 90.67, 80.5, 73.07, 44.16
|
|
462
|
+
],
|
|
463
|
+
50,
|
|
464
|
+
'l',
|
|
465
|
+
true
|
|
466
|
+
),
|
|
467
|
+
6.604722529807054e-9
|
|
468
|
+
);
|
|
469
|
+
|
|
470
|
+
assert_eq!(
|
|
471
|
+
wilcoxon_rank_sum_test(
|
|
472
|
+
vec![
|
|
473
|
+
0.0, 13.0, 0.0, 13.0, 0.0, 27.0, 1400.0, 5.3, 0.0, 16.0, 1400.0, 0.0, 0.0,
|
|
474
|
+
1720.0, 1200.0, 0.0, 13.0, 6.6, 0.0, 15.0, 2480.0, 1400.0, 1200.0, 0.0, 1200.0,
|
|
475
|
+
1200.0, 1200.0, 0.0, 110.0, 0.0, 56.0, 0.0, 0.0, 0.0, 7.3, 0.0, 0.0, 570.0,
|
|
476
|
+
1200.0, 0.0, 0.0, 0.0, 1200.0, 1200.0, 1550.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
477
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
478
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
|
|
479
|
+
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
|
|
480
|
+
],
|
|
481
|
+
vec![0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
|
|
482
|
+
50,
|
|
483
|
+
't',
|
|
484
|
+
true
|
|
485
|
+
),
|
|
486
|
+
0.1223950436242044
|
|
487
|
+
);
|
|
488
|
+
|
|
489
|
+
assert_eq!(
|
|
490
|
+
wilcoxon_rank_sum_test(
|
|
491
|
+
vec![
|
|
492
|
+
120.0, 122.0, 135.0, 137.0, 122.0, 155.0, 121.0, 118.0, 109.0, 142.0, 106.0,
|
|
493
|
+
94.0, 122.0, 130.0, 133.0, 124.0, 116.0, 118.0, 124.0, 120.0, 122.0, 122.0,
|
|
494
|
+
124.0, 126.0, 119.0, 122.0, 118.0, 136.0, 138.0, 80.0, 118.0, 134.0, 115.0,
|
|
495
|
+
133.0, 106.0, 117.0, 130.0, 115.0, 105.0, 123.0, 142.0, 110.0, 110.0, 95.0,
|
|
496
|
+
119.0, 108.0, 130.0, 111.0, 106.0, 131.0, 133.0, 118.0, 132.0, 118.0, 128.0,
|
|
497
|
+
148.0, 119.0, 128.0, 112.0, 112.0, 133.0, 131.0, 140.0, 126.0, 117.0, 136.0,
|
|
498
|
+
109.0, 126.0, 113.0, 93.0, 118.0, 123.0, 125.0, 122.0, 112.0, 118.0, 125.0,
|
|
499
|
+
118.0, 110.0, 150.0, 113.0, 133.0, 102.0, 138.0, 120.0, 130.0, 114.0, 102.0,
|
|
500
|
+
121.0, 127.0, 109.0, 128.0, 142.0, 107.0, 128.0, 127.0, 111.0, 146.0, 133.0,
|
|
501
|
+
140.0, 117.0, 133.0, 114.0, 98.0, 120.0, 139.0, 131.0, 123.0, 117.0, 124.0,
|
|
502
|
+
93.0, 93.0, 123.0, 117.0, 109.0, 110.0, 138.0, 132.0, 101.0, 105.0, 117.0,
|
|
503
|
+
131.0, 124.0, 113.0, 118.0, 108.0, 115.0, 159.0, 145.0, 142.0, 115.0, 127.0,
|
|
504
|
+
104.0, 119.0, 125.0, 96.0, 119.0, 106.0, 100.0, 116.0, 133.0, 124.0, 145.0,
|
|
505
|
+
88.0, 113.0, 111.0, 117.0, 113.0, 110.0, 126.0, 104.0, 112.0, 100.0, 105.0,
|
|
506
|
+
122.0, 150.0, 114.0, 115.0, 126.0, 106.0, 119.0, 179.0, 111.0, 117.0, 132.0,
|
|
507
|
+
112.0, 123.0, 129.0, 122.0, 134.0, 121.0, 106.0, 128.0, 119.0, 110.0, 133.0,
|
|
508
|
+
96.0, 131.0, 150.0, 122.0, 132.0, 110.0, 107.0, 105.0, 111.0, 136.0, 114.0,
|
|
509
|
+
99.0, 119.0, 119.0, 134.0, 117.0, 133.0, 128.0, 127.0, 130.0, 127.0, 115.0,
|
|
510
|
+
117.0, 120.0, 119.0, 132.0, 118.0, 116.0, 120.0, 128.0, 106.0, 130.0, 122.0,
|
|
511
|
+
110.0, 105.0, 115.0, 127.0, 137.0, 115.0, 125.0, 99.0, 95.0, 100.0, 136.0,
|
|
512
|
+
129.0, 98.0, 122.0, 119.0, 135.0, 119.0, 127.0, 123.0, 131.0, 143.0, 118.0,
|
|
513
|
+
113.0, 114.0, 111.0, 146.0, 130.0, 114.0, 111.0, 90.0, 125.0, 120.0, 119.0,
|
|
514
|
+
128.0, 114.0, 131.0, 105.0, 122.0, 97.0, 100.0, 109.0, 129.0, 107.0, 112.0,
|
|
515
|
+
133.0, 106.0, 115.0, 118.0, 120.0, 120.0, 127.0, 121.0, 118.0, 116.0, 127.0,
|
|
516
|
+
140.0, 123.0, 121.0, 136.0, 122.0, 108.0, 139.0, 115.0, 119.0, 136.0, 121.0,
|
|
517
|
+
119.0, 106.0, 121.0, 118.0, 138.0, 138.0, 120.0, 139.0, 163.0, 109.0, 104.0,
|
|
518
|
+
138.0, 132.0, 113.0, 126.0, 128.0, 119.0, 109.0, 124.0, 122.0, 144.0, 117.0,
|
|
519
|
+
110.0, 126.0, 101.0, 140.0, 98.0, 106.0, 110.0, 124.0, 116.0, 112.0, 114.0,
|
|
520
|
+
131.0, 120.0, 116.0, 191.0, 106.0, 135.0, 118.0, 94.0, 102.0, 101.0, 113.0,
|
|
521
|
+
130.0, 119.0, 115.0, 129.0, 106.0, 126.0, 115.0, 121.0, 142.0, 113.0, 133.0,
|
|
522
|
+
109.0, 122.0, 95.0, 104.0, 101.0, 135.0, 131.0, 122.0, 106.0, 129.0, 116.0,
|
|
523
|
+
131.0, 104.0, 110.0, 128.0, 114.0, 126.0, 132.0, 109.0, 115.0, 124.0, 122.0,
|
|
524
|
+
128.0, 128.0, 119.0, 115.0, 118.0, 122.0, 119.0, 139.0, 127.0, 136.0, 129.0,
|
|
525
|
+
132.0, 109.0, 113.0, 139.0, 113.0, 134.0, 114.0, 138.0, 122.0, 154.0, 134.0,
|
|
526
|
+
116.0, 127.0, 139.0, 111.0, 122.0, 129.0, 123.0, 121.0, 116.0, 136.0, 119.0,
|
|
527
|
+
110.0, 118.0, 125.0, 115.0, 116.0, 109.0, 122.0, 115.0, 127.0, 103.0, 115.0,
|
|
528
|
+
136.0, 135.0, 117.0, 122.0, 106.0, 132.0, 125.0, 102.0, 112.0, 122.0, 103.0,
|
|
529
|
+
110.0, 122.0, 109.0, 124.0, 125.0, 138.0, 119.0, 111.0, 104.0, 124.0, 128.0,
|
|
530
|
+
127.0, 130.0, 136.0, 120.0, 139.0, 118.0, 124.0, 122.0, 129.0, 117.0, 139.0,
|
|
531
|
+
108.0, 127.0, 135.0, 133.0, 147.0, 126.0, 108.0, 121.0, 133.0, 134.0, 98.0,
|
|
532
|
+
103.0, 133.0, 127.0, 116.0, 125.0, 111.0, 131.0, 110.0, 93.0, 131.0, 124.0,
|
|
533
|
+
122.0, 122.0, 125.0, 178.0, 148.0, 142.0, 130.0, 114.0, 103.0, 103.0, 133.0,
|
|
534
|
+
121.0, 125.0, 116.0, 126.0, 140.0, 114.0, 102.0, 108.0, 101.0, 129.0, 125.0,
|
|
535
|
+
127.0, 124.0, 119.0, 136.0, 109.0, 127.0, 125.0, 113.0, 113.0, 103.0, 138.0,
|
|
536
|
+
129.0, 128.0, 123.0, 127.0, 126.0, 119.0, 103.0, 135.0, 123.0, 118.0, 93.0,
|
|
537
|
+
118.0, 138.0, 140.0, 119.0, 116.0, 114.0, 133.0, 113.0, 126.0, 132.0, 133.0,
|
|
538
|
+
122.0, 119.0, 126.0, 109.0, 122.0, 111.0, 118.0, 124.0, 103.0, 128.0, 113.0,
|
|
539
|
+
107.0, 110.0, 131.0, 132.0, 120.0, 104.0, 104.0, 135.0, 104.0, 127.0, 137.0,
|
|
540
|
+
119.0, 140.0, 94.0, 108.0, 119.0, 116.0, 115.0, 121.0, 113.0, 129.0, 126.0,
|
|
541
|
+
111.0, 119.0, 113.0, 118.0, 125.0, 128.0, 119.0, 119.0, 127.0, 118.0, 113.0,
|
|
542
|
+
128.0, 100.0, 121.0, 121.0, 115.0, 107.0, 132.0, 93.0, 118.0, 152.0, 132.0,
|
|
543
|
+
123.0, 122.0, 128.0, 129.0, 113.0, 116.0, 126.0, 135.0, 134.0, 120.0, 142.0,
|
|
544
|
+
117.0, 146.0, 110.0, 127.0, 126.0, 134.0, 122.0, 108.0, 128.0, 121.0, 126.0,
|
|
545
|
+
120.0, 127.0, 130.0, 130.0, 132.0, 139.0, 116.0, 98.0, 101.0, 139.0, 116.0,
|
|
546
|
+
121.0, 114.0, 101.0, 125.0, 112.0, 115.0, 110.0, 112.0, 132.0, 123.0, 119.0,
|
|
547
|
+
128.0, 134.0, 120.0, 108.0, 118.0, 119.0, 141.0, 107.0, 96.0, 116.0, 118.0,
|
|
548
|
+
108.0, 101.0, 102.0, 130.0, 120.0, 115.0, 96.0, 107.0, 130.0, 100.0, 132.0,
|
|
549
|
+
121.0, 92.0, 102.0, 111.0, 124.0, 102.0, 125.0, 103.0, 118.0, 130.0, 114.0,
|
|
550
|
+
125.0, 101.0, 120.0, 105.0, 105.0, 142.0, 99.0, 110.0, 128.0, 142.0, 109.0,
|
|
551
|
+
110.0, 112.0, 127.0, 90.0, 106.0, 111.0, 107.0, 91.0, 117.0, 106.0, 112.0,
|
|
552
|
+
109.0, 110.0, 118.0, 118.0, 116.0, 140.0, 103.0, 119.0, 132.0, 114.0, 103.0,
|
|
553
|
+
118.0, 110.0, 131.0, 109.0, 115.0, 118.0, 138.0, 108.0, 112.0, 109.0, 102.0,
|
|
554
|
+
110.0, 112.0, 130.0, 149.0, 122.0, 130.0, 110.0, 94.0, 114.0, 92.0, 118.0,
|
|
555
|
+
132.0, 116.0, 139.0, 118.0
|
|
556
|
+
],
|
|
557
|
+
vec![
|
|
558
|
+
128.0, 111.0, 120.0, 117.0, 108.0, 117.0, 140.0, 107.0, 120.0, 98.0, 106.0,
|
|
559
|
+
102.0, 113.0, 112.0, 149.0, 129.0, 132.0, 106.0, 108.0, 106.0, 117.0, 118.0,
|
|
560
|
+
117.0, 124.0, 116.0, 120.0, 101.0, 122.0, 134.0, 100.0, 120.0, 125.0, 111.0,
|
|
561
|
+
122.0, 120.0, 103.0, 126.0, 110.0, 118.0, 122.0, 111.0, 134.0, 115.0, 133.0,
|
|
562
|
+
127.0, 121.0, 107.0, 104.0, 112.0, 108.0, 119.0, 115.0, 103.0, 119.0, 124.0,
|
|
563
|
+
124.0, 110.0, 112.0, 115.0, 113.0, 101.0, 100.0, 126.0, 119.0, 119.0, 117.0,
|
|
564
|
+
124.0, 113.0, 102.0, 118.0, 105.0, 110.0, 152.0, 118.0, 114.0, 114.0, 112.0,
|
|
565
|
+
122.0, 110.0, 122.0, 105.0, 101.0, 122.0, 130.0, 132.0, 142.0, 118.0, 116.0,
|
|
566
|
+
110.0, 119.0, 98.0, 106.0, 112.0, 122.0, 111.0, 104.0, 118.0, 108.0, 100.0,
|
|
567
|
+
110.0, 114.0, 118.0, 118.0, 104.0, 135.0, 118.0, 116.0, 117.0, 100.0, 110.0,
|
|
568
|
+
115.0, 125.0, 102.0, 130.0, 112.0, 130.0, 111.0, 106.0, 120.0, 103.0, 96.0,
|
|
569
|
+
106.0, 108.0, 105.0, 108.0, 124.0, 134.0, 124.0, 116.0, 126.0, 134.0, 126.0,
|
|
570
|
+
122.0, 118.0, 110.0, 116.0, 123.0, 98.0, 117.0, 103.0, 94.0, 112.0, 111.0,
|
|
571
|
+
133.0, 105.0, 112.0, 106.0, 154.0, 120.0, 117.0, 108.0, 115.0, 127.0, 110.0,
|
|
572
|
+
111.0, 120.0, 110.0, 120.0, 109.0, 122.0, 133.0, 102.0, 119.0, 105.0, 107.0,
|
|
573
|
+
116.0, 116.0, 124.0, 108.0, 104.0, 138.0, 106.0, 120.0, 92.0, 107.0, 111.0,
|
|
574
|
+
103.0, 120.0, 102.0, 148.0, 135.0, 116.0, 104.0, 111.0, 98.0, 118.0, 109.0,
|
|
575
|
+
122.0, 112.0, 123.0, 127.0, 114.0, 111.0, 120.0, 108.0, 94.0, 104.0, 116.0,
|
|
576
|
+
130.0, 116.0, 106.0, 126.0, 112.0, 121.0, 124.0, 116.0, 102.0, 110.0, 105.0,
|
|
577
|
+
129.0, 141.0, 116.0, 108.0, 100.0, 118.0, 121.0, 108.0, 97.0, 110.0, 140.0,
|
|
578
|
+
105.0, 128.0, 117.0, 120.0, 127.0, 136.0, 126.0, 109.0, 122.0, 124.0, 110.0,
|
|
579
|
+
120.0, 117.0, 129.0, 110.0, 115.0, 94.0, 110.0, 109.0, 104.0, 129.0, 116.0,
|
|
580
|
+
104.0, 117.0, 127.0, 122.0, 142.0, 121.0, 100.0, 98.0, 106.0, 116.0, 101.0,
|
|
581
|
+
121.0, 100.0, 118.0, 112.0, 99.0, 122.0, 110.0, 97.0, 121.0, 112.0, 108.0,
|
|
582
|
+
98.0, 112.0, 112.0, 120.0, 116.0, 125.0, 131.0, 100.0, 116.0, 92.0, 137.0,
|
|
583
|
+
112.0, 152.0, 109.0, 119.0, 112.0, 130.0, 133.0, 107.0, 102.0, 112.0, 118.0,
|
|
584
|
+
116.0, 130.0, 114.0, 107.0, 112.0, 110.0, 97.0, 112.0, 140.0, 108.0, 98.0,
|
|
585
|
+
118.0, 109.0, 114.0, 120.0, 113.0, 116.0, 120.0, 111.0, 113.0, 109.0, 126.0,
|
|
586
|
+
127.0, 111.0, 118.0, 114.0, 94.0, 112.0, 127.0, 110.0, 105.0, 131.0, 118.0,
|
|
587
|
+
117.0, 109.0, 102.0, 120.0, 134.0, 110.0, 120.0, 115.0, 122.0, 93.0, 122.0,
|
|
588
|
+
93.0, 114.0, 123.0, 122.0, 104.0, 110.0, 104.0, 122.0, 118.0, 116.0, 144.0,
|
|
589
|
+
111.0, 115.0, 109.0, 136.0, 104.0, 113.0, 110.0, 118.0, 118.0, 108.0, 150.0,
|
|
590
|
+
123.0, 113.0, 104.0, 127.0, 104.0, 112.0, 116.0, 110.0, 102.0, 103.0, 110.0,
|
|
591
|
+
99.0, 104.0, 112.0, 125.0, 108.0, 126.0, 129.0, 102.0, 104.0, 108.0, 158.0,
|
|
592
|
+
107.0, 102.0, 102.0, 105.0, 116.0, 126.0, 112.0, 109.0, 118.0, 120.0, 92.0,
|
|
593
|
+
106.0, 91.0, 132.0, 109.0, 105.0, 114.0, 106.0, 138.0, 112.0, 86.0, 110.0,
|
|
594
|
+
97.0, 106.0, 105.0, 108.0, 100.0, 111.0, 95.0, 109.0, 102.0, 100.0, 137.0,
|
|
595
|
+
114.0, 115.0, 104.0, 103.0, 102.0, 120.0, 119.0, 131.0, 119.0, 115.0, 103.0,
|
|
596
|
+
115.0, 115.0, 104.0, 106.0, 122.0, 128.0, 108.0, 109.0, 98.0, 110.0, 111.0,
|
|
597
|
+
122.0, 114.0, 116.0, 113.0, 126.0, 104.0, 118.0, 113.0, 93.0, 118.0, 114.0,
|
|
598
|
+
75.0, 95.0, 84.0, 99.0, 103.0, 124.0, 103.0, 96.0, 96.0, 113.0, 99.0, 106.0,
|
|
599
|
+
113.0, 132.0, 104.0, 103.0, 114.0, 115.0, 109.0, 103.0, 101.0, 102.0, 104.0,
|
|
600
|
+
135.0, 120.0, 129.0, 98.0, 128.0, 110.0, 98.0, 90.0, 110.0, 115.0, 122.0,
|
|
601
|
+
111.0, 102.0, 116.0, 115.0, 128.0, 118.0, 103.0, 115.0, 109.0, 127.0, 108.0,
|
|
602
|
+
95.0, 122.0, 102.0, 103.0, 110.0, 113.0, 116.0, 112.0, 118.0, 118.0, 124.0,
|
|
603
|
+
114.0, 122.0, 114.0, 124.0, 153.0, 112.0, 119.0, 114.0, 114.0, 101.0, 130.0,
|
|
604
|
+
118.0, 114.0, 119.0, 110.0, 128.0, 112.0, 118.0, 101.0, 106.0, 102.0, 122.0,
|
|
605
|
+
104.0, 134.0, 109.0, 117.0, 114.0, 136.0, 110.0, 99.0, 105.0, 97.0, 124.0,
|
|
606
|
+
126.0, 136.0, 116.0, 106.0, 112.0, 111.0, 112.0, 126.0, 120.0, 108.0, 119.0,
|
|
607
|
+
126.0, 106.0, 116.0, 94.0, 118.0, 144.0, 119.0, 93.0, 116.0, 115.0, 90.0,
|
|
608
|
+
123.0, 143.0, 115.0, 126.0, 118.0, 102.0, 111.0, 114.0, 132.0, 98.0, 108.0,
|
|
609
|
+
101.0, 117.0, 110.0, 112.0, 108.0, 112.0, 124.0, 124.0, 122.0, 121.0, 99.0,
|
|
610
|
+
136.0, 106.0, 90.0, 102.0, 103.0, 111.0, 130.0, 112.0, 108.0, 114.0, 112.0,
|
|
611
|
+
100.0, 112.0, 105.0, 128.0, 109.0, 113.0, 105.0, 120.0, 100.0, 110.0, 113.0,
|
|
612
|
+
101.0, 102.0, 108.0, 102.0, 99.0, 119.0, 109.0, 121.0, 158.0, 109.0, 118.0,
|
|
613
|
+
96.0, 115.0, 114.0, 109.0, 119.0, 116.0, 118.0, 114.0, 100.0, 124.0, 112.0,
|
|
614
|
+
101.0, 110.0, 94.0, 107.0, 104.0, 106.0, 109.0, 123.0, 98.0, 108.0, 131.0,
|
|
615
|
+
122.0, 102.0, 134.0, 110.0, 118.0, 109.0, 148.0, 110.0, 106.0, 120.0, 108.0,
|
|
616
|
+
94.0, 102.0, 104.0, 118.0, 116.0, 118.0, 112.0, 108.0, 128.0, 111.0, 100.0,
|
|
617
|
+
99.0, 106.0, 114.0, 107.0, 100.0, 120.0, 108.0, 125.0, 109.0, 100.0, 119.0,
|
|
618
|
+
111.0, 96.0, 100.0, 109.0, 131.0, 124.0, 112.0, 116.0, 120.0, 106.0, 112.0,
|
|
619
|
+
100.0, 112.0, 100.0, 140.0, 108.0, 128.0, 146.0, 120.0, 101.0, 124.0, 101.0,
|
|
620
|
+
110.0, 114.0, 110.0, 97.0, 124.0, 118.0, 106.0, 122.0, 128.0, 120.0, 118.0,
|
|
621
|
+
98.0, 119.0, 107.0, 98.0, 111.0, 98.0, 110.0, 128.0, 106.0, 105.0, 104.0,
|
|
622
|
+
116.0, 104.0, 113.0, 101.0, 100.0, 118.0, 109.0, 109.0, 102.0, 99.0, 120.0,
|
|
623
|
+
112.0, 98.0, 104.0, 111.0, 118.0, 112.0, 119.0, 111.0, 119.0, 109.0, 141.0,
|
|
624
|
+
102.0, 108.0, 122.0, 120.0, 104.0, 142.0, 114.0, 103.0, 96.0, 102.0, 112.0,
|
|
625
|
+
118.0, 119.0, 116.0, 99.0, 120.0, 122.0, 136.0, 121.0, 106.0, 104.0, 118.0,
|
|
626
|
+
124.0, 125.0, 128.0, 128.0, 114.0, 114.0, 119.0, 126.0, 105.0, 141.0, 128.0,
|
|
627
|
+
98.0, 132.0, 116.0, 128.0, 124.0, 116.0, 102.0, 110.0, 122.0, 102.0, 114.0,
|
|
628
|
+
120.0, 114.0, 80.0, 132.0, 116.0, 102.0, 118.0, 102.0, 100.0, 118.0, 90.0,
|
|
629
|
+
90.0, 122.0, 110.0, 98.0, 138.0, 134.0, 119.0, 99.0, 116.0, 112.0, 110.0,
|
|
630
|
+
102.0, 98.0, 110.0, 118.0, 110.0, 108.0, 102.0, 98.0, 92.0, 116.0, 150.0,
|
|
631
|
+
122.0, 110.0, 100.0, 135.0, 128.0, 110.0, 92.0, 102.0, 108.0, 98.0, 150.0,
|
|
632
|
+
94.0, 124.0, 112.0, 114.0, 124.0, 113.0, 108.0, 126.0, 105.0, 112.0, 134.0,
|
|
633
|
+
120.0, 100.0, 96.0, 110.0, 108.0, 110.0
|
|
634
|
+
],
|
|
635
|
+
50,
|
|
636
|
+
't',
|
|
637
|
+
true
|
|
638
|
+
),
|
|
639
|
+
1.3480170302526593e-25
|
|
640
|
+
);
|
|
641
|
+
}
|
|
642
|
+
}
|
package/src/wilcoxon.rs
ADDED
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
/*
|
|
2
|
+
##########################
|
|
3
|
+
# Wilcoxon rank sum test #
|
|
4
|
+
##########################
|
|
5
|
+
|
|
6
|
+
##########################
|
|
7
|
+
# Documentation
|
|
8
|
+
##########################
|
|
9
|
+
|
|
10
|
+
This wilcoxon test implementation aims to copy the methodology used in R's wilcox_test() function
|
|
11
|
+
|
|
12
|
+
#########
|
|
13
|
+
# Usage #
|
|
14
|
+
#########
|
|
15
|
+
|
|
16
|
+
# Usage: cd .. && cargo build --release && time echo '[{"group1_id":"European Ancestry","group1_values":[3.7,2.5,5.9,13.1,1,10.6,3.2,3,6.5,15.5,2.6,16.5,2.6,4,8.6,8.3,1.9,7.9,7.9,6.1,17.6,3.1,3,1.5,8.1,18.2,-1.8,3.6,6,1.9,8.9,3.2,0.3,-1,11.2,6.2,16.2,7.5,9,9.4,18.9,0.1,11.5,10.1,12.5,14.6,1.5,17.3,15.4,7.6,2.4,13.5,3.8,17],"group2_id":"African Ancestry","group2_values":[11.5,5.1,21.1,4.4,-0.04]},{"group1_id":"European Ancestry","group1_values":[3.7,2.5,5.9,13.1,1,10.6,3.2,3,6.5,15.5,2.6,16.5,2.6,4,8.6,8.3,1.9,7.9,7.9,6.1,17.6,3.1,3,1.5,8.1,18.2,-1.8,3.6,6,1.9,8.9,3.2,0.3,-1,11.2,6.2,16.2,7.5,9,9.4,18.9,0.1,11.5,10.1,12.5,14.6,1.5,17.3,15.4,7.6,2.4,13.5,3.8,17],"group2_id":"Asian Ancestry","group2_values":[1.7]},{"group1_id":"African Ancestry","group1_values":[11.5,5.1,21.1,4.4,-0.04],"group2_id":"Asian Ancestry","group2_values":[]}]' | target/release/wilcoxon
|
|
17
|
+
|
|
18
|
+
# Several examples are present in test_examples.rs. This can be tested using the command: cd .. && cargo build --release && time cargo test
|
|
19
|
+
|
|
20
|
+
# Input data is in JSON format and is read in from <in.json> file.
|
|
21
|
+
# Results are written in JSON format to stdout.
|
|
22
|
+
|
|
23
|
+
# Input JSON specifications:
|
|
24
|
+
# [{
|
|
25
|
+
# group1_id: group1 id,
|
|
26
|
+
# group1_values: [] group1 data values,
|
|
27
|
+
# group2_id: group2 id,
|
|
28
|
+
# group2_values: [] group2 data values
|
|
29
|
+
# }]
|
|
30
|
+
#
|
|
31
|
+
# Output JSON specifications:
|
|
32
|
+
# [{
|
|
33
|
+
# group1_id: group1 id,
|
|
34
|
+
# group1_values: [] group1 data values,
|
|
35
|
+
# group2_id: group2 id,
|
|
36
|
+
# group2_values: [] group2 data values,
|
|
37
|
+
# pvalue: p-value of test
|
|
38
|
+
# }]
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
########
|
|
42
|
+
# Code #
|
|
43
|
+
########
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
use json;
|
|
47
|
+
use r_stats;
|
|
48
|
+
use serde::{Deserialize, Serialize};
|
|
49
|
+
use std::io;
|
|
50
|
+
|
|
51
|
+
mod test_examples; // Contains examples to test the wilcoxon rank sum test
|
|
52
|
+
|
|
53
|
+
#[derive(Debug, Serialize, Deserialize)]
|
|
54
|
+
struct OutputJson {
|
|
55
|
+
// Output JSON data structure
|
|
56
|
+
group1_id: String,
|
|
57
|
+
group2_id: String,
|
|
58
|
+
group1_values: Vec<f64>,
|
|
59
|
+
group2_values: Vec<f64>,
|
|
60
|
+
pvalue: Option<f64>,
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
//#[derive(Debug)]
|
|
64
|
+
//struct RankFreq {
|
|
65
|
+
// rank: f64,
|
|
66
|
+
// freq: usize,
|
|
67
|
+
//}
|
|
68
|
+
|
|
69
|
+
fn main() {
|
|
70
|
+
let mut input = String::new();
|
|
71
|
+
match io::stdin().read_line(&mut input) {
|
|
72
|
+
// Accepting the piped input from nodejs (or command line from testing)
|
|
73
|
+
Ok(_n) => {
|
|
74
|
+
//println!("{} bytes read", n);
|
|
75
|
+
//println!("input:{}", input);
|
|
76
|
+
const THRESHOLD: usize = 50; // Decrease this number so as to invoke the normal approximation for lower sample sizes. This would speed up the test at the cost of sacrificing accuracy.
|
|
77
|
+
let input_json = json::parse(&input);
|
|
78
|
+
match input_json {
|
|
79
|
+
Ok(json_string) => {
|
|
80
|
+
//println!("{} bytes read", n);
|
|
81
|
+
//println!("json_string:{}", json_string);
|
|
82
|
+
|
|
83
|
+
let mut output_string = "[".to_string();
|
|
84
|
+
for i in 0..json_string.len() {
|
|
85
|
+
//println!("group1_id:{}", json_string[i]["group1_id"]);
|
|
86
|
+
//println!("group2_id:{}", json_string[i]["group2_id"]);
|
|
87
|
+
//println!("group1_values:{}", json_string[i]["group1_values"]);
|
|
88
|
+
//println!("group2_values:{}", json_string[i]["group2_values"]);
|
|
89
|
+
let mut vec1 = Vec::<f64>::new();
|
|
90
|
+
let mut vec2 = Vec::<f64>::new();
|
|
91
|
+
|
|
92
|
+
for arr_iter in 0..json_string[i]["group1_values"].len() {
|
|
93
|
+
vec1.push(json_string[i]["group1_values"][arr_iter].as_f64().unwrap());
|
|
94
|
+
}
|
|
95
|
+
for arr_iter in 0..json_string[i]["group2_values"].len() {
|
|
96
|
+
vec2.push(json_string[i]["group2_values"][arr_iter].as_f64().unwrap());
|
|
97
|
+
}
|
|
98
|
+
//println!("vec1:{:?}", vec1);
|
|
99
|
+
//println!("vec2:{:?}", vec2);
|
|
100
|
+
|
|
101
|
+
if vec1.len() == 0 || vec2.len() == 0 {
|
|
102
|
+
// If one of the vectors has a length of zero, wilcoxon test is not performed and a pvalue of NULL is given.
|
|
103
|
+
output_string += &serde_json::to_string(&OutputJson {
|
|
104
|
+
group1_id: json_string[i]["group1_id"]
|
|
105
|
+
.as_str()
|
|
106
|
+
.unwrap()
|
|
107
|
+
.to_string(),
|
|
108
|
+
group2_id: json_string[i]["group2_id"]
|
|
109
|
+
.as_str()
|
|
110
|
+
.unwrap()
|
|
111
|
+
.to_string(),
|
|
112
|
+
group1_values: vec1,
|
|
113
|
+
group2_values: vec2,
|
|
114
|
+
pvalue: None,
|
|
115
|
+
})
|
|
116
|
+
.unwrap();
|
|
117
|
+
output_string += &",".to_string();
|
|
118
|
+
} else {
|
|
119
|
+
let pvalue: f64 = wilcoxon_rank_sum_test(
|
|
120
|
+
vec1.clone(),
|
|
121
|
+
vec2.clone(),
|
|
122
|
+
THRESHOLD,
|
|
123
|
+
't', // two-sided test
|
|
124
|
+
true,
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
//if pvalue > 0.01 {
|
|
128
|
+
// pvalue = format!("{:.4}", pvalue).parse().unwrap();
|
|
129
|
+
//}
|
|
130
|
+
//println!("pvalue:{}", pvalue);
|
|
131
|
+
output_string += &serde_json::to_string(&OutputJson {
|
|
132
|
+
group1_id: json_string[i]["group1_id"]
|
|
133
|
+
.as_str()
|
|
134
|
+
.unwrap()
|
|
135
|
+
.to_string(),
|
|
136
|
+
group2_id: json_string[i]["group2_id"]
|
|
137
|
+
.as_str()
|
|
138
|
+
.unwrap()
|
|
139
|
+
.to_string(),
|
|
140
|
+
group1_values: vec1,
|
|
141
|
+
group2_values: vec2,
|
|
142
|
+
pvalue: Some(pvalue),
|
|
143
|
+
})
|
|
144
|
+
.unwrap();
|
|
145
|
+
output_string += &",".to_string();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
output_string.pop();
|
|
149
|
+
output_string += &"]".to_string();
|
|
150
|
+
println!("{}", output_string);
|
|
151
|
+
}
|
|
152
|
+
Err(error) => println!("Incorrect json: {}", error),
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
Err(error) => println!("Piping error: {}", error),
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
fn wilcoxon_rank_sum_test(
|
|
160
|
+
mut group1: Vec<f64>,
|
|
161
|
+
mut group2: Vec<f64>,
|
|
162
|
+
threshold: usize,
|
|
163
|
+
alternative: char,
|
|
164
|
+
correct: bool,
|
|
165
|
+
) -> f64 {
|
|
166
|
+
// Check if there are any ties between the two groups
|
|
167
|
+
|
|
168
|
+
let mut combined = group1.clone();
|
|
169
|
+
combined.extend(group2.iter().cloned());
|
|
170
|
+
combined.sort_by(|a, b| a.partial_cmp(b).unwrap());
|
|
171
|
+
//println!("combined:{:?}", combined);
|
|
172
|
+
|
|
173
|
+
group1.sort_by(|a, b| a.partial_cmp(b).unwrap());
|
|
174
|
+
group2.sort_by(|a, b| a.partial_cmp(b).unwrap());
|
|
175
|
+
//println!("group1:{:?}", group1);
|
|
176
|
+
//println!("group2:{:?}", group2);
|
|
177
|
+
|
|
178
|
+
let mut group1_iter = 0;
|
|
179
|
+
let mut group2_iter = 0;
|
|
180
|
+
let mut xy = Vec::<char>::new(); // Stores X-Y classification
|
|
181
|
+
let mut ranks = Vec::<f64>::new(); // Stores the rank of each element
|
|
182
|
+
let mut is_repeat = false;
|
|
183
|
+
let mut repeat_present = false;
|
|
184
|
+
let mut frac_rank: f64 = 0.0;
|
|
185
|
+
let mut num_repeats: f64 = 1.0;
|
|
186
|
+
let mut repeat_iter: f64 = 1.0;
|
|
187
|
+
#[allow(unused_variables)]
|
|
188
|
+
let mut weight_x: f64 = 0.0;
|
|
189
|
+
let mut weight_y: f64 = 0.0;
|
|
190
|
+
let mut group_char: char = 'X';
|
|
191
|
+
let mut rank_frequencies = Vec::<f64>::new();
|
|
192
|
+
for i in 0..combined.len() {
|
|
193
|
+
//println!("group1_iter:{}", group1_iter);
|
|
194
|
+
//println!("group2_iter:{}", group2_iter);
|
|
195
|
+
//println!("item1:{}", combined[i]);
|
|
196
|
+
//println!("is_repeat:{}", is_repeat);
|
|
197
|
+
if group1_iter < group1.len() && combined[i] == group1[group1_iter] {
|
|
198
|
+
xy.push('X');
|
|
199
|
+
group1_iter += 1;
|
|
200
|
+
group_char = 'X';
|
|
201
|
+
} else if group2_iter < group2.len() && combined[i] == group2[group2_iter] {
|
|
202
|
+
xy.push('Y');
|
|
203
|
+
group2_iter += 1;
|
|
204
|
+
group_char = 'Y';
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// Computing ranks
|
|
208
|
+
if is_repeat == false {
|
|
209
|
+
// Check if current element has other occurences
|
|
210
|
+
num_repeats = 1.0;
|
|
211
|
+
for j in i + 1..combined.len() {
|
|
212
|
+
if combined[i] == combined[j] {
|
|
213
|
+
is_repeat = true;
|
|
214
|
+
repeat_present = true;
|
|
215
|
+
repeat_iter = 1.0;
|
|
216
|
+
num_repeats += 1.0;
|
|
217
|
+
} else {
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
//println!("num_repeats:{}", num_repeats);
|
|
222
|
+
if is_repeat == false {
|
|
223
|
+
ranks.push(i as f64 + 1.0);
|
|
224
|
+
if group_char == 'X' {
|
|
225
|
+
weight_x += i as f64 + 1.0;
|
|
226
|
+
} else if group_char == 'Y' {
|
|
227
|
+
weight_y += i as f64 + 1.0;
|
|
228
|
+
}
|
|
229
|
+
//rank_frequencies.push(RankFreq {
|
|
230
|
+
// rank: i as f64 + 1.0,
|
|
231
|
+
// freq: 1,
|
|
232
|
+
//});
|
|
233
|
+
rank_frequencies.push(1.0);
|
|
234
|
+
} else {
|
|
235
|
+
frac_rank = calculate_frac_rank(i as f64 + 1.0, num_repeats);
|
|
236
|
+
ranks.push(frac_rank);
|
|
237
|
+
if group_char == 'X' {
|
|
238
|
+
weight_x += frac_rank;
|
|
239
|
+
} else if group_char == 'Y' {
|
|
240
|
+
weight_y += frac_rank
|
|
241
|
+
}
|
|
242
|
+
//rank_frequencies.push(RankFreq {
|
|
243
|
+
// rank: frac_rank,
|
|
244
|
+
// freq: num_repeats as usize,
|
|
245
|
+
//});
|
|
246
|
+
rank_frequencies.push(num_repeats);
|
|
247
|
+
}
|
|
248
|
+
} else if repeat_iter < num_repeats {
|
|
249
|
+
// Repeat case
|
|
250
|
+
ranks.push(frac_rank);
|
|
251
|
+
repeat_iter += 1.0;
|
|
252
|
+
if group_char == 'X' {
|
|
253
|
+
weight_x += frac_rank;
|
|
254
|
+
} else if group_char == 'Y' {
|
|
255
|
+
weight_y += frac_rank
|
|
256
|
+
}
|
|
257
|
+
if repeat_iter == num_repeats {
|
|
258
|
+
is_repeat = false;
|
|
259
|
+
}
|
|
260
|
+
} else {
|
|
261
|
+
//println!("i:{}", i);
|
|
262
|
+
ranks.push(i as f64 + 1.0);
|
|
263
|
+
repeat_iter = 1.0;
|
|
264
|
+
num_repeats = 1.0;
|
|
265
|
+
if group_char == 'X' {
|
|
266
|
+
weight_x += i as f64 + 1.0;
|
|
267
|
+
} else if group_char == 'Y' {
|
|
268
|
+
weight_y += i as f64 + 1.0;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
//println!("rank_frequencies:{:?}", rank_frequencies);
|
|
273
|
+
//println!("xy:{:?}", xy);
|
|
274
|
+
//println!("ranks:{:?}", ranks);
|
|
275
|
+
//println!("weight_x:{}", weight_x);
|
|
276
|
+
//println!("weight_y:{}", weight_y);
|
|
277
|
+
|
|
278
|
+
//u_dash (calculated below) calculates the "W Statistic" in wilcox.test function in R
|
|
279
|
+
|
|
280
|
+
let u_y = weight_y - (group2.len() as f64 * (group2.len() as f64 + 1.0) / 2.0) as f64;
|
|
281
|
+
let u_dash_y = (u_y - (group1.len() * group2.len()) as f64).abs();
|
|
282
|
+
//println!("u_dash_y:{}", u_dash_y);
|
|
283
|
+
|
|
284
|
+
let u_x = weight_x - (group1.len() as f64 * (group1.len() as f64 + 1.0) / 2.0) as f64;
|
|
285
|
+
let _u_dash_x = (u_x - (group1.len() * group2.len()) as f64).abs();
|
|
286
|
+
//println!("u_dash_x:{}", u_dash_x);
|
|
287
|
+
|
|
288
|
+
// Calculate test_statistic
|
|
289
|
+
|
|
290
|
+
//let t1 = weight_x - ((group1.len() as f64) * (group1.len() as f64 + 1.0)) / 2.0;
|
|
291
|
+
//let t2 = weight_y - ((group2.len() as f64) * (group2.len() as f64 + 1.0)) / 2.0;
|
|
292
|
+
//
|
|
293
|
+
//let mut test_statistic = t1;
|
|
294
|
+
//if t2 < t1 {
|
|
295
|
+
// test_statistic = t2;
|
|
296
|
+
//}
|
|
297
|
+
|
|
298
|
+
//println!("test_statistic:{}", test_statistic);
|
|
299
|
+
|
|
300
|
+
if group1.len() < threshold && group2.len() < threshold && repeat_present == false {
|
|
301
|
+
// Compute exact p-values
|
|
302
|
+
|
|
303
|
+
// Calculate conditional probability for weight_y
|
|
304
|
+
|
|
305
|
+
if alternative == 'g' {
|
|
306
|
+
// Alternative "greater"
|
|
307
|
+
//if group1.len() <= low_cutoff && group2.len() <= low_cutoff {
|
|
308
|
+
// iterate_exact_p_values(ranks, weight_y, group2.len())
|
|
309
|
+
//} else {
|
|
310
|
+
calculate_exact_probability(u_dash_y, group1.len(), group2.len(), alternative)
|
|
311
|
+
//}
|
|
312
|
+
} else if alternative == 'l' {
|
|
313
|
+
// Alternative "lesser"
|
|
314
|
+
//if group1.len() <= low_cutoff && group2.len() <= low_cutoff {
|
|
315
|
+
// iterate_exact_p_values(ranks, weight_x, group1.len())
|
|
316
|
+
//} else {
|
|
317
|
+
calculate_exact_probability(u_dash_y, group1.len(), group2.len(), alternative)
|
|
318
|
+
//}
|
|
319
|
+
} else {
|
|
320
|
+
// Two-sided distribution
|
|
321
|
+
calculate_exact_probability(u_dash_y, group1.len(), group2.len(), alternative)
|
|
322
|
+
}
|
|
323
|
+
} else {
|
|
324
|
+
// Compute p-values from a normal distribution
|
|
325
|
+
//println!("group1 length:{}", group1.len());
|
|
326
|
+
//println!("group2 length:{}", group2.len());
|
|
327
|
+
|
|
328
|
+
let mut z = u_dash_y - ((group1.len() * group2.len()) as f64) / 2.0;
|
|
329
|
+
//println!("z_original:{}", z);
|
|
330
|
+
let mut nties_sum: f64 = 0.0;
|
|
331
|
+
for i in 0..rank_frequencies.len() {
|
|
332
|
+
nties_sum += rank_frequencies[i] * rank_frequencies[i] * rank_frequencies[i]
|
|
333
|
+
- rank_frequencies[i];
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
let sigma = (((group1.len() * group2.len()) as f64) / 12.0
|
|
337
|
+
* ((group1.len() + group2.len() + 1) as f64
|
|
338
|
+
- nties_sum
|
|
339
|
+
/ (((group1.len() + group2.len()) as f64)
|
|
340
|
+
* ((group1.len() + group2.len() - 1) as f64))))
|
|
341
|
+
.sqrt();
|
|
342
|
+
//println!("sigma:{}", sigma);
|
|
343
|
+
let mut correction: f64 = 0.0;
|
|
344
|
+
if correct == true {
|
|
345
|
+
if alternative == 'g' {
|
|
346
|
+
// Alternative "greater"
|
|
347
|
+
correction = 0.5;
|
|
348
|
+
} else if alternative == 'g' {
|
|
349
|
+
// Alternative "lesser"
|
|
350
|
+
correction = -0.5;
|
|
351
|
+
} else {
|
|
352
|
+
// Alternative "two-sided"
|
|
353
|
+
if z > 0.0 {
|
|
354
|
+
correction = 0.5;
|
|
355
|
+
} else if z < 0.0 {
|
|
356
|
+
correction = -0.5;
|
|
357
|
+
} else {
|
|
358
|
+
// z=0
|
|
359
|
+
correction = 0.0;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
z = (z - correction) / sigma;
|
|
364
|
+
//println!("z:{}", z);
|
|
365
|
+
if alternative == 'g' {
|
|
366
|
+
// Alternative "greater"
|
|
367
|
+
//println!("greater:{}", n.cdf(weight_y));
|
|
368
|
+
//1.0 - n.cdf(z) // Applying continuity correction
|
|
369
|
+
r_stats::normal_cdf(z, 0.0, 1.0, false, false)
|
|
370
|
+
} else if alternative == 'l' {
|
|
371
|
+
// Alternative "lesser"
|
|
372
|
+
//println!("lesser:{}", n.cdf(weight_x));
|
|
373
|
+
//n.cdf(z) // Applying continuity coorection
|
|
374
|
+
r_stats::normal_cdf(z, 0.0, 1.0, true, false)
|
|
375
|
+
} else {
|
|
376
|
+
// Alternative "two-sided"
|
|
377
|
+
let p_g = r_stats::normal_cdf(z, 0.0, 1.0, false, false); // Applying continuity correction
|
|
378
|
+
let p_l = r_stats::normal_cdf(z, 0.0, 1.0, true, false); // Applying continuity correction
|
|
379
|
+
let mut p_value;
|
|
380
|
+
if p_g < p_l {
|
|
381
|
+
p_value = 2.0 * p_g;
|
|
382
|
+
} else {
|
|
383
|
+
p_value = 2.0 * p_l;
|
|
384
|
+
}
|
|
385
|
+
//println!("p_value:{}", p_value);
|
|
386
|
+
if p_value > 1.0 {
|
|
387
|
+
p_value = 1.0;
|
|
388
|
+
}
|
|
389
|
+
p_value
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
// To be used only when there are no ties in the input data
|
|
395
|
+
fn calculate_exact_probability(weight: f64, x: usize, y: usize, alternative: char) -> f64 {
|
|
396
|
+
//println!("Using Wilcoxon CDF");
|
|
397
|
+
let mut p_value;
|
|
398
|
+
if alternative == 't' {
|
|
399
|
+
if weight > ((x * y) as f64) / 2.0 {
|
|
400
|
+
p_value = 2.0 * r_stats::wilcox_cdf(weight - 1.0, x as f64, y as f64, false, false);
|
|
401
|
+
} else {
|
|
402
|
+
p_value = 2.0 * r_stats::wilcox_cdf(weight, x as f64, y as f64, true, false);
|
|
403
|
+
}
|
|
404
|
+
if p_value > 1.0 {
|
|
405
|
+
p_value = 1.0;
|
|
406
|
+
}
|
|
407
|
+
} else if alternative == 'g' {
|
|
408
|
+
p_value = r_stats::wilcox_cdf(weight - 1.0, x as f64, y as f64, false, false);
|
|
409
|
+
} else if alternative == 'l' {
|
|
410
|
+
p_value = r_stats::wilcox_cdf(weight, x as f64, y as f64, true, false);
|
|
411
|
+
} else {
|
|
412
|
+
// Should not happen
|
|
413
|
+
panic!("Unknown alternative option given, please check!");
|
|
414
|
+
}
|
|
415
|
+
//println!("p_value:{}", p_value);
|
|
416
|
+
p_value
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
fn calculate_frac_rank(current_rank: f64, num_repeats: f64) -> f64 {
|
|
420
|
+
let mut sum = 0.0;
|
|
421
|
+
for i in 0..num_repeats as usize {
|
|
422
|
+
let rank = current_rank + i as f64;
|
|
423
|
+
sum += rank;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
sum / num_repeats
|
|
427
|
+
}
|