- int lc = readNewickInt(f, n, T);
- if (lc == -1) { return -1; } //reports an error in reading
- readSpecialChar(f,',',"comma");
+
+ //to account for multifurcating trees generated by fasttree, we are forcing them to be bifurcating
+ //read all children
+ vector<int> childrenNodes;
+ while(f.peek() != ')'){
+ int child = readNewickInt(f, n, T);
+ if (child == -1) { return -1; } //reports an error in reading
+
+ childrenNodes.push_back(child);
+
+ //after a child you either have , or ), check for both
+ if(f.peek()==')'){ break; }
+ else if (f.peek()==',') { readSpecialChar(f,',',"comma"); }
+ else { string k;
+ k = f.peek();
+ cout << "in here k = " << k << '\t' << f.tellg() <<endl;
+ }
+ }
+ cout << childrenNodes.size() << endl;
+ if (childrenNodes.size() < 2) { m->mothurOut("Error in tree, please correct."); m->mothurOutEndLine(); return -1; }
+
+ //then force into 2 node structure
+ for (int i = 1; i < childrenNodes.size(); i++) {
+
+ int lc, rc;
+ if (i == 1) { lc = childrenNodes[i-1]; rc = childrenNodes[i]; }
+ else { lc = n; rc = childrenNodes[i]; }
+ cout << i << '\t' << lc << '\t' << rc << endl;
+ T->tree[n].setChildren(lc,rc);
+ T->tree[lc].setParent(n);
+ T->tree[rc].setParent(n);
+
+ T->printTree(); cout << endl;
+ n++;
+ }
+
+ //to account for extra ++ in looping
+ n--;
+ //int lc = readNewickInt(f, n, T);
+ //if (lc == -1) { return -1; } //reports an error in reading
+
+ //readSpecialChar(f,',',"comma");