Permalink
Browse files

Adds filter to improve time in pre.cluster

  • Loading branch information...
1 parent 78d4a1c commit b33b1a467799c683d357e4ff10a10d94f0117aaf @mothur-westcott mothur-westcott committed Sep 22, 2016
Showing with 18 additions and 10 deletions.
  1. +12 −0 source/calculators/filters.h
  2. +6 −10 source/commands/preclustercommand.cpp
@@ -62,6 +62,18 @@ class Filters {
}
}
+
+ void doVerticalAllBases() {
+
+ for(int i=0;i<alignmentLength;i++){
+ if(gap[i] == numSeqs) { filter[i] = '0'; }
+ else if(a[i] == numSeqs) { filter[i] = '0'; }
+ else if(t[i] == numSeqs) { filter[i] = '0'; }
+ else if(c[i] == numSeqs) { filter[i] = '0'; }
+ else if(g[i] == numSeqs) { filter[i] = '0'; }
+ }
+
+ }
void doTrump(Sequence seq) {
@@ -691,8 +691,8 @@ int PreClusterCommand::process(string newMapFile){
chunk += alignSeqs[j].seq.getName() + "\t" + toString(alignSeqs[j].numIdentical) + "\t" + toString(mismatch) + "\t" + alignSeqs[j].seq.getAligned() + "\n";
alignSeqs[j].active = 0;
- //alignSeqs[j].numIdentical = 0;
- //alignSeqs[j].diffs = mismatch;
+ alignSeqs[j].numIdentical = 0;
+ alignSeqs[j].diffs = mismatch;
count++;
}
}//end if j active
@@ -860,11 +860,11 @@ int PreClusterCommand::loadSeqs(map<string, string>& thisName, vector<Sequence>&
}
}
+ length = *(lengths.begin());
+
if (lengths.size() > 1) { method = "unaligned"; }
else if (lengths.size() == 1) { method = "aligned"; filterSeqs(); }
- length = *(lengths.begin());
-
//sanity check
if (error) { m->control_pressed = true; }
@@ -1041,28 +1041,24 @@ int PreClusterCommand::filterSeqs(){
string filterString = "";
Filters F;
- F.setTrump('.');
F.setLength(length);
F.initialize();
F.setFilter(string(length, '1'));
for (int i = 0; i < alignSeqs.size(); i++) {
- F.doTrump(alignSeqs[i].seq);
F.getFreqs(alignSeqs[i].seq);
}
F.setNumSeqs(alignSeqs.size());
- F.doVertical();
+ F.doVerticalAllBases();
filterString = F.getFilter();
//run filter
for (int i = 0; i < alignSeqs.size(); i++) {
alignSeqs[i].filteredSeq = "";
string align = alignSeqs[i].seq.getAligned();
for(int j=0;j<length;j++){
- if(filterString[j] == '1'){
- alignSeqs[i].filteredSeq += align[j];
- }
+ if(filterString[j] == '1'){ alignSeqs[i].filteredSeq += align[j]; }
}
}

0 comments on commit b33b1a4

Please sign in to comment.