From: Jim Procter Date: Wed, 16 Sep 2020 16:33:26 +0000 (+0100) Subject: JAL-3700 JAL-3748 AlignedCodonFrame.covers(seq,true) to verify mapping matches seq... X-Git-Tag: Release_2_11_1_3~5^2~32 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=c9296c060f69f3eeab1f6da2a07dbdb87c946e52;p=jalview.git JAL-3700 JAL-3748 AlignedCodonFrame.covers(seq,true) to verify mapping matches seq’s dataset sequence start/end rather than seq --- diff --git a/src/jalview/datamodel/AlignedCodonFrame.java b/src/jalview/datamodel/AlignedCodonFrame.java index 6103df5..9fa11cc 100644 --- a/src/jalview/datamodel/AlignedCodonFrame.java +++ b/src/jalview/datamodel/AlignedCodonFrame.java @@ -118,14 +118,36 @@ public class AlignedCodonFrame */ public boolean covers(SequenceI seq) { + return covers(seq,false); + } + /** + * + * @param seq + * @param localCover - when true - compare extent of seq's dataset sequence rather than the local extent + * @return true if mapping covers full length of given sequence + */ + public boolean covers(SequenceI seq, boolean localCover) + { List mappedRanges = null; MapList mapList = mapping.getMap(); + int mstart=seq.getStart(),mend=seq.getEnd() + ; if (fromSeq == seq || fromSeq == seq.getDatasetSequence()) { + if (localCover && fromSeq !=seq) + { + mstart=fromSeq.getStart(); + mend=fromSeq.getEnd(); + } mappedRanges = mapList.getFromRanges(); } else if (mapping.to == seq || mapping.to == seq.getDatasetSequence()) { + if (localCover && mapping.to !=seq) + { + mstart=mapping.to.getStart(); + mend=mapping.to.getEnd(); + } mappedRanges = mapList.getToRanges(); } else @@ -143,14 +165,14 @@ public class AlignedCodonFrame { int from = Math.min(range[0], range[1]); int to = Math.max(range[0], range[1]); - if (from < seq.getStart() || to > seq.getEnd()) + if (from < mstart || to > mend) { return false; } length += (to - from + 1); } // add 1 to mapped length to allow for a mapped stop codon - if (length + 1 < (seq.getEnd() - seq.getStart() + 1)) + if (length + 1 < (mend - mstart + 1)) { return false; }