- int indexPrimer = 0;\r
- int indexBarcode = 0;\r
- \r
- while(!inOligos.eof()){\r
- \r
- inOligos >> type;\r
- \r
- if(type[0] == '#'){\r
- while (!inOligos.eof()) { char c = inOligos.get(); if (c == 10 || c == 13){ break; } } // get rest of line if there's any crap there\r
- m->gobble(inOligos);\r
- }\r
- else{\r
- m->gobble(inOligos);\r
- //make type case insensitive\r
- for(int i=0;i<type.length();i++){ type[i] = toupper(type[i]); }\r
- \r
- inOligos >> oligo;\r
- \r
- for(int i=0;i<oligo.length();i++){\r
- oligo[i] = toupper(oligo[i]);\r
- if(oligo[i] == 'U') { oligo[i] = 'T'; }\r
- }\r
- \r
- if(type == "FORWARD"){\r
- group = "";\r
- \r
- // get rest of line in case there is a primer name\r
- while (!inOligos.eof()) {\r
- char c = inOligos.get();\r
- if (c == 10 || c == 13 || c == -1){ break; }\r
- else if (c == 32 || c == 9){;} //space or tab\r
- else { group += c; }\r
- }\r
- \r
- //check for repeat barcodes\r
- map<string, int>::iterator itPrime = primers.find(oligo);\r
- if (itPrime != primers.end()) { m->mothurOut("primer " + oligo + " is in your oligos file already."); m->mothurOutEndLine(); }\r
- \r
- primers[oligo]=indexPrimer; indexPrimer++;\r
- primerNameVector.push_back(group);\r
- \r
- }else if(type == "REVERSE"){\r
- //Sequence oligoRC("reverse", oligo);\r
- //oligoRC.reverseComplement();\r
- string oligoRC = reverseOligo(oligo);\r
- revPrimer.push_back(oligoRC);\r
- }\r
- else if(type == "BARCODE"){\r
- inOligos >> group;\r
- \r
- \r
- //check for repeat barcodes\r
- map<string, int>::iterator itBar = barcodes.find(oligo);\r
- if (itBar != barcodes.end()) { m->mothurOut("barcode " + oligo + " is in your oligos file already."); m->mothurOutEndLine(); }\r
- \r
- barcodes[oligo]=indexBarcode; indexBarcode++;\r
- barcodeNameVector.push_back(group);\r
- }else if(type == "LINKER"){\r
- linker.push_back(oligo);\r
- }else if(type == "SPACER"){\r
- spacer.push_back(oligo);\r
- }\r
- else{ m->mothurOut("[WARNING]: " + type + " is not recognized as a valid type. Choices are forward, reverse, and barcode. Ignoring " + oligo + "."); m->mothurOutEndLine(); }\r
- }\r
- m->gobble(inOligos);\r
- }\r
- inOligos.close();\r
- \r
- if(barcodeNameVector.size() == 0 && primerNameVector[0] == ""){ split = 1; }\r
- \r
- //add in potential combos\r
- if(barcodeNameVector.size() == 0){\r
- barcodes[""] = 0;\r
- barcodeNameVector.push_back("");\r
- }\r
- \r
- if(primerNameVector.size() == 0){\r
- primers[""] = 0;\r
- primerNameVector.push_back("");\r
- }\r
- \r
- filehandles.resize(barcodeNameVector.size());\r
+ if (m->control_pressed) { return false; } //error in reading oligos\r
+ \r
+ if (oligosObject->hasPairedBarcodes()) {\r
+ pairedOligos = true;\r
+ m->mothurOut("[ERROR]: sffinfo does not support paired barcodes and primers, aborting.\n"); m->control_pressed = true; return true;\r
+ }else {\r
+ pairedOligos = false;\r
+ numFPrimers = oligosObject->getPrimers().size();\r
+ numBarcodes = oligosObject->getBarcodes().size();\r
+ }\r
+ \r
+ numLinkers = oligosObject->getLinkers().size();\r
+ numSpacers = oligosObject->getSpacers().size();\r
+ numRPrimers = oligosObject->getReversePrimers().size();\r
+ \r
+ vector<string> groupNames = oligosObject->getGroupNames();\r
+ if (groupNames.size() == 0) { allBlank = true; }\r
+ \r
+ filehandles.resize(oligosObject->getBarcodeNames().size());\r