예제 #1
0
        public void UpstreamGeneVariant()
        {
            var sa = new SupplementaryAnnotationPosition(46107)
            {
                IsRefMinorAllele           = true,
                GlobalMajorAllele          = "G",
                GlobalMajorAlleleFrequency = "0.9029",
                GlobalMinorAllele          = "A",
                GlobalMinorAlleleFrequency = "0.0971"
            };

            var saReader = new MockSupplementaryAnnotationReader(sa);

            var annotatedVariant = DataUtilities.GetVariant(Resources.CacheGRCh37("ENST00000576171_chr17_Ensembl84"), saReader,
                                                            "17	46107	.	A	.	153	LowGQX	SNVSB=-20.1;SNVHPOL=4;GMAF=G|0.9988;RefMinor;CSQT=A||ENST00000576171|upstream_gene_variant	GT:GQ:GQX:DP:DPF:AD	1/1:18:18:7:0:0,7");

            Assert.NotNull(annotatedVariant);
            Assert.Contains("\"isReferenceMinorAllele\":true", annotatedVariant.ToString());

            var altAllele = annotatedVariant.AnnotatedAlternateAlleles.FirstOrDefault();

            Assert.NotNull(altAllele);

            const string expectedJsonLine = "{\"refAllele\":\"A\",\"begin\":46107,\"chromosome\":\"17\",\"end\":46107,\"globalMinorAllele\":\"A\",\"gmaf\":0.0971,\"isReferenceMinorAllele\":true,\"variantType\":\"SNV\",\"vid\":\"17:46107:A\",\"transcripts\":{\"ensembl\":[{\"transcript\":\"ENST00000576171.1\",\"bioType\":\"lincRNA\",\"geneId\":\"ENSG00000273172\",\"hgnc\":\"AC108004.2\",\"consequence\":[\"upstream_gene_variant\"],\"isCanonical\":true}]}}";

            // ReSharper disable once PossibleNullReferenceException
            Assert.Equal(expectedJsonLine, altAllele.ToString());
        }
예제 #2
0
        public void EvsOutputTest()
        {
            var sa = new SupplementaryAnnotationPosition(115256529);

            var dbSnp = new DbSnpAnnotation
            {
                DbSnp = new List <long> {
                    121913237
                }
            };
            var evs = new EvsAnnotation
            {
                EvsAll        = "0.0001",
                EvsCoverage   = "102",
                NumEvsSamples = "3456"
            };

            var saCreator = new SupplementaryPositionCreator(sa);

            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.Evs, "C", evs);
            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.DbSnp, "C", dbSnp);

            var saReader = new MockSupplementaryAnnotationReader(sa);

            VcfUtilities.FieldContains(saReader,
                                       "chr1\t115256529\t.\tT\tC\t1000\tPASS\t.\tGT\t0/1", "EVS=0.0001|102|3456", VcfCommon.InfoIndex);
        }
예제 #3
0
        public void IntergenicVariant()
        {
            var sa = new SupplementaryAnnotationPosition(47960)
            {
                IsRefMinorAllele           = true,
                GlobalMajorAllele          = "A",
                GlobalMajorAlleleFrequency = "0.9239"
            };

            var saReader = new MockSupplementaryAnnotationReader(sa);

            var annotatedVariant = DataUtilities.GetVariant(Resources.CacheGRCh37("ENST00000518655_chr1_Ensembl84"), saReader,
                                                            "chr1	47960	.	T	.	1242.00	PASS	SNVSB=-87.0;SNVHPOL=3");

            Assert.NotNull(annotatedVariant);
            Assert.Contains("\"isReferenceMinorAllele\":true", annotatedVariant.ToString());

            var altAllele = annotatedVariant.AnnotatedAlternateAlleles.FirstOrDefault();

            Assert.NotNull(altAllele);

            // intergenic variant are not exposed in the JSON file
            AssertUtilities.CheckEnsemblTranscriptCount(0, altAllele);
            AssertUtilities.CheckRefSeqTranscriptCount(0, altAllele);
        }
