Multiple Sequence Alignments are the building blocks of our Matrix data structure.
The Matrix class takes a biopython MSA object and compresses it into a matrix that
contains only the unique site data, while also keeping records to recover the entire matrix.
Enabled for the Matrix class is a variety of alphabets, including DNA (the default), RNA, Proteins, Codons, SNP, and Binary.
Currently, there is no reason for a user to explicitly create a Matrix.
To create a network is very easy and straightforward:
from PhyNetPy.Graph import DAG #Can initialize as an empty graph tree = DAG() #To make it a network, simply add in individual nodes #one at a time, or pass in an array of nodes tree.addNodes(individualNodeObj) tree.addNodes(arrayOfNodeObjs) #same applies to adding edges tree.addEdges(individualEdge) tree.addEdges(arrayOfEdges) #Where an edge can just be [NodeObj, NodeObj2] #Now you have a complete network. To grab the newick representation... newickStr = tree.newickString() #You can now visualize your graph with IcyTree #You can also initialize trees with node and edge lists tree2 = DAG(edgeList) #add nodes later tree3 = DAG(nodes = nodeList) #add edges later tree4 = DAG(edgeList, nodeList) #add both now #To see a description of all the nodes in your graph: tree.printGraph()
A Node object has the following initialization parameters, all of which are defaults:
- branchLen = None
- parNode = [ ]
- attr = { }
- isReticulation = False
- name = None
from PhyNetPy.Node import Node #Can initialize as an empty Node new_node = Node() #To set the branch length new_node.setBranchLength(num) #To get the branch length node_len = new_node.branchLen() #To add a parent (must be a Node or UltrametricNode obj) new_node.addParent(par_node) #or to set the parent new_node.setParent(par_node) #To set the name of a Node new_node.setName("Homo Sapiens") #To get the name of the Node node_name = new_node.getName() #To set a custom attribute new_node.setAttribute(attribute, value) #i.e "t" : 5.4 #To look up an attribute attr_val = new_node.attrLookup(attribute) #i.e "t" returns 5.4 #To visualize the values contained in a Node obj new_node.asString() #A more typical way to create a Node new_node2 = Node(parNode = [par_node], attr = {"t":5.4}, name = "species2")