UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

26 lines (25 loc) 1.31 kB
import { isFeatureAdapter } from "../../data_adapters/BaseAdapter/index.js"; import { getAdapter } from "../../data_adapters/dataAdapterCache.js"; import RpcMethodType from "../../pluggableElementTypes/RpcMethodType.js"; import { renameRegionsIfNeeded } from "../../util/index.js"; export default class CoreGetFeatureDensityStats extends RpcMethodType { name = 'CoreGetFeatureDensityStats'; async serializeArguments(args, rpcDriver) { const { rootModel } = this.pluginManager; const assemblyManager = rootModel.session.assemblyManager; const renamedArgs = await renameRegionsIfNeeded(assemblyManager, { ...args, filters: args.filters?.toJSON().filters, }); return super.serializeArguments(renamedArgs, rpcDriver); } async execute(args, rpcDriver) { const deserializedArgs = await this.deserializeArguments(args, rpcDriver); const { adapterConfig, sessionId, regions } = deserializedArgs; const { dataAdapter } = await getAdapter(this.pluginManager, sessionId, adapterConfig); if (!isFeatureAdapter(dataAdapter)) { throw new Error('Adapter does not support retrieving features'); } return dataAdapter.getMultiRegionFeatureDensityStats(regions, deserializedArgs); } }