X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2Fvamsas%2FSequencemapping.java;h=de4a01efdc68a1f697336efc669fb497d9cefbef;hb=2253f31565d4e96edffce2fac596e2ef0578d596;hp=c37dfd32820a5c56ffa27bb79aac935e0e319d17;hpb=d1f6cf53b29322601c621da9a6b3cb09dd28235e;p=jalview.git diff --git a/src/jalview/io/vamsas/Sequencemapping.java b/src/jalview/io/vamsas/Sequencemapping.java index c37dfd3..de4a01e 100644 --- a/src/jalview/io/vamsas/Sequencemapping.java +++ b/src/jalview/io/vamsas/Sequencemapping.java @@ -36,20 +36,24 @@ import uk.ac.vamsas.objects.core.SequenceType; public class Sequencemapping extends Rangetype { - public Sequencemapping(VamsasAppDatastore datastore, SequenceMapping sequenceMapping) + public Sequencemapping(VamsasAppDatastore datastore, + SequenceMapping sequenceMapping) { super(datastore); Object mjvmapping = getvObj2jv(sequenceMapping); - if (mjvmapping==null) + if (mjvmapping == null) { add(sequenceMapping); - } else { + } + else + { if (sequenceMapping.isUpdated()) { update((jalview.util.MapList) mjvmapping, sequenceMapping); } } } + /** * create or update a vamsas sequence mapping corresponding to a jalview * Mapping between two dataset sequences @@ -59,96 +63,121 @@ public class Sequencemapping extends Rangetype * @param from * @param ds */ - public Sequencemapping(VamsasAppDatastore datastore, jalview.datamodel.Mapping mjvmapping, uk.ac.vamsas.objects.core.SequenceType from, uk.ac.vamsas.objects.core.DataSet ds) + public Sequencemapping(VamsasAppDatastore datastore, + jalview.datamodel.Mapping mjvmapping, + uk.ac.vamsas.objects.core.SequenceType from, + uk.ac.vamsas.objects.core.DataSet ds) { super(datastore); SequenceMapping sequenceMapping = (SequenceMapping) getjv2vObj(mjvmapping); - if (sequenceMapping==null) + if (sequenceMapping == null) { add(mjvmapping, from, ds); - } else { - if (from!=null && sequenceMapping.getLoc()!=from) + } + else + { + if (from != null && sequenceMapping.getLoc() != from) { - jalview.bin.Cache.log.warn("Probable IMPLEMENTATION ERROR: "+from+" doesn't match the local mapping sequence."); + jalview.bin.Cache.log.warn("Probable IMPLEMENTATION ERROR: " + from + + " doesn't match the local mapping sequence."); } - if (ds!=null && sequenceMapping.is__stored_in_document() && sequenceMapping.getV_parent()!=ds) + if (ds != null && sequenceMapping.is__stored_in_document() + && sequenceMapping.getV_parent() != ds) { - jalview.bin.Cache.log.warn("Probable IMPLEMENTATION ERROR: "+ds+" doesn't match the parent of the bound sequence mapping object."); + jalview.bin.Cache.log + .warn("Probable IMPLEMENTATION ERROR: " + + ds + + " doesn't match the parent of the bound sequence mapping object."); } if (sequenceMapping.isUpdated()) - { + { conflict(mjvmapping, sequenceMapping); - } else { + } + else + { update(mjvmapping, sequenceMapping); } } } + private void conflict(Mapping mjvmapping, SequenceMapping sequenceMapping) { - System.err.println("Conflict in update of sequenceMapping "+sequenceMapping.getVorbaId()); + System.err.println("Conflict in update of sequenceMapping " + + sequenceMapping.getVorbaId()); } - private void add(Mapping mjvmapping, uk.ac.vamsas.objects.core.SequenceType from, DataSet ds) + + private void add(Mapping mjvmapping, + uk.ac.vamsas.objects.core.SequenceType from, DataSet ds) { SequenceI jvto = mjvmapping.getTo(); - while (jvto.getDatasetSequence()!=null) + while (jvto.getDatasetSequence() != null) { jvto = jvto.getDatasetSequence(); } SequenceType to = (SequenceType) getjv2vObj(jvto); - if (to==null) + if (to == null) { - jalview.bin.Cache.log.warn("NONFATAL - do a second update: Ignoring Forward Reference to seuqence not yet bound to vamsas seuqence object"); + jalview.bin.Cache.log + .warn("NONFATAL - do a second update: Ignoring Forward Reference to seuqence not yet bound to vamsas seuqence object"); return; - } + } SequenceMapping sequenceMapping = new SequenceMapping(); sequenceMapping.setLoc(from); sequenceMapping.setMap(to); - boolean dnaToProt=false,sense=false; + boolean dnaToProt = false, sense = false; // ensure that we create a mapping with the correct sense - if (((Sequence) sequenceMapping.getLoc()) - .getDictionary() - .equals(uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_NA)) + if (((Sequence) sequenceMapping.getLoc()).getDictionary().equals( + uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_NA)) { - if (((Sequence) sequenceMapping.getMap()) - .getDictionary() - .equals(uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_AA)) + if (((Sequence) sequenceMapping.getMap()).getDictionary().equals( + uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_AA)) { - dnaToProt=true; - sense=true; - } - } else { - if (((Sequence) sequenceMapping.getMap()) - .getDictionary() - .equals(uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_NA)) + dnaToProt = true; + sense = true; + } + } + else + { + if (((Sequence) sequenceMapping.getMap()).getDictionary().equals( + uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_NA)) { - dnaToProt=true; - sense=false; - } + dnaToProt = true; + sense = false; + } } if (!dnaToProt) { - jalview.bin.Cache.log.warn("Ignoring Mapping - don't support protein to protein mapping in vamsas document yet."); + jalview.bin.Cache.log + .warn("Ignoring Mapping - don't support protein to protein mapping in vamsas document yet."); return; } - if (ds==null) + if (ds == null) { // locate dataset for storage of SequenceMapping if (sense) { - ds = (DataSet) ((uk.ac.vamsas.client.Vobject) sequenceMapping.getLoc()).getV_parent(); - } else { - ds = (DataSet) ((uk.ac.vamsas.client.Vobject) sequenceMapping.getMap()).getV_parent(); - } + ds = (DataSet) ((uk.ac.vamsas.client.Vobject) sequenceMapping + .getLoc()).getV_parent(); + } + else + { + ds = (DataSet) ((uk.ac.vamsas.client.Vobject) sequenceMapping + .getMap()).getV_parent(); + } } if (sense) { this.initMapType(sequenceMapping, mjvmapping.getMap(), true); - } else { - this.initMapType(sequenceMapping, mjvmapping.getMap().getInverse(), true); + } + else + { + this.initMapType(sequenceMapping, mjvmapping.getMap().getInverse(), + true); } ds.addSequenceMapping(sequenceMapping); - sequenceMapping.setProvenance(this.dummyProvenance("user defined coding region translation")); // TODO: + sequenceMapping.setProvenance(this + .dummyProvenance("user defined coding region translation")); // TODO: // correctly // construct // provenance @@ -159,16 +188,24 @@ public class Sequencemapping extends Rangetype // mapping bindjvvobj(mjvmapping, sequenceMapping); - jalview.bin.Cache.log.debug("Successfully created mapping "+sequenceMapping.getVorbaId()); + jalview.bin.Cache.log.debug("Successfully created mapping " + + sequenceMapping.getVorbaId()); } - private void update(jalview.util.MapList mjvmapping, SequenceMapping sequenceMapping) + + private void update(jalview.util.MapList mjvmapping, + SequenceMapping sequenceMapping) { - jalview.bin.Cache.log.error("Not implemented: Jalview Update Alcodon Mapping:TODO!"); + jalview.bin.Cache.log + .error("Not implemented: Jalview Update Alcodon Mapping:TODO!"); } - private void update(jalview.datamodel.Mapping mjvmapping, SequenceMapping sequenceMapping) + + private void update(jalview.datamodel.Mapping mjvmapping, + SequenceMapping sequenceMapping) { - jalview.bin.Cache.log.error("Not implemented: Jalview Update Sequence DBRef Mapping"); + jalview.bin.Cache.log + .error("Not implemented: Jalview Update Sequence DBRef Mapping"); } + /** * limitations: Currently, jalview only deals with mappings between dataset * sequences, and even then, only between those that map from DNA to Protein. @@ -178,22 +215,28 @@ public class Sequencemapping extends Rangetype private void add(SequenceMapping sequenceMapping) { Object mobj; - SequenceI from=null,to=null; - boolean dnaToProt=false,sense=false; - Sequence sdloc=null, sdmap=null; + SequenceI from = null, to = null; + boolean dnaToProt = false, sense = false; + Sequence sdloc = null, sdmap = null; if (sequenceMapping.getLoc() instanceof AlignmentSequence) { - sdloc = (Sequence) ((AlignmentSequence) sequenceMapping.getLoc()).getRefid(); - } else { + sdloc = (Sequence) ((AlignmentSequence) sequenceMapping.getLoc()) + .getRefid(); + } + else + { sdloc = ((Sequence) sequenceMapping.getLoc()); } if (sequenceMapping.getMap() instanceof AlignmentSequence) { - sdmap = (Sequence) ((AlignmentSequence) sequenceMapping.getMap()).getRefid(); - } else { + sdmap = (Sequence) ((AlignmentSequence) sequenceMapping.getMap()) + .getRefid(); + } + else + { sdmap = ((Sequence) sequenceMapping.getMap()); } - if (sdloc==null || sdmap == null) + if (sdloc == null || sdmap == null) { jalview.bin.Cache.log.info("Ignoring non sequence-sequence mapping"); return; @@ -211,135 +254,163 @@ public class Sequencemapping extends Rangetype if (from == null || to == null) { - jalview.bin.Cache.log.error("Probable Vamsas implementation error : unbound dataset sequences involved in a mapping are being parsed!"); + 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)) + if (sdloc.getDictionary().equals( + uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_NA)) { - if (sdmap.getDictionary() - .equals(uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_AA)) + if (sdmap.getDictionary().equals( + uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_AA)) { - dnaToProt=true; - sense=true; - } + dnaToProt = true; + sense = true; + } // else { // } - } else { - if (sdmap.getDictionary() - .equals(uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_NA)) + } + else + { + if (sdmap.getDictionary().equals( + uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_NA)) { - dnaToProt=true; - sense=false; - } + dnaToProt = true; + sense = false; + } } // create mapping storage object and make each dataset alignment reference // it. - jalview.datamodel.AlignmentI dsLoc = (jalview.datamodel.AlignmentI) getvObj2jv(sdloc.getV_parent()); - jalview.datamodel.AlignmentI dsMap = (jalview.datamodel.AlignmentI) getvObj2jv(sdmap.getV_parent()); + jalview.datamodel.AlignmentI dsLoc = (jalview.datamodel.AlignmentI) getvObj2jv(sdloc + .getV_parent()); + jalview.datamodel.AlignmentI dsMap = (jalview.datamodel.AlignmentI) getvObj2jv(sdmap + .getV_parent()); AlignedCodonFrame afc = new AlignedCodonFrame(0); - if (dsLoc!=null && dsLoc!=dsMap) + if (dsLoc != null && dsLoc != dsMap) { dsLoc.addCodonFrame(afc); } - if (dsMap!=null) + if (dsMap != null) { dsMap.addCodonFrame(afc); } // create and add the new mapping to (each) dataset's codonFrame - jalview.util.MapList mapping = null; + jalview.util.MapList mapping = null; if (!sense) { mapping = this.parsemapType(sequenceMapping, 1, 3); // invert sense - mapping = new jalview.util.MapList(mapping.getToRanges(), mapping.getFromRanges(), mapping.getToRatio(), mapping.getFromRatio()); + mapping = new jalview.util.MapList(mapping.getToRanges(), mapping + .getFromRanges(), mapping.getToRatio(), mapping + .getFromRatio()); afc.addMap(to, from, mapping); - } else { + } + else + { mapping = this.parsemapType(sequenceMapping, 3, 1); // correct sense afc.addMap(from, to, mapping); } bindjvvobj(mapping, sequenceMapping); - jalview.structure.StructureSelectionManager.getStructureSelectionManager().addMappings(new AlignedCodonFrame[] { afc }); + jalview.structure.StructureSelectionManager + .getStructureSelectionManager().addMappings( + new AlignedCodonFrame[] + { afc }); // Try to link up any conjugate database references in the two sequences - // matchConjugateDBRefs(from, to, mapping); + // 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 + * 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 (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()); + jalview.bin.Cache.log.debug("Not matching conjugate refs for " + + from.getName() + " and " + to.getName()); } - return; + return; } if (jalview.bin.Cache.log.isDebugEnabled()) { - jalview.bin.Cache.log.debug("Matching conjugate refs for "+from.getName()+" and "+to.getName()); + 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]; + 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