Esempio n. 1
0
        public void GetNextPosition()
        {
            const string vcfLine = "chr1	13133	.	T	C	36.00	PASS	SNVSB=0.0;SNVHPOL=4	GT:GQ:GQX:DP:DPF:AD	0/1:62:20:7:1:3,4";
            var          lines   = new[]
            {
                "##fileformat=VCFv4.1", "##FILTER=<ID=PASS,Description=\"All filters passed\">", "##fileDate=20160920",
                "#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	NHL-16", vcfLine
            };

            AddLines(lines);

            var       refMinorProvider = new Mock <IRefMinorProvider>();
            var       seqProvider      = ParserTestUtils.GetSequenceProvider(13133, "T", 'A', ChromosomeUtilities.RefNameToChromosome);
            IPosition observedResult;

            using (var reader = FileUtilities.GetStreamReader(_ms))
                using (var vcfReader = VcfReader.Create(reader, reader, seqProvider, refMinorProvider.Object, new NullRecomposer(), new NullVcfFilter(), _vidCreator, null))
                {
                    observedResult = vcfReader.GetNextPosition();
                }

            var expectedResult = new Position(ChromosomeUtilities.Chr1, 13133, 13133, "T", new[] { "C" }, 36, new[] { "PASS" }, null,
                                              null, null, vcfLine.Split('\t'), new[] { false }, false);

            Assert.NotNull(observedResult);
            Assert.Equal(expectedResult.End, observedResult.End);
            Assert.Equal(expectedResult.AltAlleles, observedResult.AltAlleles);
            Assert.Equal(expectedResult.Filters, observedResult.Filters);
            Assert.Equal(expectedResult.Quality, observedResult.Quality);
            Assert.Equal(expectedResult.VcfFields, observedResult.VcfFields);
        }
Esempio n. 2
0
        public void ValidateVcfHeader_ExceptionThrown_NoChromHeaderLine()
        {
            var headers = new[] { "##fileformat=VCFv4.1", "##FILTER=<ID=PASS,Description=\"All filters passed\">", "##fileDate=20160920" };

            AddLines(headers);
            var seqProvider = ParserTestUtils.GetSequenceProvider(1000, "A", 'T', _refNameToChromosome);
            var reader      = FileUtilities.GetStreamReader(_ms);

            Assert.Throws <UserErrorException>(() => VcfReader.Create(reader, reader, seqProvider, null, null, new NullVcfFilter()));
        }
Esempio n. 3
0
        public void ValidateVcfHeader_ExceptionThrown_NoFileFormat()
        {
            var headers = new[] { "##Some comments", "#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	NHL-16	NHL-17"};

            AddLines(headers);
            var seqProvider = ParserTestUtils.GetSequenceProvider(1000, "A", 'T', _refNameToChromosome);
            var reader      = FileUtilities.GetStreamReader(_ms);

            Assert.Throws <UserErrorException>(() => VcfReader.Create(reader, reader, seqProvider, null, null, new NullVcfFilter()));
        }
Esempio n. 4
0
        public void CheckContigId_IncorrectAutoAndSexChromLength_ThrowException(string contigLine)
        {
            var headers = new[] { "##fileformat=VCFv4.1", contigLine, "#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT"};

            AddLines(headers);
            var seqProvider = ParserTestUtils.GetSequenceProvider(1000, "A", 'T', _refNameToChromosome);

            using (var reader = FileUtilities.GetStreamReader(_ms))
                Assert.Throws <UserErrorException>(() => VcfReader.Create(reader, reader, seqProvider, null, null, new NullVcfFilter()));
        }
Esempio n. 5
0
        public void CheckContigId_InferredAssemblyIsUnknown_GivenIrregularChrom(string contigLine)
        {
            var headers = new[] { "##fileformat=VCFv4.1", contigLine, "#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT"};

            AddLines(headers);
            var seqProvider = ParserTestUtils.GetSequenceProvider(1000, "A", 'T', _refNameToChromosome);

            using (var reader = FileUtilities.GetStreamReader(_ms))
                using (var vcfReader = VcfReader.Create(reader, reader, seqProvider, null, null, new NullVcfFilter()))
                {
                    Assert.Equal(GenomeAssembly.Unknown, vcfReader.InferredGenomeAssembly);
                }
        }
