molstar
Version:
A comprehensive macromolecular library.
55 lines (54 loc) • 2.34 kB
JavaScript
/**
* 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 = {}));