CNN deep learning pipeline out of beta!

samwellsamwell Cambridge, MAMember, Broadie ✭✭
edited March 1 in Announcements

A production-ready suite of tools for single-sample variant filtration

After training on a massive amount of data, the neural network models at the heart of CNNvariant have learned enough to be released from beta.

This suite of tools for single-sample variant filtration uses machine learning to differentiate between good variants and artifacts of the sequencing process, a fairly new approach that is especially effective at correctly calling indels. To enable the models to accurately filter and score variants from VCF files, we trained on validated VCFs (from truth models including SynDip, Genomes in a bottle, and Platinum Genomes) with unvalidated VCFs aligned to different reference builds (HG19, HG38), sequenced on different machines, using different protocols. The result is a single-sample tool that complements, rather than replaces, VQSR (our "traditional" cohort based variant filtering algorithm).

What’s in the CNN toolbox? Pre-trained and train-your-own
CNNScoreVariant is a pre-trained Convolutional Neural Network ready to score variants. After scoring, you can filter your VCF by applying a sensitivity threshold with the tool FilterVariantTranches. Or you can train your own models with the tools CNNVariantWriteTensors and CNNVariantTrain, as long as you have validated VCFs to use as training data.

While the current release is only recommended for single sample variant filtration, in the future we hope to explore ways a similar model could be applied to joint-called VCFs.

Under the hood
For details on how our deep learning tool works and how it stacks up to other variant filtering tools (both Deep Learning and traditional), as well as a bit of history on Deep Learning in genomics, see our other blog post.

Post edited by Geraldine_VdAuwera on


  • WeichiWeichi Member
    edited February 18

    It's great to hear that! Thanks!

    Just remind you there is an error on CNNScoreVariants documentation .
    The value in -tensor-type should be read_tensor not read-tensor.
    Because I got the below error:

    A USER ERROR has occurred: Argument tensor-type has a bad value: read-tensor. 'read-tensor' is not a valid value for TensorType. Possible values: {
    reference ( 1 Hot encoding of a reference sequence. )
    read_tensor (Read tensor are 3D tensors spanning aligned reads, sites and channels. The maximum number of reads is a hyper-parameter typically set to 128. There are 15 channels in the read tensor. They correspond to the reference sequence data (4), read sequence data (4), insertions and deletions (2) read flags (4) and mapping quality (1).)


Sign In or Register to comment.