}
}
}
-
- }
-
+ }
}
catch(exception& e) {
m->errorOut(e, "ClassifySeqsCommand", "ClassifySeqsCommand");
int ClassifySeqsCommand::execute(){
try {
if (abort == true) { if (calledHelp) { return 0; } return 2; }
-
+
if(method == "bayesian"){ classify = new Bayesian(taxonomyFileName, templateFileName, search, kmerSize, cutoff, iters, rand(), flip); }
else if(method == "knn"){ classify = new Knn(taxonomyFileName, templateFileName, search, kmerSize, gapOpen, gapExtend, match, misMatch, numWanted, rand()); }
else {
string baseTName = taxonomyFileName;
if (taxonomyFileName == "saved") {baseTName = rdb->getSavedTaxonomy(); }
- string RippedTaxName = m->getRootName(m->getSimpleName(baseTName));
- RippedTaxName = m->getExtension(RippedTaxName.substr(0, RippedTaxName.length()-1));
- if (RippedTaxName[0] == '.') { RippedTaxName = RippedTaxName.substr(1, RippedTaxName.length()); }
- RippedTaxName += ".";
-
+ //set rippedTaxName to
+ string RippedTaxName = "";
+ bool foundDot = false;
+ for (int i = baseTName.length()-1; i >= 0; i--) {
+ cout << baseTName[i] << endl;
+ if (foundDot && (baseTName[i] != '.')) { RippedTaxName = baseTName[i] + RippedTaxName; }
+ else if (foundDot && (baseTName[i] == '.')) { break; }
+ else if (!foundDot && (baseTName[i] == '.')) { foundDot = true; }
+ }
+ if (RippedTaxName != "") { RippedTaxName += "."; }
+
if (outputDir == "") { outputDir += m->hasPath(fastaFileNames[s]); }
string newTaxonomyFile = outputDir + m->getRootName(m->getSimpleName(fastaFileNames[s])) + RippedTaxName + "taxonomy";
string newaccnosFile = outputDir + m->getRootName(m->getSimpleName(fastaFileNames[s])) + RippedTaxName + "flip.accnos";
else { m->mothurRemove(accnos); } //remove so other files can be renamed to it
for(int i=0;i<processIDS.size();i++){
- appendTaxFiles((taxFileName + toString(processIDS[i]) + ".temp"), taxFileName);
- appendTaxFiles((tempTaxFile + toString(processIDS[i]) + ".temp"), tempTaxFile);
+ m->appendFiles((taxFileName + toString(processIDS[i]) + ".temp"), taxFileName);
+ m->appendFiles((tempTaxFile + toString(processIDS[i]) + ".temp"), tempTaxFile);
if (!(m->isBlank(accnos + toString(processIDS[i]) + ".temp"))) {
nonBlankAccnosFiles.push_back(accnos + toString(processIDS[i]) + ".temp");
}else { m->mothurRemove((accnos + toString(processIDS[i]) + ".temp")); }
rename(nonBlankAccnosFiles[0].c_str(), accnos.c_str());
for (int h=1; h < nonBlankAccnosFiles.size(); h++) {
- appendTaxFiles(nonBlankAccnosFiles[h], accnos);
+ m->appendFiles(nonBlankAccnosFiles[h], accnos);
m->mothurRemove(nonBlankAccnosFiles[h]);
}
}else { //recreate the accnosfile if needed
exit(1);
}
}
-/**************************************************************************************************/
-
-void ClassifySeqsCommand::appendTaxFiles(string temp, string filename) {
- try{
-
- ofstream output;
- ifstream input;
- m->openOutputFileAppend(filename, output);
- m->openInputFile(temp, input);
-
- while(char c = input.get()){
- if(input.eof()) { break; }
- else { output << c; }
- }
-
- input.close();
- output.close();
- }
- catch(exception& e) {
- m->errorOut(e, "ClassifySeqsCommand", "appendTaxFiles");
- exit(1);
- }
-}
-
//**********************************************************************************************************************
int ClassifySeqsCommand::driver(linePair* filePos, string taxFName, string tempTFName, string accnos, string filename){