//get labels you want to keep
labels = m->readAccnos(accnosfile);
+ //simplfy labels
+ set<string> newLabels;
+ for (set<string>::iterator it = labels.begin(); it != labels.end(); it++) { newLabels.insert(m->getSimpleLabel(*it)); }
+ labels = newLabels;
if (m->debug) { m->mothurOut("[DEBUG]: numlabels = " + toString(labels.size()) + "\n"); }
if (m->debug) { m->mothurOut("[DEBUG]: " + otu + toString(size) + tax + "\n"); }
- if (labels.count(otu) == 0) {
+ if (labels.count(m->getSimpleLabel(otu)) == 0) {
wroteSomething = true;
out << otu << '\t' << size << '\t' << tax << endl;
}else { removedCount++; }
in >> otu1 >> otu2;
string line = m->getline(in); m->gobble(in);
- if ((labels.count(otu1) == 0) && (labels.count(otu2) == 0)){
+ if ((labels.count(m->getSimpleLabel(otu1)) == 0) && (labels.count(m->getSimpleLabel(otu2)) == 0)){
wroteSomething = true;
out << otu1 << '\t' << otu2 << '\t' << line << endl;
in >> otu;
string line = m->getline(in); m->gobble(in);
- if (labels.count(otu) == 0) {
+ if (labels.count(m->getSimpleLabel(otu)) == 0) {
wroteSomething = true;
out << otu << '\t' << line << endl;
if (m->control_pressed) { for (int j = 0; j < newLookup.size(); j++) { delete newLookup[j]; } for (int j = 0; j < lookup.size(); j++) { delete lookup[j]; } return 0; }
//is this otu on the list
- if (labels.count(m->currentBinLabels[i]) == 0) {
+ if (labels.count(m->getSimpleLabel(m->currentSharedBinLabels[i])) == 0) {
wroteSomething = true;
- newLabels.push_back(m->currentBinLabels[i]);
+ newLabels.push_back(m->currentSharedBinLabels[i]);
for (int j = 0; j < newLookup.size(); j++) { //add this OTU to the new lookup
newLookup[j]->push_back(lookup[j]->getAbundance(i), lookup[j]->getGroup());
}
for (int j = 0; j < lookup.size(); j++) { delete lookup[j]; }
- m->currentBinLabels = newLabels;
+ m->currentSharedBinLabels = newLabels;
newLookup[0]->printHeaders(out);
newList.setLabel(list->getLabel());
int removedCount = 0;
bool wroteSomething = false;
- string snumBins = toString(list->getNumBins());
+ vector<string> binLabels = list->getLabels();
+ vector<string> newLabels;
for (int i = 0; i < list->getNumBins(); i++) {
if (m->control_pressed) { delete list; return 0;}
- //create a label for this otu
- string otuLabel = "Otu";
- string sbinNumber = toString(i+1);
- if (sbinNumber.length() < snumBins.length()) {
- int diff = snumBins.length() - sbinNumber.length();
- for (int h = 0; h < diff; h++) { otuLabel += "0"; }
- }
- otuLabel += sbinNumber;
-
- if (labels.count(otuLabel) == 0) {
+ if (labels.count(m->getSimpleLabel(binLabels[i])) == 0) {
newList.push_back(list->get(i));
+ newLabels.push_back(binLabels[i]);
}else { removedCount++; }
}
//print new listvector
if (newList.getNumBins() != 0) {
wroteSomething = true;
+ newList.setLabels(newLabels);
+ newList.printHeaders(out);
newList.print(out);
}
out.close();