Class PharmacophoreTree
- java.lang.Object
-
- com.actelion.research.chem.descriptor.pharmacophoretree.PharmacophoreTree
-
public class PharmacophoreTree extends java.lang.ObjectA PharmacophoreTree closely follows the concepts of FeatureTrees as described by Rarey and Dixon (DOI:10.1023/a:1008068904628). A PharmacophoreTree consists of connected nodes and it's data structure is an undirected tree. No cycles are allowed which distinguishes it from a molecular graph. PharmacophoreTrees facilitates the comparison of chemical structures with respect to their features in 2D.- Author:
- joel
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classPharmacophoreTree.BiGramIntcontainer of an undirected edge
-
Constructor Summary
Constructors Constructor Description PharmacophoreTree(java.util.List<PharmacophoreNode> nodes, java.util.List<int[]> edges)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidenumerateExtensionCutFast(int head, int[] cut, java.util.List<java.lang.Integer> subTreeEdgeIndeces, java.util.Set<java.lang.Integer> extensionNodes, java.util.Set<java.lang.Integer> sourceNodes)retrieve nodes that are part of extension match ("extension nodes") as well as the nodes that are part of a cut subtree (source nodes) from a cut-stringvoidenumerateExtensionCutFull(int head, int[] cut, java.util.List<java.lang.Integer> subTreeEdgeIndeces, java.util.List<java.lang.Integer> subTreeParentEdgeIndeces, java.util.List<java.util.List<java.lang.Integer>> sourceTreeEdgeIndeces, java.util.List<java.util.List<java.lang.Integer>> sourceTreeEdgeParentIndeces, java.util.List<java.lang.Integer> sourceTreeHeadNodes, java.util.Set<java.lang.Integer> extensionNodes, java.util.List<java.lang.Integer> cutEdges, java.util.List<java.lang.Integer> cutDirections)retrieves nodes that are part of extension match ("extension nodes") as well as the different subtrees resulting from the cuts with a list of their edges (in bfs order) as well as the parents of the edgesjava.util.List<java.util.Set<java.lang.Integer>>getAllSubtrees()doublegetDirectSim(PharmacophoreTree pTree2)java.util.List<int[]>getEdges()java.util.List<int[]>getExtensionCuts(java.util.List<java.lang.Integer> subtreeEdgeIndeces, java.util.List<java.lang.Integer> subtreeEdgeParentIndeces)get a list of int[] arrays that define an extension cut: Given a subtree with a designated head-node, an extension cut separates an extension match from the remaining subtrees.intgetLinkNodes()java.util.List<PharmacophoreNode>getNodes()java.util.List<PharmacophoreNode>getNodes(java.util.Collection<java.lang.Integer> indeces)java.util.Set<java.lang.Integer>getNodesFromEdges(java.util.List<java.lang.Integer> edgeIndeces)voidgetPathsFromHeadNode(int headNode, java.util.List<java.util.Set<java.lang.Integer>> paths, java.util.Set<java.lang.Integer> visitedEdges)doublegetSize()doublegetSubTreeSize(java.util.List<java.lang.Integer> edges, int headNode)int[]initialCut(int cut, int edge, java.util.List<java.lang.Integer> sourceTreeEdges, java.util.List<java.lang.Integer> sourceTreeEdgeParents, java.util.List<java.lang.Integer> targetTreeEdges, java.util.List<java.lang.Integer> targetTreeEdgeParents)a cut divides a edge into a target node and a source node: an edge is defined as a tuple of two nodes (a,b), a left cut results in node a being the source node and b being the target node: a-->--b a right cut results in the right node being the source node: a--<--b returns int array with source node as 0th element and target node as 1st elementvoidremoveNode(PharmacophoreNode node)voidtreeWalkBFS(int headNode, int deletedEdgeIndex, java.util.List<java.lang.Integer> treeEdgesBFS, java.util.List<java.lang.Integer> edgeParentsBFS)Walks a subtree of the PharmacophoreTree in breadth-first manner starting from a deleted edge and a designated head node.
-
-
-
Field Detail
-
CUT_NONE
public static final int CUT_NONE
- See Also:
- Constant Field Values
-
CUT_RIGHT
public static final int CUT_RIGHT
- See Also:
- Constant Field Values
-
CUT_LEFT
public static final int CUT_LEFT
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
PharmacophoreTree
public PharmacophoreTree(java.util.List<PharmacophoreNode> nodes, java.util.List<int[]> edges)
-
-
Method Detail
-
initialCut
public int[] initialCut(int cut, int edge, java.util.List<java.lang.Integer> sourceTreeEdges, java.util.List<java.lang.Integer> sourceTreeEdgeParents, java.util.List<java.lang.Integer> targetTreeEdges, java.util.List<java.lang.Integer> targetTreeEdgeParents)a cut divides a edge into a target node and a source node: an edge is defined as a tuple of two nodes (a,b), a left cut results in node a being the source node and b being the target node: a-->--b a right cut results in the right node being the source node: a--<--b returns int array with source node as 0th element and target node as 1st element- Parameters:
cut-edge-sourceTreeEdges-sourceTreeEdgeParents-targetTreeEdges-targetTreeEdgeParents-- Returns:
-
treeWalkBFS
public void treeWalkBFS(int headNode, int deletedEdgeIndex, java.util.List<java.lang.Integer> treeEdgesBFS, java.util.List<java.lang.Integer> edgeParentsBFS)Walks a subtree of the PharmacophoreTree in breadth-first manner starting from a deleted edge and a designated head node. Returns a list of edge indeces and the parents of the edges.- Parameters:
headNode-deletedEdgeIndex-treeEdgesBFS-edgeParentsBFS-
-
enumerateExtensionCutFast
public void enumerateExtensionCutFast(int head, int[] cut, java.util.List<java.lang.Integer> subTreeEdgeIndeces, java.util.Set<java.lang.Integer> extensionNodes, java.util.Set<java.lang.Integer> sourceNodes)retrieve nodes that are part of extension match ("extension nodes") as well as the nodes that are part of a cut subtree (source nodes) from a cut-string- Parameters:
head-cut-subTreeEdgeIndeces-extensionNodes-sourceNodes-
-
enumerateExtensionCutFull
public void enumerateExtensionCutFull(int head, int[] cut, java.util.List<java.lang.Integer> subTreeEdgeIndeces, java.util.List<java.lang.Integer> subTreeParentEdgeIndeces, java.util.List<java.util.List<java.lang.Integer>> sourceTreeEdgeIndeces, java.util.List<java.util.List<java.lang.Integer>> sourceTreeEdgeParentIndeces, java.util.List<java.lang.Integer> sourceTreeHeadNodes, java.util.Set<java.lang.Integer> extensionNodes, java.util.List<java.lang.Integer> cutEdges, java.util.List<java.lang.Integer> cutDirections)retrieves nodes that are part of extension match ("extension nodes") as well as the different subtrees resulting from the cuts with a list of their edges (in bfs order) as well as the parents of the edges- Parameters:
head-cut-subTreeEdgeIndeces-subTreeParentEdgeIndeces-sourceTreeEdgeIndeces-sourceTreeEdgeParentIndeces-sourceTreeHeadNodes-extensionNodes-cutEdges-cutDirections-
-
getExtensionCuts
public java.util.List<int[]> getExtensionCuts(java.util.List<java.lang.Integer> subtreeEdgeIndeces, java.util.List<java.lang.Integer> subtreeEdgeParentIndeces)get a list of int[] arrays that define an extension cut: Given a subtree with a designated head-node, an extension cut separates an extension match from the remaining subtrees. The extension cut defines for every edge of the input subtrees their status: 0 -> edge contained in extension match 1 -> edge is cut -1 -> edge is part of a cut subtree- Parameters:
subtreeEdgeIndeces-subtreeEdgeParentIndeces-- Returns:
-
getNodesFromEdges
public java.util.Set<java.lang.Integer> getNodesFromEdges(java.util.List<java.lang.Integer> edgeIndeces)
-
getNodes
public java.util.List<PharmacophoreNode> getNodes(java.util.Collection<java.lang.Integer> indeces)
-
getNodes
public java.util.List<PharmacophoreNode> getNodes()
-
getEdges
public java.util.List<int[]> getEdges()
-
getLinkNodes
public int getLinkNodes()
-
removeNode
public void removeNode(PharmacophoreNode node)
-
getSize
public double getSize()
-
getSubTreeSize
public double getSubTreeSize(java.util.List<java.lang.Integer> edges, int headNode)
-
getDirectSim
public double getDirectSim(PharmacophoreTree pTree2)
-
getAllSubtrees
public java.util.List<java.util.Set<java.lang.Integer>> getAllSubtrees()
-
getPathsFromHeadNode
public void getPathsFromHeadNode(int headNode, java.util.List<java.util.Set<java.lang.Integer>> paths, java.util.Set<java.lang.Integer> visitedEdges)
-
-