예제 #4
0
        public void AlleleFrequency1KgOutputTest()
        {
            var sa = new SupplementaryAnnotationPosition(115256529);

            var oneKg = new OneKGenAnnotation
            {
                OneKgAllAn = 5008,
                OneKgAllAc = 2130,
                OneKgAmrAn = 694,
                OneKgAmrAc = 250
            };

            var dbSnp = new DbSnpAnnotation
            {
                DbSnp = new List <long> {
                    11554290
                }
            };

            var saCreator = new SupplementaryPositionCreator(sa);

            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.OneKg, "C", oneKg);
            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.DbSnp, "C", dbSnp);

            var saReader = new MockSupplementaryAnnotationReader(sa);

            VcfUtilities.FieldContains(saReader,
                                       "chr1\t115256529\t.\tT\tC\t1000\tPASS\t.\tGT\t0/1", "AF1000G=0.425319", VcfCommon.InfoIndex);
        }
예제 #5
0
        public void CosmicOutputTest()
        {
            var sa        = new SupplementaryAnnotationPosition(115256529);
            var saCreator = new SupplementaryPositionCreator(sa);
            var altAllele = "C";

            var cosmicItem1 = new CosmicItem("chr1", 115256529, "COSM1000", "T", altAllele, "TP53",
                                             new HashSet <CosmicItem.CosmicStudy> {
                new CosmicItem.CosmicStudy("", "carcinoma", "oesophagus")
            }, 1,
                                             altAllele);

            var cosmicItem2 = new CosmicItem("chr1", 115256529, "COSM1001", "T", altAllele, "TP53",
                                             new HashSet <CosmicItem.CosmicStudy> {
                new CosmicItem.CosmicStudy("01", "carcinoma", "large_intestine")
            }, 1,
                                             altAllele);

            cosmicItem1.AddCosmicToSa(saCreator);
            cosmicItem2.AddCosmicToSa(saCreator);

            var saReader = new MockSupplementaryAnnotationReader(sa);

            VcfUtilities.FieldContains(saReader,
                                       "chr1\t115256529\t.\tT\tC\t1000\tPASS\t.\tGT\t0/1", "cosmic=1|COSM1000", VcfCommon.InfoIndex);
        }
예제 #6
0
        public void OneAlleleFreqMissing()
        {
            var sa = new SupplementaryAnnotationPosition(825069);

            var saCreator = new SupplementaryPositionCreator(sa);

            var dbSnp = new DbSnpAnnotation
            {
                DbSnp = new List <long> {
                    4475692
                }
            };

            var oneKg = new OneKGenAnnotation
            {
                OneKgAllAn = 5008,
                OneKgAllAc = 3392
            };

            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.DbSnp, "C", dbSnp);
            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.OneKg, "C", oneKg);

            var saReader = new MockSupplementaryAnnotationReader(sa);

            VcfUtilities.FieldContains(saReader,
                                       "chr1	825069	rs4475692	G	A,C	362.00	LowGQX;HighDPFRatio	SNVSB=-36.9;SNVHPOL=3	GT:GQ:GQX:DP:DPF:AD	1/2:4:0:52:38:8,11,33",
                                       "AF1000G=.,0.677316", VcfCommon.InfoIndex);
        }
