void RareDisplay::init(string label){
try {
this->label = label;
- if(nIters != 1){
- tempInFile.clear();
- openOutputFile(tempOutName, tempOutFile);
- openInputFile(tempInName, tempInFile);
- }
- else{
- openOutputFile(tempOutName, tempOutFile);
- }
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the RareDisplay class Function init. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the RareDisplay class function init. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ m->errorOut(e, "RareDisplay", "init");
exit(1);
}
}
if(nIters != 1){
- double oldNSeqs, oldMean, oldVar;
-
- tempInFile >> oldNSeqs >> oldMean >> oldVar;
-
- double oldS = oldVar * ( nIters - 2 );
- double delta = data[0] - oldMean;
- double newMean = oldMean + delta / nIters;
+ double oldS = var[index] * ( nIters - 2 );
+ double delta = data[0] - results[index];
+ double newMean = results[index] + delta / nIters;
double newS = oldS + delta * ( data[0] - newMean );
double newVar = newS / ( nIters - 1 );
- tempOutFile << newNSeqs << '\t' << newMean << '\t' << newVar << endl;
+ seqs[index] = newNSeqs;
+ results[index] = newMean;
+ var[index] = newVar;
+
+ index++;
}
else{
- tempOutFile << newNSeqs << '\t' << data[0] << '\t' << 0 << endl;
+ seqs.push_back(newNSeqs);
+ results.push_back(data[0]);
+ var.push_back(0.0);
}
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the RareDisplay class Function update. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the RareDisplay class function update. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ m->errorOut(e, "RareDisplay", "update");
exit(1);
}
}
double newNSeqs = data[0];
if(nIters != 1){
- double oldNSeqs, oldMean, oldVar;
-
- tempInFile >> oldNSeqs >> oldMean >> oldVar;
- double oldS = oldVar * ( nIters - 2 );
- double delta = data[0] - oldMean;
- double newMean = oldMean + delta / nIters;
+ double oldS = var[index] * ( nIters - 2 );
+ double delta = data[0] - results[index];
+ double newMean = results[index] + delta / nIters;
double newS = oldS + delta * ( data[0] - newMean );
double newVar = newS / ( nIters - 1 );
-
- tempOutFile << newNSeqs << '\t' << newMean << '\t' << newVar << endl;
+ seqs[index] = newNSeqs;
+ results[index] = newMean;
+ var[index] = newVar;
+
+ index++;
}
else{
- tempOutFile << newNSeqs << '\t' << data[0] << '\t' << 0 << endl;
+
+ seqs.push_back(newNSeqs);
+ results.push_back(data[0]);
+ var.push_back(0.0);
+
}
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the RareDisplay class Function update. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the RareDisplay class function update. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ m->errorOut(e, "RareDisplay", "update");
exit(1);
}
}
void RareDisplay::reset(){
try {
- if(nIters != 1){
- tempOutFile.close();
- tempInFile.close();
- }
- else{
- tempOutFile.close();
- }
-
nIters++;
-
- remove(tempInName.c_str());
- renameOk = rename(tempOutName.c_str(), tempInName.c_str());
-
- //checks to make sure user was able to rename and remove successfully
- if (renameOk != 0) { cout << "Unable to rename the necessary temp files." << endl; }
+ index = 0;
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the RareDisplay class Function reset. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the RareDisplay class function reset. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ m->errorOut(e, "RareDisplay", "reset");
exit(1);
}
}
output->initFile(label);
- openInputFile(tempInName, tempInFile);
-
- while(!tempInFile.eof()){
- int nSeqs;
- tempInFile >> nSeqs;
+ for (int i = 0; i < seqs.size(); i++) {
vector<double> data(3,0);
- double variance = 0;
-
- tempInFile >> data[0];
- tempInFile >> variance;
-
+ double variance = var[i];
+
+ data[0] = results[i];
+
double ci = 1.96 * pow(variance, 0.5);
data[1] = data[0] - ci;
data[2] = data[0] + ci;
- output->output(nSeqs, data);
-
- gobble(tempInFile);
+ output->output(seqs[i], data);
}
- tempInFile.close();
-
- remove(tempInName.c_str());
- remove(tempOutName.c_str());
nIters = 1;
+ index = 0;
+
+ seqs.clear();
+ results.clear();
+ var.clear();
+
output->resetFile();
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the RareDisplay class Function close. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the RareDisplay class function close. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ m->errorOut(e, "RareDisplay", "close");
exit(1);
}
}