Mercurial > repos > dereeper > sniplay
comparison egglib/egglib-2.1.5/include/egglib-cpp/MicrosatelliteDiversity.hpp @ 1:420b57c3c185 draft
Uploaded
author | dereeper |
---|---|
date | Fri, 10 Jul 2015 04:39:30 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:3e19d0dfcf3e | 1:420b57c3c185 |
---|---|
1 /* | |
2 Copyright 2008-2010 Stéphane De Mita, Mathieu Siol | |
3 | |
4 This file is part of the EggLib library. | |
5 | |
6 EggLib is free software: you can redistribute it and/or modify | |
7 it under the terms of the GNU General Public License as published by | |
8 the Free Software Foundation, either version 3 of the License, or | |
9 (at your option) any later version. | |
10 | |
11 EggLib is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with EggLib. If not, see <http://www.gnu.org/licenses/>. | |
18 */ | |
19 | |
20 #ifndef EGGLIB_MICROSATELLITEDIVERSITY_HPP | |
21 #define EGGLIB_MICROSATELLITEDIVERSITY_HPP | |
22 | |
23 #include "DataMatrix.hpp" | |
24 #include <cstdlib> | |
25 | |
26 namespace egglib { | |
27 | |
28 /** \brief Analyzes microsatellite data | |
29 * | |
30 * \ingroup polymorphism | |
31 * | |
32 * Use the load() method to analyze data. All sites will be analyzed | |
33 * and accessors allow to access the value of a given statistics for | |
34 * a given site. There is no out-of-bound checking implemented in | |
35 * accessors. | |
36 * | |
37 */ | |
38 class MicrosatelliteDiversity { | |
39 | |
40 public: | |
41 | |
42 /** \brief Creates an object | |
43 * | |
44 */ | |
45 MicrosatelliteDiversity(); | |
46 | |
47 | |
48 /** \brief Destroys an object | |
49 * | |
50 */ | |
51 virtual ~MicrosatelliteDiversity(); | |
52 | |
53 | |
54 /** \brief Performs the analysis | |
55 * | |
56 * \param dataMatrix the object to analyze. | |
57 * | |
58 * \param missingData the integer identifying missing data. | |
59 * | |
60 * \param noMissingData if true, no allele will be | |
61 * excluded (including the one identified by the argument | |
62 * missingData). | |
63 * | |
64 */ | |
65 void load(const DataMatrix& dataMatrix, | |
66 int missingData=999, bool noMissingData=false); | |
67 | |
68 | |
69 /// Number of sites (or markers) | |
70 unsigned int numberOfSites() const; | |
71 | |
72 /// Heterozygosity | |
73 double He(unsigned int siteIndex) const; | |
74 | |
75 /// Number of alleles | |
76 unsigned int numberOfAlleles(unsigned int siteIndex) const; | |
77 | |
78 /// Variance of allele size | |
79 double sizeVariance(unsigned int siteIndex) const; | |
80 | |
81 /// IAM-based estimator of theta | |
82 double thetaAssumingIAM(unsigned int siteIndex) const; | |
83 | |
84 /// SMM-based estimator of theta, calculated from He | |
85 double thetaAssumingSMMfromHe(unsigned int siteIndex) const; | |
86 | |
87 /// SMM-based estimator of theta, calculated from VarSize | |
88 double thetaAssumingSMMfromSizeVariance(unsigned int siteIndex) const; | |
89 | |
90 | |
91 protected: | |
92 | |
93 unsigned int v_numberOfSites; | |
94 double *v_He; | |
95 unsigned int *v_numberOfAlleles; | |
96 double *v_sizeVariance; | |
97 double *v_thetaAssumingIAM; | |
98 double *v_thetaAssumingSMMfromHe; | |
99 double *v_thetaAssumingSMMfromSizeVariance; | |
100 | |
101 void init(); | |
102 void clear(); | |
103 | |
104 | |
105 private: | |
106 | |
107 | |
108 /// No copy allowed | |
109 MicrosatelliteDiversity(const MicrosatelliteDiversity& source) { | |
110 } | |
111 | |
112 /// No copy allowed | |
113 MicrosatelliteDiversity& operator=(const MicrosatelliteDiversity& source) { | |
114 return *this; | |
115 } | |
116 | |
117 }; | |
118 } | |
119 | |
120 #endif |