diff --git a/res/grape-Concordance.svg b/res/grape-Concordance.svg
index a2cf998..8a77466 100644
--- a/res/grape-Concordance.svg
+++ b/res/grape-Concordance.svg
@@ -427,10 +427,10 @@
-
+
-
+
@@ -460,10 +460,10 @@
-
+
-
+
@@ -493,10 +493,10 @@
-
+
-
+
@@ -526,10 +526,10 @@
-
+
-
+
@@ -676,65 +676,68 @@
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -837,42 +840,42 @@
-
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -956,123 +959,123 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1101,9 +1104,9 @@
-
-
-
+
+
+
@@ -1134,8 +1137,8 @@
-
-
+
+
@@ -1166,8 +1169,7 @@
-
-
+
@@ -1199,7 +1201,7 @@
-
+
@@ -1230,7 +1232,6 @@
-
@@ -1260,8 +1261,8 @@
-
-
+
+
@@ -1292,7 +1293,7 @@
-
+
@@ -1354,8 +1355,7 @@
-
-
+
@@ -1494,44 +1494,44 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1634,157 +1634,155 @@
-
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1812,8 +1810,8 @@
-
-
+
+
@@ -1846,7 +1844,7 @@
-
+
@@ -1877,8 +1875,8 @@
-
-
+
+
@@ -1910,7 +1908,7 @@
-
+
@@ -1939,10 +1937,10 @@
-
-
-
-
+
+
+
+
@@ -1974,7 +1972,7 @@
-
+
@@ -2005,8 +2003,8 @@
-
-
+
+
@@ -2038,7 +2036,7 @@
-
+
@@ -2238,36 +2236,36 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -2354,12 +2352,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -2379,19 +2377,19 @@
-
+
-
+
-
+
-
+
-
+
@@ -2478,36 +2476,36 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -2597,12 +2595,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -2622,19 +2620,19 @@
-
+
-
+
-
+
-
+
-
+
@@ -2673,36 +2671,36 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -2792,12 +2790,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -2817,19 +2815,19 @@
-
+
-
+
-
+
-
+
-
+
@@ -2868,36 +2866,36 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -2991,12 +2989,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -3016,19 +3014,19 @@
-
+
-
+
-
+
-
+
-
+
@@ -3883,48 +3881,55 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
@@ -4038,12 +4043,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -4066,22 +4071,25 @@
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
diff --git a/res/grape-Mean_absolute_error.svg b/res/grape-Mean_absolute_error.svg
index da8232c..b0697c1 100644
--- a/res/grape-Mean_absolute_error.svg
+++ b/res/grape-Mean_absolute_error.svg
@@ -327,16 +327,16 @@
-
+
-
+
-
+
@@ -421,10 +421,10 @@
-
+
-
+
@@ -454,10 +454,10 @@
-
+
-
+
@@ -487,10 +487,10 @@
-
+
-
+
@@ -520,10 +520,10 @@
-
+
-
+
@@ -670,65 +670,68 @@
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -839,11 +842,11 @@
-
+
-
-
-
+
+
+
@@ -851,22 +854,22 @@
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
@@ -950,123 +953,123 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1096,7 +1099,7 @@
-
+
@@ -1105,7 +1108,7 @@
-
+
@@ -1120,7 +1123,7 @@
-
+
@@ -1128,8 +1131,8 @@
-
-
+
+
@@ -1137,7 +1140,7 @@
-
+
@@ -1145,7 +1148,7 @@
-
+
@@ -1161,14 +1164,14 @@
-
+
-
+
@@ -1184,23 +1187,23 @@
-
-
+
+
-
-
+
+
-
+
@@ -1208,7 +1211,7 @@
-
+
@@ -1256,7 +1259,7 @@
-
+
@@ -1273,7 +1276,7 @@
-
+
@@ -1281,7 +1284,7 @@
-
+
@@ -1289,7 +1292,6 @@
-
@@ -1305,7 +1307,7 @@
-
+
@@ -1313,7 +1315,7 @@
-
+
@@ -1321,7 +1323,7 @@
-
+
@@ -1336,7 +1338,7 @@
-
+
@@ -1345,15 +1347,15 @@
-
+
-
-
+
+
@@ -1361,21 +1363,21 @@
-
+
-
-
-
+
+
+
-
+
@@ -1491,44 +1493,44 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1639,11 +1641,11 @@
-
+
-
-
-
+
+
+
@@ -1651,137 +1653,137 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1809,15 +1811,15 @@
-
-
+
+
-
-
+
+
@@ -1825,7 +1827,7 @@
-
+
@@ -1842,13 +1844,13 @@
-
+
-
+
@@ -1856,15 +1858,15 @@
-
-
-
+
+
+
-
+
@@ -1874,21 +1876,21 @@
-
+
-
-
+
+
-
+
@@ -1896,25 +1898,25 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
+
-
+
@@ -1922,13 +1924,13 @@
-
+
-
+
@@ -1937,15 +1939,15 @@
-
-
+
+
-
-
+
+
@@ -1954,15 +1956,15 @@
-
+
-
-
+
+
@@ -1970,13 +1972,13 @@
-
+
-
+
@@ -1985,7 +1987,7 @@
-
+
@@ -1994,21 +1996,21 @@
-
+
-
-
+
+
-
+
@@ -2016,7 +2018,7 @@
-
+
@@ -2032,31 +2034,29 @@
-
-
-
+
-
-
+
+
-
-
+
+
-
+
@@ -2065,7 +2065,7 @@
-
+
@@ -2074,14 +2074,14 @@
-
+
-
+
@@ -2234,36 +2234,36 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -2350,12 +2350,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -2375,19 +2375,19 @@
-
+
-
+
-
+
-
+
-
+
@@ -2474,36 +2474,36 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -2593,12 +2593,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -2618,19 +2618,19 @@
-
+
-
+
-
+
-
+
-
+
@@ -2669,36 +2669,36 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -2788,12 +2788,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -2813,19 +2813,19 @@
-
+
-
+
-
+
-
+
-
+
@@ -2864,36 +2864,36 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -2987,12 +2987,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -3012,19 +3012,19 @@
-
+
-
+
-
+
-
+
-
+
@@ -3879,48 +3879,55 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -4034,12 +4041,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -4062,22 +4069,25 @@
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
diff --git a/src/filter_missing.rs b/src/filter_missing.rs
index 2d1639a..32aad27 100644
--- a/src/filter_missing.rs
+++ b/src/filter_missing.rs
@@ -51,15 +51,32 @@ impl GenotypesAndPhenotypes {
}
pub fn missing_rate(&mut self) -> Result {
- let (n, l) = self.coverages.dim();
- let sum = self.coverages.fold(0, |sum, &x| {
+ let (n, p) = self.intercept_and_allele_frequencies.dim();
+ let (_n, l) = self.coverages.dim();
+ // Count missing data based on coverages
+ let sum_cov: f64 = self.coverages.fold(0.00, |sum, &x| {
if (x.is_nan()) || (x == 0.0) {
- sum + 1
+ sum + 1.00
+ } else {
+ sum
+ }
+ });
+ // Count missing data based on missing frequencies
+ let mut sum_freq: f64 = self.intercept_and_allele_frequencies.fold(0.00, |sum, &x| {
+ if x.is_nan() {
+ sum + 1.00
} else {
sum
}
});
- sensible_round(sum as f64 * 100.0 / ((n * l) as f64), 5)
+ sum_freq = sum_freq / (p as f64 / l as f64); // correct by the number of alleles per locus
+ // Use the larger and more precise missing count
+ let sum: f64 = if sum_cov > sum_freq {
+ sum_cov
+ } else {
+ sum_freq
+ };
+ sensible_round(sum * 100.0 / ((n * l) as f64), 5)
}
pub fn filter_out_top_missing_pools(
diff --git a/src/main.rs b/src/main.rs
index 85a4ef8..4e11547 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -186,7 +186,7 @@ fn main() {
&rand_id,
&args.n_threads,
)
- .expect("Error loading sync.")
+ .expect("Error loading tsv.")
};
// Define missing data
let start = std::time::SystemTime::now();