abort = true;
//initialize outputTypes
vector<string> tempOutNames;
- outputTypes["error"] = tempOutNames;
- outputTypes["count"] = tempOutNames;
+ outputTypes["error.summary"] = tempOutNames;
+ outputTypes["error.seq"] = tempOutNames;
+ outputTypes["error.quality"] = tempOutNames;
+ outputTypes["error.qual.forward"] = tempOutNames;
+ outputTypes["error.qual.reverse"] = tempOutNames;
+ outputTypes["error.forward"] = tempOutNames;
+ outputTypes["error.reverse"] = tempOutNames;
+ outputTypes["error.count"] = tempOutNames;
+ outputTypes["error.matrix"] = tempOutNames;
}
catch(exception& e) {
m->errorOut(e, "SeqErrorCommand", "SeqErrorCommand");
//initialize outputTypes
vector<string> tempOutNames;
- outputTypes["error"] = tempOutNames;
- outputTypes["count"] = tempOutNames;
+ outputTypes["error.summary"] = tempOutNames;
+ outputTypes["error.seq"] = tempOutNames;
+ outputTypes["error.quality"] = tempOutNames;
+ outputTypes["error.qual.forward"] = tempOutNames;
+ outputTypes["error.qual.reverse"] = tempOutNames;
+ outputTypes["error.forward"] = tempOutNames;
+ outputTypes["error.reverse"] = tempOutNames;
+ outputTypes["error.count"] = tempOutNames;
+ outputTypes["error.matrix"] = tempOutNames;
+
//if the user changes the input directory command factory will send this info to us in the output parameter
string inputDir = validParameter.validFile(parameters, "inputdir", false);
// ...at some point should added some additional type checking...
temp = validParameter.validFile(parameters, "threshold", false); if (temp == "not found") { temp = "1.00"; }
convert(temp, threshold);
-
- errorSummaryFileName = queryFileName.substr(0,queryFileName.find_last_of('.')) + ".error.summary";
- m->openOutputFile(errorSummaryFileName, errorSummaryFile);
- outputNames.push_back(errorSummaryFileName); outputTypes["error.summary"].push_back(errorSummaryFileName);
- printErrorHeader();
-
- errorSeqFileName = queryFileName.substr(0,queryFileName.find_last_of('.')) + ".error.seq";
- m->openOutputFile(errorSeqFileName, errorSeqFile);
- outputNames.push_back(errorSeqFileName); outputTypes["error.seq"].push_back(errorSeqFileName);
substitutionMatrix.resize(6);
for(int i=0;i<6;i++){ substitutionMatrix[i].assign(6,0); }
void SeqErrorCommand::help(){
try {
m->mothurOut("The seq.error command reads a query alignment file and a reference alignment file and creates .....\n");
-
-
-
m->mothurOut("Example seq.error(...).\n");
m->mothurOut("Note: No spaces between parameter labels (i.e. fasta), '=' and parameters (i.e.yourFasta).\n");
m->mothurOut("For more details please check out the wiki http://www.mothur.org/wiki/seq.error .\n\n");
//***************************************************************************************************************
SeqErrorCommand::~SeqErrorCommand(){
- errorSummaryFile.close();
- errorSeqFile.close();
+
}
//***************************************************************************************************************
int SeqErrorCommand::execute(){
try{
if (abort == true) { return 0; }
+
+ errorSummaryFileName = queryFileName.substr(0,queryFileName.find_last_of('.')) + ".error.summary";
+ m->openOutputFile(errorSummaryFileName, errorSummaryFile);
+ outputNames.push_back(errorSummaryFileName); outputTypes["error.summary"].push_back(errorSummaryFileName);
+ printErrorHeader();
+
+ errorSeqFileName = queryFileName.substr(0,queryFileName.find_last_of('.')) + ".error.seq";
+ m->openOutputFile(errorSeqFileName, errorSeqFile);
+ outputNames.push_back(errorSeqFileName); outputTypes["error.seq"].push_back(errorSeqFileName);
+ printErrorHeader();
getReferences(); //read in reference sequences - make sure there's no ambiguous bases
while(queryFile){
+
+ if (m->control_pressed) { errorSummaryFile.close(); errorSeqFile.close(); for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } return 0; }
+
Compare minCompare;
Sequence query(queryFile);
for(int i=0;i<lastColumn;i++){ qualityForwardFile << '\t' << i; } qualityForwardFile << endl;
for(int i=0;i<lastRow;i++){
+
+ if (m->control_pressed) { qualityForwardFile.close(); errorSummaryFile.close(); errorSeqFile.close(); for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } return 0; }
+
qualityForwardFile << i+1;
for(int j=0;j<lastColumn;j++){
qualityForwardFile << '\t' << qualForwardMap[i][j];
for(int i=0;i<lastColumn;i++){ qualityReverseFile << '\t' << i; } qualityReverseFile << endl;
for(int i=0;i<lastRow;i++){
+
+ if (m->control_pressed) { qualityReverseFile.close(); errorSummaryFile.close(); errorSeqFile.close(); for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } return 0; }
+
qualityReverseFile << i+1;
for(int j=0;j<lastColumn;j++){
qualityReverseFile << '\t' << qualReverseMap[i][j];
}
qualityReverseFile << endl;
}
-
+ qualityReverseFile.close();
}
errorForwardFile << i+1 << '\t' << total << '\t' << match/total << '\t' << subst/total << '\t' << insert/total << '\t' << del/total << '\t' << amb/total << endl;
}
errorForwardFile.close();
-
+
+ if (m->control_pressed) { errorSummaryFile.close(); errorSeqFile.close(); for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } return 0; }
string errorReverseFileName = queryFileName.substr(0,queryFileName.find_last_of('.')) + ".error.seq.reverse";
ofstream errorReverseFile;
errorReverseFile << i+1 << '\t' << total << '\t' << match/total << '\t' << subst/total << '\t' << insert/total << '\t' << del/total << '\t' << amb/total << endl;
}
errorReverseFile.close();
-
-
+ if (m->control_pressed) { errorSummaryFile.close(); errorSeqFile.close(); for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } return 0; }
+
string errorCountFileName = queryFileName.substr(0,queryFileName.find_last_of('.')) + ".error.count";
ofstream errorCountFile;
m->openOutputFile(errorCountFileName, errorCountFile);
errorCountFile << i << '\t' << misMatchCounts[i] << endl;
}
errorCountFile.close();
-
-
-
-
+ if (m->control_pressed) { errorSummaryFile.close(); errorSeqFile.close(); for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } return 0; }
+
string subMatrixFileName = queryFileName.substr(0,queryFileName.find_last_of('.')) + ".error.matrix";
ofstream subMatrixFile;
m->openOutputFile(subMatrixFileName, subMatrixFile);
subMatrixFile << endl;
subMatrixFile.close();
+ errorSummaryFile.close();
+ errorSeqFile.close();
+
+ if (m->control_pressed) { for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } return 0; }
+ m->mothurOutEndLine();
+ m->mothurOut("Output File Names: "); m->mothurOutEndLine();
+ for (int i = 0; i < outputNames.size(); i++) { m->mothurOut(outputNames[i]); m->mothurOutEndLine(); }
+ m->mothurOutEndLine();
return 0;
}