예제 #7
0
        public void AllSuppAnnotOutputTest()
        {
            const string altAllele = "C";

            var sa = new SupplementaryAnnotationPosition(115256529);

            var oneKg = new OneKGenAnnotation
            {
                OneKgAllAn = 5008,
                OneKgAllAc = 2130,
                OneKgAmrAn = 694,
                OneKgAmrAc = 250
            };

            var dbSnp = new DbSnpAnnotation
            {
                DbSnp = new List <long> {
                    11554290
                }
            };

            var saCreator = new SupplementaryPositionCreator(sa);

            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.OneKg, "C", oneKg);
            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.DbSnp, "C", dbSnp);

            var cosmicItem1 = new CosmicItem("chr1", 115256529, "COSM1000", "T", altAllele, "TP53",
                                             new HashSet <CosmicItem.CosmicStudy> {
                new CosmicItem.CosmicStudy("", "carcinoma", "oesophagus")
            }, 1,
                                             altAllele);

            var cosmicItem2 = new CosmicItem("chr1", 115256529, "COSM1001", "T", altAllele, "TP53",
                                             new HashSet <CosmicItem.CosmicStudy> {
                new CosmicItem.CosmicStudy("01", "carcinoma", "large_intestine")
            }, 1,
                                             altAllele);

            cosmicItem1.AddCosmicToSa(saCreator);
            cosmicItem2.AddCosmicToSa(saCreator);

            var clinvarItem1 = new ClinVarItem(null, 0, null, altAllele, null, "RCV001",
                                               null, null, new List <string> {
                "ORPHA2462"
            }, null, null, "other");

            sa.ClinVarItems.Add(clinvarItem1);

            var saReader   = new MockSupplementaryAnnotationReader(sa);
            var infoColumn = VcfUtilities.GetVcfColumn(saReader,
                                                       "chr1\t115256529\t.\tT\tC\t1000\tPASS\t.\tGT\t0/1", VcfCommon.InfoIndex);

            Assert.Contains("AF1000G=0.425319", infoColumn);
            Assert.Contains("cosmic=1|COSM1000,1|COSM1001", infoColumn);
            Assert.Contains("clinvar=1|other", infoColumn);
        }
예제 #8
0
        public void ClinVarOutputTest()
        {
            var sa = new SupplementaryAnnotationPosition(115256529);

            var clinvarItem1 = new ClinVarItem(null, 0, null, "C", null, "RCV001",
                                               null, null, new List <string> {
                "ORPHA2462"
            }, null, null, "other");

            sa.ClinVarItems.Add(clinvarItem1);

            var saReader = new MockSupplementaryAnnotationReader(sa);

            VcfUtilities.FieldContains(saReader,
                                       "chr1\t115256529\t.\tT\tC\t1000\tPASS\t.\tGT\t0/1", "clinvar=1|other", VcfCommon.InfoIndex);
        }
예제 #9
0
        public void NullVcfFieldTest()
        {
            var sa = new SupplementaryAnnotationPosition(9580071);

            var dbSnp = new DbSnpAnnotation
            {
                DbSnp = null
            };

            var saCreator = new SupplementaryPositionCreator(sa);

            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.DbSnp, "T", dbSnp);

            var saReader = new MockSupplementaryAnnotationReader(sa);
            var idColumn = VcfUtilities.GetVcfColumn(saReader,
                                                     "chr12\t9580071\t.\tA\tC,T\t394.00\tPASS\t.\tGT\t0/1", VcfCommon.IdIndex);

            Assert.NotNull(idColumn);
        }
예제 #10
0
        public void DbSnpOutputTest()
        {
            var sa = new SupplementaryAnnotationPosition(115256529);

            var dbSnp = new DbSnpAnnotation
            {
                DbSnp = new List <long> {
                    11554290
                }
            };

            var saCreator = new SupplementaryPositionCreator(sa);

            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.DbSnp, "C", dbSnp);

            var saReader = new MockSupplementaryAnnotationReader(sa);

            VcfUtilities.FieldContains(saReader,
                                       "chr1\t115256529\t.\tT\tC\t1000\tPASS\t.\tGT\t0/1", "rs11554290", VcfCommon.IdIndex);
        }
