Clustal Omega 1.2.4
muscle_tree.h
Go to the documentation of this file.
1/* This a mix of tree functions and data-structures from
2 * Bob Edgar's Muscle (version 3.7) ported to pure C.
3 *
4 * Used files: phy.cpp, tree.h, phytofile.cpp and phyfromclust.cpp
5 *
6 * Muscle's code is public domain and so is this code here.
7
8 * From http://www.drive5.com/muscle/license.htm:
9 * """
10 * MUSCLE is public domain software
11 *
12 * The MUSCLE software, including object and source code and
13 * documentation, is hereby donated to the public domain.
14 *
15 * Disclaimer of warranty
16 * THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
17 * EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * """
20 *
21 */
22
23/*
24 * RCS $Id: muscle_tree.h 230 2011-04-09 15:37:50Z andreas $
25 */
26
27
28#ifndef CLUSTALO_MUSCLE_CLUSTALO_TREE_H
29#define CLUSTALO_MUSCLE_CLUSTALO_TREE_H
30
31#include <stdio.h>
32#include "util.h"
33
34#ifndef uint
35/* limit use of uint (see coding_style_guideline.txt) */
36typedef unsigned int uint;
37#endif
38
39static const uint NULL_NEIGHBOR = UINT_MAX;
40
59typedef struct {
67 /* do we have edge lengths info stored (m_dEdgeLength[123]) */
71
75
76#if USE_HEIGHT
77 /* unused in our version of the code. we might need it at some
78 * stage so keep it in here, but disable via USE_HEIGHT throughout
79 * the code */
80 double *m_dHeight;
81 bool *m_bHasHeight;
82#endif
83
88 char **m_ptrName;
89
95
96 bool m_bRooted;
98} tree_t;
99
100
101extern void
102MuscleTreeCreate(tree_t *tree, uint uLeafCount, uint uRoot, const uint *Left,
103 const uint *Right, const float *LeftLength, const float* RightLength,
104 const uint *LeafIds, char **LeafNames);
105
106extern void
107MuscleTreeToFile(FILE *fp, tree_t *tree);
108
109extern int
110MuscleTreeFromFile(tree_t *tree, char *ftree);
111
112extern void
114
115extern void
116LogTree(tree_t *tree, FILE *fp);
117
118extern bool
119IsRooted(tree_t *tree);
120
121extern uint
122GetNodeCount(tree_t *tree);
123
124extern uint
125GetLeafCount(tree_t *tree);
126
127extern uint
129
130extern uint
131NextDepthFirstNode(uint nodeindex, tree_t *tree);
132
133extern bool
134IsLeaf(uint nodeindex, tree_t *tree);
135
136extern void
137SetLeafId(tree_t *tree, uint uNodeIndex, uint uId);
138
139extern uint
140GetLeafId(uint nodeindex, tree_t *tree);
141
142extern char *
143GetLeafName(unsigned uNodeIndex, tree_t *tree);
144
145extern uint
146GetLeft(uint nodeindex, tree_t *tree);
147
148extern uint
149GetRight(uint nodeindex, tree_t *tree);
150
151extern uint
153
154extern bool
155IsRoot(uint uNodeIndex, tree_t *tree);
156
157extern uint
158GetParent(unsigned uNodeIndex, tree_t *tree);
159
160extern double
161GetEdgeLength(uint uNodeIndex1, uint uNodeIndex2, tree_t *tree);
162
163extern uint
164LeafIndexToNodeIndex(uint uLeafIndex, tree_t *prTree);
165
166extern void
167AppendTree(tree_t *prDstTree,
168 uint uDstTreeNodeIndex, tree_t *prSrcTree);
169
170extern void
171TreeValidate(tree_t *tree);
172
173#endif
uint GetRootNodeIndex(tree_t *tree)
Definition muscle_tree.c:1707
uint FirstDepthFirstNode(tree_t *tree)
returns first leaf node for a depth-first traversal of tree
Definition muscle_tree.c:196
void MuscleTreeToFile(FILE *fp, tree_t *tree)
write a muscle tree to a file in newick format (distances and all names)
Definition muscle_tree.c:432
void LogTree(tree_t *tree, FILE *fp)
Definition muscle_tree.c:1559
double GetEdgeLength(uint uNodeIndex1, uint uNodeIndex2, tree_t *tree)
Definition muscle_tree.c:555
void FreeMuscleTree(tree_t *tree)
Definition muscle_tree.c:279
void TreeValidate(tree_t *tree)
Definition muscle_tree.c:719
uint NextDepthFirstNode(uint nodeindex, tree_t *tree)
returns next leaf node index for depth-first traversal of tree
Definition muscle_tree.c:226
void SetLeafId(tree_t *tree, uint uNodeIndex, uint uId)
Definition muscle_tree.c:1694
uint GetNodeCount(tree_t *tree)
Definition muscle_tree.c:1656
uint LeafIndexToNodeIndex(uint uLeafIndex, tree_t *prTree)
Definition muscle_tree.c:1722
uint GetLeafId(uint nodeindex, tree_t *tree)
Definition muscle_tree.c:156
char * GetLeafName(unsigned uNodeIndex, tree_t *tree)
Definition muscle_tree.c:173
bool IsRooted(tree_t *tree)
check if tree is a rooted tree
Definition muscle_tree.c:267
uint GetLeft(uint nodeindex, tree_t *tree)
Definition muscle_tree.c:119
int MuscleTreeFromFile(tree_t *tree, char *ftree)
Definition muscle_tree.c:874
bool IsLeaf(uint nodeindex, tree_t *tree)
check if given node is a leaf node
Definition muscle_tree.c:460
uint GetRight(uint nodeindex, tree_t *tree)
Definition muscle_tree.c:138
unsigned int uint
Definition muscle_tree.h:36
void MuscleTreeCreate(tree_t *tree, uint uLeafCount, uint uRoot, const uint *Left, const uint *Right, const float *LeftLength, const float *RightLength, const uint *LeafIds, char **LeafNames)
create a muscle tree
Definition muscle_tree.c:367
void AppendTree(tree_t *prDstTree, uint uDstTreeNodeIndex, tree_t *prSrcTree)
Append a (source) tree to a (dest) tree to a given node which will be replaced. All other nodes in th...
Definition muscle_tree.c:1778
bool IsRoot(uint uNodeIndex, tree_t *tree)
Definition muscle_tree.c:475
uint GetParent(unsigned uNodeIndex, tree_t *tree)
Definition muscle_tree.c:506
uint GetLeafCount(tree_t *tree)
Definition muscle_tree.c:1642
guide-tree structure
Definition muscle_tree.h:59
uint m_uRootNodeIndex
Definition muscle_tree.h:97
uint * m_uNeighbor1
Definition muscle_tree.h:63
double * m_dEdgeLength1
Definition muscle_tree.h:72
double * m_dEdgeLength2
Definition muscle_tree.h:73
uint m_uCacheCount
Definition muscle_tree.h:61
char ** m_ptrName
Definition muscle_tree.h:88
double * m_dEdgeLength3
Definition muscle_tree.h:74
bool * m_bHasEdgeLength2
Definition muscle_tree.h:69
uint m_uNodeCount
Definition muscle_tree.h:60
uint * m_Ids
Definition muscle_tree.h:94
bool * m_bHasEdgeLength1
Definition muscle_tree.h:68
bool * m_bHasEdgeLength3
Definition muscle_tree.h:70
uint * m_uNeighbor3
Definition muscle_tree.h:65
uint * m_uNeighbor2
Definition muscle_tree.h:64
bool m_bRooted
Definition muscle_tree.h:96