Proper filtering when indels are being lifted over
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@4158 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
2ffa98aea5
commit
df76474b34
|
|
@ -40,6 +40,7 @@ import java.util.*;
|
||||||
/**
|
/**
|
||||||
* Filters a lifted-over VCF file for ref bases that have been changed.
|
* Filters a lifted-over VCF file for ref bases that have been changed.
|
||||||
*/
|
*/
|
||||||
|
@Reference(window=@Window(start=0,stop=100))
|
||||||
@Requires(value={},referenceMetaData=@RMD(name="variant",type= VariantContext.class))
|
@Requires(value={},referenceMetaData=@RMD(name="variant",type= VariantContext.class))
|
||||||
public class FilterLiftedVariants extends RodWalker<Integer, Integer> {
|
public class FilterLiftedVariants extends RodWalker<Integer, Integer> {
|
||||||
|
|
||||||
|
|
@ -56,17 +57,23 @@ public class FilterLiftedVariants extends RodWalker<Integer, Integer> {
|
||||||
writer.writeHeader(vcfHeader);
|
writer.writeHeader(vcfHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void filterAndWrite(byte ref, VariantContext vc) {
|
private void filterAndWrite(byte[] ref, VariantContext vc) {
|
||||||
|
|
||||||
totalLocs++;
|
totalLocs++;
|
||||||
|
|
||||||
byte recordRef = vc.getReference().getBases()[0];
|
boolean failed = false;
|
||||||
|
byte[] recordRef = vc.getReference().getBases();
|
||||||
if ( recordRef != ref ) {
|
for (int i = 0; i < recordRef.length; i++) {
|
||||||
failedLocs++;
|
if ( recordRef[i] != ref[i + (vc.isSNP() ? 0 : 1)] ) {
|
||||||
} else {
|
failed = true;
|
||||||
writer.add(vc, ref);
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( failed )
|
||||||
|
failedLocs++;
|
||||||
|
else
|
||||||
|
writer.add(vc, ref[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) {
|
public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) {
|
||||||
|
|
@ -75,7 +82,7 @@ public class FilterLiftedVariants extends RodWalker<Integer, Integer> {
|
||||||
|
|
||||||
Collection<VariantContext> VCs = tracker.getVariantContexts(ref, "variant", null, context.getLocation(), true, false);
|
Collection<VariantContext> VCs = tracker.getVariantContexts(ref, "variant", null, context.getLocation(), true, false);
|
||||||
for ( VariantContext vc : VCs )
|
for ( VariantContext vc : VCs )
|
||||||
filterAndWrite(ref.getBase(), vc);
|
filterAndWrite(ref.getBases(), vc);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue