Beispiel #1
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);
        }
        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());
        }
        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);
        }
        public void MultiVariantEntry()
        {
            var reader = new ClinVarXmlReader(new FileInfo(Resources.TopPath("RCV000007484.xml")), _reader, _sequence);

            foreach (var clinVarItem in reader)
            {
                switch (clinVarItem.Start)
                {
                case 8045031:
                    Assert.Equal("G", clinVarItem.ReferenceAllele);
                    Assert.Equal("A", clinVarItem.AltAllele);
                    break;

                case 8021911:
                    Assert.Equal("GTGCTGGACGGTGTCCCT", clinVarItem.AltAllele);
                    var sa        = new SupplementaryAnnotationPosition(clinVarItem.Start);
                    var saCreator = new SupplementaryPositionCreator(sa);

                    clinVarItem.SetSupplementaryAnnotations(saCreator);
                    Assert.Equal("iGTGCTGGACGGTGTCCCT", clinVarItem.SaAltAllele);
                    break;

                default:
                    throw new InvalidDataException($"Unexpected clinvar item start point : {clinVarItem.Start}");
                }
            }
        }
Beispiel #5
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);
        }
Beispiel #6
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);
        }
Beispiel #7
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);
        }
Beispiel #8
0
        public void NumEvsSamplesTest()
        {
            const string vcfLine = "1	1564952	rs112177324	TG	TGG,T	.	PASS	BSNP=dbSNP_132;EA_AC=2,3039,4701;AA_AC=44,279,3231;TAC=46,3318,7932;MAF=39.2793,9.0884,29.7805;GTS=A1A1,A1A2,A1R,A2A2,A2R,RR;EA_GTC=0,1,1,707,1624,1538;AA_GTC=4,4,32,41,193,1503;GTC=4,5,33,748,1817,3041;DP=10;GL=MIB2;CP=0.8;CG=-0.0;AA=.;CA=.;EXOME_CHIP=no;GWAS_PUBMED=.;FG=NM_080875.2:intron,NM_080875.2:intron,NM_001170689.1:intron,NM_001170689.1:intron,NM_001170688.1:intron,NM_001170688.1:intron,NM_001170687.1:intron,NM_001170687.1:intron,NM_001170686.1:intron,NM_001170686.1:intron;HGVS_CDNA_VAR=NM_080875.2:c.2908+7del1,NM_080875.2:c.2908+6_2908+7insG,NM_001170689.1:c.2187-66del1,NM_001170689.1:c.2187-67_2187-66insG,NM_001170688.1:c.2713+7del1,NM_001170688.1:c.2713+6_2713+7insG,NM_001170687.1:c.2866+7del1,NM_001170687.1:c.2866+6_2866+7insG,NM_001170686.1:c.2896+7del1,NM_001170686.1:c.2896+6_28967insG;HGVS_PROTEIN_VAR=.,.,.,.,.,.,.,.,.,.;CDS_SIZES=NM_080875.2:3213,NM_080875.2:3213,NM_001170689.1:2262,NM_001170689.1:2262,NM_001170688.1:3018,NM_001170688.1:3018,NM_001170687.1:3171,NM_001170687.1:3171,NM_001170686.1:3201,NM_001170686.1:3201;GS=.,.,.,.,.,.,.,.,.,.;PH=.,.,.,.,.,.,.,.,.,.;EA_AGE=.;AA_AGE=.";

            var evsReader    = new EvsReader(_renamer);
            var evsItemsList = evsReader.ExtractItems(vcfLine);

            var sa        = new SupplementaryAnnotationPosition(1564953);
            var saCreator = new SupplementaryPositionCreator(sa);

            var additionalItems = new List <SupplementaryDataItem>();

            foreach (var evsItem in evsItemsList)
            {
                additionalItems.Add(evsItem.SetSupplementaryAnnotations(saCreator));
            }

            foreach (var item in additionalItems)
            {
                item.SetSupplementaryAnnotations(saCreator);
            }

            var evs =
                sa.AlleleSpecificAnnotations["iG"].Annotations[DataSourceCommon.GetIndex(DataSourceCommon.DataSource.Evs)] as EvsAnnotation;

            Assert.NotNull(evs);

            Assert.Equal("5648", evs.NumEvsSamples);//GTC=4,5,33,748,1817,3041;
        }
        /// <summary>
        /// reads the supplementary annotation from disk
        /// </summary>
        private static SupplementaryAnnotationPosition Read(ExtendedBinaryReader reader, int referencePos)
        {
            var sa = new SupplementaryAnnotationPosition(referencePos);

            SupplementaryAnnotationPosition.Read(reader, sa);

            return(sa);
        }
