Optimization of reference window calculation to us bytes not char and no uppercasing since reference and read bases are always uppercase now. Should remove some ~5% of runtime of UG.
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@3438 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
88a06ad81f
commit
5928047d8b
|
|
@ -301,7 +301,7 @@ public class CovariateCounterWalker extends LocusWalker<Integer, PrintStream> {
|
||||||
refBase = ref.getBase();
|
refBase = ref.getBase();
|
||||||
|
|
||||||
// Skip if this base is an 'N' or etc.
|
// Skip if this base is an 'N' or etc.
|
||||||
if( BaseUtils.isRegularBase( (char)(bases[offset]) ) ) {
|
if( BaseUtils.isRegularBase( bases[offset] ) ) {
|
||||||
|
|
||||||
// SOLID bams have inserted the reference base into the read if the color space in inconsistent with the read base so skip it
|
// SOLID bams have inserted the reference base into the read if the color space in inconsistent with the read base so skip it
|
||||||
if( !gatkRead.getReadGroup().getPlatform().toUpperCase().contains("SOLID") || RAC.SOLID_RECAL_MODE.equalsIgnoreCase("DO_NOTHING") || !RecalDataManager.isInconsistentColorSpace( gatkRead, offset ) ) {
|
if( !gatkRead.getReadGroup().getPlatform().toUpperCase().contains("SOLID") || RAC.SOLID_RECAL_MODE.equalsIgnoreCase("DO_NOTHING") || !RecalDataManager.isInconsistentColorSpace( gatkRead, offset ) ) {
|
||||||
|
|
@ -310,7 +310,7 @@ public class CovariateCounterWalker extends LocusWalker<Integer, PrintStream> {
|
||||||
updateDataFromRead( gatkRead, offset, refBase );
|
updateDataFromRead( gatkRead, offset, refBase );
|
||||||
|
|
||||||
} else { // calculate SOLID reference insertion rate
|
} else { // calculate SOLID reference insertion rate
|
||||||
if( refBase == (char)bases[offset] ) {
|
if( refBase == bases[offset] ) {
|
||||||
solidInsertedReferenceBases++;
|
solidInsertedReferenceBases++;
|
||||||
} else {
|
} else {
|
||||||
otherColorSpaceInconsistency++;
|
otherColorSpaceInconsistency++;
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@ public class AlignmentUtils {
|
||||||
return getMismatchCount(r, refSeq, refIndex).numMismatches;
|
return getMismatchCount(r, refSeq, refIndex).numMismatches;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public static int numMismatches(SAMRecord r, String refSeq, int refIndex ) {
|
public static int numMismatches(SAMRecord r, String refSeq, int refIndex ) {
|
||||||
if ( r.getReadUnmappedFlag() ) return 1000000;
|
if ( r.getReadUnmappedFlag() ) return 1000000;
|
||||||
return numMismatches(r, StringUtil.stringToBytes(refSeq), refIndex);
|
return numMismatches(r, StringUtil.stringToBytes(refSeq), refIndex);
|
||||||
|
|
@ -73,11 +74,14 @@ public class AlignmentUtils {
|
||||||
return getMismatchCount(r, refSeq, refIndex).mismatchQualities;
|
return getMismatchCount(r, refSeq, refIndex).mismatchQualities;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public static long mismatchingQualities(SAMRecord r, String refSeq, int refIndex ) {
|
public static long mismatchingQualities(SAMRecord r, String refSeq, int refIndex ) {
|
||||||
if ( r.getReadUnmappedFlag() ) return 1000000;
|
if ( r.getReadUnmappedFlag() ) return 1000000;
|
||||||
return numMismatches(r, StringUtil.stringToBytes(refSeq), refIndex);
|
return numMismatches(r, StringUtil.stringToBytes(refSeq), refIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// todo -- this code and mismatchesInRefWindow should be combined and optimized into a single
|
||||||
|
// todo -- high performance implementation. We can do a lot better than this right now
|
||||||
private static MismatchCount getMismatchCount(SAMRecord r, byte[] refSeq, int refIndex) {
|
private static MismatchCount getMismatchCount(SAMRecord r, byte[] refSeq, int refIndex) {
|
||||||
MismatchCount mc = new MismatchCount();
|
MismatchCount mc = new MismatchCount();
|
||||||
|
|
||||||
|
|
@ -188,9 +192,12 @@ public class AlignmentUtils {
|
||||||
if ( ignoreTargetSite && ref.getLocus().getStart() == currentPos )
|
if ( ignoreTargetSite && ref.getLocus().getStart() == currentPos )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
char readChr = (char)readBases[readIndex];
|
byte readChr = readBases[readIndex];
|
||||||
if ( Character.toUpperCase(readChr) != Character.toUpperCase(refChr) )
|
if ( readChr != refChr )
|
||||||
sum += (qualitySumInsteadOfMismatchCount) ? readQualities[readIndex] : 1;
|
sum += (qualitySumInsteadOfMismatchCount) ? readQualities[readIndex] : 1;
|
||||||
|
// char readChr = (char)readBases[readIndex];
|
||||||
|
// if ( Character.toUpperCase(readChr) != Character.toUpperCase(refChr) )
|
||||||
|
// sum += (qualitySumInsteadOfMismatchCount) ? readQualities[readIndex] : 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case I:
|
case I:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue