Beispiel #1
0
        public NpdReader(Stream dbStream, Stream indexStream)
        {
            _dbStream    = dbStream;
            _indexStream = indexStream;
            _reader      = new ExtendedBinaryReader(dbStream);

            _index   = new NpdIndex(new ExtendedBinaryReader(indexStream));
            Assembly = _index.Assembly;
            Version  = _index.Version;

            if (_index.SchemaVersion != SaCommon.SchemaVersion)
            {
                throw new UserErrorException($"SA schema version mismatch. Expected {SaCommon.SchemaVersion}, observed {_index.SchemaVersion}");
            }

            var scoreMap = new Dictionary <byte, double>();

            foreach ((double score, byte code) in _index.ScoreMap)
            {
                scoreMap.Add(code, score);
            }

            _scoreMap = scoreMap.ToImmutableDictionary();
            _zstd     = new Zstandard();
            _scores   = new byte[NpdIndex.MaxChromLength];
        }
Beispiel #2
0
        public NpdWriter(Stream dbStream, Stream indexStream, DataSourceVersion version, GenomeAssembly assembly, string jsonKey, int schemaVersion)
        {
            _writer = new ExtendedBinaryWriter(dbStream);

            _index    = new NpdIndex(indexStream, assembly, version, jsonKey, schemaVersion);
            _scoreMap = new Dictionary <double, byte>(byte.MaxValue);

            _scores    = new byte[NpdIndex.MaxChromLength];
            _memStream = new MemoryStream(_scores);
            _memWriter = new ExtendedBinaryWriter(_memStream);
            _zstd      = new Zstandard();

            _compressedScores = new byte[_zstd.GetCompressedBufferBounds(_scores.Length)];
        }