Beispiel #10
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);
        }
Beispiel #11
0
        public void RwDbsnpGlobalAlleles()
        {
            //NIR-1262
            var randomPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            // create our expected data source versions
            var dbSnpVersion = new DataSourceVersion("dbSNP", "147", DateTime.Parse("2016-07-26").Ticks);

            var expectedDataSourceVersions = new List <DataSourceVersion> {
                dbSnpVersion
            };

            const string vcfLine1 =
                "2	141724543	rs112783784	A	C,T	.	.	RS=112783784;RSPOS=141724543;dbSNPBuildID=132;SSR=0;SAO=0;VP=0x050100080015140136000100;WGT=1;VC=SNV;SLO;INT;OTH;ASP;VLD;GNO;KGPhase1;KGPhase3;CAF=0.04113,0.9105,0.04832;COMMON=1";

            const string vcfLine2 =
                "2	141724543	rs4300776	A	C	.	.	RS=4300776;RSPOS=141724543;dbSNPBuildID=111;SSR=0;SAO=0;VP=0x050100080015000102000100;WGT=1;VC=SNV;SLO;INT;OTH;ASP;GNO;CAF=0.04113,0.9105;COMMON=1";

            var sa        = new SupplementaryAnnotationPosition(141724543);
            var saCreator = new SupplementaryPositionCreator(sa);

            var dbsnpReader = new DbSnpReader(_renamer);

            foreach (var dbSnpItem in dbsnpReader.ExtractItem(vcfLine1))
            {
                dbSnpItem.SetSupplementaryAnnotations(saCreator);
            }

            foreach (var dbSnpItem in dbsnpReader.ExtractItem(vcfLine2))
            {
                dbSnpItem.SetSupplementaryAnnotations(saCreator);
            }

            // write the supplementary annotation file
            using (var writer = new SupplementaryAnnotationWriter(randomPath, "chr1", expectedDataSourceVersions))
            {
                saCreator.FinalizePositionalAnnotations();
                writer.Write(saCreator, sa.ReferencePosition);
            }

            using (var reader = new SupplementaryAnnotationReader(randomPath))
            {
                // extract the three annotations
                var observedAnnotation = reader.GetAnnotation(141724543) as SupplementaryAnnotationPosition;
                Assert.NotNull(observedAnnotation);

                Assert.Equal("C", observedAnnotation.GlobalMajorAllele);
                Assert.Equal("0.9105", observedAnnotation.GlobalMajorAlleleFrequency);

                Assert.Equal("T", observedAnnotation.GlobalMinorAllele);
                Assert.Equal("0.04832", observedAnnotation.GlobalMinorAlleleFrequency);
            }

            File.Delete(randomPath);
            File.Delete(randomPath + ".idx");
        }
