UNPKG

@jbrowse/plugin-wiggle

Version:

JBrowse 2 wiggle adapters, tracks, etc.

71 lines (70 loc) 2.81 kB
"use strict"; 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}'`); }