UNPKG

molstar

Version:

A comprehensive macromolecular library.

82 lines 3.67 kB
"use strict"; /** * Copyright (c) 2020 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.GlobalModelTransformInfo = void 0; var property_1 = require("../../../../mol-model-formats/structure/common/property"); var custom_property_1 = require("../../../custom-property"); var db_1 = require("../../../../mol-data/db"); var cif_1 = require("../../../../mol-io/writer/cif"); var mmcif_1 = require("../../../../mol-model-formats/structure/mmcif"); var schema_1 = require("../../../../mol-io/reader/cif/schema"); var GlobalModelTransformInfo; (function (GlobalModelTransformInfo) { var _a; var CategoryName = 'molstar_global_model_transform_info'; GlobalModelTransformInfo.Schema = (_a = {}, _a[CategoryName] = { matrix: db_1.Column.Schema.Matrix(4, 4, db_1.Column.Schema.float) }, _a); GlobalModelTransformInfo.Descriptor = (0, custom_property_1.CustomPropertyDescriptor)({ name: CategoryName, cifExport: { categories: [{ name: CategoryName, instance: function (ctx) { var mat = get(ctx.firstModel); if (!mat) return cif_1.CifWriter.Category.Empty; var table = db_1.Table.ofRows(GlobalModelTransformInfo.Schema.molstar_global_model_transform_info, [{ matrix: mat }]); return cif_1.CifWriter.Category.ofTable(table); } }], prefix: 'molstar' } }); GlobalModelTransformInfo.Provider = property_1.FormatPropertyProvider.create(GlobalModelTransformInfo.Descriptor); function attach(model, matrix) { if (!model.customProperties.has(GlobalModelTransformInfo.Descriptor)) { model.customProperties.add(GlobalModelTransformInfo.Descriptor); } GlobalModelTransformInfo.Provider.set(model, matrix); } GlobalModelTransformInfo.attach = attach; function get(model) { return GlobalModelTransformInfo.Provider.get(model); } GlobalModelTransformInfo.get = get; function fromMmCif(model) { if (!mmcif_1.MmcifFormat.is(model.sourceData)) return; var cat = model.sourceData.data.frame.categories[CategoryName]; if (!cat) return; var table = (0, schema_1.toTable)(GlobalModelTransformInfo.Schema[CategoryName], cat); if (table._rowCount === 0) return; return table.matrix.value(0); } GlobalModelTransformInfo.fromMmCif = fromMmCif; function hasData(model) { if (!mmcif_1.MmcifFormat.is(model.sourceData)) return false; var cat = model.sourceData.data.frame.categories[CategoryName]; return !!cat && cat.rowCount > 0; } GlobalModelTransformInfo.hasData = hasData; function writeMmCif(encoder, matrix) { encoder.writeCategory({ name: CategoryName, instance: function () { var table = db_1.Table.ofRows(GlobalModelTransformInfo.Schema.molstar_global_model_transform_info, [{ matrix: matrix }]); return cif_1.CifWriter.Category.ofTable(table); } }); } GlobalModelTransformInfo.writeMmCif = writeMmCif; })(GlobalModelTransformInfo = exports.GlobalModelTransformInfo || (exports.GlobalModelTransformInfo = {})); //# sourceMappingURL=global-transform.js.map