UNPKG

molstar

Version:

A comprehensive macromolecular library.

55 lines (54 loc) 2.34 kB
/** * Copyright (c) 2020 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> */ import { __awaiter, __generator } from "tslib"; import { Mat4, Tensor } from '../../mol-math/linear-algebra'; import { Task } from '../../mol-task'; import { arrayMax, arrayMean, arrayMin, arrayRms } from '../../mol-util/array'; import { CustomProperties } from '../../mol-model/custom-property'; export function volumeFromDx(source, params) { var _this = this; return Task.create('Create Volume', function () { return __awaiter(_this, void 0, void 0, function () { var header, values, space, data, matrix, basis; return __generator(this, function (_a) { header = source.header, values = source.values; space = Tensor.Space(header.dim, [0, 1, 2], Float64Array); data = Tensor.create(space, Tensor.Data1(values)); matrix = Mat4.fromTranslation(Mat4(), header.min); basis = Mat4.fromScaling(Mat4(), header.h); Mat4.mul(matrix, matrix, basis); return [2 /*return*/, { label: params === null || params === void 0 ? void 0 : params.label, entryId: params === null || params === void 0 ? void 0 : params.entryId, grid: { transform: { kind: 'matrix', matrix: matrix }, cells: data, stats: { min: arrayMin(values), max: arrayMax(values), mean: arrayMean(values), sigma: arrayRms(values) }, }, sourceData: DxFormat.create(source), customProperties: new CustomProperties(), _propertyData: Object.create(null), }]; }); }); }); } // export { DxFormat }; var DxFormat; (function (DxFormat) { function is(x) { return (x === null || x === void 0 ? void 0 : x.kind) === 'dx'; } DxFormat.is = is; function create(dx) { return { kind: 'dx', name: dx.name, data: dx }; } DxFormat.create = create; })(DxFormat || (DxFormat = {}));