Merge branch 'master' of ssh://nickel.broadinstitute.org/humgen/gsa-scr1/gsa-engineering/git/unstable
This commit is contained in:
commit
1b1ca80df2
|
|
@ -0,0 +1,56 @@
|
||||||
|
package org.broadinstitute.sting.utils;
|
||||||
|
|
||||||
|
import com.google.java.contract.Ensures;
|
||||||
|
import com.google.java.contract.Requires;
|
||||||
|
|
||||||
|
import java.util.Comparator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Mauricio Carneiro
|
||||||
|
* @since 9/28/11
|
||||||
|
*/
|
||||||
|
public class GenomeLocComparator implements Comparator<GenomeLoc> {
|
||||||
|
/**
|
||||||
|
* compares genomeLoc's contigs
|
||||||
|
*
|
||||||
|
* @param gl1 the genome loc to compare contigs
|
||||||
|
* @param gl2 the genome loc to compare contigs
|
||||||
|
* @return 0 if equal, -1 if gl2.contig is greater, 1 if gl1.contig is greater
|
||||||
|
*/
|
||||||
|
@Requires("gl2 != null")
|
||||||
|
@Ensures("result == 0 || result == 1 || result == -1")
|
||||||
|
public final int compareContigs( GenomeLoc gl1, GenomeLoc gl2 ) {
|
||||||
|
if (gl1.contigIndex == gl2.contigIndex)
|
||||||
|
return 0;
|
||||||
|
else if (gl1.contigIndex > gl2.contigIndex)
|
||||||
|
return 1;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Requires("gl2 != null")
|
||||||
|
@Ensures("result == 0 || result == 1 || result == -1")
|
||||||
|
public int compare ( GenomeLoc gl1, GenomeLoc gl2 ) {
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
if ( gl1 == gl2 ) {
|
||||||
|
result = 0;
|
||||||
|
}
|
||||||
|
else if(GenomeLoc.isUnmapped(gl1))
|
||||||
|
result = 1;
|
||||||
|
else if(GenomeLoc.isUnmapped(gl2))
|
||||||
|
result = -1;
|
||||||
|
else {
|
||||||
|
final int cmpContig = compareContigs(gl1, gl2);
|
||||||
|
|
||||||
|
if ( cmpContig != 0 ) {
|
||||||
|
result = cmpContig;
|
||||||
|
} else {
|
||||||
|
if ( gl1.getStart() < gl2.getStart() ) result = -1;
|
||||||
|
if ( gl1.getStart() > gl2.getStart() ) result = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -93,8 +93,9 @@ public class ReadClipper {
|
||||||
public SAMRecord hardClipBothEndsByReferenceCoordinates(int left, int right) {
|
public SAMRecord hardClipBothEndsByReferenceCoordinates(int left, int right) {
|
||||||
if (left == right)
|
if (left == right)
|
||||||
return new SAMRecord(read.getHeader());
|
return new SAMRecord(read.getHeader());
|
||||||
this.read = hardClipByReferenceCoordinates(right, -1);
|
SAMRecord leftTailRead = hardClipByReferenceCoordinates(right, -1);
|
||||||
return hardClipByReferenceCoordinates(-1, left);
|
ReadClipper clipper = new ReadClipper(leftTailRead);
|
||||||
|
return clipper.hardClipByReferenceCoordinatesLeftTail(left);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SAMRecord hardClipLowQualEnds(byte lowQual) {
|
public SAMRecord hardClipLowQualEnds(byte lowQual) {
|
||||||
|
|
|
||||||
|
|
@ -893,6 +893,10 @@ public class ReadUtils {
|
||||||
// base before the deletion (see warning in function contracts)
|
// base before the deletion (see warning in function contracts)
|
||||||
else if (fallsInsideDeletion && !endsWithinCigar)
|
else if (fallsInsideDeletion && !endsWithinCigar)
|
||||||
readBases += shift - 1;
|
readBases += shift - 1;
|
||||||
|
|
||||||
|
// If we reached our goal inside a deletion then we must backtrack to the last base before the deletion
|
||||||
|
else if (fallsInsideDeletion && endsWithinCigar)
|
||||||
|
readBases--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue