public void Query_chunks_in_same_chrom()
        {
            var stream  = new MemoryStream();
            var writer  = new ExtendedBinaryWriter(stream);
            var version = new DataSourceVersion("dbsnp", "150", DateTime.Now.Ticks, "dbsnp ids");
            var index   = new NsaIndex(writer, GenomeAssembly.GRCh37, version, "dbsnp", true, true, SaCommon.SchemaVersion, false);

            index.Add(0, 100, 2000, 23457, 89320);
            index.Add(0, 2100, 4000, 112778, 58746);
            index.Add(0, 4100, 7000, 171525, 658794);

            (long start, int chunkCount) = index.GetFileRange(0, 150, 2120);
            Assert.Equal(23457, start);
            Assert.Equal(2, chunkCount);

            (start, chunkCount) = index.GetFileRange(0, 50, 98);
            Assert.Equal(-1, start);
            Assert.Equal(0, chunkCount);

            (start, chunkCount) = index.GetFileRange(0, 150, 2010);
            Assert.Equal(23457, start);
            Assert.Equal(1, chunkCount);

            (start, chunkCount) = index.GetFileRange(0, 2010, 4050);
            Assert.Equal(112778, start);
            Assert.Equal(1, chunkCount);

            (start, chunkCount) = index.GetFileRange(0, 4010, 4050);
            Assert.Equal(-1, start);
            Assert.Equal(0, chunkCount);

            (start, chunkCount) = index.GetFileRange(0, 7010, 7050);
            Assert.Equal(-1, start);
            Assert.Equal(0, chunkCount);
        }
Beispiel #2
0
        private static ExitCodes ProgramExecution()
        {
            using (var indexStream = FileUtilities.GetReadStream(_inputIndexFile))
                using (var outStream = FileUtilities.GetCreateStream(_outputIndexFile))
                    using (var extWriter = new ExtendedBinaryWriter(outStream))
                    {
                        var version  = DataSourceVersionReader.GetSourceVersion(_versionFile);
                        var oldIndex = new NsaIndex(indexStream);
                        var newIndex = new NsaIndex(extWriter, oldIndex.Assembly, version, oldIndex.JsonKey, oldIndex.MatchByAllele, oldIndex.IsArray, oldIndex.SchemaVersion, oldIndex.IsPositional);

                        newIndex.Write(oldIndex.GetBlocks());
                    }

            return(ExitCodes.Success);
        }
Beispiel #3
0
        //todo: filter chromIndex=ushort.Max
        public NsaWriter(Stream nsaStream, Stream indexStream, IDataSourceVersion version, ISequenceProvider refProvider, string jsonKey, bool matchByAllele, bool isArray, int schemaVersion, bool isPositional, bool skipIncorrectRefEntries = true, bool throwErrorOnConflicts = false, int blockSize = SaCommon.DefaultBlockSize, GenomeAssembly assembly = GenomeAssembly.Unknown, bool leaveOpen = false)
        {
            _stream                  = nsaStream;
            _indexStream             = indexStream;
            _writer                  = new ExtendedBinaryWriter(_stream, System.Text.Encoding.Default, leaveOpen);
            _indexWriter             = new ExtendedBinaryWriter(_indexStream, System.Text.Encoding.Default, leaveOpen);
            _isPositional            = isPositional;
            _skipIncorrectRefEntries = skipIncorrectRefEntries;
            _throwErrorOnConflicts   = throwErrorOnConflicts;
            _refProvider             = refProvider;
            _leaveOpen               = leaveOpen;

            assembly = _refProvider?.Assembly ?? assembly;

            _block     = new NsaBlock(new Zstandard(), blockSize);
            _index     = new NsaIndex(_indexWriter, assembly, version, jsonKey, matchByAllele, isArray, schemaVersion, isPositional);
            _memBuffer = new byte[blockSize];
            _memStream = new MemoryStream(_memBuffer);
            _memWriter = new ExtendedBinaryWriter(_memStream);
        }