@jbrowse/plugin-wiggle
Version:
JBrowse 2 wiggle adapters, tracks, etc.
71 lines (70 loc) • 2.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getQuantitativeStats = getQuantitativeStats;
const configuration_1 = require("@jbrowse/core/configuration");
const util_1 = require("@jbrowse/core/util");
const tracks_1 = require("@jbrowse/core/util/tracks");
const mobx_state_tree_1 = require("mobx-state-tree");
async function getQuantitativeStats(self, opts) {
const { rpcManager } = (0, util_1.getSession)(self);
const numStdDev = (0, configuration_1.getConf)(self, 'numStdDev') || 3;
const { adapterConfig, autoscaleType } = self;
const sessionId = (0, tracks_1.getRpcSessionId)(self);
const { currStatsBpPerPx } = opts;
const params = {
sessionId,
adapterConfig,
statusCallback: (message) => {
if ((0, mobx_state_tree_1.isAlive)(self)) {
self.setMessage(message);
}
},
...opts,
};
if (autoscaleType === 'global' || autoscaleType === 'globalsd') {
const results = (await rpcManager.call(sessionId, 'WiggleGetGlobalQuantitativeStats', params));
const { scoreMin, scoreMean, scoreStdDev } = results;
return autoscaleType === 'globalsd'
? {
...results,
scoreMin: scoreMin >= 0 ? 0 : scoreMean - numStdDev * scoreStdDev,
scoreMax: scoreMean + numStdDev * scoreStdDev,
currStatsBpPerPx,
}
: {
...results,
currStatsBpPerPx,
};
}
if (autoscaleType === 'local' || autoscaleType === 'localsd') {
const { dynamicBlocks, bpPerPx } = (0, util_1.getContainingView)(self);
const results = (await rpcManager.call(sessionId, 'WiggleGetMultiRegionQuantitativeStats', {
...params,
regions: dynamicBlocks.contentBlocks.map(region => {
const { start, end } = region;
return {
...JSON.parse(JSON.stringify(region)),
start: Math.floor(start),
end: Math.ceil(end),
};
}),
bpPerPx,
}));
const { scoreMin, scoreMean, scoreStdDev } = results;
return autoscaleType === 'localsd'
? {
...results,
scoreMin: scoreMin >= 0 ? 0 : scoreMean - numStdDev * scoreStdDev,
scoreMax: scoreMean + numStdDev * scoreStdDev,
currStatsBpPerPx,
}
: {
...results,
currStatsBpPerPx,
};
}
if (autoscaleType === 'zscale') {
return rpcManager.call(sessionId, 'WiggleGetGlobalQuantitativeStats', params);
}
throw new Error(`invalid autoscaleType '${autoscaleType}'`);
}