예제 #11
0
        public void MultipleDbSnpIds()
        {
            var sa = new SupplementaryAnnotationPosition(115256529);

            var dbSnp = new DbSnpAnnotation
            {
                DbSnp = new List <long> {
                    111, 222, 333
                }
            };

            var saCreator = new SupplementaryPositionCreator(sa);

            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.DbSnp, "C", dbSnp);

            var saReader = new MockSupplementaryAnnotationReader(sa);

            VcfUtilities.FieldContains(saReader,
                                       "chr1\t115256529\tMantaFluff\tT\tC\t1000\tPASS\t.\tGT\t0/1", "MantaFluff;rs111;rs222;rs333",
                                       VcfCommon.IdIndex);
        }
예제 #12
0
        public void MultipleDbSnpIds()
        {
            var sa = new SupplementaryAnnotationPosition(115256529);

            var dbSnp = new DbSnpAnnotation
            {
                DbSnp = new List <long> {
                    111, 222, 333
                }
            };

            var saCreator = new SupplementaryPositionCreator(sa);

            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.DbSnp, "C", dbSnp);

            var saReader = new MockSupplementaryAnnotationReader(sa);

            var annotatedVariant = DataUtilities.GetVariant(DataUtilities.EmptyCachePrefix, saReader, "chr1	115256529	.	T	C	1000	PASS	.	GT	0/1");

            Assert.NotNull(annotatedVariant);

            Assert.Contains("\"dbsnp\":[\"rs111\",\"rs222\",\"rs333\"]", annotatedVariant.ToString());
        }
예제 #13
0
        public void IntronVariant()
        {
            var sa = new SupplementaryAnnotationPosition(13302)
            {
                IsRefMinorAllele           = true,
                GlobalMajorAllele          = "T",
                GlobalMajorAlleleFrequency = "0.9239"
            };

            var saReader = new MockSupplementaryAnnotationReader(sa);

            var annotatedVariant = DataUtilities.GetVariant(Resources.CacheGRCh37("ENST00000518655_chr1_Ensembl84"), saReader,
                                                            "chr1	13302	.	C	.	1242.00	PASS	SNVSB=-87.0;SNVHPOL=3");

            Assert.NotNull(annotatedVariant);
            Assert.Contains("\"isReferenceMinorAllele\":true", annotatedVariant.ToString());

            var transcriptAllele = annotatedVariant.AnnotatedAlternateAlleles.FirstOrDefault()?.EnsemblTranscripts.FirstOrDefault();

            Assert.NotNull(transcriptAllele);

            // ReSharper disable once PossibleNullReferenceException
            Assert.Equal("intron_variant&non_coding_transcript_variant", string.Join("&", transcriptAllele.Consequence));
        }
예제 #14
0
        public void StartLost()
        {
            var sa = new SupplementaryAnnotationPosition(1558792)
            {
                IsRefMinorAllele           = true,
                GlobalMajorAllele          = "C",
                GlobalMajorAlleleFrequency = "0.9239"
            };

            var saReader = new MockSupplementaryAnnotationReader(sa);

            var annotatedVariant = DataUtilities.GetVariant(Resources.CacheGRCh37("ENST00000487053_chr1_Ensembl84"), saReader,
                                                            "chr1	1558792	.	T	.	1242.00	PASS	SNVSB=-87.0;SNVHPOL=3;CSQ=C|ENSG00000197530|ENST00000487053|Transcript|initiator_codon_variant&NMD_transcript_variant|353|2|1|M/T|aTg/aCg|||ENST00000487053.1:c.2T>C|ENSP00000424615.1:p.Met1?|deleterious(0)||benign(0.036)||ENSP00000424615||3/21||MIB2|||||");

            Assert.NotNull(annotatedVariant);
            Assert.Contains("\"isReferenceMinorAllele\":true", annotatedVariant.ToString());

            var transcriptAllele = annotatedVariant.AnnotatedAlternateAlleles.FirstOrDefault()?.EnsemblTranscripts.FirstOrDefault();

            Assert.NotNull(transcriptAllele);

            // ReSharper disable once PossibleNullReferenceException
            Assert.Equal("start_lost&NMD_transcript_variant", string.Join("&", transcriptAllele.Consequence));
        }
