Beispiel #1
0
        private static (Stream jsonStream, Stream jasixStream) GetNirvanaJsonStreamWithoutGenes(int chromNumber)
        {
            var jsonStream  = new MemoryStream();
            var jasixStream = new MemoryStream();

            using (var bgZipStream = new BlockGZipStream(jsonStream, CompressionMode.Compress, true))
                using (var writer = new BgzipTextWriter(bgZipStream))
                    using (var jasixIndex = new JasixIndex())
                    {
                        writer.Write(NirvanaHeader);
                        writer.Flush();
                        jasixIndex.BeginSection(JasixCommons.PositionsSectionTag, writer.Position);
                        for (int i = 100 * chromNumber; i < 123 * chromNumber; i++)
                        {
                            writer.WriteLine($"{{\"chromosome\":\"chr{chromNumber}\",\"position\":{i}}},");
                            if (i % 50 == 0)
                            {
                                writer.Flush();  //creating another block
                            }
                        }
                        writer.WriteLine($"{{\"chromosome\":\"chr{chromNumber}\",\"position\":{100 *chromNumber +25}}}");
                        writer.Flush();
                        jasixIndex.EndSection(JasixCommons.PositionsSectionTag, writer.Position);

                        writer.Write(NirvanaFooter);
                        jasixIndex.Write(jasixStream);
                    }

            jsonStream.Position  = 0;
            jasixStream.Position = 0;
            return(jsonStream, jasixStream);
        }
Beispiel #2
0
        public IntervalTsvWriter(string outputPath, DataSourceVersion dataSourceVersion, string assembly, int dataVersion, string keyName,
                                 ReportFor reportingFor)
        {
            var fileName = keyName + "_" + dataSourceVersion.Version.Replace(" ", "_") + ".interval.tsv.gz";

            _bgzipTextWriter = new BgzipTextWriter(Path.Combine(outputPath, fileName));

            _bgzipTextWriter.Write(GetHeader(dataSourceVersion, dataVersion, assembly, keyName, reportingFor));
            _tsvIndex = new TsvIndex(Path.Combine(outputPath, fileName) + ".tvi");
        }
Beispiel #3
0
        public SaMiscTsvWriter(string outputPath, DataSourceVersion dataSourceVersion, string assembly, string keyName, ISequenceProvider sequenceProvider)
        {
            var fileName = keyName + "_" + dataSourceVersion.Version.Replace(" ", "_") + ".misc.tsv.gz";

            _bgzipTextWriter = new BgzipTextWriter(Path.Combine(outputPath, fileName));

            _bgzipTextWriter.Write(GetHeader(dataSourceVersion, assembly));

            _tsvIndex         = new TsvIndex(Path.Combine(outputPath, fileName + ".tvi"));
            _sequenceProvider = sequenceProvider;
        }
Beispiel #4
0
        private SaTsvWriter(string outputDir, DataSourceVersion dataSourceVersion, string assembly, int schemaVersion,
                            string jsonKey, string vcfKeys,
                            bool isAlleleSpecific, bool isArray = false)
        {
            var fileName = jsonKey + "_" + dataSourceVersion.Version.Replace(" ", "_") + ".tsv.gz";

            _bgzipTextWriter = new BgzipTextWriter(Path.Combine(outputDir, fileName));

            _bgzipTextWriter.Write(GetHeader(dataSourceVersion, schemaVersion, assembly, jsonKey, vcfKeys, isAlleleSpecific, isArray));

            _tsvIndex = new TsvIndex(Path.Combine(outputDir, fileName + ".tvi"));
        }
        public void BgzipTextWriter_EndToEnd()
        {
            var asterisks         = new string('*', BlockGZipStream.BlockGZipFormatCommon.BlockSize);
            var observedLines     = new List <string>();
            var observedPositions = new List <long>();

            using (var ms = new MemoryStream())
            {
                using (var stream = new BlockGZipStream(ms, CompressionMode.Compress, true))
                    using (var writer = new BgzipTextWriter(stream))
                    {
                        writer.Flush();
                        writer.WriteLine("BOB");
                        writer.WriteLine();
                        writer.Flush();
                        writer.Write("AB");
                        writer.Write("");
                        writer.Write("C");
                        writer.Write(" ");
                        writer.WriteLine("123");
                        writer.WriteLine(asterisks);
                        writer.WriteLine(asterisks);
                        writer.WriteLine(asterisks);
                    }

                ms.Position = 0;

                using (var reader = new BgzipTextReader(new BlockGZipStream(ms, CompressionMode.Decompress)))
                {
                    while (true)
                    {
                        string line = reader.ReadLine();
                        observedPositions.Add(reader.Position);
                        if (line == null)
                        {
                            break;
                        }
                        observedLines.Add(line);
                    }
                }
            }

            Assert.Equal(6, observedLines.Count);
            Assert.Equal("BOB", observedLines[0]);
            Assert.Equal(0, observedLines[1].Length);
            Assert.Equal("ABC 123", observedLines[2]);
            Assert.Equal(asterisks, observedLines[3]);
            Assert.Equal(4, observedPositions[0]);
            Assert.Equal(5, observedPositions[1]);
            Assert.Equal(13, observedPositions[2]);
            Assert.Equal(43843598, observedPositions[3]);
            Assert.Equal(87097359, observedPositions[4]);
        }
Beispiel #6
0
        public JsonWriter(StreamWriter writer, Stream indexStream, string annotator, string creationTime, string vepDataVersion,
                          List <IDataSourceVersion> dataSourceVersions, string genomeAssembly, string[] sampleNames, bool leaveOpen)
        {
            _writer              = writer;
            _writer.NewLine      = "\n";
            _firstEntry          = true;
            _positionFieldClosed = false;
            _leaveOpen           = leaveOpen;

            _bgzipTextWriter = writer as BgzipTextWriter;

            _jasixIndexCreator = _bgzipTextWriter != null
                ? new OnTheFlyIndexCreator(indexStream)
                : null;

            WriteHeader(annotator, creationTime, genomeAssembly, JsonCommon.SchemaVersion, vepDataVersion,
                        dataSourceVersions, sampleNames);
        }