Beispiel #12
0
        public void ReadWriteCustomAnnotation()
        {
            var randomPath = GetRandomPath(true);

            // create our expected data source versions
            var dbSnpVersion   = new DataSourceVersion("dbSNP", "142", DateTime.Parse("2015-01-02").Ticks);
            var clinVarVersion = new DataSourceVersion("ClinVar", "13.5", DateTime.Parse("2015-01-19").Ticks);

            var expectedDataSourceVersions = new List <DataSourceVersion> {
                dbSnpVersion, clinVarVersion
            };

            var customFile = new FileInfo(Resources.TopPath("customCosmic.vcf"));

            var customReader = new CustomAnnotationReader(customFile, _renamer);

            // all items from this file should be of type cosmic.
            var customItems = customReader.ToList();

            var sa        = new SupplementaryAnnotationPosition(69224);
            var saCreator = new SupplementaryPositionCreator(sa);

            foreach (var customItem in customItems)
            {
                // NOTE that the two custom items are for different position, but for the purpose of our test, this is not an issue.
                customItem.SetSupplementaryAnnotations(saCreator);
            }

            // the above code was unit tested in MergeDbSnpClinVar()
            using (var writer = new SupplementaryAnnotationWriter(randomPath, "chr1", expectedDataSourceVersions))
            {
                writer.Write(saCreator, sa.ReferencePosition);
            }

            // read the supplementary annotation file
            using (var reader = new SupplementaryAnnotationReader(randomPath))
            {
                // extract the three annotations
                var observedAnnotation1 = reader.GetAnnotation(69224);

                Assert.NotNull(observedAnnotation1);

                for (var i = 0; i < sa.CustomItems.Count; i++)
                {
                    Assert.Equal(sa.CustomItems[i].Id, observedAnnotation1.CustomItems[i].Id);
                    Assert.Equal(sa.CustomItems[i].AnnotationType, observedAnnotation1.CustomItems[i].AnnotationType);
                    Assert.Equal(sa.CustomItems[i].IsAlleleSpecific, observedAnnotation1.CustomItems[i].IsAlleleSpecific);
                    Assert.True(sa.CustomItems[i].StringFields.SequenceEqual(observedAnnotation1.CustomItems[i].StringFields));
                    if (sa.CustomItems[i].BooleanFields.Count > 0)
                    {
                        Assert.True(sa.CustomItems[i].BooleanFields.SequenceEqual(observedAnnotation1.CustomItems[i].BooleanFields));
                    }
                }
            }
        }
Beispiel #13
0
        public void ReadWriteClinVar()
        {
            //test to make sure that we write a ClinVar entry and read back the same thing.
            var xmlReader = new ClinVarXmlReader(new FileInfo(@"Resources\RCV000152657.xml"), _reader, _sequence);

            var randomPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            // create our expected data source versions
            var dbSnpVersion   = new DataSourceVersion("dbSNP", "142", DateTime.Parse("2015-01-02").Ticks);
            var clinVarVersion = new DataSourceVersion("ClinVar", "13.5", DateTime.Parse("2015-01-19").Ticks);

            var expectedDataSourceVersions = new List <DataSourceVersion> {
                dbSnpVersion, clinVarVersion
            };

            var sa        = new SupplementaryAnnotationPosition(10183457);
            var saCreator = new SupplementaryPositionCreator(sa);

            foreach (var clinVarItem in xmlReader)
            {
                clinVarItem.SetSupplementaryAnnotations(saCreator);
                saCreator.MergeSaCreator(saCreator);
            }

            using (var writer = new SupplementaryAnnotationWriter(randomPath, "chr9", expectedDataSourceVersions))
            {
                writer.Write(saCreator, sa.ReferencePosition);
            }

            // read the supplementary annotation file
            using (var reader = new SupplementaryAnnotationReader(randomPath))
            {
                var observedAnnotation = reader.GetAnnotation(10183457) as SupplementaryAnnotationPosition;

                Assert.NotNull(observedAnnotation);

                for (var i = 0; i < sa.ClinVarItems.Count; i++)
                {
                    Assert.Equal(sa.ClinVarItems[i].ID, observedAnnotation.ClinVarItems[i].ID);
                    Assert.Equal(sa.ClinVarItems[i].Significance, observedAnnotation.ClinVarItems[i].Significance);
                    Assert.Equal(sa.ClinVarItems[i].LastUpdatedDate, observedAnnotation.ClinVarItems[i].LastUpdatedDate);
                    Assert.True(sa.ClinVarItems[i].Phenotypes.SequenceEqual(observedAnnotation.ClinVarItems[i].Phenotypes));
                    Assert.True(sa.ClinVarItems[i].MedGenIDs.SequenceEqual(observedAnnotation.ClinVarItems[i].MedGenIDs));
                    Assert.True(sa.ClinVarItems[i].OrphanetIDs.SequenceEqual(observedAnnotation.ClinVarItems[i].OrphanetIDs));
                    Assert.Equal(sa.ClinVarItems[i].AlleleOrigins, observedAnnotation.ClinVarItems[i].AlleleOrigins);
                    Assert.True(sa.ClinVarItems[i].OmimIDs.SequenceEqual(observedAnnotation.ClinVarItems[i].OmimIDs));
                    Assert.True(sa.ClinVarItems[i].PubmedIds.SequenceEqual(observedAnnotation.ClinVarItems[i].PubmedIds));
                }
            }

            File.Delete(randomPath);
            File.Delete(randomPath + ".idx");
        }
