// ////////////////////////////////////////////
// Save the Alignments
- Alignment alignment = (Alignment) getjv2vObj(av); // this is so we can get
+ Alignment alignment = (Alignment) getjv2vObj(av.getSequenceSetId()); // this is so we can get
// the alignviewport
// back
if (alignment == null)
{
alignment = new Alignment();
- bindjvvobj(av, alignment);
+ bindjvvobj(av.getSequenceSetId(), alignment);
if (alignment.getProvenance() == null)
{
alignment.setProvenance(new Provenance());
{
uk.ac.vamsas.objects.core.Alignment alignment = dataset
.getAlignment(al);
- AlignViewport av = (AlignViewport) getvObj2jv(alignment);
+ AlignViewport av=findViewport(alignment);
+
jalview.datamodel.AlignmentI jal = null;
if (av != null)
{
jalview.gui.Desktop.addInternalFrame(alignFrame, title
,
AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
- bindjvvobj(av, alignment);
+ bindjvvobj(av.getSequenceSetId(), alignment);
}
else
{
.ShowNewickTree(vstree.getNewickTree(), vstree
.getTitle(), vstree.getInputData(), 600,
500, t * 20 + 50, t * 20 + 50);
+
}
if (tp!=null)
+ {
bindjvvobj(tp, alignment.getTree(t));
+ try
+ {
+ vstree.UpdateSequenceTreeMap(tp);
+ } catch (RuntimeException e)
+ {
+ Cache.log.warn("update of labels failed.",e);
+ }
+ }
else
{
Cache.log.warn("Cannot create tree for tree "+t+" in document ("+alignment.getTree(t).getVorbaId());
}
}
+ public AlignViewport findViewport(Alignment alignment)
+ {
+ AlignViewport av=null;
+ AlignViewport[] avs = findViewportForSequenceSetId((String)getvObj2jv(alignment));
+ if (avs!=null)
+ {
+ av = avs[0];
+ }
+ return av;
+ }
+
+ private AlignViewport[] findViewportForSequenceSetId(String sequenceSetId)
+ {
+ Vector viewp = new Vector();
+ if (Desktop.desktop != null)
+ {
+ javax.swing.JInternalFrame[] frames = Desktop.instance.getAllFrames();
+
+ for (int t = 0; t < frames.length; t++)
+ {
+ if (frames[t] instanceof AlignFrame)
+ {
+ if (((AlignFrame) frames[t]).getViewport().getSequenceSetId().equals(sequenceSetId))
+ {
+ viewp.addElement(((AlignFrame) frames[t]).getViewport());
+ }
+ }
+ }
+ if (viewp.size()>0)
+ {
+ AlignViewport[] vp = new AlignViewport[viewp.size()];
+ viewp.copyInto(vp);
+ return vp;
+ }
+ }
+ return null;
+ }
+
// bitfields - should be a template in j1.5
private static int HASSECSTR = 0;
{
Cache.log
.warn("NO Vamsas Binding for local sequence! NOT CREATING MAPPING FOR "
- + mfrom.getName()
+ + dmps[smp].getDisplayId(true)
+ " to "
+ mps[smp].getTo().getName());
}
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