This repository stores a basic implementation for creating a neighbour joining tree from a given distance or similarity matrix.
Generating a distance matrix (A good way to do this is to use sklearn.DistanceMetrics with real data):
from sklearn.neighbors import DistanceMetric dist = DistanceMetric.get_metric('euclidean') X = [[0, 1, 2], [3, 4, 5], [2, 3, 1], [0, 2, 1]] dist_mat = dist.pairwise(X)
Now that we have our distance matrix, we can now use it to construct a neighbour joining tree, giving some labels for the different samples:
import numpy import TreeMethods.TreeBuild as TB tree = TB.njTree(dist_mat, numpy.array(['A', 'B', 'C', 'D']))
We can then use ete3 to construct this into a tree object:
from ete3 import Tree tree = Tree(tree) print(tree) /-B | | /-D --|--| | \-A | \-C