예제 #15
0
        public void SynonymousVariant()
        {
            var sa = new SupplementaryAnnotationPosition(115258746)
            {
                IsRefMinorAllele           = true,
                GlobalMajorAllele          = "G",
                GlobalMajorAlleleFrequency = "0.8239"
            };

            var saReader = new MockSupplementaryAnnotationReader(sa);

            var annotatedVariant = DataUtilities.GetVariant(Resources.CacheGRCh37("ENST00000369535_chr1_Ensembl84"), saReader,
                                                            "chr1	115258746	.	A	.	265.00	PASS	SNVSB=-31.9;SNVHPOL=2	GT:GQ:GQX:DP:DPF:AD	0/1:254:40:56:1:26,30");

            Assert.NotNull(annotatedVariant);
            Assert.Contains("\"isReferenceMinorAllele\":true", annotatedVariant.ToString());

            var transcriptAllele = annotatedVariant.AnnotatedAlternateAlleles.FirstOrDefault()?.EnsemblTranscripts.FirstOrDefault();

            Assert.NotNull(transcriptAllele);

            // ReSharper disable once PossibleNullReferenceException
            Assert.Equal("synonymous_variant", string.Join("&", transcriptAllele.Consequence));
        }
예제 #16
0
        public void SpliceVariants()
        {
            var sa = new SupplementaryAnnotationPosition(889158)
            {
                IsRefMinorAllele           = true,
                GlobalMajorAllele          = "G",
                GlobalMajorAlleleFrequency = "0.8239"
            };

            var saReader = new MockSupplementaryAnnotationReader(sa);

            var annotatedVariant = DataUtilities.GetVariant(Resources.CacheGRCh37("ENST00000327044_chr1_Ensembl84"), saReader,
                                                            "chr1	889158	.	C	.	1243.00	PASS	SNVSB=-130.5;SNVHPOL=3;CSQ=C|ENSG00000188976|ENST00000327044|Transcript|splice_region_variant&intron_variant|||||||CCDS3.1|ENST00000327044.6:c.888+4C>G|||YES|||ENSP00000317992|||8/18|NOC2L||||| GT:GQ:GQX:DP:DPF:AD     1/1:313:26:105:9:0,105");

            Assert.NotNull(annotatedVariant);
            Assert.Contains("\"isReferenceMinorAllele\":true", annotatedVariant.ToString());

            var transcriptAllele = annotatedVariant.AnnotatedAlternateAlleles.FirstOrDefault()?.EnsemblTranscripts.FirstOrDefault();

            Assert.NotNull(transcriptAllele);

            // ReSharper disable once PossibleNullReferenceException
            Assert.Equal("splice_region_variant&intron_variant", string.Join("&", transcriptAllele.Consequence));
        }
예제 #17
0
        public void MultiAlleleTest()
        {
            var sa = new SupplementaryAnnotationPosition(4634317);

            var oneKg1 = new OneKGenAnnotation
            {
                AncestralAllele = "C",
                OneKgAllAn      = 5008,
                OneKgAllAc      = 2049
            };

            var oneKg2 = new OneKGenAnnotation
            {
                AncestralAllele = "C",
                OneKgAllAn      = 5008,
                OneKgAllAc      = 1200
            };
            var dbSnp = new DbSnpAnnotation
            {
                DbSnp = new List <long> {
                    11078537
                }
            };

            var saCreator = new SupplementaryPositionCreator(sa);

            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.DbSnp, "A", dbSnp);
            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.DbSnp, "T", dbSnp);
            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.OneKg, "A", oneKg1);
            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.OneKg, "T", oneKg2);

            var saReader = new MockSupplementaryAnnotationReader(sa);

            VcfUtilities.FieldContains(saReader,
                                       "17\t4634317\trs11078537\tC\tA,T\t256\tPASS\t.\tGT\t0/1", "AF1000G=0.409145,0.239617", VcfCommon.InfoIndex);
        }