outputNames.push_back(groupFile); outputTypes["group"].push_back(groupFile);
getOligos(fastaFileNames, qualFileNames);
}
- cout << fastaFileNames.size() << '\t' << qualFileNames.size() << endl;
+
vector<unsigned long int> fastaFilePos;
vector<unsigned long int> qFilePos;
#endif
if (m->control_pressed) { return 0; }
- cout << "done with driver " << endl;
- for(int i=0;i<fastaFileNames.size();i++){
- cout << fastaFileNames[i] << endl;
- if (m->isBlank(fastaFileNames[i])) { cout << fastaFileNames[i] << " was blank" << endl; remove(fastaFileNames[i].c_str()); }
- else if (filesToRemove.count(fastaFileNames[i]) > 0) { cout << fastaFileNames[i] << " was on the remove list" << endl; remove(fastaFileNames[i].c_str()); }
+ set<string> blanks;
+ for(int i=0;i<fastaFileNames.size();i++){
+ if (m->isBlank(fastaFileNames[i])) { blanks.insert(fastaFileNames[i]); }
+ else if (filesToRemove.count(fastaFileNames[i]) > 0) { remove(fastaFileNames[i].c_str()); }
else {
ifstream inFASTA;
string seqName;
m->openInputFile(fastaFileNames[i], inFASTA);
ofstream outGroups;
string outGroupFilename = outputDir + m->getRootName(m->getSimpleName(fastaFileNames[i])) + "groups";
+
+ //if the fastafile is on the blanks list then the groups file should be as well
+ if (blanks.count(fastaFileNames[i]) != 0) { blanks.insert(outGroupFilename); }
+
m->openOutputFile(outGroupFilename, outGroups);
outputNames.push_back(outGroupFilename); outputTypes["group"].push_back(outGroupFilename);
if(itCombo->second == i){ thisGroup = itCombo->first; combos.erase(itCombo); break; }
}
}else{ thisGroup = groupVector[i]; }
- cout << thisGroup << '\t' << i << '\t' << comboStarts << endl;
+
while(!inFASTA.eof()){
if(inFASTA.get() == '>'){
inFASTA >> seqName;
inFASTA.close();
}
}
- cout << "done with fastaFileNames " << endl;
+
+ for (set<string>::iterator itBlanks = blanks.begin(); itBlanks != blanks.end(); itBlanks++) { remove((*(itBlanks)).c_str()); }
+
+ blanks.clear();
if(qFileName != ""){
for(int i=0;i<qualFileNames.size();i++){
- cout << qualFileNames[i] << endl;
- if (m->isBlank(qualFileNames[i])) { cout << qualFileNames[i] << " was blank" << endl; remove(qualFileNames[i].c_str()); }
- else if (filesToRemove.count(qualFileNames[i]) > 0) { cout << qualFileNames[i] << " was on the remove list" << endl; remove(qualFileNames[i].c_str()); }
- else {
- ifstream inQual;
- string seqName;
- m->openInputFile(qualFileNames[i], inQual);
-// ofstream outGroups;
-//
-// string thisGroup = "";
-// if (i > comboStarts) {
-// map<string, int>::iterator itCombo;
-// for(itCombo=combos.begin();itCombo!=combos.end(); itCombo++){
-// if(itCombo->second == i){ thisGroup = itCombo->first; combos.erase(itCombo); break; }
-// }
-// }
-// else{ thisGroup = groupVector[i]; }
-
- inQual.close();
- }
+ if (m->isBlank(qualFileNames[i])) { blanks.insert(qualFileNames[i]); }
+ else if (filesToRemove.count(qualFileNames[i]) > 0) { remove(qualFileNames[i].c_str()); }
}
}
- cout << "done with qualFileNames " << endl;
+
+ for (set<string>::iterator itBlanks = blanks.begin(); itBlanks != blanks.end(); itBlanks++) { remove((*(itBlanks)).c_str()); }
if (m->control_pressed) {
for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); }
}
ofstream outGroups;
- //vector<ofstream*> fastaFileNames;
- //vector<ofstream*> qualFileNames;
if (oligoFile != "") {
m->openOutputFile(groupFile, outGroups);
ifstream qFile;
if(qFileName != "") { m->openInputFile(qFileName, qFile); qFile.seekg(qline->start); }
+
+ for (int i = 0; i < fastaNames.size(); i++) { //clears old file
+ ofstream temp;
+ m->openOutputFile(fastaNames[i], temp);
+ temp.close();
+ }
+ for (int i = 0; i < qualNames.size(); i++) { //clears old file
+ ofstream temp;
+ m->openOutputFile(qualNames[i], temp);
+ temp.close();
+ }
+
+
bool done = false;
int count = 0;
}
}
- if (allFiles) { m->mothurOut("Done with allfile"); m->mothurOutEndLine(); }
+ if (allFiles) { m->mothurOut("Done with allfiles"); m->mothurOutEndLine(); }
}
return exitCommand;
//int indexPrimer = 0;
while(!inOligos.eof()){
- inOligos >> type;
+ inOligos >> type; m->gobble(inOligos);
if(type[0] == '#'){
while (!inOligos.eof()) { char c = inOligos.get(); if (c == 10 || c == 13){ break; } } // get rest of line if there's any crap there
map<string, int>::iterator itPrime = primers.find(oligo);
if (itPrime != primers.end()) { m->mothurOut("primer " + oligo + " is in your oligos file already."); m->mothurOutEndLine(); }
- primers[oligo]=index; index++;
- groupVector.push_back(group);
+ primers[oligo]=index; index++;
+ groupVector.push_back(group);
- if(allFiles){
- outFASTAVec.push_back((outputDir + m->getRootName(m->getSimpleName(fastaFile)) + group + ".fasta"));
- if(qFileName != ""){
- outQualVec.push_back((outputDir + m->getRootName(m->getSimpleName(qFileName)) + group + ".qual"));
- }
- if (group == "") { //if there is not a group for this primer, then this file will not get written to, but we add it to keep the indexes correct
- filesToRemove.insert((outputDir + m->getRootName(m->getSimpleName(fastaFile)) + group + ".fasta"));
+ if(allFiles){
+ outFASTAVec.push_back((outputDir + m->getRootName(m->getSimpleName(fastaFile)) + group + ".fasta"));
if(qFileName != ""){
- filesToRemove.insert((outputDir + m->getRootName(m->getSimpleName(qFileName)) + group + ".qual"));
+ outQualVec.push_back((outputDir + m->getRootName(m->getSimpleName(qFileName)) + group + ".qual"));
+ }
+ if (group == "") { //if there is not a group for this primer, then this file will not get written to, but we add it to keep the indexes correct
+ filesToRemove.insert((outputDir + m->getRootName(m->getSimpleName(fastaFile)) + group + ".fasta"));
+ if(qFileName != ""){
+ filesToRemove.insert((outputDir + m->getRootName(m->getSimpleName(qFileName)) + group + ".qual"));
+ }
+ }else {
+ outputNames.push_back((outputDir + m->getRootName(m->getSimpleName(fastaFile)) + group + ".fasta"));
+ outputTypes["fasta"].push_back((outputDir + m->getRootName(m->getSimpleName(fastaFile)) + group + ".fasta"));
+ if(qFileName != ""){
+ outputNames.push_back((outputDir + m->getRootName(m->getSimpleName(qFileName)) + group + ".qual"));
+ outputTypes["qual"].push_back((outputDir + m->getRootName(m->getSimpleName(qFileName)) + group + ".qual"));
+ }
}
- }else {
- outputNames.push_back((outputDir + m->getRootName(m->getSimpleName(fastaFile)) + group + ".fasta"));
- outputTypes["fasta"].push_back((outputDir + m->getRootName(m->getSimpleName(fastaFile)) + group + ".fasta"));
- if(qFileName != ""){
- outputNames.push_back((outputDir + m->getRootName(m->getSimpleName(qFileName)) + group + ".qual"));
- outputTypes["qual"].push_back((outputDir + m->getRootName(m->getSimpleName(qFileName)) + group + ".qual"));
- }
}
- }
-
+
}
else if(type == "REVERSE"){
Sequence oligoRC("reverse", oligo);
map<string, int>::iterator itBar = barcodes.find(oligo);
if (itBar != barcodes.end()) { m->mothurOut("barcode " + oligo + " is in your oligos file already."); m->mothurOutEndLine(); }
- barcodes[oligo]=index; index++;
- groupVector.push_back(group);
+ barcodes[oligo]=index; index++;
+ groupVector.push_back(group);
+
+ if(allFiles){
+ outputNames.push_back((outputDir + m->getRootName(m->getSimpleName(fastaFile)) + group + ".fasta"));
+ outputNames.push_back((outputDir + m->getRootName(m->getSimpleName(fastaFile)) + group + ".fasta"));
+ outFASTAVec.push_back((outputDir + m->getRootName(m->getSimpleName(fastaFile)) + group + ".fasta"));
+ if(qFileName != ""){
+ outQualVec.push_back((outputDir + m->getRootName(m->getSimpleName(qFileName)) + group + ".qual"));
+ outputNames.push_back((outputDir + m->getRootName(m->getSimpleName(qFileName)) + group + ".qual"));
+ outputTypes["qual"].push_back((outputDir + m->getRootName(m->getSimpleName(qFileName)) + group + ".qual"));
+ }
+ }
- if(allFiles){
- outputNames.push_back((outputDir + m->getRootName(m->getSimpleName(fastaFile)) + group + ".fasta"));
- outputNames.push_back((outputDir + m->getRootName(m->getSimpleName(fastaFile)) + group + ".fasta"));
- outFASTAVec.push_back((outputDir + m->getRootName(m->getSimpleName(fastaFile)) + group + ".fasta"));
- if(qFileName != ""){
- outQualVec.push_back((outputDir + m->getRootName(m->getSimpleName(qFileName)) + group + ".qual"));
- outputNames.push_back((outputDir + m->getRootName(m->getSimpleName(qFileName)) + group + ".qual"));
- outputTypes["qual"].push_back((outputDir + m->getRootName(m->getSimpleName(qFileName)) + group + ".qual"));
- }
- }
}else{ m->mothurOut(type + " is not recognized as a valid type. Choices are forward, reverse, and barcode. Ignoring " + oligo + "."); m->mothurOutEndLine(); }
}
m->gobble(inOligos);