virtual void resize(int) = 0;
virtual int size() = 0;
virtual void print(ostream&) = 0;
+ virtual void printHeaders(ostream&) {};
virtual void clear() = 0;
void setLabel(string l) { label = l; }
mout->Treenames.clear();
mout->names.clear();
mout->saveNextLabel = "";
+ mout->printedHeaders = false;
Command* command = cFactory->getCommand(commandName, options);
quitCommandCalled = command->execute();
mout->Treenames.clear();
mout->names.clear();
mout->saveNextLabel = "";
+ mout->printedHeaders = false;
Command* command = cFactory->getCommand(commandName, options);
quitCommandCalled = command->execute();
mout->Treenames.clear();
mout->names.clear();
mout->saveNextLabel = "";
+ mout->printedHeaders = false;
Command* command = cFactory->getCommand(commandName, options);
quitCommandCalled = command->execute();
if(allLines == 1 || labels.count(lookup[0]->getLabel()) == 1){
m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
getRelAbundance(lookup, out);
processedLabels.insert(lookup[0]->getLabel());
for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; }
lookup = input->getSharedRAbundVectors(lastLabel);
m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
-
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
getRelAbundance(lookup, out);
processedLabels.insert(lookup[0]->getLabel());
lookup = input->getSharedRAbundVectors(lastLabel);
m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
-
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
getRelAbundance(lookup, out);
for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; }
filename = fName;
m->saveNextLabel = "";
+
}
/***********************************************************************/
InputData::~InputData(){
fileHandle.close();
m->saveNextLabel = "";
+
}
/***********************************************************************/
ofHandle.close();
m->openInputFile(fName, fileHandle);
+ m->saveNextLabel = "";
}
catch(exception& e) {
m->errorOut(e, "InputData", "InputData");
if(allLines == 1 || labels.count(lookup[0]->getLabel()) == 1){
m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
+
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
process(lookup, out);
processedLabels.insert(lookup[0]->getLabel());
lookup = input.getSharedRAbundVectors(lastLabel);
m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
process(lookup, out);
processedLabels.insert(lookup[0]->getLabel());
m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
process(lookup, out);
for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; }
vector<string> Treenames;
map<string, string> names;
vector<string> namesOfGroups;
- string saveNextLabel, argv;
+ string saveNextLabel, argv, sharedHeaderMode;
+ bool printedHeaders;
//functions from mothur.h
//file operations
processors = "1";
flowfile = "";
gui = false;
+ printedHeaders = false;
+ sharedHeaderMode = "";
};
~MothurOut();
m->mothurOut("Normalizing to " + toString(norm) + "."); m->mothurOutEndLine();
}
+
//as long as you are not at the end of the file or done wih the lines you want
while((lookup[0] != NULL) && ((allLines == 1) || (userLabels.size() != 0))) {
if(allLines == 1 || labels.count(lookup[0]->getLabel()) == 1){
m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
normalize(lookup, out);
processedLabels.insert(lookup[0]->getLabel());
for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; }
lookup = input->getSharedRAbundVectors(lastLabel);
m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
-
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
normalize(lookup, out);
processedLabels.insert(lookup[0]->getLabel());
lookup = input->getSharedRAbundVectors(lastLabel);
m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
-
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
normalize(lookup, out);
for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; }
if(allLines == 1 || labels.count(lookupFloat[0]->getLabel()) == 1){
m->mothurOut(lookupFloat[0]->getLabel()); m->mothurOutEndLine();
+
+ if (!m->printedHeaders) { lookupFloat[0]->printHeaders(out); }
normalize(lookupFloat, out);
processedLabels.insert(lookupFloat[0]->getLabel());
for (int i = 0; i < lookupFloat.size(); i++) { delete lookupFloat[i]; }
lookupFloat = input->getSharedRAbundFloatVectors(lastLabel);
- m->mothurOut(lookupFloat[0]->getLabel()); m->mothurOutEndLine();
+ m->mothurOut(lookupFloat[0]->getLabel()); m->mothurOutEndLine();
+ if (!m->printedHeaders) { lookupFloat[0]->printHeaders(out); }
normalize(lookupFloat, out);
processedLabels.insert(lookupFloat[0]->getLabel());
m->mothurOut(lookupFloat[0]->getLabel()); m->mothurOutEndLine();
+ if (!m->printedHeaders) { lookupFloat[0]->printHeaders(out); }
normalize(lookupFloat, out);
for (int i = 0; i < lookupFloat.size(); i++) { delete lookupFloat[i]; }
processedLabels.insert(lookup[0]->getLabel());
userLabels.erase(lookup[0]->getLabel());
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
processLookup(lookup, out);
}
processedLabels.insert(lookup[0]->getLabel());
userLabels.erase(lookup[0]->getLabel());
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
processLookup(lookup, out);
//restore real lastlabel to save below
m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
processLookup(lookup, out);
for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; }
return 0;
}
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
printSharedData(lookup); //prints info to the .shared file
for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; }
return 0;
}
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
printSharedData(lookup); //prints info to the .shared file
for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; }
return 0;
}
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
printSharedData(lookup); //prints info to the .shared file
for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; }
delete SharedList;
for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; lookup[i] = NULL; }
lookup.clear();
- if (m->saveNextLabel == "") { f >> label; }
- else { label = m->saveNextLabel; }
+ //are we at the beginning of the file??
+ if (m->saveNextLabel == "") {
+ f >> label;
+
+ //is this a shared file that has headers
+ if (label == "label") {
+ //eat rest of line
+ label = m->getline(f); m->gobble(f);
+ f >> label;
+ }
+ }else { label = m->saveNextLabel; }
//read in first row since you know there is at least 1 group.
f >> groupN >> num;
return data.size();
}
/***********************************************************************/
+void SharedRAbundFloatVector::printHeaders(ostream& output){
+ try {
+ output << "label\tGroup\tnumOtus\t";
+ if (m->sharedHeaderMode == "tax") {
+ for (int i = 0; i < numBins; i++) { output << "PhyloType" << (i+1) << '\t'; }
+ output << endl;
+ }else {
+ for (int i = 0; i < numBins; i++) { output << "Otu" << (i+1) << '\t'; }
+ output << endl;
+ }
+ m->printedHeaders = true;
+ }
+ catch(exception& e) {
+ m->errorOut(e, "SharedRAbundVector", "printHeaders");
+ exit(1);
+ }
+}
+/***********************************************************************/
void SharedRAbundFloatVector::print(ostream& output){
try {
output << numBins << '\t';
int size();
void print(ostream&);
+ void printHeaders(ostream&);
RAbundVector getRAbundVector();
SAbundVector getSAbundVector();
for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; lookup[i] = NULL; } lookup.clear();
- if (m->saveNextLabel == "") { f >> label; }
- else { label = m->saveNextLabel; }
+ //are we at the beginning of the file??
+ if (m->saveNextLabel == "") {
+ f >> label;
+
+ //is this a shared file that has headers
+ if (label == "label") {
+ //eat rest of line
+ label = m->getline(f); m->gobble(f);
+ f >> label;
+ }
+ }else { label = m->saveNextLabel; }
//read in first row since you know there is at least 1 group.
f >> groupN >> num;
return data.size();
}
+
+/***********************************************************************/
+void SharedRAbundVector::printHeaders(ostream& output){
+ try {
+ output << "label\tGroup\tnumOtus\t";
+ if (m->sharedHeaderMode == "tax") {
+ for (int i = 0; i < numBins; i++) { output << "PhyloType" << (i+1) << '\t'; }
+ output << endl;
+ }else {
+ for (int i = 0; i < numBins; i++) { output << "Otu" << (i+1) << '\t'; }
+ output << endl;
+ }
+ m->printedHeaders = true;
+ }
+ catch(exception& e) {
+ m->errorOut(e, "SharedRAbundVector", "printHeaders");
+ exit(1);
+ }
+}
/***********************************************************************/
-void SharedRAbundVector::print(ostream& output){
+void SharedRAbundVector::print(ostream& output) {
try {
output << numBins << '\t';
vector<individual>::reverse_iterator rend();
void print(ostream&);
+ void printHeaders(ostream&);
RAbundVector getRAbundVector();
RAbundVector getRAbundVector2();
/***********************************************************************/
-SharedSAbundVector::SharedSAbundVector() : DataVector(), maxRank(0), numBins(0), numSeqs(0){}
+SharedSAbundVector::SharedSAbundVector() : DataVector(), maxRank(0), numBins(0), numSeqs(0){ }
/***********************************************************************/
m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
processShared(lookup, out);
processedLabels.insert(lookup[0]->getLabel());
lookup = input->getSharedRAbundVectors(lastLabel);
m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
processShared(lookup, out);
processedLabels.insert(lookup[0]->getLabel());
m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
+ if (!m->printedHeaders) { lookup[0]->printHeaders(out); }
processShared(lookup, out);
for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; }
if(it != container.end()){ //no parameter given
if(isFile == true) {
+
+ int pos = (it->second).find(".tx.");
+ if (pos != string::npos) { m->sharedHeaderMode = "tax"; }
+ else { m->sharedHeaderMode = "otu"; }
#ifdef USE_MPI
int pid, processors;