libsequence  1.9.5
testClassicSummstatsEmptyVariantMatrix.cc
Go to the documentation of this file.
1 
17 #include <cmath>
18 #include <algorithm>
19 #include <vector>
20 #include <iostream>
21 #include <Sequence/VariantMatrix.hpp>
22 #include <Sequence/VariantMatrixViews.hpp>
24 #include "VariantMatrixFixture.hpp"
25 #include <boost/test/unit_test.hpp>
26 
27 BOOST_FIXTURE_TEST_SUITE(test_classic_stats_with_empty_variant_matrix,
28  invariantdataset)
29 
30 BOOST_AUTO_TEST_CASE(test_thetapi)
31 {
32  auto pi = Sequence::thetapi(empty_counts);
33  BOOST_REQUIRE_EQUAL(pi, 0.0);
34  pi = Sequence::thetapi(invariant_counts);
35  BOOST_REQUIRE_EQUAL(pi, 0.0);
36 }
37 
38 BOOST_AUTO_TEST_CASE(test_thetaw)
39 {
40  auto tw = Sequence::thetaw(empty_counts);
41  BOOST_REQUIRE_EQUAL(tw, 0.0);
42  tw = Sequence::thetaw(invariant_counts);
43  BOOST_REQUIRE_EQUAL(tw, 0.0);
44 }
45 
46 BOOST_AUTO_TEST_CASE(test_thetah)
47 {
48  auto th = Sequence::thetah(empty_counts, 0);
49  BOOST_REQUIRE_EQUAL(th, 0.0);
50  th = Sequence::thetah(invariant_counts, 0);
51  BOOST_REQUIRE_EQUAL(th, 0.0);
52 }
53 
54 BOOST_AUTO_TEST_CASE(test_thetal)
55 {
56  auto tl = Sequence::thetal(empty_counts, 0);
57  BOOST_REQUIRE_EQUAL(tl, 0.0);
58  tl = Sequence::thetal(invariant_counts, 0);
59  BOOST_REQUIRE_EQUAL(tl, 0.0);
60 }
61 
62 BOOST_AUTO_TEST_CASE(test_tajd)
63 {
64  auto td = Sequence::tajd(empty_counts);
65  BOOST_REQUIRE_EQUAL(std::isnan(td), true);
66  td = Sequence::tajd(invariant_counts);
67  BOOST_REQUIRE_EQUAL(std::isnan(td), true);
68 }
69 
70 BOOST_AUTO_TEST_CASE(test_faywuh)
71 {
72  auto fwh = Sequence::faywuh(empty_counts, 0);
73  BOOST_REQUIRE_EQUAL(std::isnan(fwh), true);
74  fwh = Sequence::faywuh(invariant_counts, 0);
75  BOOST_REQUIRE_EQUAL(std::isnan(fwh), true);
76 }
77 
78 BOOST_AUTO_TEST_CASE(test_hprime)
79 {
80  auto hp = Sequence::hprime(empty_counts, 0);
81  BOOST_REQUIRE_EQUAL(std::isnan(hp), true);
82  hp = Sequence::hprime(invariant_counts, 0);
83  BOOST_REQUIRE_EQUAL(std::isnan(hp), true);
84 }
85 
86 // Tests of haplotype statistics are more complex.
87 // It is not as obvious (to me) what to do for an empty
88 // matrix.
89 
90 BOOST_AUTO_TEST_CASE(test_num_haplotypes)
91 {
92  auto nh = Sequence::number_of_haplotypes(empty);
93  BOOST_REQUIRE_EQUAL(nh, -1);
94  nh = Sequence::number_of_haplotypes(invariant);
95  BOOST_REQUIRE_EQUAL(nh, 1);
96 }
97 
98 BOOST_AUTO_TEST_CASE(test_haplotype_diversity)
99 {
100  auto hd = Sequence::haplotype_diversity(empty);
101  BOOST_REQUIRE_EQUAL(std::isnan(hd), true);
102  hd = Sequence::haplotype_diversity(invariant);
103  BOOST_REQUIRE_EQUAL(hd, 0.0);
104 }
105 
106 BOOST_AUTO_TEST_CASE(test_rmin)
107 {
108  auto rm = Sequence::rmin(empty);
109  BOOST_CHECK_EQUAL(rm, -1);
110  rm = Sequence::rmin(invariant);
111  BOOST_CHECK_EQUAL(rm, 0);
112 }
113 
114 BOOST_AUTO_TEST_SUITE_END()
double hprime(const AlleleCountMatrix &ac, const std::int8_t refstate)
Definition: hprime.cc:45
double thetal(const AlleleCountMatrix &ac, const std::int8_t refstate)
Zeng et al. .
double thetah(const AlleleCountMatrix &ac, const std::int8_t refstate)
Fay and Wu&#39;s .
std::int32_t number_of_haplotypes(const VariantMatrix &m)
Calculate the number of haplotypes in a sample.
double tajd(const AlleleCountMatrix &ac)
Tajima&#39;s D.
Definition: tajd.cc:9
"Classic" summaries of variation data.
double thetapi(const AlleleCountMatrix &ac)
Mean pairwise differences.
Definition: thetapi.cc:7
double faywuh(const AlleleCountMatrix &ac, const std::int8_t refstate)
Fay and Wu&#39;s H.
Definition: faywuh.cc:8
double thetaw(const AlleleCountMatrix &ac)
Watterson&#39;s theta.
Definition: thetaw.cc:9
std::int32_t rmin(const VariantMatrix &m)
Definition: rmin.cc:11
double haplotype_diversity(const VariantMatrix &m)
Calculate the haplotype diversity of a sample.