From 51103d869344aed06f20d48fcd210b20ffb9e542 Mon Sep 17 00:00:00 2001 From: jprocter Date: Tue, 18 Sep 2007 10:30:52 +0000 Subject: [PATCH] fix class-cast exception and added beginnings of DBRef inference mechanism --- src/jalview/io/vamsas/Sequencemapping.java | 87 +++++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 2 deletions(-) diff --git a/src/jalview/io/vamsas/Sequencemapping.java b/src/jalview/io/vamsas/Sequencemapping.java index a4ee585..4cede9a 100644 --- a/src/jalview/io/vamsas/Sequencemapping.java +++ b/src/jalview/io/vamsas/Sequencemapping.java @@ -28,7 +28,7 @@ public class Sequencemapping extends Rangetype } else { if (sequenceMapping.isUpdated()) { - update((jalview.datamodel.Mapping) mjvmapping, sequenceMapping); + update((jalview.util.MapList) mjvmapping, sequenceMapping); } } } @@ -144,9 +144,13 @@ public class Sequencemapping extends Rangetype jalview.bin.Cache.log.debug("Successfully created mapping "+sequenceMapping.getVorbaId()); } + private void update(jalview.util.MapList mjvmapping, SequenceMapping sequenceMapping) + { + jalview.bin.Cache.log.error("Not implemented: Jalview Update Alcodon Mapping:TODO!"); + } private void update(jalview.datamodel.Mapping mjvmapping, SequenceMapping sequenceMapping) { - jalview.bin.Cache.log.error("Not implemented: Jalview Update Mapping"); + jalview.bin.Cache.log.error("Not implemented: Jalview Update Sequence DBRef Mapping"); } /** * limitations: Currently, jalview only deals with mappings between dataset @@ -193,6 +197,7 @@ public class Sequencemapping extends Rangetype jalview.bin.Cache.log.error("Probable Vamsas implementation error : unbound dataset sequences involved in a mapping are being parsed!"); return; } + if (sdloc.getDictionary() .equals(uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_NA)) { @@ -241,5 +246,83 @@ public class Sequencemapping extends Rangetype } bindjvvobj(mapping, sequenceMapping); jalview.structure.StructureSelectionManager.getStructureSelectionManager().addMappings(new AlignedCodonFrame[] { afc }); + // Try to link up any conjugate database references in the two sequences + // matchConjugateDBRefs(from, to, mapping); + // Try to propagate any dbrefs across this mapping. + } + /** + * Complete any 'to' references in jalview.datamodel.Mapping objects associated with conjugate DBRefEntry under given mapping + * @param from sequence corresponding to from reference for sequence mapping + * @param to sequence correspondeing to to reference for sequence mapping + * @param smap maplist parsed in same sense as from and to + */ + private void matchConjugateDBRefs(SequenceI from, SequenceI to, + jalview.util.MapList smap) + { + if (from.getDBRef()==null && to.getDBRef()==null) + { + if (jalview.bin.Cache.log.isDebugEnabled()) + { + jalview.bin.Cache.log.debug("Not matching conjugate refs for "+from.getName()+" and "+to.getName()); + } + return; + } + if (jalview.bin.Cache.log.isDebugEnabled()) + { + jalview.bin.Cache.log.debug("Matching conjugate refs for "+from.getName()+" and "+to.getName()); + } + jalview.datamodel.DBRefEntry[] fdb = from.getDBRef(); + jalview.datamodel.DBRefEntry[] tdb = new jalview.datamodel.DBRefEntry[to.getDBRef().length]; + int tdblen = to.getDBRef().length; + System.arraycopy(to.getDBRef(), 0, tdb, 0, tdblen); + Vector matched = new Vector(); + jalview.util.MapList smapI = smap.getInverse(); + for (int f=0;f