Esempio n. 6
0
        public void Duplicated_headlines_are_removed()
        {
            var headers = new[] { "##fileformat=VCFv4.1", "##FILTER=<ID=PASS,Description=\"All filters passed\">", "##fileDate=20160920", "##dataSource=ClinVar,version:unknown,release date:2016-09-01", "#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	NHL-16	NHL-17"};

            AddLines(headers);
            IEnumerable <string> observedHeaders;
            var seqProvider = ParserTestUtils.GetSequenceProvider(1000, "A", 'T', _refNameToChromosome);

            using (var reader = FileUtilities.GetStreamReader(_ms))
                using (var vcfReader = VcfReader.Create(reader, reader, seqProvider, null, null, new NullVcfFilter()))
                {
                    observedHeaders = vcfReader.GetHeaderLines();
                }

            Assert.Equal(4, observedHeaders.Count());
        }
Esempio n. 7
0
        public void HeaderLines_are_parsed()
        {
            var headers = new[] { "##fileformat=VCFv4.1", "##FILTER=<ID=PASS,Description=\"All filters passed\">", "##fileDate=20160920", "#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	NHL-16"};

            AddLines(headers);
            IEnumerable <string> observedHeaders;
            var seqProvider = ParserTestUtils.GetSequenceProvider(1000, "A", 'T', _refNameToChromosome);

            using (var reader = FileUtilities.GetStreamReader(_ms))
                using (var vcfReader = VcfReader.Create(reader, reader, seqProvider, null, null, new NullVcfFilter()))
                {
                    observedHeaders = vcfReader.GetHeaderLines();
                }

            Assert.Equal(headers, observedHeaders.ToArray());
        }
Esempio n. 8
0
        public void Sample_names_are_reported()
        {
            var headers = new[] { "##fileformat=VCFv4.1", "##FILTER=<ID=PASS,Description=\"All filters passed\">", "##fileDate=20160920", "#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	NHL-16	NHL-17"};

            AddLines(headers);
            string[] samples;
            var      seqProvider = ParserTestUtils.GetSequenceProvider(1000, "A", 'T', _refNameToChromosome);

            using (var reader = FileUtilities.GetStreamReader(_ms))
                using (var vcfReader = VcfReader.Create(reader, reader, seqProvider, null, null, new NullVcfFilter()))
                {
                    samples = vcfReader.GetSampleNames();
                }

            Assert.Equal(new[] { "NHL-16", "NHL-17" }, samples);
        }
Esempio n. 9
0
        private static VcfReader GetVcfReader(Stream headerStream, Stream vcfStream, IAnnotationResources annotationResources,
                                              IVcfFilter vcfFilter, IMitoHeteroplasmyProvider mitoHeteroplasmyProvider)
        {
            var vcfReader = FileUtilities.GetStreamReader(vcfStream);

            StreamReader headerReader;

            if (headerStream == null)
            {
                headerReader = vcfReader;
            }
            else
            {
                headerReader       = FileUtilities.GetStreamReader(headerStream);
                vcfStream.Position = Tabix.VirtualPosition.From(annotationResources.InputStartVirtualPosition).BlockOffset;
            }

            return(VcfReader.Create(headerReader, vcfReader, annotationResources.SequenceProvider,
                                    annotationResources.RefMinorProvider, annotationResources.Recomposer, vcfFilter, annotationResources.VidCreator, mitoHeteroplasmyProvider));
        }
Esempio n. 10
0
        public void CheckSampleConsistency_noSample()
        {
            const string vcfLine1 = "chr1	13133	.	T	C	36.00	PASS	SNVSB=0.0;SNVHPOL=4";
            const string vcfLine2 = "chr1	13133	.	T	A	36.00	PASS	SNVSB=0.0;SNVHPOL=4	GT:GQ:GQX:DP:DPF:AD	0/1:62:20:7:1:3,4";
            var          lines    = new[]
            {
                "##fileformat=VCFv4.1", "##FILTER=<ID=PASS,Description=\"All filters passed\">", "##fileDate=20160920",
                "#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO", vcfLine1, vcfLine2
            };

            AddLines(lines);

            var refMinorProvider = new Mock <IRefMinorProvider>();
            var seqProvider      = ParserTestUtils.GetSequenceProvider(13133, "T", 'A', ChromosomeUtilities.RefNameToChromosome);

            using (var reader = FileUtilities.GetStreamReader(_ms))
                using (var vcfReader = VcfReader.Create(reader, reader, seqProvider, refMinorProvider.Object, new NullRecomposer(), new NullVcfFilter(), _vidCreator, null))
                {
                    //first line is valid. So, no exception
                    Assert.NotNull(vcfReader.GetNextPosition());
                    // second line has invalid number of sample fields, so it will throw exception
                    Assert.Throws <UserErrorException>(() => vcfReader.GetNextPosition());
                }
        }