Skip to content

Commit

Permalink
Updates
Browse files Browse the repository at this point in the history
  • Loading branch information
cmdcolin committed Apr 6, 2023
1 parent a6f5f5c commit c2e0c95
Show file tree
Hide file tree
Showing 14 changed files with 19,732 additions and 230 deletions.
2 changes: 1 addition & 1 deletion packages/core/rpc/coreRpcMethods.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ export { default as CoreGetFileInfo } from './methods/CoreGetFileInfo'
export { default as CoreGetFeatures } from './methods/CoreGetFeatures'
export { default as CoreRender } from './methods/CoreRender'
export { default as CoreFreeResources } from './methods/CoreFreeResources'
export { default as CoreGetFeatureDensityStats } from './methods/CoreGetFeatureDensityStats'
export { type RenderArgs } from './methods/util'
export { default as CoreEstimateRegionStats } from './methods/CoreEstimateRegionStats'
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import { RemoteAbortSignal } from '../remoteAbortSignals'
import { isFeatureAdapter } from '../../data_adapters/BaseAdapter'
import { renameRegionsIfNeeded, Region } from '../../util'

export default class CoreEstimateRegionStats extends RpcMethodType {
name = 'CoreEstimateRegionStats'
export default class CoreGetFeatureDensityStats extends RpcMethodType {
name = 'CoreGetFeatureDensityStats'

async serializeArguments(
args: RenderArgs & {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ function stateModelFactory() {
/**
* #action
*/
clearRegionsStats() {
clearFeatureDensityStats() {
self.featureDensityStatsP = undefined
self.featureDensityStats = undefined
},
Expand Down Expand Up @@ -534,7 +534,7 @@ function stateModelFactory() {
return
}

self.clearRegionsStats()
self.clearFeatureDensityStats()
self.setCurrBpPerPx(view.bpPerPx)
const featureDensityStats = await self.getFeatureDensityStats()
if (isAlive(self)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export async function getFeatureDensityStatsPre(
}
const sessionId = getRpcSessionId(self)

return rpcManager.call(sessionId, 'CoreEstimateRegionStats', {
return rpcManager.call(sessionId, 'CoreGetFeatureDensityStats', {
sessionId,
regions,
adapterConfig,
Expand Down
23 changes: 5 additions & 18 deletions plugins/wiggle/src/LinearWiggleDisplay/models/model.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,14 @@ import {
LinearGenomeViewModel,
} from '@jbrowse/plugin-linear-genome-view'
import { when } from 'mobx'
import { isAlive, types, Instance } from 'mobx-state-tree'
import { types, Instance } from 'mobx-state-tree'
import PluginManager from '@jbrowse/core/PluginManager'

import { axisPropsFromTickScale } from 'react-d3-axis-mod'
import {
getNiceDomain,
getScale,
getStats,
statsAutorun,
quantitativeStatsAutorun,
YSCALEBAR_LABEL_OFFSET,
} from '../../util'

Expand Down Expand Up @@ -677,23 +676,11 @@ function stateModelFactory(
*/
async reload() {
self.setError()
const aborter = new AbortController()
self.setLoading(aborter)
try {
const stats = await getStats(self, {
signal: aborter.signal,
...self.renderProps(),
})
if (isAlive(self)) {
self.updateQuantitativeStats(stats)
superReload()
}
} catch (e) {
self.setError(e)
}
superReload()
},

afterAttach() {
statsAutorun(self)
quantitativeStatsAutorun(self)
},
/**
* #action
Expand Down
22 changes: 3 additions & 19 deletions plugins/wiggle/src/MultiLinearWiggleDisplay/models/model.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ import {
import {
getNiceDomain,
getScale,
getStats,
statsAutorun,
quantitativeStatsAutorun,
YSCALEBAR_LABEL_OFFSET,
} from '../../util'

Expand Down Expand Up @@ -662,27 +661,12 @@ const stateModelFactory = (
type ExportSvgOpts = Parameters<typeof superRenderSvg>[0]

return {
// re-runs stats and refresh whole display on reload
async reload() {
self.setError()
const aborter = new AbortController()
let stats
try {
self.setLoading(aborter)
stats = await getStats(self, {
signal: aborter.signal,
...self.renderProps(),
})
if (isAlive(self)) {
self.updateQuantitativeStats(stats)
superReload()
}
} catch (e) {
self.setError(e)
}
superReload()
},
afterAttach() {
statsAutorun(self)
quantitativeStatsAutorun(self)
addDisposer(
self,
autorun(async () => {
Expand Down
68 changes: 68 additions & 0 deletions plugins/wiggle/src/WiggleRPC/MultiWiggleGetSources.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType'
import SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'
import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'
import { RenderArgs } from '@jbrowse/core/rpc/coreRpcMethods'
import { renameRegionsIfNeeded, Region } from '@jbrowse/core/util'
import { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'
import { AnyConfigurationModel } from '@jbrowse/core/configuration'

export class MultiWiggleGetSources extends RpcMethodType {
name = 'MultiWiggleGetSources'

// eslint-disable-next-line @typescript-eslint/no-explicit-any
async deserializeArguments(args: any, rpcDriverClassName: string) {
const l = await super.deserializeArguments(args, rpcDriverClassName)
return {
...l,
filters: args.filters
? new SerializableFilterChain({
filters: args.filters,
})
: undefined,
}
}

async serializeArguments(
args: RenderArgs & {
signal?: AbortSignal
statusCallback?: (arg: string) => void
},
rpcDriverClassName: string,
) {
const pm = this.pluginManager
const assemblyManager = pm.rootModel?.session?.assemblyManager
if (!assemblyManager) {
return args
}

const renamedArgs = await renameRegionsIfNeeded(assemblyManager, {
...args,
filters: args.filters?.toJSON().filters,
})

return super.serializeArguments(renamedArgs, rpcDriverClassName)
}

async execute(
args: {
adapterConfig: AnyConfigurationModel
signal?: RemoteAbortSignal
sessionId: string
headers?: Record<string, string>
regions: Region[]
bpPerPx: number
},
rpcDriverClassName: string,
) {
const pm = this.pluginManager
const deserializedArgs = await this.deserializeArguments(
args,
rpcDriverClassName,
)
const { regions, adapterConfig, sessionId } = deserializedArgs
const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)

// @ts-expect-error
return dataAdapter.getSources(regions, deserializedArgs)
}
}
44 changes: 44 additions & 0 deletions plugins/wiggle/src/WiggleRPC/WiggleGetGlobalQuantitativeStats.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType'
import SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'
import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'
import { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'
import { QuantitativeStats } from '@jbrowse/core/util/stats'
import { AnyConfigurationModel } from '@jbrowse/core/configuration'

export class WiggleGetGlobalQuantitativeStats extends RpcMethodType {
name = 'WiggleGetGlobalQuantitativeStats'

// eslint-disable-next-line @typescript-eslint/no-explicit-any
async deserializeArguments(args: any, rpcDriverClassName: string) {
const l = await super.deserializeArguments(args, rpcDriverClassName)
return {
...l,
filters: args.filters
? new SerializableFilterChain({
filters: args.filters,
})
: undefined,
}
}

async execute(
args: {
adapterConfig: AnyConfigurationModel
signal?: RemoteAbortSignal
headers?: Record<string, string>
sessionId: string
},
rpcDriverClassName: string,
): Promise<QuantitativeStats> {
const pm = this.pluginManager
const deserializedArgs = await this.deserializeArguments(
args,
rpcDriverClassName,
)
const { adapterConfig, sessionId } = deserializedArgs
const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)

// @ts-expect-error
return dataAdapter.getGlobalStats(deserializedArgs)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType'
import SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'
import { RenderArgs } from '@jbrowse/core/rpc/coreRpcMethods'
import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'
import { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'
import { Region, renameRegionsIfNeeded } from '@jbrowse/core/util'
import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'

export class WiggleGetMultiRegionQuantitativeStats extends RpcMethodType {
name = 'WiggleGetMultiRegionQuantitativeStats'

// eslint-disable-next-line @typescript-eslint/no-explicit-any
async deserializeArguments(args: any, rpcDriverClassName: string) {
const l = await super.deserializeArguments(args, rpcDriverClassName)
return {
...l,
filters: args.filters
? new SerializableFilterChain({
filters: args.filters,
})
: undefined,
}
}

async serializeArguments(
args: RenderArgs & {
signal?: AbortSignal
statusCallback?: (arg: string) => void
},
rpcDriverClassName: string,
) {
const pm = this.pluginManager
const assemblyManager = pm.rootModel?.session?.assemblyManager
if (!assemblyManager) {
return args
}

const renamedArgs = await renameRegionsIfNeeded(assemblyManager, {
...args,
filters: args.filters?.toJSON().filters,
})

return super.serializeArguments(renamedArgs, rpcDriverClassName)
}

async execute(
args: {
adapterConfig: {}
signal?: RemoteAbortSignal
sessionId: string
headers?: Record<string, string>
regions: Region[]
bpPerPx: number
},
rpcDriverClassName: string,
) {
const pm = this.pluginManager
const deserializedArgs = await this.deserializeArguments(
args,
rpcDriverClassName,
)
const { regions, adapterConfig, sessionId } = deserializedArgs
const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)

if (dataAdapter instanceof BaseFeatureDataAdapter) {
return dataAdapter.getMultiRegionQuantitativeStats(
regions,
deserializedArgs,
)
}
throw new Error('Data adapter not found')
}
}
Loading

0 comments on commit c2e0c95

Please sign in to comment.