molstar
Version:
A comprehensive macromolecular library.
47 lines (46 loc) • 2.04 kB
JavaScript
/**
* Copyright (c) 2019-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
import { Vec3 } from '../../../mol-math/linear-algebra';
import { arrayMinMax } from '../../../mol-util/array';
export function calcModelCenter(atomicConformation, coarseConformation) {
var rangesX = [];
var rangesY = [];
var rangesZ = [];
if (atomicConformation.x.length) {
rangesX.push.apply(rangesX, arrayMinMax(atomicConformation.x));
rangesY.push.apply(rangesY, arrayMinMax(atomicConformation.y));
rangesZ.push.apply(rangesZ, arrayMinMax(atomicConformation.z));
}
if (coarseConformation) {
if (coarseConformation.spheres.x.length) {
rangesX.push.apply(rangesX, arrayMinMax(coarseConformation.spheres.x));
rangesY.push.apply(rangesY, arrayMinMax(coarseConformation.spheres.y));
rangesZ.push.apply(rangesZ, arrayMinMax(coarseConformation.spheres.z));
}
if (coarseConformation.gaussians.x.length) {
rangesX.push.apply(rangesX, arrayMinMax(coarseConformation.gaussians.x));
rangesY.push.apply(rangesY, arrayMinMax(coarseConformation.gaussians.y));
rangesZ.push.apply(rangesZ, arrayMinMax(coarseConformation.gaussians.z));
}
}
var _a = arrayMinMax(rangesX), minX = _a[0], maxX = _a[1];
var _b = arrayMinMax(rangesY), minY = _b[0], maxY = _b[1];
var _c = arrayMinMax(rangesZ), minZ = _c[0], maxZ = _c[1];
var x = minX + (maxX - minX) / 2;
var y = minY + (maxY - minY) / 2;
var z = minZ + (maxZ - minZ) / 2;
return Vec3.create(x, y, z);
}
export function getAsymIdCount(model) {
var auth = new Set();
var label = new Set();
model.properties.structAsymMap.forEach(function (_a, label_id) {
var auth_id = _a.auth_id;
auth.add(auth_id);
label.add(label_id);
});
return { auth: auth.size, label: label.size };
}