} else {\r
if (sequenceMapping.isUpdated())\r
{\r
- update((jalview.datamodel.Mapping) mjvmapping, sequenceMapping);\r
+ update((jalview.util.MapList) mjvmapping, sequenceMapping);\r
}\r
}\r
}\r
\r
jalview.bin.Cache.log.debug("Successfully created mapping "+sequenceMapping.getVorbaId());\r
}\r
+ private void update(jalview.util.MapList mjvmapping, SequenceMapping sequenceMapping)\r
+ {\r
+ jalview.bin.Cache.log.error("Not implemented: Jalview Update Alcodon Mapping:TODO!"); \r
+ }\r
private void update(jalview.datamodel.Mapping mjvmapping, SequenceMapping sequenceMapping)\r
{\r
- jalview.bin.Cache.log.error("Not implemented: Jalview Update Mapping"); \r
+ jalview.bin.Cache.log.error("Not implemented: Jalview Update Sequence DBRef Mapping"); \r
}\r
/**\r
* limitations: Currently, jalview only deals with mappings between dataset\r
jalview.bin.Cache.log.error("Probable Vamsas implementation error : unbound dataset sequences involved in a mapping are being parsed!");\r
return;\r
} \r
+\r
if (sdloc.getDictionary()\r
.equals(uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_NA))\r
{\r
}\r
bindjvvobj(mapping, sequenceMapping);\r
jalview.structure.StructureSelectionManager.getStructureSelectionManager().addMappings(new AlignedCodonFrame[] { afc });\r
+ // Try to link up any conjugate database references in the two sequences\r
+ // matchConjugateDBRefs(from, to, mapping);\r
+ // Try to propagate any dbrefs across this mapping.\r
+\r
}\r
+ /**\r
+ * Complete any 'to' references in jalview.datamodel.Mapping objects associated with conjugate DBRefEntry under given mapping \r
+ * @param from sequence corresponding to from reference for sequence mapping\r
+ * @param to sequence correspondeing to to reference for sequence mapping\r
+ * @param smap maplist parsed in same sense as from and to\r
+ */\r
+ private void matchConjugateDBRefs(SequenceI from, SequenceI to,\r
+ jalview.util.MapList smap)\r
+ {\r
+ if (from.getDBRef()==null && to.getDBRef()==null)\r
+ {\r
+ if (jalview.bin.Cache.log.isDebugEnabled())\r
+ {\r
+ jalview.bin.Cache.log.debug("Not matching conjugate refs for "+from.getName()+" and "+to.getName());\r
+ }\r
+ return; \r
+ }\r
+ if (jalview.bin.Cache.log.isDebugEnabled())\r
+ {\r
+ jalview.bin.Cache.log.debug("Matching conjugate refs for "+from.getName()+" and "+to.getName());\r
+ }\r
+ jalview.datamodel.DBRefEntry[] fdb = from.getDBRef();\r
+ jalview.datamodel.DBRefEntry[] tdb = new jalview.datamodel.DBRefEntry[to.getDBRef().length];\r
+ int tdblen = to.getDBRef().length;\r
+ System.arraycopy(to.getDBRef(), 0, tdb, 0, tdblen);\r
+ Vector matched = new Vector();\r
+ jalview.util.MapList smapI = smap.getInverse();\r
+ for (int f=0;f<fdb.length; f++)\r
+ {\r
+ jalview.datamodel.DBRefEntry fe = fdb[f];\r
+ jalview.datamodel.Mapping fmp = fe.getMap();\r
+ boolean fmpnnl = fmp!=null;\r
+ // if (fmpnnl && fmp.getTo()!=null)\r
+ //{\r
+ // jalview.bin.Cache.log.debug("Not overwriting existing To reference in "+fe);\r
+ // continue;\r
+ //}\r
+ // smap from maps from fe.local to fe.map\r
+ boolean smapfromlocal2fe = (fmpnnl) ? smap.equals(fmp.getMap()) : false;\r
+ // smap from maps from fe.map to fe.local.\r
+ boolean smapfromfemap2local = (fmpnnl) ? smapI.equals(fmp.getMap()) : false;\r
+ for (int t=0; t<tdblen; t++)\r
+ {\r
+ jalview.datamodel.DBRefEntry te = tdb[t];\r
+ if (te!=null)\r
+ {\r
+ if (fe.getSource().equals(te.getSource())\r
+ && fe.getAccessionId().equals(te.getAccessionId()))\r
+ {\r
+ jalview.datamodel.Mapping tmp = te.getMap();\r
+ boolean tmpnnl = tmp!=null;\r
+ if (tmpnnl && tmp.getTo()!=null)\r
+ {\r
+ \r
+ }\r
+ // smap to maps from te.local to te.map\r
+ boolean smaptolocal2tm = (tmpnnl) ? smap.equals(tmp.getMap()) : false;\r
+ // smap to maps from te.map to te.local\r
+ boolean smaptotemap2local = (tmpnnl) ? smapI.equals(fmp.getMap()) : false;\r
+ if (smapfromlocal2fe && smaptotemap2local)\r
+ {\r
+ // smap implies mapping from to to from\r
+ fmp.setTo(to);\r
+ tmp.setTo(from);\r
+ } else \r
+ if (smapfromfemap2local && smaptolocal2tm) {\r
+ fmp.setTo(to);\r
+ }\r
+ }\r
+ \r
+ }\r
+ }\r
+ }\r
+ }\r
}
\ No newline at end of file