Fixing contracts for SoftUnclippedEnd utils
Now accepts reads that are entirely contained inside an insertion.
This commit is contained in:
parent
ba150570f3
commit
080c957547
|
|
@ -667,7 +667,7 @@ public class ReadUtils {
|
||||||
return ReadAndIntervalOverlap.OVERLAP_RIGHT;
|
return ReadAndIntervalOverlap.OVERLAP_RIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ensures({"result >= read.getUnclippedStart()", "result <= read.getUnclippedEnd()"})
|
@Ensures({"(result >= read.getUnclippedStart() && result <= read.getUnclippedEnd()) || readIsEntirelyInsertion(read)"})
|
||||||
public static int getRefCoordSoftUnclippedStart(SAMRecord read) {
|
public static int getRefCoordSoftUnclippedStart(SAMRecord read) {
|
||||||
int start = read.getUnclippedStart();
|
int start = read.getUnclippedStart();
|
||||||
for (CigarElement cigarElement : read.getCigar().getCigarElements()) {
|
for (CigarElement cigarElement : read.getCigar().getCigarElements()) {
|
||||||
|
|
@ -679,7 +679,7 @@ public class ReadUtils {
|
||||||
return start;
|
return start;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ensures({"result >= read.getUnclippedStart()", "result <= read.getUnclippedEnd()"})
|
@Ensures({"(result >= read.getUnclippedStart() && result <= read.getUnclippedEnd()) || readIsEntirelyInsertion(read)"})
|
||||||
public static int getRefCoordSoftUnclippedEnd(SAMRecord read) {
|
public static int getRefCoordSoftUnclippedEnd(SAMRecord read) {
|
||||||
int stop = read.getUnclippedStart();
|
int stop = read.getUnclippedStart();
|
||||||
int shift = 0;
|
int shift = 0;
|
||||||
|
|
@ -695,6 +695,14 @@ public class ReadUtils {
|
||||||
return (lastOperator == CigarOperator.HARD_CLIP) ? stop-1 : stop+shift-1 ;
|
return (lastOperator == CigarOperator.HARD_CLIP) ? stop-1 : stop+shift-1 ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean readIsEntirelyInsertion(SAMRecord read) {
|
||||||
|
for (CigarElement cigarElement : read.getCigar().getCigarElements()) {
|
||||||
|
if (cigarElement.getOperator() != CigarOperator.INSERTION)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Looks for a read coordinate that corresponds to the reference coordinate in the soft clipped region before
|
* Looks for a read coordinate that corresponds to the reference coordinate in the soft clipped region before
|
||||||
* the alignment start of the read.
|
* the alignment start of the read.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue