libsequence  1.9.5
slidingWindow2.cc
1 #include <Sequence/Fasta.hpp>
2 #include <Sequence/Alignment.hpp>
3 #include <Sequence/PolySites.hpp>
4 #include <Sequence/PolySNP.hpp>
6 #include <iostream>
7 
8 
9 //these are made explicit for example purposes
10 using std::vector;
11 using std::cout;
12 using std::endl;
13 
14 //run a non-overlapping 100bp window over a SNP data set
15 
16 int main(int argc, char **argv)
17 {
18  const char *infilename = argv[1];
19 
20  vector<Sequence::Fasta> data;
21 
22  Sequence::Alignment::GetData(data,infilename);
23 
24  if ( Sequence::Alignment::IsAlignment(data) &&
25  Sequence::Alignment::validForPolyAnalysis(data.begin(),data.end()) )
26  {
27  const unsigned alignmentLength = data[0].length();
28 
29  Sequence::PolySites SNPtable(data);
30 
31  Sequence::PolySNP analyzeRegion(&SNPtable);
32 
33  cout << "Tajima's D for the whole dataset is: "
34  << analyzeRegion.TajimasD()
35  << endl;
36 
37  Sequence::PolyTableSlice<Sequence::PolySites> windows(SNPtable.sbegin(),
38  SNPtable.send(),
39  100, //window length (bp)
40  100, //step size (bp)
41  alignmentLength);
42 
43  for(unsigned i = 0 ; i < windows.size() ; ++i)
44  {
45  Sequence::PolySites window(windows[i]); //use copy constructor
46  Sequence::PolySNP analyzeWindow(&window);
47  cout << "Tajima's D for window "
48  << i
49  << " is: "
50  << analyzeWindow.TajimasD()
51  << endl;
52  }
53  }
54 }
Polymorphism tables for sequence data.
Definition: PolySites.hpp:33
Molecular population genetic analysis.
Definition: PolySNP.hpp:86
declaration of Sequence::PolySNP, a class to analyze SNP data
Declaration of namespace Sequence::Alignment.
Sequence::PolySites, generates polymorphism tables from data.
Declaration of Sequence::Fasta streams.
A container class for "sliding windows" along a polymorphism table.