Go to the SVN repository for this file.
63 if((
' '== c) || (
'\t'== c) || (
'\n'== c))
89strcpy(
label,
"Default Label");
93 if(
'('== treeString[0])
104 if(
'('!= treeString[0])
106fprintf(stderr,
"Error reading subtree.\n");
113 if(
'('== treeString[
i])
122 while((
'('!= treeString[
i]) && (
')'!= treeString[
i]))
124 if(
'('== treeString[
i])
126 else if(
')'== treeString[
i])
148 if(
':'== treeString[
i])
150sprintf(thisNode->
label,
"I%d",(*uCount)++);
155 while((
':'!= treeString[
i]) && (
','!= treeString[
i]))
159 for(
i= left;
i< right;
i++)
161thisNode->
label[j++] = treeString[
i];
162thisNode->
label[j] =
'\0';
164 if(
':'== treeString[right])
173((
','!= treeString[
i]) && (
')'!= treeString[
i]))
176 if(
','== treeString[right])
181 for(
i= left;
i< right;
i++)
182stringWeight[j++] = treeString[
i];
183stringWeight[j] =
'\0';
184thisWeight = atof(stringWeight);
185thisEdge =
makeEdge(
label,centerNode,thisNode,thisWeight);
195fprintf(stderr,
"Error: meNode %s has too many (>3) children.\n",centerNode->
label);
223 if(
NULL== nextString)
226 while(1 == fscanf(ifile,
"%c",&c))
237nextString[
i++] =
' ';
240nextString[
i++] = c;
245 if(
'('!= nextString[0])
247fprintf(stderr,
"Error reading input file - does not start with '('.\n");
251 for(
i= 0;
i< inputLength;
i++)
253 if(
'('== nextString[
i])
255 else if(
')'== nextString[
i])
259 else if(0 == parCount)
262 if(
';'== nextString[
i])
263strcpy(rootLabel,
"URoot");
266 while(
';'!= nextString[
i])
268rootLabel[j++] = nextString[
i-1];
269rootLabel[j] =
'\0';
273 else if(parCount < 0)
275fprintf(stderr,
"Error reading meTree input file. Too many right parentheses.\n");
280strcpy(centerNode->
label,rootLabel);
281 T->root = centerNode;
290fprintf(stderr,
"Error with Newick Printing routine.\n");
295fprintf(ofile,
"(");
297fprintf(ofile,
", ");
299fprintf(ofile,
")");
301fprintf(ofile,
" ");
302fprintf(ofile,
"%s ",e->
head->
label);
303fprintf(ofile,
":%lf",e->
distance);
309 intslength, llength, rlength;
313 if(!(
NULL== left))
318s[1 + llength] =
',';
321s[2 + rlength + llength]=
')';
322slength = 3 + rlength + llength;
325 while(
'\0'!= s[slength])
335e =
T->root->leftEdge;
336rootchild = e->
head;
337fprintf(ofile,
"(%s: %lf",
T->root->label,e->
distance);
341fprintf(ofile,
",");
347fprintf(ofile,
",");
350fprintf(ofile,
")");
352fprintf(ofile,
"%s",rootchild->
label);
353fprintf(ofile,
";\n");
359 int i,slength, llength, rlength;
361e =
T->root->leftEdge;
364+ 2*
T->size +
T->size + (
T->size-1) + 1;
369s = (
char*)
malloc(slength*
sizeof(
char));
374 if(!(
NULL== left))
378s[1 + llength] =
',';
381s[2 + rlength + llength]=
',';
382 i= 3 + rlength + llength;
#define ReadOpenParenthesis
meEdge * makeEdge(const char *label, meNode *tail, meNode *head, double weight)
meNode * makeNode(const char *label, meEdge *parentEdge, int index)
#define NODE_LABEL_LENGTH
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define BEGIN_SCOPE(ns)
Define a new scope.
static const char label[]
void NewickPrintTree(meTree *T, FILE *ofile)
meTree * loadNewickTree(FILE *ifile, int numLeaves)
meNode * decodeNewickSubtree(char *treeString, meTree *T, int *uCount)
boolean whiteSpace(char c)
void NewickPrintSubtree(meTree *T, meEdge *e, FILE *ofile)
int NewickPrintSubtreeString(meTree *T, meEdge *e, char *s)
meEdge * depthFirstTraverse(meTree *T, meEdge *e)
char * NewickPrintTreeString(meTree *T)
struct meEdge * rightEdge
struct meEdge * parentEdge
struct meEdge * middleEdge
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4