A Newick format and tree structure parser.
npm install newick-tree-parser> JavaScript library for parsing the Newick Tree format.
``js`
import { Newick } from 'newick-tree-parser'
const newick = new Newick('some data')
js
import { NewickTools } from 'newick-tree-parser'
NewickTools.dfs(tree)
`
tree - string or parsed object
`js
var tree = NewickTools.parse('(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F');
var data = NewickTools.dfs(tree);
`
Returns object
`json
{
A: 0.1,
B: 0.2,
C: 0.3,
D: 0.4,
E: 0.5
}
`
---
`js
NewickTools.dfs(tree, nodeCallback)
`
- tree - string or parsed object
- nodeCallback - function (node)
`js
var tree = NewickTools.parse('(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F');
var data = NewickTools.dfs(tree, function (e) {
e.length *= 10;
return e;
});
`
Returns object
`json
{
A: 1,
B: 2,
C: 3,
D: 4,
E: 5
}
`$3
Check if two trees are equal
`js
import { NewickTools } from 'newick-tree-parser'NewickTools.equals(tree1, tree2)
`
tree1, tree2 - Newick instanse
Returns boolean true or false
`js
var tree1 = NewickTools.parse('(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F');
var tree2 = NewickTools.parse('(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F');NewickTools.equals(tree1, tree2); // true;
tree2 = NewickTools.parse('(A:0.11,B:0.22,(C:0.33,D:0.44)E:0.55)F');
NewickTools.equals(tree1, tree2); // false
`$3
Returns a root of the tree
`js
import { NewickTools } from 'newick-tree-parser'NewickTools.getRoot(s)
`
s - string on parsed object
`js
var tree = NewickTools.parse('(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F');
var root = NewickTools.getRoot(tree);\
`
Returns string (root name)
`
'F'
`$3
Iterates tree's nodes and applies callback for each nodeAlias for NewickTools.dfs(tree, callback)
`js
import { NewickTools } from 'newick-tree-parser'NewickTools.map(tree, callback)
`
tree - string or parsed object
callback - function (node)
`js
var tree = NewickTools.parse('(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F');
var mappedTree = NewickTools.map(tree, function (e) {
e *= 10;
e.name += ' mapped';
return e;
});
`
Returns object
`js
{
name: "F mapped",
branchset: [
{
name: "A mapped",
length: 1
},
{
name: "B mapped",
length: 2
},
{
name: "E mapped",
length: 5,
branchset: [
{
name: "C mapped",
length: 3
},
{
name: "D mapped",
length: 4
}]
}]
}
`$3
Returns normalized tree in [0; 1]
`js
import { NewickTools } from 'newick-tree-parser'NewickTools.normalize(tree)
`
tree - string or parsed object
`js
var tree = NewickTools.parse('(A:5,B:20)F;');
var normalizedTree = NewickTools.normalize(tree)
`
Returns object
`json
{
name:"F",
branchset: [
{name:"A", length: 0.2},
{name:"B", length: 0.8}
]
}
`$3
Parse Newick string into tree-object
`js
import { NewickTools } from 'newick-tree-parser'NewickTools.parse(s)
`
s - string
`js
var tree = NewickTools.parse('(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F');
`
Returns object
`js
{
name: "F",
branchset: [
{
name: "A",
length: 0.1
},
{
name: "B",
length: 0.2
},
{
name: "E",
length: 0.5,
branchset: [
{
name: "C",
length: 0.3
},
{
name: "D",
length: 0.4
}]
}]
}
`$3
Serializes tree
`js
import { NewickTools } from 'newick-tree-parser'NewickTools.serialize(tree)
`
tree - string or parsed object
`js
var tree = NewickTools.parse('(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F');
var serializedTree = NewickTools.serialize(tree)
`
Returns string
`js
'(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F;'
`
$3
Casts tree or string to tree-objectprivate
`js
cast(s)
`
s - string or parsed object
`js
var tree = '(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F';
tree = cast(tree);
`
Returns object
`js
{
name: "F",
branchset: [
{
name: "A",
length: 0.1
},
{
name: "B",
length: 0.2
},
{
name: "E",
length: 0.5,
branchset: [
{
name: "C",
length: 0.3
},
{
name: "D",
length: 0.4
}]
}]
}
`$3
Returns a root of the treeprivate
`js
getRoot(s)
`
s - string or parsed object
`js
var tree = Newick.parse('(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F');
tree = getRoot(tree);
`
Returns string (root name)
`js
'F'
`$3
Serializes treeprivate
`js
serialize(node)
`
node - tree node
`js
var tree = Newick.parse('(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F');
var serializedTree = Newick.serialize(tree)
`
Returns string
`js
'(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F'
`$3
Returns nodes datapublic method
`js
var data = newick.dfs();
var tree = new Newick('(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F');
var data = newick.dfs();
`
Returns object
`js
{
A: 0.1,
B: 0.2,
C: 0.3,
D: 0.4,
E: 0.5
}
`
---
`js
var data = newick.dfs(nodeCallback);
`
nodeCallback - function (node)
`js
var tree = new Newick('(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F');
var data = newick.dfs(function (e) {
e.length *= 10;
return e;
});
`
Returns object
`js
{
A: 1,
B: 2,
C: 3,
D: 4,
E: 5
}
``