Beispiel #14
0
        /// <summary>
        /// constructor
        /// </summary>
        public SaReadWriteTests(ChromosomeRenamerFixture fixture)
        {
            _renamer  = fixture.Renamer;
            _sequence = fixture.Sequence;
            _reader   = fixture.Reader;

            // create our expected data source versions
            _expectedDataSourceVersion  = new DataSourceVersion("ClinVar", "13.5", DateTime.Parse("2015-01-19").Ticks);
            _expectedDataSourceVersions = new List <DataSourceVersion> {
                _expectedDataSourceVersion
            };

            // create our expected supplementary annotations
            var dbSnp1 = new DbSnpAnnotation
            {
                DbSnp = new List <long> {
                    1
                }
            };

            _expectedAnnotation1 = new SupplementaryAnnotationPosition(100);
            new SupplementaryPositionCreator(_expectedAnnotation1).AddExternalDataToAsa(DataSourceCommon.DataSource.DbSnp, AltAllele, dbSnp1);

            var dbSnp2 = new DbSnpAnnotation
            {
                DbSnp = new List <long> {
                    2
                }
            };

            _expectedAnnotation2 = new SupplementaryAnnotationPosition(101);
            new SupplementaryPositionCreator(_expectedAnnotation2).AddExternalDataToAsa(DataSourceCommon.DataSource.DbSnp, AltAllele, dbSnp2);

            var dbSnp3 = new DbSnpAnnotation
            {
                DbSnp = new List <long> {
                    3
                }
            };

            _expectedAnnotation3 = new SupplementaryAnnotationPosition(102);
            new SupplementaryPositionCreator(_expectedAnnotation3).AddExternalDataToAsa(DataSourceCommon.DataSource.DbSnp, AltAllele, dbSnp3);

            _expectedInterval = new SupplementaryInterval(1, 1000, "chr1", null, VariantType.copy_number_variation, null, _renamer);

            _randomPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            // write the supplementary annotation file
            WriteSupplementaryAnnotationFile(_randomPath);
        }
Beispiel #15
0
        public void Utf8ClinVar()
        {
            // NIR-900
            var xmlReader = new ClinVarXmlReader(new FileInfo(Resources.TopPath("RCV000087262.xml")), _reader, _sequence);

            var randomPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            // create our expected data source versions
            var dbSnpVersion   = new DataSourceVersion("dbSNP", "142", DateTime.Parse("2015-01-02").Ticks);
            var clinVarVersion = new DataSourceVersion("ClinVar", "13.5", DateTime.Parse("2015-01-19").Ticks);

            var expectedDataSourceVersions = new List <DataSourceVersion> {
                dbSnpVersion, clinVarVersion
            };

            // This is the case where Nirvana throws an error: Too many bytes in what should have been a 7 bit encoded Int32.

            var sa        = new SupplementaryAnnotationPosition(225592188);
            var saCreator = new SupplementaryPositionCreator(sa);

            foreach (var clinVarItem in xmlReader)
            {
                clinVarItem.SetSupplementaryAnnotations(saCreator);
                saCreator.MergeSaCreator(saCreator);
            }

            using (var writer = new SupplementaryAnnotationWriter(randomPath, "chr1", expectedDataSourceVersions))
            {
                writer.Write(saCreator, sa.ReferencePosition);
            }

            // read the supplementary annotation file
            using (var reader = new SupplementaryAnnotationReader(randomPath))
            {
                // extract the three annotations
                var observedAnnotation1 = reader.GetAnnotation(225592188) as SupplementaryAnnotationPosition;

                Assert.NotNull(observedAnnotation1);

                for (var i = 0; i < sa.ClinVarItems.Count; i++)
                {
                    Assert.Equal(sa.ClinVarItems[i].Phenotypes, observedAnnotation1.ClinVarItems[i].Phenotypes);
                }
            }

            File.Delete(randomPath);
            File.Delete(randomPath + ".idx");
        }
