Search in sources :

Example 1 with PurityAdjustedSomaticVariant

use of com.hartwig.hmftools.common.variant.PurityAdjustedSomaticVariant in project hmftools by hartwigmedical.

the class CopyNumberCharts method variants.

@NotNull
private static CategoryTableXYDataset variants(@NotNull final List<PurityAdjustedSomaticVariant> variants) {
    int maxPloidy = 6;
    int maxBuckets = maxPloidy * 10;
    double[][] buckets = new double[MAX_COPY_NUMBER_SERIES + 1][maxBuckets];
    for (final PurityAdjustedSomaticVariant variant : variants) {
        double value = variant.adjustedVAF() * variant.adjustedCopyNumber();
        int series = (int) Math.max(0, Math.min(MAX_COPY_NUMBER_SERIES, Math.round(variant.adjustedCopyNumber())));
        int column = Math.min(maxBuckets - 1, Math.max(0, (int) Math.round(value / 0.1)));
        buckets[series][column] += 1;
    }
    CategoryTableXYDataset result = new CategoryTableXYDataset();
    for (int i = 0; i <= MAX_COPY_NUMBER_SERIES; i++) {
        String seriesName = "CN" + i + (i == MAX_COPY_NUMBER_SERIES ? "+" : "");
        for (int j = 0; j < maxBuckets; j++) {
            if (!Doubles.isZero(buckets[i][j])) {
                result.add(j * 0.1, buckets[i][j], seriesName);
            }
        }
    }
    return result;
}
Also used : CategoryTableXYDataset(org.jfree.data.xy.CategoryTableXYDataset) PurityAdjustedSomaticVariant(com.hartwig.hmftools.common.variant.PurityAdjustedSomaticVariant) NotNull(org.jetbrains.annotations.NotNull)

Example 2 with PurityAdjustedSomaticVariant

use of com.hartwig.hmftools.common.variant.PurityAdjustedSomaticVariant in project hmftools by hartwigmedical.

the class LoadSomaticVariants method main.

public static void main(@NotNull final String[] args) throws ParseException, IOException, SQLException {
    final Options options = createBasicOptions();
    final CommandLine cmd = createCommandLine(args, options);
    final String vcfFileLocation = cmd.getOptionValue(VCF_FILE);
    final String highConfidenceBed = cmd.getOptionValue(HIGH_CONFIDENCE_BED);
    final String fastaFileLocation = cmd.getOptionValue(REF_GENOME);
    final String sample = cmd.getOptionValue(SAMPLE);
    final DatabaseAccess dbAccess = databaseAccess(cmd);
    final CompoundFilter filter = new CompoundFilter(true);
    if (cmd.hasOption(PASS_FILTER)) {
        filter.add(new PassingVariantFilter());
    }
    if (cmd.hasOption(SOMATIC_FILTER)) {
        filter.add(new SomaticFilter());
    }
    LOGGER.info("Reading somatic VCF File");
    final List<SomaticVariant> variants = SomaticVariantFactory.filteredInstance(filter).fromVCFFile(sample, vcfFileLocation);
    LOGGER.info("Reading high confidence bed file");
    final Multimap<String, GenomeRegion> highConfidenceRegions = BEDFileLoader.fromBedFile(highConfidenceBed);
    LOGGER.info("Loading indexed fasta reference file");
    IndexedFastaSequenceFile indexedFastaSequenceFile = new IndexedFastaSequenceFile(new File(fastaFileLocation));
    LOGGER.info("Querying purple database");
    final PurityContext purityContext = dbAccess.readPurityContext(sample);
    if (purityContext == null) {
        LOGGER.warn("Unable to retrieve purple data. Enrichment may be incomplete.");
    }
    final PurityAdjuster purityAdjuster = purityContext == null ? new PurityAdjuster(Gender.FEMALE, 1, 1) : new PurityAdjuster(purityContext.gender(), purityContext.bestFit().purity(), purityContext.bestFit().normFactor());
    final Multimap<String, PurpleCopyNumber> copyNumbers = Multimaps.index(dbAccess.readCopynumbers(sample), PurpleCopyNumber::chromosome);
    final Multimap<String, FittedRegion> copyNumberRegions = Multimaps.index(dbAccess.readCopyNumberRegions(sample), FittedRegion::chromosome);
    LOGGER.info("Incorporating purple purity");
    final PurityAdjustedSomaticVariantFactory purityAdjustmentFactory = new PurityAdjustedSomaticVariantFactory(purityAdjuster, copyNumbers, copyNumberRegions);
    final List<PurityAdjustedSomaticVariant> purityAdjustedVariants = purityAdjustmentFactory.create(variants);
    final double clonalPloidy = ClonalityCutoffKernel.clonalCutoff(purityAdjustedVariants);
    LOGGER.info("Enriching variants");
    final EnrichedSomaticVariantFactory enrichedSomaticVariantFactory = new EnrichedSomaticVariantFactory(highConfidenceRegions, indexedFastaSequenceFile, new ClonalityFactory(purityAdjuster, clonalPloidy), CanonicalTranscriptFactory.create(HmfGenePanelSupplier.allGeneList()));
    final List<EnrichedSomaticVariant> enrichedVariants = enrichedSomaticVariantFactory.enrich(purityAdjustedVariants);
    LOGGER.info("Persisting variants to database");
    dbAccess.writeSomaticVariants(sample, enrichedVariants);
    LOGGER.info("Complete");
}
Also used : Options(org.apache.commons.cli.Options) EnrichedSomaticVariant(com.hartwig.hmftools.common.variant.EnrichedSomaticVariant) PassingVariantFilter(htsjdk.variant.variantcontext.filter.PassingVariantFilter) FittedRegion(com.hartwig.hmftools.common.purple.region.FittedRegion) PurpleCopyNumber(com.hartwig.hmftools.common.purple.copynumber.PurpleCopyNumber) IndexedFastaSequenceFile(htsjdk.samtools.reference.IndexedFastaSequenceFile) DatabaseAccess(com.hartwig.hmftools.patientdb.dao.DatabaseAccess) SomaticFilter(com.hartwig.hmftools.common.variant.filter.SomaticFilter) PurityAdjuster(com.hartwig.hmftools.common.purple.PurityAdjuster) PurityAdjustedSomaticVariant(com.hartwig.hmftools.common.variant.PurityAdjustedSomaticVariant) SomaticVariant(com.hartwig.hmftools.common.variant.SomaticVariant) EnrichedSomaticVariant(com.hartwig.hmftools.common.variant.EnrichedSomaticVariant) PurityAdjustedSomaticVariantFactory(com.hartwig.hmftools.common.variant.PurityAdjustedSomaticVariantFactory) CompoundFilter(htsjdk.variant.variantcontext.filter.CompoundFilter) PurityAdjustedSomaticVariant(com.hartwig.hmftools.common.variant.PurityAdjustedSomaticVariant) CommandLine(org.apache.commons.cli.CommandLine) GenomeRegion(com.hartwig.hmftools.common.region.GenomeRegion) PurityContext(com.hartwig.hmftools.common.purple.purity.PurityContext) EnrichedSomaticVariantFactory(com.hartwig.hmftools.common.variant.EnrichedSomaticVariantFactory) ClonalityFactory(com.hartwig.hmftools.common.variant.ClonalityFactory) File(java.io.File) IndexedFastaSequenceFile(htsjdk.samtools.reference.IndexedFastaSequenceFile)

