UNPKG

molstar

Version:

A comprehensive macromolecular library.

65 lines (64 loc) 2.71 kB
/** * Copyright (c) 2017-2019 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> */ import { arrayFind } from '../../../../mol-data/util'; import { Spacegroup } from '../../../../mol-math/geometry'; import { ModelSymmetry } from '../../../../mol-model-formats/structure/property/symmetry'; import { radToDeg } from '../../../../mol-math/misc'; var Assembly = /** @class */ (function () { function Assembly(id, details, operatorsProvider) { this.operatorsProvider = operatorsProvider; this.id = id; this.details = details; } Object.defineProperty(Assembly.prototype, "operatorGroups", { get: function () { if (this._operators) return this._operators; this._operators = this.operatorsProvider(); return this._operators; }, enumerable: false, configurable: true }); return Assembly; }()); export { Assembly }; (function (Assembly) { function create(id, details, operatorsProvider) { return new Assembly(id, details, operatorsProvider); } Assembly.create = create; })(Assembly || (Assembly = {})); var Symmetry; (function (Symmetry) { Symmetry.Default = { assemblies: [], spacegroup: Spacegroup.ZeroP1, isNonStandardCrystalFrame: false }; function findAssembly(model, id) { var _id = id.toLocaleLowerCase(); var symmetry = ModelSymmetry.Provider.get(model); return symmetry ? arrayFind(symmetry.assemblies, function (a) { return a.id.toLowerCase() === _id; }) : undefined; } Symmetry.findAssembly = findAssembly; function getUnitcellLabel(symmetry) { var _a = symmetry.spacegroup, cell = _a.cell, name = _a.name, num = _a.num; var size = cell.size, anglesInRadians = cell.anglesInRadians; var a = size[0].toFixed(2); var b = size[1].toFixed(2); var c = size[2].toFixed(2); var alpha = radToDeg(anglesInRadians[0]).toFixed(2); var beta = radToDeg(anglesInRadians[1]).toFixed(2); var gamma = radToDeg(anglesInRadians[2]).toFixed(2); var label = []; // name label.push("Unit Cell <b>".concat(name, "</b> #").concat(num)); // sizes label.push("".concat(a, "\u00D7").concat(b, "\u00D7").concat(c, " \u212B")); // angles label.push("\u03B1=".concat(alpha, "\u00B0 \u03B2=").concat(beta, "\u00B0 \u03B3=").concat(gamma, "\u00B0")); return label.join(' | '); } Symmetry.getUnitcellLabel = getUnitcellLabel; })(Symmetry || (Symmetry = {})); export { Symmetry };