molstar
Version:
A comprehensive macromolecular library.
65 lines (64 loc) • 2.71 kB
JavaScript
/**
* 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 };