|
Feature |
Description |
Allele / site specific |
Genomes feature importance |
Exomes feature importance |
| Allele type |
SNV, Indel, complex |
Allele |
0.0012 |
0.00027 |
| qd |
Allelic quality / depth |
Allele |
0.470 |
0.62 |
| pax_max |
Max. p-value of binomial test for allele balance |
Allele |
0.106 |
0.065 |
| variant_type |
SNV, multi-allelic SNV, indel, multi-allelic indel, mixed |
Site |
0.0065 |
0.0054 |
| was_mixed |
Whether there were both SNVs and indels at the site |
Site |
0.0056 |
0.00048 |
| n_alt_alleles |
Number of non-reference alleles |
Site |
0.0060 |
0.0061 |
| has_star |
Whether there is a spanning deletion that overlaps the site |
Site |
0.0115 |
0.0023 |
| InbreedingCoeff |
Inbreeding Coefficient |
Site* |
0.042 |
0.123 |
| MQRankSum
|
Z-score from Wilcoxon rank sum test of Alt vs. Ref read mapping qualities
|
Site* |
0.031 |
0.019 |
| ReadPosRankSum |
Z-score from Wilcoxon rank sum test of Alt vs. Ref read position bias |
Site* |
0.060 |
0.061 |
| SOR |
Symmetric Odds Ratio of 2×2 contingency table to detect strand bias |
Site* |
0.266 |
0.10 |
\*: These features should ideally be computed for each allele separately but they were generated for each site in our callset and it was impractical to re-generate them for each allele.
Note that since random forests don't tolerate missing data, we have naively imputed all missing values using the median value for that feature.
##### Random forest training examples
Our strategy for selecting training sites was the same as for gnomAD v2.0.2; however, because we had an increase in our number of trios, we had more positive transmitted singletons alleles than previously. The table below summarizes our training examples.
| Name |
Description |
Class |
Number of alleles in genomes |
Number of alleles in exomes |
| omni |
SNVs present on the Omni 2.5 genotyping array and found in 1000 genomes (available in the GATK bundle) |
TP |
2.3Mln |
95k |
| mills |
Indels present in the Mills and Devine data (available in the GATK bundle) |
TP |
1.3Mln |
12k |
| 1000 Genomes high-quality sites |
Sites discovered in 1000 Genomes with high confidence (available in the GATK bundle) |
TP |
29Mln |
560k |
| transmitted_singletons |
variants found in two and only two individuals, which were a parent-offspring pair |
TP |
116k |
106k |
| fail_hard_filters |
variants failing traditional GATK hard filters: QD < 2 || FS > 60 || MQ < 30 |
FP |
31Mln |
789k |
Note that for training the model, we used a balanced training set by randomly downsampling the class that had more training examples to match the number of training examples in the other class.
##### Random forests filtering thresholds
In order to set a threshold for the PASS / RF filter in the release, we have used a slightly different set of evaluation metrics. The reason being that some of the classical metrics such as transition/transversion ratio and insertion:deletion ratio are very difficult to interpret in large callsets. On the other hand, we have additional data and resources that can serve as useful proxy for callset quality, such as large number of trios, validated variants (e.g. validated _de novo_ mutations in our exomes) or public databases such as ClinVar. We used the following metrics to determine a cutoff on the random forests model output, to build what we believed to be a high quality set of variants:
- Precision / recall against two well characterized samples:
- NA12878 from [genome in a bottle](https://github.com/genome-in-a-bottle/giab_latest_release)
- CHM1*CHM13: A mixture of DNA (est. 50.7% / 49.3%) from two haploid CHM cell lines, deep sequenced with PacBio and \_de novo* assembled, available [here](https://github.com/lh3/CHM-eval). Note that indels of size 1 were removed because of PacBio-specific problems.
- Number of singleton Mendelian violations in our evaluation trios (N=1 amongst all samples and is found in a child)
- Singleton transmission ratio in trios
- Sensitivity to validated _de novo_ mutations (exomes only)
- Sensitivity to singleton ClinVar variants
For exomes, our filtration process removes 12.2% of SNVs (RF probability >= 0.1) and 24.7% of indels (RF probability >= 0.2). For genomes, we filtered 10.7% of SNVs (RF probability >= 0.4) and 22.3% of indels (RF probability >= 0.4).