molstar
Version:
A comprehensive macromolecular library.
69 lines • 2.96 kB
JavaScript
/**
* Copyright (c) 2017-2019 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.Symmetry = exports.Assembly = void 0;
var util_1 = require("../../../../mol-data/util");
var geometry_1 = require("../../../../mol-math/geometry");
var symmetry_1 = require("../../../../mol-model-formats/structure/property/symmetry");
var misc_1 = require("../../../../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;
}());
exports.Assembly = Assembly;
(function (Assembly) {
function create(id, details, operatorsProvider) {
return new Assembly(id, details, operatorsProvider);
}
Assembly.create = create;
})(Assembly = exports.Assembly || (exports.Assembly = {}));
exports.Assembly = Assembly;
var Symmetry;
(function (Symmetry) {
Symmetry.Default = { assemblies: [], spacegroup: geometry_1.Spacegroup.ZeroP1, isNonStandardCrystalFrame: false };
function findAssembly(model, id) {
var _id = id.toLocaleLowerCase();
var symmetry = symmetry_1.ModelSymmetry.Provider.get(model);
return symmetry ? (0, util_1.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 = (0, misc_1.radToDeg)(anglesInRadians[0]).toFixed(2);
var beta = (0, misc_1.radToDeg)(anglesInRadians[1]).toFixed(2);
var gamma = (0, misc_1.radToDeg)(anglesInRadians[2]).toFixed(2);
var label = [];
// name
label.push("Unit Cell <b>" + name + "</b> #" + num);
// sizes
label.push(a + "\u00D7" + b + "\u00D7" + c + " \u212B");
// angles
label.push("\u03B1=" + alpha + "\u00B0 \u03B2=" + beta + "\u00B0 \u03B3=" + gamma + "\u00B0");
return label.join(' | ');
}
Symmetry.getUnitcellLabel = getUnitcellLabel;
})(Symmetry || (Symmetry = {}));
exports.Symmetry = Symmetry;
//# sourceMappingURL=symmetry.js.map
;