libsequence  1.9.5
slidingWindow.cc
#include <vector>
#include <iostream>
//Read in a data set of aligned sequence in Fasta
//format. Create a polymorphism table. Calculate
//Tajima's D for the whole table. Then, run a sliding
//window of 1 segregating site (with a jump size of 1)
//along the SNP table, and use that to calculate Tajima's
//D for each site.
//This is a somewhat contrived example, but it illustrates
//the sliding window code.
int main(int argc, char **argv)
{
const char * infilename = argv[1];
std::vector<Sequence::Fasta> data;
Sequence::Alignment::GetData(data,infilename);
Sequence::Alignment::validForPolyAnalysis(data.begin(),data.end()) )
{
Sequence::PolySites SNPtable(data);
if (! SNPtable.empty())
{
Sequence::PolySNP analyzeRegion(&SNPtable);
std::cout << "Tajima's D for the region is: "<< analyzeRegion.TajimasD() << std::endl;
SNPtable.send(),1u,1u);
while(itr < windows.cend())
{
Sequence::PolySites window = windows.get_slice(itr);
Sequence::PolySNP analyzeWindow(&window);
std::cout << "D for window "
<< itr-windows.cbegin()
<< " is: "
<< analyzeWindow.TajimasD()
<< std::endl;
++itr;
}
}
}
}