Beispiel #16
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);
        }
Beispiel #17
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);
        }
Beispiel #18
0
        public void EvsDepthFieldTest()
        {
            const string vcfLine = "1	69428	rs140739101	T	G	.	PASS	BSNP=dbSNP_134;EA_AC=313,6535;AA_AC=14,3808;TAC=327,10343;MAF=4.5707,0.3663,3.0647;GTS=GG,GT,TT;EA_GTC=92,129,3203;AA_GTC=1,12,1898;GTC=93,141,5101;DP=110;GL=OR4F5;CP=1.0;CG=0.9;AA=T;CA=.;EXOME_CHIP=no;GWAS_PUBMED=.;FG=NM_001005484.1:missense;HGVS_CDNA_VAR=NM_001005484.1:c.338T>G;HGVS_PROTEIN_VAR=NM_001005484.1:p.(F113C);CDS_SIZES=NM_001005484.1:918;GS=205;PH=probably-damaging:0.999;EA_AGE=.;AA_AGE=.";

            var evsReader = new EvsReader(_renamer);
            var evsItem   = evsReader.ExtractItems(vcfLine)[0];

            var sa        = new SupplementaryAnnotationPosition(69428);
            var saCreator = new SupplementaryPositionCreator(sa);

            evsItem.SetSupplementaryAnnotations(saCreator);

            var evs =
                sa.AlleleSpecificAnnotations["G"].Annotations[DataSourceCommon.GetIndex(DataSourceCommon.DataSource.Evs)] as EvsAnnotation;

            Assert.NotNull(evs);

            Assert.Equal("110", evs.EvsCoverage);
        }
Beispiel #19
0
        public void RefGlobalMajor()
        {
            // NIR-942
            const string vcfLine =
                "1	1242707	rs2274262	A	G,T	.	.	RS=2274262;RSPOS=1242707;RV;dbSNPBuildID=100;SSR=0;SAO=0;VP=0x0501004a000507013e000100;WGT=1;VC=SNV;SLO;U5;INT;R5;ASP;VLD;G5A;G5;GNO;KGPhase1;KGPhase3;CAF=0.4,0.4,0.2;COMMON=1";

            var dbsnpReader = new DbSnpReader(_renamer);
            var dbSnpEntry  = dbsnpReader.ExtractItem(vcfLine)[0];

            var sa        = new SupplementaryAnnotationPosition(1242707);
            var saCreator = new SupplementaryPositionCreator(sa);

            dbSnpEntry.SetSupplementaryAnnotations(saCreator);

            saCreator.FinalizePositionalAnnotations();

            Assert.Equal("A", sa.GlobalMajorAllele);
            Assert.Equal("G", sa.GlobalMinorAllele);
        }
Beispiel #20
0
        public void DisregardZeroFreq()
        {
            const string vcfLine =
                "1	241369	rs11490246	C	T	.	.	RS=11490246;RSPOS=241369;dbSNPBuildID=120;SSR=0;SAO=0;VP=0x050100000005000126000100;WGT=1;VC=SNV;SLO;ASP;GNO;KGPhase3;CAF=0,1;COMMON=0";
            var dbsnpReader = new DbSnpReader(_renamer);
            var dbSnpEntry  = dbsnpReader.ExtractItem(vcfLine)[0];

            var sa        = new SupplementaryAnnotationPosition(828);
            var saCreator = new SupplementaryPositionCreator(sa);

            dbSnpEntry.SetSupplementaryAnnotations(saCreator);

            saCreator.FinalizePositionalAnnotations();

            Assert.Equal("T", sa.GlobalMajorAllele);
            Assert.Equal("1", sa.GlobalMajorAlleleFrequency);
            Assert.Null(sa.GlobalMinorAllele);
            Assert.Null(sa.GlobalMinorAlleleFrequency);
        }
