phylogician-ts
Version:
Module to read, manipulate and write phylogenetic trees. Written in TypeScript
248 lines (247 loc) • 6.54 kB
TypeScript
import { LogLevelDescType } from 'loglevel-colored-prefix';
import * as newick from 'newick-reader';
import { TreeNode } from './TreeNode';
export declare class Tree {
nodes: TreeNode[];
protected numberOfNodes: number;
private logger;
private logLevel;
constructor(loglevel?: LogLevelDescType);
/**
* Builds a Tree from newick string
*
* @param {string} data
* @memberof Tree
*/
buildTree(data: string): this;
/**
* Returns the maximum hops to child leafs to all nodes.
*
* @returns {number[]}
* @memberof Tree
*/
getAllMaxHopsToChildLeafs(): number[];
/**
* Returns the sum of branch lengths from the node to the root
*
* @param {number} nodeId
* @returns {number}
* @memberof Tree
*/
getDistanceToRoot(nodeId: number): number;
/**
* Returns the number of hops from node to root
*
* @param {number} nodeId
* @returns {number}
* @memberof Tree
*/
getHopsToRoot(nodeId: number): number;
/**
* Returns the path of internal nodes to root
*
* @param {number} nodeId
* @returns {number}
* @memberof Tree
*/
getPathToRoot(nodeId: number): number[];
/**
* Returns the maximum distance to the root.
*
* @returns {number}
* @memberof Tree
*/
getMaxDistanceToRoot(): number;
/**
* Returns maximum number of node hops to the root.
*
* @returns {number}
* @memberof Tree
*/
getMaxHopsToRoot(): number;
/**
* Return the common ancestor node between two nodes and the number of hops from the node passed in the first argument
*
* @param {number} node1
* @param {number} node2
* @returns {{ancestor: number, hops: number}}
* @memberof Tree
*/
getCommonAncestor(node1: number, node2: number): {
ancestor: number;
hops: number;
};
/**
* Return information about the common ancestor between the node passed in the argument and all leafs
*
* @param {number} node
* @returns {Array<{ ancestor: number; hops: number; nodeId: number }>}
* @memberof Tree
*/
getCommonAncestorWithEachLeaf(node: number, subtreeNodeId: number): Array<{
ancestor: number;
hops: number;
nodeId: number;
}>;
/**
* Get TreeNode with the given id
*
* @param {number} id
* @returns {TreeNode}
* @memberof Tree
*/
getNode(id: number): TreeNode;
/**
* Find node by exact name
*
* @param {string} name
* @returns {TreeNode[]}
* @memberof Tree
*/
findNodeByExactName(name: string): TreeNode[];
/**
* Find nodes that match a Regular Expression
*
* @param {RegExp} regex
* @returns {TreeNode[]}
* @memberof Tree
*/
findNodeByMatch(regex: RegExp): TreeNode[];
/**
* Returns how many leafs the tree has.
*
* @returns {number}
* @memberof Tree
*/
getNumberOfLeafs(): number;
/**
* Return root node
*
* @private
* @returns {TreeNode}
* @memberof Tree
*/
getRootNode(): TreeNode | null;
/**
* Return array of node ids of internal nodes
*
* @returns {number[]}
* @memberof Tree
*/
getInternalIds(): number[];
/**
* Sets the node with Id passed as root. Avoids setting 2 root nodes.
* This DOES NOT re-root the tree, yet.
*
* @param {number} id
* @returns {this}
* @memberof Tree
*/
setAsRoot(id: number): this;
/**
* Return ids of all child nodes.
*
* @param {number} id
* @returns {number[]}
* @memberof Tree
*/
getChildrenIds(id: number): number[];
/**
* Return the ids of leafs of the node passed as argument
*
* @param {number} id
* @returns {number[]}
* @memberof Tree
*/
getLeafsIds(id: number): number[];
getAllLeafIds(): number[];
/**
* Ladderizes the subtree from the node passed in argument
*
* @param {number} id
* @returns {this}
* @memberof Tree
*/
ladderize(id: number): this;
/**
* Returns a newick of the subtree from parentId. If nothing is passed, it will return the entire tree.
*
* @param {number} [parentId=-1]
* @returns {string}
* @memberof Tree
*/
writeNewick(parentId?: number): string;
/**
* Selects a balanced sample of N leafs in the subtree of the nodeId node.
*
* @param {number[]} [picked=[]]
* @param {number} nodeId
* @param {number} N
* @returns {number[]}
* @memberof Tree
*/
selectBalancedLeafs(picked: number[] | undefined, nodeId: number, N: number): number[];
selectBalancedSample(picked: number[] | undefined, baseNodeId: number, N: number, add?: boolean, seed?: string): number[];
selectBalancedSampleMixed(picked: number[] | undefined, baseNodeId: number, N: number, add?: boolean, seed?: string): number[];
/**
* Return a subTree as a Tree object
* It rework the indexes of nodes and parents.
*
* @param {number} nodeId
* @returns
* @memberof Tree
*/
getSubTree(nodeId: number): Tree;
/**
* Return a list of nodes under a internal node.
*
* @param {number} nodeId
* @returns
* @memberof Tree
*/
getListOfNodesInSubTree(nodeId: number): TreeNode[];
/**
* Set the color of branches of child nodes.
*
* @param {number} id
* @param {string} color
* @returns {this}
* @memberof Tree
*/
setChildrenBranchColor(id: number, color: string): this;
/**
* Order nodes for ladderization
*
* @protected
* @param {number} id
* @returns {number[]}
* @memberof Tree
*/
protected lad(id: number): number[];
/**
* Writes a newick.ITree object from a parent node.
*
* @private
* @param {number} [parentId=-1]
* @returns {newick.ITree}
* @memberof Tree
*/
protected writeITreeObj(parentId?: number): newick.ITree;
/**
* Builds the this.nodes array by scanning the treeObject
*
* @private
* @param {newick.ITree} treeObject
* @returns {TreeNode}
* @memberof Tree
*/
private makeTree;
/**
* Set default policy to show only labels of leafs
*
* @private
* @returns
* @memberof Tree
*/
private setDefaultLabelDisplay;
}