00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _POLYSNP_H_
00025 #define _POLYSNP_H_
00026
00075 #include <vector>
00076 #include <memory>
00077 #include <limits>
00078 #include <boost/utility.hpp>
00079 namespace Sequence
00080 {
00081 class PolyTable;
00082 class _PolySNPImpl;
00083 class PolySNP : boost::noncopyable
00084 {
00085 private:
00086 protected:
00087 std::auto_ptr<_PolySNPImpl> rep;
00088 void DepaulisVeuilleStatistics (void);
00089 virtual void WallStats(void);
00090
00091 double a_sub_n (void) ;
00092 double a_sub_n_plus1 (void) ;
00093 double b_sub_n (void) ;
00094 double b_sub_n_plus1 (void) ;
00095 double c_sub_n (void) ;
00096 double d_sub_n (void) ;
00097 public:
00098 explicit PolySNP (const Sequence::PolyTable * data, bool haveOutgroup = false,
00099 unsigned outgroup = 0, bool totMuts = true);
00100 virtual ~ PolySNP (void);
00101
00102 virtual double ThetaPi (void);
00103 virtual double ThetaW (void);
00104 virtual double ThetaH (void);
00105 virtual double ThetaL (void);
00106
00107 double VarPi (void);
00108 double StochasticVarPi(void);
00109 double SamplingVarPi (void);
00110 double VarThetaW (void);
00111
00112 unsigned NumPoly (void);
00113 virtual unsigned NumMutations (void);
00114 virtual unsigned NumSingletons (void);
00115 virtual unsigned NumExternalMutations (void);
00116
00117 virtual double TajimasD (void);
00118 virtual double Hprime (bool likeThorntonAndolfatto = false);
00119
00120 virtual double Dnominator (void);
00121 virtual double FuLiD (void);
00122 virtual double FuLiF (void);
00123 virtual double FuLiDStar (void);
00124 virtual double FuLiFStar (void);
00125
00126 double DandVH (void);
00127 unsigned DandVK (void);
00128 virtual double WallsB(void);
00129 virtual unsigned WallsBprime(void);
00130 virtual double WallsQ(void);
00131
00132 double HudsonsC (void);
00133 virtual unsigned Minrec (void);
00134 std::vector < std::vector < double > >
00135 Disequilibrium( const unsigned & mincount = 1,
00136 const double & max_marker_distance = std::numeric_limits<double>::max()) ;
00137 };
00138 }
00139 #endif