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); }
public void AddEntry(string chromosome, int position, string refAllele, string altAllele, string vcfString, List <string> jsonStrings) { if ((jsonStrings == null || jsonStrings.Count == 0) && string.IsNullOrEmpty(vcfString)) { return; } //validate the vcf reference if (!ValidateReference(chromosome, position, refAllele)) { return; } if (!chromosome.Equals(_currentChromosome)) { _tsvIndex.AddTagPosition(chromosome, _bgzipTextWriter.Position); // Console.WriteLine($"chr {chromosome}, filePos: {_bgzipTextWriter.Position}"); _currentChromosome = chromosome; } refAllele = string.IsNullOrEmpty(refAllele) ? "-" : refAllele; altAllele = string.IsNullOrEmpty(altAllele) ? "-" : altAllele; _bgzipTextWriter.Write($"{chromosome}\t{position}\t{refAllele}\t{altAllele}\t{vcfString}"); if (jsonStrings != null) { foreach (var jsonString in jsonStrings) { _bgzipTextWriter.Write($"\t{jsonString}"); } } _bgzipTextWriter.Write("\n"); }
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]); }
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"); }
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; }
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 AddEntry(string chromosome, int start, int end, string jsonString) { if (string.IsNullOrEmpty(jsonString)) { return; } if (chromosome != _currentChromosome) { _tsvIndex.AddTagPosition(chromosome, _bgzipTextWriter.Position); _currentChromosome = chromosome; } _bgzipTextWriter.Write($"{chromosome}\t{start}\t{end}\t{jsonString}\n"); }
public void AddEntry(string chromosome, int position, string globalMajorAllele, string refAllele) { if (globalMajorAllele == null) { throw new Exception($"no global major allele for {chromosome}:{position}"); } //validate the vcf reference if (!ValidateReference(chromosome, position, refAllele)) { return; } if (!chromosome.Equals(_currentChromosome)) { _tsvIndex.AddTagPosition(chromosome, _bgzipTextWriter.Position); //Console.WriteLine($"chr {chromosome}, filePos: {_bgzipTextWriter.Position}"); _currentChromosome = chromosome; } _bgzipTextWriter.Write($"{chromosome}\t{position}\t{globalMajorAllele}\n"); }