molstar
Version:
A comprehensive macromolecular library.
38 lines • 1.73 kB
JavaScript
var FORMAT_VERSION = '1.0.0';
export function createHeader(ctx) {
var header = ctx.channels[0].data.header;
var grid = header.grid;
function normalize(data) {
return [data[0] / grid[0], data[1] / grid[1], data[2] / grid[2]];
}
return {
formatVersion: FORMAT_VERSION,
valueType: header.valueType,
blockSize: ctx.blockSize,
axisOrder: header.axisOrder,
origin: normalize(header.origin),
dimensions: normalize(header.extent),
spacegroup: { number: header.spacegroupNumber, size: header.cellSize, angles: header.cellAngles, isPeriodic: ctx.isPeriodic },
channels: ctx.channels.map(function (c) { return c.data.header.name; }),
sampling: ctx.sampling.map(function (s) {
var N = s.sampleCount[0] * s.sampleCount[1] * s.sampleCount[2];
var valuesInfo = [];
for (var _i = 0, _a = s.valuesInfo; _i < _a.length; _i++) {
var _b = _a[_i], sum = _b.sum, sqSum = _b.sqSum, min = _b.min, max = _b.max;
var mean = sum / N;
var sigma = Math.sqrt(Math.max(0, sqSum / N - mean * mean));
valuesInfo.push({ mean: mean, sigma: sigma, min: min, max: max });
}
return {
byteOffset: s.byteOffset,
rate: s.rate,
valuesInfo: valuesInfo,
sampleCount: s.sampleCount,
};
})
};
}
export function samplingBlockCount(sampling, blockSize) {
return sampling.sampleCount.map(function (c) { return Math.ceil(c / blockSize); }).reduce(function (c, v) { return c * v; }, 1);
}
//# sourceMappingURL=data-model.js.map