1 /*Modified by Christian Zmasek. Use at your own risk.*/
3 /* version 3.6. (c) Copyright 1993-2000 by the University of Washington.
4 Written by Joseph Felsenstein, Akiko Fuseki, Sean Lamont, and Andrew Keeffe.
5 Permission is granted to copy and use this program provided no fee is
6 charged for it and provided that this copyright notice is not removed. */
9 seq.h: included in dnacomp, dnadist, dnainvar, dnaml, dnamlk, dnamove,
10 dnapars, dnapenny, protdist, protpars, & restml
14 /* All the below moved here in the Great TreeRead Migration of '96 */
17 #define MAXNCH 26 /*changed from to 20 to 26 by CZ 2006-07-28 */
19 /* All of this came over from cons.h -plc*/
21 #define ADJACENT_PAIRS 1
22 #define CORR_IN_1_AND_2 2
23 #define ALL_IN_1_AND_2 3
25 #define ALL_IN_FIRST 5
29 #define FULL_MATRIX 11
33 /* Used in proml, promlk, dnaml, dnamlk for undefined bestyet*/
37 /* Number of columns per block in a matrix output */
38 #define COLUMNS_PER_BLOCK 10
44 typedef struct gbases {
49 typedef struct nuview_data {
50 /* A big 'ol collection of pointers used in nuview */
51 double *yy, *wwzz, *vvzz, *vzsumr, *vzsumy, *sum, *sumr, *sumy;
59 boolean maybe, nonzero;
64 extern long nonodes, endsite, outgrno, nextree, which;
66 extern boolean interleaved, printdata, outgropt, treeprint, dotdiff, transvp;
67 extern steptr weight, category, alias, location, ally;
71 /* function prototypes */
72 void alloctemp(node **, long *, long);
73 void freetemp(node **);
74 void freetree2 (pointarray, long);
76 void alloctree(pointarray *, long, boolean);
77 void allocx(long, long, pointarray, boolean);
79 void prot_allocx(long, long, pointarray, boolean);
80 void allocx2(long, long, long, pointarray, boolean);
81 void setuptree(pointarray, long, boolean);
82 void setuptree2(tree);
83 void alloctip(node *, long *);
84 void freetrans(transptr *, long ,long );
85 void getbasefreqs(double, double, double, double, double *, double *,
86 double *, double *, double *, double *, double *,
87 double *xi, double *, double *, boolean, boolean);
88 void empiricalfreqs(double *,double *,double *,double *,steptr,pointarray);
89 void sitesort(long, steptr);
90 void sitecombine(long);
92 void sitescrunch(long);
93 void sitesort2(long, steptr);
94 void sitecombine2(long, steptr);
95 void sitescrunch2(long, long, long, steptr);
96 void makevalues(pointarray, long *, boolean);
97 void makevalues2(long, pointarray, long, long, sequence, steptr);
98 void fillin(node *, node *, node *);
99 long getlargest(long *);
100 void multifillin(node *, node *, long);
101 void sumnsteps(node *, node *, node *, long, long);
103 void sumnsteps2(node *, node *, node *, long, long, long *);
104 void multisumnsteps(node *, node *, long, long, long *);
105 void multisumnsteps2(node *);
106 boolean alltips(node *, node *);
107 void gdispose(node *, node **, pointarray);
108 void preorder(node *, node *, node *, node *, node *, node *, long);
109 void updatenumdesc(node *, node *, long);
110 void add(node *,node *,node *,node **,boolean,pointarray,node **,long *);
111 void findbelow(node **below, node *item, node *fork);
113 void re_move(node *item, node **fork, node **root, boolean recompute,
114 pointarray, node **, long *);
115 void postorder(node *p);
116 void getnufork(node **, node **, pointarray, long *);
117 void reroot(node *, node *);
118 void reroot2(node *, node *);
119 void reroot3(node *, node *, node *, node *, node **);
120 void savetraverse(node *);
121 void newindex(long, node *);
122 void flipindexes(long, pointarray);
123 boolean parentinmulti(node *);
125 long sibsvisited(node *, long *);
126 long smallest(node *, long *);
127 void bintomulti(node **, node **, node **, long *);
128 void backtobinary(node **, node *, node **);
129 boolean outgrin(node *, node *);
130 void flipnodes(node *, node *);
131 void moveleft(node *, node *, node **);
132 void savetree(node *, long *, pointarray, node **, long *);
133 void addnsave(node *, node *, node *, node **, node **,boolean,
134 pointarray, long *, long *);
135 void addbestever(long *, long *, long, boolean, long *, bestelm *);
137 void addtiedtree(long, long *, long, boolean,long *, bestelm *);
138 void clearcollapse(pointarray);
139 void clearbottom(pointarray);
140 void collabranch(node *, node *, node *);
141 boolean allcommonbases(node *, node *, boolean *);
142 void findbottom(node *, node **);
143 boolean moresteps(node *, node *);
144 boolean passdown(node *, node *, node *, node *, node *, node *,
145 node *, node *, node *, boolean);
146 boolean trycollapdesc(node *, node *, node *, node *, node *,
147 node *, node *, node *, node *, boolean , long *);
148 void setbottom(node *);
150 boolean zeroinsubtree(node *, node *, node *, node *, node *,
151 node *, node *, node *, boolean, node *, long *);
152 boolean collapsible(node *, node *, node *, node *, node *,
153 node *, node *, node *, boolean, node *, long *, pointarray);
154 void replaceback(node **, node *, node *, node **, long *);
155 void putback(node *, node *, node *, node **);
156 void savelocrearr(node *, node *, node *, node *, node *, node *,
157 node *, node *, node *, node **, long, long *, boolean,
158 boolean , boolean *, long *, bestelm *, pointarray ,
160 void clearvisited(pointarray);
161 void hyprint(long, long, struct LOC_hyptrav *,pointarray, Char *);
162 void gnubase(gbases **, gbases **, long);
163 void chuckbase(gbases *, gbases **);
164 void hyptrav(node *, long *, long, long, boolean,pointarray,
167 void hypstates(long , node *, pointarray, gbases **, Char *);
168 void initbranchlen(node *p);
169 void initmin(node *, long, boolean);
170 void initbase(node *, long);
171 void inittreetrav(node *, long);
172 void compmin(node *, node *);
173 void minpostorder(node *, pointarray);
174 void branchlength(node *,node *,double *,pointarray);
175 void printbranchlengths(node *);
176 void branchlentrav(node *,node *,long,long,double *,pointarray);
178 void treelength(node *, long, pointarray);
179 void coordinates(node *, long *, double, long *);
180 void drawline(long, double, node *);
181 void printree(node *, double);
182 void writesteps(long, boolean, steptr, node *);
183 void treeout(node *, long, long *, node *);
184 void treeout3(node *, long, long *, node *);
185 void drawline2(long, double, tree);
186 void drawline3(long, double, node *);
187 void copynode(node *, node *, long);
189 void prot_copynode(node *, node *, long);
190 void copy_(tree *, tree *, long, long);
191 void prot_copy_(tree *, tree *, long, long);
192 void standev(long, long, long, double, double *, long **, longer);
193 void standev2(long, long, long, long, double, double *, double **,
195 void freetip(node *);
196 void freenontip(node *);
197 void freenodes(long, pointarray);
198 void freenode(node **);
199 void freetree(long, pointarray);
201 void freex(long, pointarray);
202 void freex_notip(long, pointarray);
203 void freex2(long, pointarray);
204 void prot_freex_notip(long nonodes, pointarray treenode);
205 void prot_freex(long nonodes, pointarray treenode);
206 void freegarbage(gbases **);
207 void freegrbg(node **);
209 void collapsetree(node *, node *, node **, pointarray, long *);
210 void collapsebestrees(node **, node **, pointarray, bestelm *, long *,
211 long *, long, boolean, boolean);
212 void fix_x(node* p,long site, double maxx, long rcategs);
213 void fix_protx(node* p,long site,double maxx, long rcategs);
214 /*function prototypes*/