Example 3 with PurityAdjustedSomaticVariant

use of com.hartwig.hmftools.common.variant.PurityAdjustedSomaticVariant in project hmftools by hartwigmedical.

the class GeneCopyNumberFactory method geneCopyNumbers.

@NotNull
public static List<GeneCopyNumber> geneCopyNumbers(@NotNull final List<HmfGenomeRegion> genes, @NotNull final List<PurpleCopyNumber> somaticCopyNumbers, @NotNull final List<PurpleCopyNumber> germlineDeletions, @NotNull final List<PurityAdjustedSomaticVariant> enrichedSomatics) {
    final ListMultimap<String, PurityAdjustedSomaticVariant> variantMap = Multimaps.index(enrichedSomatics, SomaticVariant::gene);
    final List<GeneCopyNumber> result = Lists.newArrayList();
    for (HmfGenomeRegion gene : genes) {
        final List<PurityAdjustedSomaticVariant> variants = variantMap.containsKey(gene.gene()) ? variantMap.get(gene.gene()) : Collections.EMPTY_LIST;
        final GeneCopyNumberBuilder builder = new GeneCopyNumberBuilder(gene);
        RegionZipper.zip(somaticCopyNumbers, gene.exome(), builder);
        RegionZipper.zip(germlineDeletions, gene.exome(), builder);
        variants.forEach(builder::somatic);
        GeneCopyNumber geneCopyNumber = builder.build();
        if (geneCopyNumber.totalRegions() > 0) {
            result.add(geneCopyNumber);
        }
    }
    return result;
}
Also used : PurityAdjustedSomaticVariant(com.hartwig.hmftools.common.variant.PurityAdjustedSomaticVariant) SomaticVariant(com.hartwig.hmftools.common.variant.SomaticVariant) HmfGenomeRegion(com.hartwig.hmftools.common.region.hmfslicer.HmfGenomeRegion) PurityAdjustedSomaticVariant(com.hartwig.hmftools.common.variant.PurityAdjustedSomaticVariant) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

PurityAdjustedSomaticVariant (com.hartwig.hmftools.common.variant.PurityAdjustedSomaticVariant)3 SomaticVariant (com.hartwig.hmftools.common.variant.SomaticVariant)2 NotNull (org.jetbrains.annotations.NotNull)2 PurityAdjuster (com.hartwig.hmftools.common.purple.PurityAdjuster)1 PurpleCopyNumber (com.hartwig.hmftools.common.purple.copynumber.PurpleCopyNumber)1 PurityContext (com.hartwig.hmftools.common.purple.purity.PurityContext)1 FittedRegion (com.hartwig.hmftools.common.purple.region.FittedRegion)1 GenomeRegion (com.hartwig.hmftools.common.region.GenomeRegion)1 HmfGenomeRegion (com.hartwig.hmftools.common.region.hmfslicer.HmfGenomeRegion)1 ClonalityFactory (com.hartwig.hmftools.common.variant.ClonalityFactory)1 EnrichedSomaticVariant (com.hartwig.hmftools.common.variant.EnrichedSomaticVariant)1 EnrichedSomaticVariantFactory (com.hartwig.hmftools.common.variant.EnrichedSomaticVariantFactory)1 PurityAdjustedSomaticVariantFactory (com.hartwig.hmftools.common.variant.PurityAdjustedSomaticVariantFactory)1 SomaticFilter (com.hartwig.hmftools.common.variant.filter.SomaticFilter)1 DatabaseAccess (com.hartwig.hmftools.patientdb.dao.DatabaseAccess)1 IndexedFastaSequenceFile (htsjdk.samtools.reference.IndexedFastaSequenceFile)1 CompoundFilter (htsjdk.variant.variantcontext.filter.CompoundFilter)1 PassingVariantFilter (htsjdk.variant.variantcontext.filter.PassingVariantFilter)1 File (java.io.File)1 CommandLine (org.apache.commons.cli.CommandLine)1