Fixed second time clipping
When a read is clipped once, and then in the second operation, because of indels, it doesn't reach the coordinate initially set for hard clipping, the indices were wrong. This should fix it.
This commit is contained in:
parent
489c15b99d
commit
0d976d6211
|
|
@ -50,7 +50,7 @@ public class ReadClipper {
|
||||||
|
|
||||||
public SAMRecord hardClipByReferenceCoordinates(int refStart, int refStop) {
|
public SAMRecord hardClipByReferenceCoordinates(int refStart, int refStop) {
|
||||||
int start = (refStart < 0) ? 0 : ReadUtils.getReadCoordinateForReferenceCoordinate(read, refStart);
|
int start = (refStart < 0) ? 0 : ReadUtils.getReadCoordinateForReferenceCoordinate(read, refStart);
|
||||||
int stop = (refStop < 0) ? read.getReadLength()-1 : ReadUtils.getReadCoordinateForReferenceCoordinate(read, refStop);
|
int stop = (refStop < 0) ? read.getReadLength() - 1 : ReadUtils.getReadCoordinateForReferenceCoordinate(read, refStop);
|
||||||
|
|
||||||
System.out.println("DEBUG -- clipping start/stop: " + start + "/" + stop);
|
System.out.println("DEBUG -- clipping start/stop: " + start + "/" + stop);
|
||||||
this.addOp(new ClippingOp(start, stop));
|
this.addOp(new ClippingOp(start, stop));
|
||||||
|
|
|
||||||
|
|
@ -655,16 +655,16 @@ public class ReadUtils {
|
||||||
public static int getReadCoordinateForReferenceCoordinate(SAMRecord read, int refCoord) {
|
public static int getReadCoordinateForReferenceCoordinate(SAMRecord read, int refCoord) {
|
||||||
int readBases = 0;
|
int readBases = 0;
|
||||||
int refBases = 0;
|
int refBases = 0;
|
||||||
int goal = refCoord - read.getAlignmentStart(); // read coords are 0-based!
|
int goal = refCoord - read.getAlignmentStart(); // The goal is to move this many reference bases
|
||||||
boolean goalReached = refBases == goal;
|
boolean goalReached = refBases == goal;
|
||||||
|
|
||||||
Iterator<CigarElement> cigarElementIterator = read.getCigar().getCigarElements().iterator();
|
Iterator<CigarElement> cigarElementIterator = read.getCigar().getCigarElements().iterator();
|
||||||
while (!goalReached && cigarElementIterator.hasNext()) {
|
while (!goalReached && cigarElementIterator.hasNext()) {
|
||||||
CigarElement cigarElement = cigarElementIterator.next();
|
CigarElement cigarElement = cigarElementIterator.next();
|
||||||
int shift = 0;
|
int shift = 0;
|
||||||
if (refBases == 0 && readBases == 0 && cigarElement.getOperator() == CigarOperator.HARD_CLIP) {
|
//if (refBases == 0 && readBases == 0 && cigarElement.getOperator() == CigarOperator.HARD_CLIP) {
|
||||||
goal -= cigarElement.getLength();
|
// goal -= cigarElement.getLength();
|
||||||
}
|
//}
|
||||||
|
|
||||||
if (cigarElement.getOperator().consumesReferenceBases()) {
|
if (cigarElement.getOperator().consumesReferenceBases()) {
|
||||||
if (refBases + cigarElement.getLength() < goal) {
|
if (refBases + cigarElement.getLength() < goal) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue