@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
26 lines (25 loc) • 1.31 kB
JavaScript
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);
}
}