#include "getlineagecommand.h"
#include "sequence.hpp"
#include "listvector.hpp"
+#include "counttable.h"
//**********************************************************************************************************************
vector<string> GetLineageCommand::setParameters(){
if (type == "fasta") { outputFileName = "pick" + m->getExtension(inputName); }
else if (type == "taxonomy") { outputFileName = "pick" + m->getExtension(inputName); }
else if (type == "name") { outputFileName = "pick" + m->getExtension(inputName); }
- else if (type == "count") { outputFileName = "pick.count.table"; }
+ else if (type == "count") { outputFileName = "pick.count_table"; }
else if (type == "group") { outputFileName = "pick" + m->getExtension(inputName); }
else if (type == "list") { outputFileName = "pick" + m->getExtension(inputName); }
else if (type == "alignreport") { outputFileName = "pick.align.report"; }
}
in.close();
out.close();
+
+ //check for groups that have been eliminated
+ CountTable ct;
+ if (ct.testGroups(outputFileName)) {
+ ct.readTable(outputFileName);
+ ct.printTable(outputFileName);
+ }
+
if (wroteSomething == false) { m->mothurOut("Your file contains does not contain any sequences from " + taxons + "."); m->mothurOutEndLine(); }
outputTypes["count"].push_back(outputFileName); outputNames.push_back(outputFileName);
in >> name; //read from first column
in >> tax; //read from second column
+ string noQuotesTax = m->removeQuotes(tax);
+
for (int j = 0; j < listOfTaxons.size(); j++) {
- string newtax = tax;
+ string newtax = noQuotesTax;
//if the users file contains confidence scores we want to ignore them when searching for the taxons, unless the taxon has them
if (!taxonsHasConfidence[j]) {
- int hasConfidences = tax.find_first_of('(');
+ int hasConfidences = noQuotesTax.find_first_of('(');
if (hasConfidences != string::npos) {
- newtax = tax;
+ newtax = noQuotesTax;
m->removeConfidences(newtax);
}
break;
}
}else{//if listOfTaxons[i] has them and you don't them remove taxons
- int hasConfidences = tax.find_first_of('(');
+ int hasConfidences = noQuotesTax.find_first_of('(');
if (hasConfidences == string::npos) {
int pos = newtax.find(noConfidenceTaxons[j]);
}else { //both have confidences so we want to make sure the users confidences are greater then or equal to the taxons
//first remove confidences from both and see if the taxonomy exists
- string noNewTax = tax;
- int hasConfidences = tax.find_first_of('(');
+ string noNewTax = noQuotesTax;
+ int hasConfidences = noQuotesTax.find_first_of('(');
if (hasConfidences != string::npos) {
- noNewTax = tax;
+ noNewTax = noQuotesTax;
m->removeConfidences(noNewTax);
}
/**************************************************************************************************/
vector< map<string, float> > GetLineageCommand::getTaxons(string tax) {
try {
-
+
vector< map<string, float> > t;
string taxon = "";
int taxLength = tax.length();
+
for(int i=0;i<taxLength;i++){
if(tax[i] == ';'){
-
- int openParen = taxon.find_first_of('(');
+
+ int openParen = taxon.find_last_of('(');
int closeParen = taxon.find_last_of(')');
string newtaxon, confidence;
if ((openParen != string::npos) && (closeParen != string::npos)) {
- newtaxon = taxon.substr(0, openParen); //rip off confidence
- confidence = taxon.substr((openParen+1), (closeParen-openParen-1));
+ string confidenceScore = taxon.substr(openParen+1, (closeParen-(openParen+1)));
+ if (m->isNumeric1(confidenceScore)) { //its a confidence
+ newtaxon = taxon.substr(0, openParen); //rip off confidence
+ confidence = taxon.substr((openParen+1), (closeParen-openParen-1));
+ }else { //its part of the taxon
+ newtaxon = taxon;
+ confidence = "0";
+ }
}else{
newtaxon = taxon;
confidence = "0";
map<string, float> temp;
temp[newtaxon] = con;
+
t.push_back(temp);
-
taxon = "";
}
else{
taxon += tax[i];
+
}
}