libsequence  1.9.5
PolySNP.hpp
Go to the documentation of this file.
1 /*
2 
3 Copyright (C) 2003-2009 Kevin Thornton, krthornt[]@[]uci.edu
4 
5 Remove the brackets to email me.
6 
7 This file is part of libsequence.
8 
9 libsequence is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13 
14 libsequence is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18 
19 You should have received a copy of the GNU General Public License
20 long with libsequence. If not, see <http://www.gnu.org/licenses/>.
21 
22 */
23 
24 #ifndef _POLYSNP_H_
25 #define _POLYSNP_H_
26 
77 #include <vector>
78 #include <memory>
79 #include <limits>
81 
82 namespace Sequence
83  {
84  class __attribute__ ((deprecated)) PolyTable;
85  struct _PolySNPImpl;
86  class PolySNP
87  {
88  private:
89  protected:
90  std::unique_ptr<_PolySNPImpl> rep;
91  void DepaulisVeuilleStatistics (void) const;
92  virtual void WallStats(void) const;
93  //various things one needs to know to calculate the summary statistics
94  double a_sub_n (void) const ;
95  double a_sub_n_plus1 (void) const;
96  double b_sub_n (void) const;
97  double b_sub_n_plus1 (void) const;
98  double c_sub_n (void) const;
99  double d_sub_n (void) const;
100  public:
101  explicit PolySNP (const Sequence::PolyTable * data, bool haveOutgroup = false,
102  unsigned outgroup = 0, bool totMuts = true);
103  PolySNP( const PolySNP & ) = delete;
104  PolySNP & operator=(const PolySNP &) = delete;
105  virtual ~ PolySNP (void);
106  //estimators of 4Nu
107  virtual double ThetaPi (void) const; //Nucleotide diversity (Tajima 1983)
108  virtual double ThetaW (void) const; //Watterson's (1975) Theta
109  virtual double ThetaH (void) const; //Theta from homozygosity (Fay and Wu 2001)
110  virtual double ThetaL (void) const; //A variant on Fay and Wu's H
111  //variances of estimators of 4Nu
112  double VarPi (void) const;
113  double StochasticVarPi(void) const;
114  double SamplingVarPi (void) const;
115  double VarThetaW (void) const;
116  //calculate various numbers related to polymorphism
117  unsigned NumPoly (void) const; //number of polymorphic sites in data
118  virtual unsigned NumMutations (void) const; //number of inferred mutations
119  virtual unsigned NumSingletons (void) const; //number of mutants at frequency 1
120  virtual unsigned NumExternalMutations (void) const; //number of derived mutations
121  //summary statistics of the site frequency spectrum
122  virtual double TajimasD (void) const; //Tajima's (1989) D
123  virtual double Hprime (const bool & likeThorntonAndolfatto = false) const; //A normalized statistic
124  //related to Fay and Wu's H
125  virtual double Dnominator (void) const; //Denominator of Tajima's D
126  virtual double FuLiD (void) const; //Fu & Li's (1996) D
127  virtual double FuLiF (void) const; //Fu & Li's (1996) F
128  virtual double FuLiDStar (void) const; //Fu & Li's (1996) D*
129  virtual double FuLiFStar (void) const; //Fu & Li's (1996) F*
130  //summary statistics of haplotypes
131  double DandVH (void) const; //Depaulis & Veuille (1998) Haplotype diversity
132  unsigned DandVK (void) const; //Depaulis & Veuille (1998) number of haplotypes
133  virtual double WallsB(void) const; //Jeff Wall's (1999) B statistic
134  virtual unsigned WallsBprime(void) const; //Jeff Wall's (1999) B' statistic
135  virtual double WallsQ(void) const; //Jeff Wall's (1999) Q statistic
136  //recombination
137  double HudsonsC (void) const; //Dick Hudson's (1987) Chat = 4Nr
138  virtual unsigned Minrec (void) const; //Hudson & Kaplan's (1985) min # of recombination events
139  std::vector <PairwiseLDstats>
140  Disequilibrium( const unsigned & mincount = 1,
141  const double & max_marker_distance = std::numeric_limits<double>::max()) const; //summary stats of pairwise LD
142  };
143 }
144 #endif
The base class for polymorphism tables.
virtual double FuLiF(void) const
Definition: PolySNP.cc:1388
double VarPi(void) const
Definition: PolySNP.cc:1288
Molecular population genetic analysis.
Definition: PolySNP.hpp:86
virtual unsigned NumMutations(void) const
Definition: PolySNP.cc:823
double DandVH(void) const
Definition: PolySNP.cc:1614
virtual unsigned NumSingletons(void) const
Definition: PolySNP.cc:844
virtual double ThetaH(void) const
Definition: PolySNP.cc:366
double HudsonsC(void) const
Definition: PolySNP.cc:1648
unsigned NumPoly(void) const
Definition: PolySNP.cc:807
virtual double TajimasD(void) const
Definition: PolySNP.cc:929
The namespace in which this library resides.
virtual double ThetaW(void) const
Definition: PolySNP.cc:314
double b_sub_n(void) const
Definition: PolySNP.cc:1537
virtual unsigned Minrec(void) const
Definition: PolySNP.cc:1665
double VarThetaW(void) const
Definition: PolySNP.cc:1341
unsigned DandVK(void) const
Definition: PolySNP.cc:1631
void DepaulisVeuilleStatistics(void) const
Definition: PolySNP.cc:1050
double b_sub_n_plus1(void) const
Definition: PolySNP.cc:1552
double SamplingVarPi(void) const
Definition: PolySNP.cc:1324
virtual double WallsB(void) const
Definition: PolySNP.cc:1144
double a_sub_n_plus1(void) const
Definition: PolySNP.cc:1520
class __attribute__((deprecated)) FST
Functor to count the number of states, excluding gaps and missing data, in a range of characters...
Definition: FST.hpp:41
PolySNP(const Sequence::PolyTable *data, bool haveOutgroup=false, unsigned outgroup=0, bool totMuts=true)
Definition: PolySNP.cc:171
virtual double FuLiFStar(void) const
Definition: PolySNP.cc:1462
virtual unsigned NumExternalMutations(void) const
Definition: PolySNP.cc:885
virtual double Dnominator(void) const
Definition: PolySNP.cc:1014
virtual double ThetaL(void) const
Definition: PolySNP.cc:594
virtual double ThetaPi(void) const
Definition: PolySNP.cc:193
double c_sub_n(void) const
Definition: PolySNP.cc:1568
virtual unsigned WallsBprime(void) const
Definition: PolySNP.cc:1262
virtual double Hprime(const bool &likeThorntonAndolfatto=false) const
Definition: PolySNP.cc:952
namespace Sequence::Recombination
double a_sub_n(void) const
Definition: PolySNP.cc:1504
std::vector< PairwiseLDstats > Disequilibrium(const unsigned &mincount=1, const double &max_marker_distance=std::numeric_limits< double >::max()) const
Definition: PolySNP.cc:1837
virtual double WallsQ(void) const
Definition: PolySNP.cc:1275
double d_sub_n(void) const
Definition: PolySNP.cc:1595
double StochasticVarPi(void) const
Definition: PolySNP.cc:1306
virtual double FuLiDStar(void) const
Definition: PolySNP.cc:1428
virtual double FuLiD(void) const
Definition: PolySNP.cc:1359