- vector<double> refFlow = refFlowgrams[referenceName]; // * compare sequence to its closest reference
-
- vector<double> flowgram(numFlows);
-
- for(int i=0;i<numFlows;i++){
- flowFile >> intensity;
- flowgram[i] = intensity;// (int)round(100 * intensity);
- }
- m->gobble(flowFile);
-
- alignFlowGrams(flowgram, refFlow, gapOpening, penaltyMatrix, flowOrder);
-
- if (m->control_pressed) { errorFile.close(); flowFile.close(); return 0; }
-
- for(int i=0;i<flowgram.size();i++){
- int count = (int)round(100*flowgram[i]);
- if(count > 1000){count = 999;}
- if(abs(flowgram[i]-refFlow[i])<=0.50){
- lookupTable[count][int(refFlow[i])]++; // * build table
- std[int(refFlow[i])] += (100*refFlow[i]-count)*(100*refFlow[i]-count);
+ map<string, vector<double> >::iterator it = refFlowgrams.find(referenceName); // * compare sequence to its closest reference
+ if (it == refFlowgrams.end()) {
+ m->mothurOut("[WARNING]: missing reference flow " + referenceName + ", ignoring flow " + flowQuery + ".\n");
+ m->getline(flowFile); m->gobble(flowFile);
+ }else {
+ vector<double> refFlow = it->second;
+ vector<double> flowgram; flowgram.resize(numFlows);
+
+ if (m->debug) { m->mothurOut("[DEBUG]: flowQuery = " + flowQuery + ".\t" + "refName " + referenceName+ ".\n"); }
+
+ for(int i=0;i<numFlows;i++){
+ flowFile >> intensity;
+ flowgram[i] = intensity;// (int)round(100 * intensity);
+ }
+ m->gobble(flowFile);
+
+ if (m->debug) { m->mothurOut("[DEBUG]: before align.\n"); }
+
+ alignFlowGrams(flowgram, refFlow, gapOpening, penaltyMatrix, flowOrder);
+
+ if (m->debug) { m->mothurOut("[DEBUG]: after align.\n"); }
+
+ if (m->control_pressed) { errorFile.close(); flowFile.close(); return 0; }
+
+ for(int i=0;i<flowgram.size();i++){
+ int count = (int)round(100*flowgram[i]);
+ if(count > 1000){count = 999;}
+ if(abs(flowgram[i]-refFlow[i])<=0.50){
+ lookupTable[count][int(refFlow[i])]++; // * build table
+ std[int(refFlow[i])] += (100*refFlow[i]-count)*(100*refFlow[i]-count);
+ }