UNPKG

molstar

Version:

A comprehensive macromolecular library.

98 lines 4.2 kB
"use strict"; /** * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> * @author Alexander Rose <alexander.rose@weirdbyte.de> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.CifWriter = void 0; var tslib_1 = require("tslib"); var text_1 = require("./cif/encoder/text"); var binary_1 = require("./cif/encoder/binary"); var _Encoder = (0, tslib_1.__importStar)(require("./cif/encoder")); var binary_cif_1 = require("../common/binary-cif"); var CifWriter; (function (CifWriter) { CifWriter.Encoder = _Encoder.Encoder; CifWriter.Category = _Encoder.Category; CifWriter.Field = _Encoder.Field; CifWriter.Encoding = binary_cif_1.ArrayEncoding; function createEncoder(params) { var _a = params || {}, _b = _a.binary, binary = _b === void 0 ? false : _b, _c = _a.encoderName, encoderName = _c === void 0 ? 'mol*' : _c; return binary ? new binary_1.BinaryEncoder(encoderName, params ? params.binaryEncodingPovider : void 0, params ? !!params.binaryAutoClassifyEncoding : false) : new text_1.TextEncoder(); } CifWriter.createEncoder = createEncoder; function fields() { return CifWriter.Field.build(); } CifWriter.fields = fields; var E = CifWriter.Encoding; CifWriter.Encodings = { deltaRLE: E.by(E.delta).and(E.runLength).and(E.integerPacking), fixedPoint2: E.by(E.fixedPoint(100)).and(E.delta).and(E.integerPacking), fixedPoint3: E.by(E.fixedPoint(1000)).and(E.delta).and(E.integerPacking), }; function categoryInstance(fields, source) { return { fields: fields, source: [source] }; } CifWriter.categoryInstance = categoryInstance; function createEncodingProviderFromCifFrame(frame) { return { get: function (c, f) { var cat = frame.categories[c]; if (!cat) return void 0; var ff = cat.getField(f); return ff && ff.binaryEncoding ? binary_cif_1.ArrayEncoder.fromEncoding(ff.binaryEncoding) : void 0; } }; } CifWriter.createEncodingProviderFromCifFrame = createEncodingProviderFromCifFrame; ; function createEncodingProviderFromJsonConfig(hints) { return { get: function (c, f) { for (var i = 0; i < hints.length; i++) { var hint = hints[i]; if (hint.categoryName === c && hint.columnName === f) { return resolveEncoding(hint); } } } }; } CifWriter.createEncodingProviderFromJsonConfig = createEncodingProviderFromJsonConfig; function resolveEncoding(hint) { var precision = hint.precision; if (precision !== void 0) { var multiplier = Math.pow(10, precision); var fixedPoint = E.by(E.fixedPoint(multiplier)); switch (hint.encoding) { case 'pack': return fixedPoint.and(E.integerPacking); case 'rle': return fixedPoint.and(E.runLength).and(E.integerPacking); case 'delta': return fixedPoint.and(E.delta).and(E.integerPacking); case 'delta-rle': return fixedPoint.and(E.delta).and(E.runLength).and(E.integerPacking); } ; } else { switch (hint.encoding) { case 'pack': return E.by(E.integerPacking); case 'rle': return E.by(E.runLength).and(E.integerPacking); case 'delta': return E.by(E.delta).and(E.integerPacking); case 'delta-rle': return E.by(E.delta).and(E.runLength).and(E.integerPacking); } } throw new Error('cannot be reached'); } })(CifWriter = exports.CifWriter || (exports.CifWriter = {})); //# sourceMappingURL=cif.js.map