molstar
Version:
A comprehensive macromolecular library.
67 lines • 3.79 kB
JavaScript
/**
* Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Dsn6Format = exports.volumeFromDsn6 = void 0;
var tslib_1 = require("tslib");
var mol_task_1 = require("../../mol-task");
var geometry_1 = require("../../mol-math/geometry");
var linear_algebra_1 = require("../../mol-math/linear-algebra");
var misc_1 = require("../../mol-math/misc");
var array_1 = require("../../mol-util/array");
var custom_property_1 = require("../../mol-model/custom-property");
function volumeFromDsn6(source, params) {
var _this = this;
return mol_task_1.Task.create('Create Volume', function (ctx) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
var header, values, size, angles, cell, grid, extent, gridOrigin, origin_frac, dimensions_frac, space, data;
return (0, tslib_1.__generator)(this, function (_a) {
header = source.header, values = source.values;
size = linear_algebra_1.Vec3.create(header.xlen, header.ylen, header.zlen);
if (params && params.voxelSize)
linear_algebra_1.Vec3.mul(size, size, params.voxelSize);
angles = linear_algebra_1.Vec3.create((0, misc_1.degToRad)(header.alpha), (0, misc_1.degToRad)(header.beta), (0, misc_1.degToRad)(header.gamma));
cell = geometry_1.SpacegroupCell.create('P 1', size, angles);
grid = [header.xRate, header.yRate, header.zRate];
extent = [header.xExtent, header.yExtent, header.zExtent];
gridOrigin = [header.xStart, header.yStart, header.zStart];
origin_frac = linear_algebra_1.Vec3.create(gridOrigin[0] / grid[0], gridOrigin[1] / grid[1], gridOrigin[2] / grid[2]);
dimensions_frac = linear_algebra_1.Vec3.create(extent[0] / grid[0], extent[1] / grid[1], extent[2] / grid[2]);
space = linear_algebra_1.Tensor.Space(extent, [0, 1, 2], Float32Array);
data = linear_algebra_1.Tensor.create(space, linear_algebra_1.Tensor.Data1(values));
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: 'spacegroup', cell: cell, fractionalBox: geometry_1.Box3D.create(origin_frac, linear_algebra_1.Vec3.add(linear_algebra_1.Vec3.zero(), origin_frac, dimensions_frac)) },
cells: data,
stats: {
min: (0, array_1.arrayMin)(values),
max: (0, array_1.arrayMax)(values),
mean: (0, array_1.arrayMean)(values),
sigma: header.sigma !== undefined ? header.sigma : (0, array_1.arrayRms)(values)
},
},
sourceData: Dsn6Format.create(source),
customProperties: new custom_property_1.CustomProperties(),
_propertyData: Object.create(null),
}];
});
}); });
}
exports.volumeFromDsn6 = volumeFromDsn6;
var Dsn6Format;
(function (Dsn6Format) {
function is(x) {
return (x === null || x === void 0 ? void 0 : x.kind) === 'dsn6';
}
Dsn6Format.is = is;
function create(dsn6) {
return { kind: 'dsn6', name: dsn6.name, data: dsn6 };
}
Dsn6Format.create = create;
})(Dsn6Format || (Dsn6Format = {}));
exports.Dsn6Format = Dsn6Format;
//# sourceMappingURL=dsn6.js.map
;