/** * Takes the interval, finds it in the stash, prints it to the VCF * * @param stats The statistics of the interval * @param refAllele the reference allele */ private void outputStatsToVCF(final IntervalStratification stats, final Allele refAllele) { GenomeLoc interval = stats.getInterval(); final List<Allele> alleles = new ArrayList<>(); final Map<String, Object> attributes = new HashMap<>(); final ArrayList<Genotype> genotypes = new ArrayList<>(); for (String sample : samples) { final GenotypeBuilder gb = new GenotypeBuilder(sample); SampleStratification sampleStat = stats.getSampleStatistics(sample); gb.attribute( GATKVCFConstants.AVG_INTERVAL_DP_BY_SAMPLE_KEY, sampleStat.averageCoverage(interval.size())); gb.attribute(GATKVCFConstants.LOW_COVERAGE_LOCI, sampleStat.getNLowCoveredLoci()); gb.attribute(GATKVCFConstants.ZERO_COVERAGE_LOCI, sampleStat.getNUncoveredLoci()); gb.filters(statusToStrings(stats.getSampleStatistics(sample).callableStatuses(), false)); genotypes.add(gb.make()); } alleles.add(refAllele); alleles.add(SYMBOLIC_ALLELE); VariantContextBuilder vcb = new VariantContextBuilder( "DiagnoseTargets", interval.getContig(), interval.getStart(), interval.getStop(), alleles); vcb = vcb.log10PError(VariantContext.NO_LOG10_PERROR); vcb.filters(new LinkedHashSet<>(statusToStrings(stats.callableStatuses(), true))); attributes.put(VCFConstants.END_KEY, interval.getStop()); attributes.put(GATKVCFConstants.AVG_INTERVAL_DP_KEY, stats.averageCoverage(interval.size())); attributes.put(GATKVCFConstants.INTERVAL_GC_CONTENT_KEY, stats.gcContent()); vcb = vcb.attributes(attributes); vcb = vcb.genotypes(genotypes); vcfWriter.add(vcb.make()); }
private static void addGenotypesAndGTests() { // for ( final int ploidy : Arrays.asList(2)) { for (final int ploidy : Arrays.asList(1, 2, 3, 4, 5)) { final List<List<String>> alleleCombinations = Arrays.asList( Arrays.asList("A"), Arrays.asList("A", "C"), Arrays.asList("A", "C", "G"), Arrays.asList("A", "C", "G", "T")); for (final List<String> alleles : alleleCombinations) { final VariantContextBuilder vcb = builder().alleles(alleles); final VariantContext site = vcb.make(); final int nAlleles = site.getNAlleles(); final Allele ref = site.getReference(); // base genotype is ref/.../ref up to ploidy final List<Allele> baseGenotype = new ArrayList<Allele>(ploidy); for (int i = 0; i < ploidy; i++) baseGenotype.add(ref); final int nPLs = GenotypeLikelihoods.numLikelihoods(nAlleles, ploidy); // ada is 0, 1, ..., nAlleles - 1 final List<Integer> ada = new ArrayList<Integer>(nAlleles); for (int i = 0; i < nAlleles - 1; i++) ada.add(i); // pl is 0, 1, ..., up to nPLs (complex calc of nAlleles and ploidy) final int[] pl = new int[nPLs]; for (int i = 0; i < pl.length; i++) pl[i] = i; final GenotypeBuilder gb = new GenotypeBuilder("ADA_PL_SAMPLE"); gb.alleles(baseGenotype); gb.PL(pl); gb.attribute("ADA", nAlleles == 2 ? ada.get(0) : ada); vcb.genotypes(gb.make()); add(vcb); } } }