#include #include "base/CommandLineParser.h" #include "analysis/DNAVector.h" #include "base/FileParser.h" #include "aligns/KmerAlignCore.h" int main(int argc,char** argv) { commandArg aStringCmmd("-t","fasta transcript file"); commandArg bStringCmmd("-i","inchworm file"); commandArg oStringCmmd("-o","output fasta file"); commandLineParser P(argc,argv); P.SetDescription("Maps chrysalis components to a reference."); P.registerArg(aStringCmmd); P.registerArg(bStringCmmd); P.registerArg(oStringCmmd); P.parse(); string aString = P.GetStringValueFor(aStringCmmd); string bString = P.GetStringValueFor(bStringCmmd); string outFile = P.GetStringValueFor(oStringCmmd); vecDNAVector ref; vecDNAVector iworm; vecDNAVector out; cout << "Reading files..." << endl; ref.Read(aString); iworm.Read(bString); cout << "done!" << endl; //test.ReverseComplement(); TranslateBasesToNumberExact trans; KmerAlignCore core; core.SetTranslator(&trans); core.SetNumTables(2); core.AddData(ref); //core.SortAll(); size_t i, j; int min = 24; int k = 24; for (i=0; i 300) // continue; vec matchesLeft, matchesRight, matchesMiddle; int l = d.isize(); core.GetMatches(matchesMiddle, d, l/2-k/2); if (matchesMiddle.isize() != 0) { //cout << "Middle match." << endl; continue; } core.GetMatches(matchesLeft, d, 0); core.GetMatches(matchesRight, d, l-k); //cout << "left=" << matchesLeft.isize() << " right=" << matchesRight.isize() << endl; if (matchesLeft.isize() == 0 || matchesRight.isize() == 0) continue; if (matchesLeft.isize() > 8 || matchesRight.isize() > 8) continue; bool bBad = false; svec matches; svec posLeft; svec posRight; int diff = d.isize()-k; for (j=0; j