Beispiel #21
0
        public void MissingDbsnpId()
        {
            // refactorSA. Annotation for C is missing in the database. have to debug that.

            const string vcfLine =
                "X	21505833	rs12395602	G	A,C,T	.	.	RS=12395602;RSPOS=21505833;dbSNPBuildID=120;SSR=0;SAO=0;VP=0x05010008000505051f000101;WGT=1;VC=SNV;SLO;INT;ASP;VLD;G5;HD;GNO;KGPhase1";

            var dbsnpReader  = new DbSnpReader(_renamer);
            var dbSnpEntries = dbsnpReader.ExtractItem(vcfLine);

            var sa        = new SupplementaryAnnotationPosition(21505833);
            var saCreator = new SupplementaryPositionCreator(sa);

            foreach (var dbSnpEntry in dbSnpEntries)
            {
                dbSnpEntry.SetSupplementaryAnnotations(saCreator);
            }

            saCreator.FinalizePositionalAnnotations();

            var dbSnpA =
                sa.AlleleSpecificAnnotations["A"].Annotations[DataSourceCommon.GetIndex(DataSourceCommon.DataSource.DbSnp)] as
                DbSnpAnnotation;

            Assert.NotNull(dbSnpA);

            var dbSnpC =
                sa.AlleleSpecificAnnotations["C"].Annotations[DataSourceCommon.GetIndex(DataSourceCommon.DataSource.DbSnp)] as
                DbSnpAnnotation;

            Assert.NotNull(dbSnpC);

            var dbSnpT =
                sa.AlleleSpecificAnnotations["T"].Annotations[DataSourceCommon.GetIndex(DataSourceCommon.DataSource.DbSnp)] as
                DbSnpAnnotation;

            Assert.NotNull(dbSnpT);

            Assert.Equal(12395602, dbSnpA.DbSnp[0]);
            Assert.Equal(12395602, dbSnpC.DbSnp[0]);
            Assert.Equal(12395602, dbSnpT.DbSnp[0]);
        }
Beispiel #22
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);
        }
Beispiel #23
0
        public void NoMinorAllele1()
        {
            const string vcfLine =
                "17	828	rs62053745	T	C	.	.	RS=62053745;RSPOS=828;dbSNPBuildID=129;SSR=0;SAO=0;VP=0x050100080005140136000100;WGT=1;VC=SNV;SLO;INT;ASP;VLD;GNO;KGPhase1;KGPhase3;CAF=0.7424,.;COMMON=1";

            var dbsnpReader = new DbSnpReader(_renamer);
            var dbSnpEntry  = dbsnpReader.ExtractItem(vcfLine)[0];

            var sa        = new SupplementaryAnnotationPosition(828);
            var saCreator = new SupplementaryPositionCreator(sa);

            dbSnpEntry.SetSupplementaryAnnotations(saCreator);

            saCreator.FinalizePositionalAnnotations();

            Assert.Equal("T", sa.GlobalMajorAllele);
            Assert.Equal("0.7424", sa.GlobalMajorAlleleFrequency);
            Assert.Null(sa.GlobalMinorAllele);
            Assert.Null(sa.GlobalMinorAlleleFrequency);
        }
Beispiel #24
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);
        }
Beispiel #25
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());
        }
        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));
        }
        public void IndelWithNoLeadingBase()
        {
            var cosmicReader = new MergedCosmicReader();

            const string vcfLine1 = "3	10188320	COSM14426	GGTACTGAC	A	.	.	GENE=VHL;STRAND=+;CDS=c.463G>A;AA=p.?;CNT=2";
            const string vcfLine2 = "3	10188320	COSM18152	G	A	.	.	GENE=VHL;STRAND=+;CDS=c.463G>A;AA=p.V155M;CNT=7";

            var sa        = new SupplementaryAnnotationPosition(10188320);
            var saCreator = new SupplementaryPositionCreator(sa);

            foreach (var cosmicItem in cosmicReader.ExtractCosmicItems(vcfLine1))
            {
                cosmicItem.SetSupplementaryAnnotations(saCreator);
            }

            Assert.Equal("9A", sa.CosmicItems[0].SaAltAllele);

            foreach (var cosmicItem in cosmicReader.ExtractCosmicItems(vcfLine2))
            {
                cosmicItem.SetSupplementaryAnnotations(saCreator);
            }

            Assert.Equal("A", sa.CosmicItems[1].SaAltAllele);
        }
        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));
        }
        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));
        }
        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));
        }