/***********************************************************************/
-SharedRAbundFloatVector::SharedRAbundFloatVector() : DataVector(), maxRank(0.0), numBins(0), numSeqs(0.0) {globaldata = GlobalData::getInstance();}
+SharedRAbundFloatVector::SharedRAbundFloatVector() : DataVector(), maxRank(0.0), numBins(0), numSeqs(0.0) {}
/***********************************************************************/
SharedRAbundFloatVector::~SharedRAbundFloatVector() {}
/***********************************************************************/
SharedRAbundFloatVector::SharedRAbundFloatVector(int n) : DataVector(), maxRank(0.0), numBins(n), numSeqs(0.0) {
- globaldata = GlobalData::getInstance();
+
individualFloat newGuy;
//initialize data
for (int i=0; i< n; i++) {
//reads a shared file
SharedRAbundFloatVector::SharedRAbundFloatVector(ifstream& f) : DataVector(), maxRank(0.0), numBins(0), numSeqs(0.0) {
try {
- globaldata = GlobalData::getInstance();
- if (globaldata->gGroupmap == NULL) { groupmap = new GroupMap(); }
+ m->namesOfGroups.clear();
int num, count;
float inputData;
for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; lookup[i] = NULL; }
lookup.clear();
- if (globaldata->saveNextLabel == "") { f >> label; }
- else { label = globaldata->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;
lookup[0]->setLabel(label);
lookup[0]->setGroup(groupN);
- if (globaldata->gGroupmap == NULL) {
- //save group in groupmap
- groupmap->namesOfGroups.push_back(groupN);
- groupmap->groupIndex[groupN] = 0;
- }
+ m->namesOfGroups.push_back(groupN);
//fill vector. data = first sharedrabund in file
for(int i=0;i<num;i++){
f >> groupN >> num;
count++;
- if (globaldata->gGroupmap == NULL) {
- //save group in groupmap
- groupmap->namesOfGroups.push_back(groupN);
- groupmap->groupIndex[groupN] = count;
- }
+ m->namesOfGroups.push_back(groupN);
//add new vector to lookup
temp = new SharedRAbundFloatVector();
if (f.eof() != true) { f >> nextLabel; }
}
- globaldata->saveNextLabel = nextLabel;
+ m->saveNextLabel = nextLabel;
- if (globaldata->gGroupmap == NULL) { globaldata->gGroupmap = groupmap; }
-
}
catch(exception& e) {
m->errorOut(e, "SharedRAbundFloatVector", "SharedRAbundFloatVector");
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';
SharedUtil* util;
util = new SharedUtil();
- util->setGroups(globaldata->Groups, globaldata->gGroupmap->namesOfGroups);
+ util->setGroups(m->Groups, m->namesOfGroups);
bool remove = false;
for (int i = 0; i < lookup.size(); i++) {
//if this sharedrabund is not from a group the user wants then delete it.
- if (util->isValidGroup(lookup[i]->getGroup(), globaldata->Groups) == false) {
+ if (util->isValidGroup(lookup[i]->getGroup(), m->Groups) == false) {
delete lookup[i]; lookup[i] = NULL;
lookup.erase(lookup.begin()+i);
i--;