import java.util.Vector;\r
\r
import jalview.analysis.NJTree;\r
+import jalview.analysis.SequenceIdMatcher;\r
import jalview.bin.Cache;\r
import jalview.datamodel.AlignmentI;\r
import jalview.datamodel.AlignmentView;\r
+import jalview.datamodel.BinaryNode;\r
import jalview.datamodel.SeqCigar;\r
+import jalview.datamodel.Sequence;\r
import jalview.datamodel.SequenceI;\r
+import jalview.datamodel.SequenceNode;\r
import jalview.gui.AlignViewport;\r
import jalview.gui.TreePanel;\r
import jalview.io.NewickFile;\r
import jalview.io.VamsasAppDatastore;\r
import uk.ac.vamsas.client.Vobject;\r
+import uk.ac.vamsas.objects.core.AlignmentSequence;\r
import uk.ac.vamsas.objects.core.Entry;\r
import uk.ac.vamsas.objects.core.Input;\r
import uk.ac.vamsas.objects.core.Newick;\r
prov.getEntry(0).setAction("created " + tp.getTitle());\r
prov.getEntry(0).addInput(vInput);\r
// jalview's special input parameter for distance matrix calculations\r
- vInput.setName("jalview:seqdist");\r
+ vInput.setName("jalview:seqdist"); // TODO: settle on appropriate name.\r
prov.getEntry(0).addParam(new Param());\r
prov.getEntry(0).getParam(0).setName("treeType");\r
prov.getEntry(0).getParam(0).setType("utf8");\r
- prov.getEntry(0).getParam(0).setContent("NJ");\r
+ prov.getEntry(0).getParam(0).setContent("NJ"); // TODO: type of tree is a general parameter\r
int ranges[] = tp.getTree().seqData.getVisibleContigs();\r
// VisibleContigs are with respect to alignment coordinates. Still need\r
// offsets\r
return alsq;\r
}\r
/**\r
+ *\r
+ * Update jalview newick representation with TreeNode map\r
+\r
+ * @param tp the treepanel that this tree is bound to.\r
+ */\r
+ public void UpdateSequenceTreeMap(TreePanel tp)\r
+ {\r
+ if (tp==null || tree!=null)\r
+ return;\r
+ Vector leaves = new Vector();\r
+ tp.getTree().findLeaves(tp.getTree().getTopNode(), leaves);\r
+ Treenode[] tn = tree.getTreenode(); // todo: select nodes for this particular tree\r
+ int sz = tn.length;\r
+ int i = 0;\r
+ \r
+ while (i < sz)\r
+ {\r
+ Treenode node = tn[i++];\r
+ BinaryNode mappednode = findNodeSpec(node.getNodespec(),leaves);\r
+ if (mappednode!=null && mappednode instanceof SequenceNode) {\r
+ SequenceNode leaf = (SequenceNode) leaves.elementAt(i++);\r
+ // check if we can make the specified association\r
+ Object jvseq = null;\r
+ int vrf=0,refv=0;\r
+ while (jvseq==null && vrf<node.getVrefCount())\r
+ {\r
+ if (refv<node.getVref(vrf).getRefsCount())\r
+ {\r
+ Object noderef = node.getVref(vrf).getRefs(refv++);\r
+ if (noderef instanceof AlignmentSequence)\r
+ {\r
+ // we only make these kind of associations\r
+ jvseq = getvObj2jv((Vobject) noderef);\r
+ }\r
+ } else {\r
+ refv=0;\r
+ vrf++;\r
+ }\r
+ }\r
+ if (jvseq instanceof SequenceI)\r
+ {\r
+ leaf.setElement(jvseq);\r
+ leaf.setPlaceholder(false);\r
+ } else {\r
+ leaf.setPlaceholder(true);\r
+ leaf.setElement(new Sequence(leaf.getName(), "THISISAPLACEHLDER"));\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ /// TODO: refactor to vamsas :start \r
+ /**\r
* construct treenode mappings for mapped sequences\r
* \r
* @param ntree\r
ntree.findLeaves(ntree.getTopNode(), leaves);\r
Vector tnv = new Vector();\r
Enumeration l = leaves.elements();\r
- int i=0;\r
Hashtable nodespecs = new Hashtable();\r
while (l.hasMoreElements())\r
{\r
}\r
return bn;\r
}\r
+ // todo: end refactor to vamsas library\r
/**\r
* add jalview object to vamsas document\r
* \r
} else \r
if (vInput.getObjRef(0) instanceof uk.ac.vamsas.objects.core.AlignmentSequence) {\r
// recover an AlignmentView for the input data\r
- javport = (AlignViewport) getvObj2jv(((Vobject)vInput.getObjRef(0)).getV_parent());\r
+ javport = getViewport(((Vobject)vInput.getObjRef(0)).getV_parent());\r
jal = javport.getAlignment();\r
jalview.datamodel.SequenceI[] seqs = new jalview.datamodel.SequenceI[vInput.getObjRefCount()];\r
for (int i=0,iSize=vInput.getObjRefCount(); i<iSize; i++)\r
Cache.log.debug("Returning null for input data recovery from provenance.");\r
return null;\r
}\r
+ \r
+ private AlignViewport getViewport(Vobject v_parent)\r
+ {\r
+ if (v_parent instanceof uk.ac.vamsas.objects.core.Alignment)\r
+ {\r
+ return datastore.findViewport((uk.ac.vamsas.objects.core.Alignment) v_parent);\r
+ }\r
+ return null;\r
+ }\r
+ \r
public NewickFile getNewickTree()\r
{\r
return ntree;\r
}\r
return false;\r
}\r
-\r
}\r