molstar
Version:
A comprehensive macromolecular library.
82 lines • 3.67 kB
JavaScript
/**
* 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
;