X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FCrossRef.java;h=df5ca10d1cf3f57aa057b2eaac903d0d899bfc3c;hb=6395e8fc1fc6b33c3b305d74d9be3642dfca8417;hp=2b5a0e214f10cbdf3528e045cfdeebed326c9a9d;hpb=5133de48f4251fa73eedcda66d6e2f2c25ff876b;p=jalview.git diff --git a/src/jalview/analysis/CrossRef.java b/src/jalview/analysis/CrossRef.java index 2b5a0e2..df5ca10 100644 --- a/src/jalview/analysis/CrossRef.java +++ b/src/jalview/analysis/CrossRef.java @@ -295,12 +295,14 @@ public class CrossRef if (fromDna) { // map is from dna seq to a protein product - cf.addMap(dss, rsq, xref.getMap().getMap()); + cf.addMap(dss, rsq, xref.getMap().getMap(), xref.getMap() + .getMappedFromId()); } else { // map should be from protein seq to its coding dna - cf.addMap(rsq, dss, xref.getMap().getMap().getInverse()); + cf.addMap(rsq, dss, xref.getMap().getMap().getInverse(), + xref.getMap().getMappedFromId()); } } } @@ -621,14 +623,14 @@ public class CrossRef void updateDbrefMappings(SequenceI mapFrom, DBRefEntry[] xrefs, SequenceI[] retrieved, AlignedCodonFrame acf, boolean fromDna) { - SequenceIdMatcher matcher = new SequenceIdMatcher(retrieved); + SequenceIdMatcher idMatcher = new SequenceIdMatcher(retrieved); for (DBRefEntry xref : xrefs) { if (!xref.hasMap()) { String targetSeqName = xref.getSource() + "|" + xref.getAccessionId(); - SequenceI[] matches = matcher.findAllIdMatches(targetSeqName); + SequenceI[] matches = idMatcher.findAllIdMatches(targetSeqName); if (matches == null) { return; @@ -705,6 +707,20 @@ public class CrossRef return false; } xref.setMap(new Mapping(mapTo, mapping)); + + /* + * and add a reverse DbRef with the inverse mapping + */ + if (mapFrom.getDatasetSequence() != null + && mapFrom.getDatasetSequence().getSourceDBRef() != null) + { + DBRefEntry dbref = new DBRefEntry(mapFrom.getDatasetSequence() + .getSourceDBRef()); + dbref.setMap(new Mapping(mapFrom.getDatasetSequence(), mapping + .getInverse())); + mapTo.addDBRef(dbref); + } + if (fromDna) { AlignmentUtils.computeProteinFeatures(mapFrom, mapTo, mapping);