Hi,
I would like filter the vcf file using DP and GQ thresholds at sites where atleast 80% of the individuals meeting the thresholds. More precisely, i have the below two scenarios:
Retain sites where atleast 80% of the individuals had at least depth DP >= 10 and GQ>=20 irrespective of the reference or non-reference allele.
Retain sites where atleast one sample has the non-reference allele with DP>= 10 and GQ >= 20.
I checked the vcftools documentation but could not find where i could specify the minimum number of individuals. I believe there could an existing thread or solution to acheive this. Could someone refer the solution here.
1 answer
using vcffilterjdk : http://lindenb.github.io/jvarkit/VcfFilterJdk.html
Retain sites where atleast 80% of the individuals had at least depth DP >= 10 and GQ>=20 irrespective of the reference or non-reference allele
java -jar dist/vcffilterjdk.jar -e 'return variant.getGenotypes().stream().filter(G->G.getDP()>=10 && G.getGQ()>=20).count()/(double)variant.getNSamples() > 0.8;' input.vcf
Retain sites where atleast one sample has the non-reference allele with DP>= 10 and GQ >= 20.
$ java -jar dist/vcffilterjdk.jar -e 'return variant.getGenotypes().stream().anyMatch(G->G.getDP()>=10 && G.getGQ()>=20 && G.getAlleles().stream().anyMatch(A->A.isCalled() && !A.isReference())) ;'
Log in to answer this question.