@jbrowse/plugin-wiggle 2.4.2 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BigWigAdapter/BigWigAdapter.d.ts +2 -2
- package/dist/BigWigAdapter/BigWigAdapter.js +4 -3
- package/dist/BigWigAdapter/BigWigAdapter.js.map +1 -1
- package/dist/BigWigAdapter/configSchema.d.ts +20 -1
- package/dist/CreateMultiWiggleExtension/ConfirmDialog.d.ts +2 -2
- package/dist/DensityRenderer/configSchema.d.ts +33 -1
- package/dist/LinePlotRenderer/configSchema.d.ts +44 -1
- package/dist/LinearWiggleDisplay/components/SetColorDialog.d.ts +2 -2
- package/dist/LinearWiggleDisplay/components/Tooltip.d.ts +1 -1
- package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +2 -2
- package/dist/LinearWiggleDisplay/index.js +27 -4
- package/dist/LinearWiggleDisplay/index.js.map +1 -1
- package/dist/LinearWiggleDisplay/models/configSchema.d.ts +81 -1
- package/dist/LinearWiggleDisplay/models/configSchema.js +6 -67
- package/dist/LinearWiggleDisplay/models/configSchema.js.map +1 -1
- package/dist/LinearWiggleDisplay/models/model.d.ts +172 -320
- package/dist/LinearWiggleDisplay/models/model.js +18 -450
- package/dist/LinearWiggleDisplay/models/model.js.map +1 -1
- package/dist/LinearWiggleDisplay/models/renderSvg.d.ts +4 -0
- package/dist/LinearWiggleDisplay/models/renderSvg.js +21 -0
- package/dist/LinearWiggleDisplay/models/renderSvg.js.map +1 -0
- package/dist/MultiDensityRenderer/MultiDensityRenderer.js +1 -1
- package/dist/MultiDensityRenderer/MultiDensityRenderer.js.map +1 -1
- package/dist/MultiDensityRenderer/configSchema.d.ts +33 -1
- package/dist/MultiLineRenderer/MultiLineRenderer.js +1 -1
- package/dist/MultiLineRenderer/MultiLineRenderer.js.map +1 -1
- package/dist/MultiLineRenderer/configSchema.d.ts +51 -1
- package/dist/MultiLinearWiggleDisplay/components/DraggableDialog.d.ts +2 -2
- package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.d.ts +2 -2
- package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js +37 -38
- package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/components/Tooltip.d.ts +1 -1
- package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +3 -3
- package/dist/MultiLinearWiggleDisplay/index.js +25 -2
- package/dist/MultiLinearWiggleDisplay/index.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/models/configSchema.d.ts +87 -1
- package/dist/MultiLinearWiggleDisplay/models/configSchema.js +6 -66
- package/dist/MultiLinearWiggleDisplay/models/configSchema.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/models/model.d.ts +288 -153
- package/dist/MultiLinearWiggleDisplay/models/model.js +334 -523
- package/dist/MultiLinearWiggleDisplay/models/model.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/models/renderSvg.d.ts +4 -0
- package/dist/MultiLinearWiggleDisplay/models/renderSvg.js +20 -0
- package/dist/MultiLinearWiggleDisplay/models/renderSvg.js.map +1 -0
- package/dist/MultiQuantitativeTrack/configSchema.d.ts +73 -1
- package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js +1 -1
- package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js.map +1 -1
- package/dist/MultiRowLineRenderer/configSchema.d.ts +51 -1
- package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +1 -1
- package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js.map +1 -1
- package/dist/MultiRowXYPlotRenderer/configSchema.d.ts +68 -1
- package/dist/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +1 -1
- package/dist/MultiWiggleAdapter/MultiWiggleAdapter.js +2 -2
- package/dist/MultiWiggleAdapter/MultiWiggleAdapter.js.map +1 -1
- package/dist/MultiWiggleAdapter/configSchema.d.ts +18 -1
- package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.d.ts +2 -2
- package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.js +1 -1
- package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.js.map +1 -1
- package/dist/MultiWiggleRendering.d.ts +2 -2
- package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js +3 -2
- package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js.map +1 -1
- package/dist/MultiXYPlotRenderer/configSchema.d.ts +65 -1
- package/dist/QuantitativeTrack/configSchema.d.ts +73 -1
- package/dist/Tooltip.d.ts +1 -1
- package/dist/WiggleBaseRenderer.d.ts +1 -1
- package/dist/WiggleRPC/MultiWiggleGetSources.d.ts +21 -0
- package/dist/WiggleRPC/MultiWiggleGetSources.js +51 -0
- package/dist/WiggleRPC/MultiWiggleGetSources.js.map +1 -0
- package/dist/WiggleRPC/WiggleGetGlobalQuantitativeStats.d.ts +14 -0
- package/dist/WiggleRPC/WiggleGetGlobalQuantitativeStats.js +37 -0
- package/dist/WiggleRPC/WiggleGetGlobalQuantitativeStats.js.map +1 -0
- package/dist/WiggleRPC/WiggleGetMultiRegionQuantitativeStats.d.ts +20 -0
- package/dist/WiggleRPC/WiggleGetMultiRegionQuantitativeStats.js +54 -0
- package/dist/WiggleRPC/WiggleGetMultiRegionQuantitativeStats.js.map +1 -0
- package/dist/WiggleRPC/rpcMethods.d.ts +3 -47
- package/dist/WiggleRPC/rpcMethods.js +16 -117
- package/dist/WiggleRPC/rpcMethods.js.map +1 -1
- package/dist/WiggleRendering.d.ts +2 -2
- package/dist/XYPlotRenderer/configSchema.d.ts +65 -1
- package/dist/configSchema.d.ts +51 -1
- package/dist/index.d.ts +329 -180
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/shared/SetMinMaxDialog.d.ts +2 -2
- package/dist/shared/YScaleBar.d.ts +4 -3
- package/dist/shared/YScaleBar.js +1 -1
- package/dist/shared/YScaleBar.js.map +1 -1
- package/dist/shared/configShared.d.ts +85 -0
- package/dist/shared/configShared.js +84 -0
- package/dist/shared/configShared.js.map +1 -0
- package/dist/shared/modelShared.d.ts +576 -0
- package/dist/shared/modelShared.js +480 -0
- package/dist/shared/modelShared.js.map +1 -0
- package/dist/util.d.ts +9 -9
- package/dist/util.js +13 -22
- package/dist/util.js.map +1 -1
- package/esm/BigWigAdapter/BigWigAdapter.d.ts +2 -2
- package/esm/BigWigAdapter/BigWigAdapter.js +6 -4
- package/esm/BigWigAdapter/BigWigAdapter.js.map +1 -1
- package/esm/BigWigAdapter/configSchema.d.ts +20 -1
- package/esm/CreateMultiWiggleExtension/ConfirmDialog.d.ts +2 -2
- package/esm/DensityRenderer/configSchema.d.ts +33 -1
- package/esm/LinePlotRenderer/configSchema.d.ts +44 -1
- package/esm/LinearWiggleDisplay/components/SetColorDialog.d.ts +2 -2
- package/esm/LinearWiggleDisplay/components/Tooltip.d.ts +1 -1
- package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +2 -2
- package/esm/LinearWiggleDisplay/index.js +2 -2
- package/esm/LinearWiggleDisplay/index.js.map +1 -1
- package/esm/LinearWiggleDisplay/models/configSchema.d.ts +81 -1
- package/esm/LinearWiggleDisplay/models/configSchema.js +3 -67
- package/esm/LinearWiggleDisplay/models/configSchema.js.map +1 -1
- package/esm/LinearWiggleDisplay/models/model.d.ts +172 -320
- package/esm/LinearWiggleDisplay/models/model.js +22 -454
- package/esm/LinearWiggleDisplay/models/model.js.map +1 -1
- package/esm/LinearWiggleDisplay/models/renderSvg.d.ts +4 -0
- package/esm/LinearWiggleDisplay/models/renderSvg.js +14 -0
- package/esm/LinearWiggleDisplay/models/renderSvg.js.map +1 -0
- package/esm/MultiDensityRenderer/MultiDensityRenderer.js +1 -1
- package/esm/MultiDensityRenderer/MultiDensityRenderer.js.map +1 -1
- package/esm/MultiDensityRenderer/configSchema.d.ts +33 -1
- package/esm/MultiLineRenderer/MultiLineRenderer.js +1 -1
- package/esm/MultiLineRenderer/MultiLineRenderer.js.map +1 -1
- package/esm/MultiLineRenderer/configSchema.d.ts +51 -1
- package/esm/MultiLinearWiggleDisplay/components/DraggableDialog.d.ts +2 -2
- package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.d.ts +2 -2
- package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.js +37 -38
- package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/components/Tooltip.d.ts +1 -1
- package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +3 -3
- package/esm/MultiLinearWiggleDisplay/index.js +2 -2
- package/esm/MultiLinearWiggleDisplay/index.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/models/configSchema.d.ts +87 -1
- package/esm/MultiLinearWiggleDisplay/models/configSchema.js +3 -66
- package/esm/MultiLinearWiggleDisplay/models/configSchema.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/models/model.d.ts +288 -153
- package/esm/MultiLinearWiggleDisplay/models/model.js +336 -527
- package/esm/MultiLinearWiggleDisplay/models/model.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/models/renderSvg.d.ts +4 -0
- package/esm/MultiLinearWiggleDisplay/models/renderSvg.js +13 -0
- package/esm/MultiLinearWiggleDisplay/models/renderSvg.js.map +1 -0
- package/esm/MultiQuantitativeTrack/configSchema.d.ts +73 -1
- package/esm/MultiRowLineRenderer/MultiRowLineRenderer.js +1 -1
- package/esm/MultiRowLineRenderer/MultiRowLineRenderer.js.map +1 -1
- package/esm/MultiRowLineRenderer/configSchema.d.ts +51 -1
- package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +1 -1
- package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js.map +1 -1
- package/esm/MultiRowXYPlotRenderer/configSchema.d.ts +68 -1
- package/esm/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +1 -1
- package/esm/MultiWiggleAdapter/MultiWiggleAdapter.js +3 -2
- package/esm/MultiWiggleAdapter/MultiWiggleAdapter.js.map +1 -1
- package/esm/MultiWiggleAdapter/configSchema.d.ts +18 -1
- package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.d.ts +2 -2
- package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.js +1 -1
- package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.js.map +1 -1
- package/esm/MultiWiggleRendering.d.ts +2 -2
- package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.js +2 -1
- package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.js.map +1 -1
- package/esm/MultiXYPlotRenderer/configSchema.d.ts +65 -1
- package/esm/QuantitativeTrack/configSchema.d.ts +73 -1
- package/esm/Tooltip.d.ts +1 -1
- package/esm/WiggleBaseRenderer.d.ts +1 -1
- package/esm/WiggleRPC/MultiWiggleGetSources.d.ts +21 -0
- package/esm/WiggleRPC/MultiWiggleGetSources.js +44 -0
- package/esm/WiggleRPC/MultiWiggleGetSources.js.map +1 -0
- package/esm/WiggleRPC/WiggleGetGlobalQuantitativeStats.d.ts +14 -0
- package/esm/WiggleRPC/WiggleGetGlobalQuantitativeStats.js +30 -0
- package/esm/WiggleRPC/WiggleGetGlobalQuantitativeStats.js.map +1 -0
- package/esm/WiggleRPC/WiggleGetMultiRegionQuantitativeStats.d.ts +20 -0
- package/esm/WiggleRPC/WiggleGetMultiRegionQuantitativeStats.js +47 -0
- package/esm/WiggleRPC/WiggleGetMultiRegionQuantitativeStats.js.map +1 -0
- package/esm/WiggleRPC/rpcMethods.d.ts +3 -47
- package/esm/WiggleRPC/rpcMethods.js +3 -111
- package/esm/WiggleRPC/rpcMethods.js.map +1 -1
- package/esm/WiggleRendering.d.ts +2 -2
- package/esm/XYPlotRenderer/configSchema.d.ts +65 -1
- package/esm/configSchema.d.ts +51 -1
- package/esm/index.d.ts +329 -180
- package/esm/index.js +3 -3
- package/esm/index.js.map +1 -1
- package/esm/shared/SetMinMaxDialog.d.ts +2 -2
- package/esm/shared/YScaleBar.d.ts +4 -3
- package/esm/shared/YScaleBar.js +1 -1
- package/esm/shared/YScaleBar.js.map +1 -1
- package/esm/shared/configShared.d.ts +85 -0
- package/esm/shared/configShared.js +81 -0
- package/esm/shared/configShared.js.map +1 -0
- package/esm/shared/modelShared.d.ts +576 -0
- package/esm/shared/modelShared.js +454 -0
- package/esm/shared/modelShared.js.map +1 -0
- package/esm/util.d.ts +9 -9
- package/esm/util.js +10 -18
- package/esm/util.js.map +1 -1
- package/package.json +4 -4
- package/src/BigWigAdapter/BigWigAdapter.test.ts +8 -3
- package/src/BigWigAdapter/BigWigAdapter.ts +8 -7
- package/src/LinearWiggleDisplay/index.ts +2 -2
- package/src/LinearWiggleDisplay/models/configSchema.ts +4 -73
- package/src/LinearWiggleDisplay/models/model.tsx +25 -524
- package/src/LinearWiggleDisplay/models/renderSvg.tsx +29 -0
- package/src/MultiDensityRenderer/MultiDensityRenderer.ts +1 -2
- package/src/MultiLineRenderer/MultiLineRenderer.ts +1 -2
- package/src/MultiLinearWiggleDisplay/components/SetColorDialog.tsx +54 -51
- package/src/MultiLinearWiggleDisplay/index.ts +2 -2
- package/src/MultiLinearWiggleDisplay/models/configSchema.ts +4 -72
- package/src/MultiLinearWiggleDisplay/models/model.tsx +134 -389
- package/src/MultiLinearWiggleDisplay/models/renderSvg.tsx +26 -0
- package/src/MultiRowLineRenderer/MultiRowLineRenderer.ts +1 -2
- package/src/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.ts +1 -2
- package/src/MultiWiggleAdapter/MultiWiggleAdapter.ts +1 -1
- package/src/MultiWiggleAddTrackWidget/AddTrackWorkflow.tsx +1 -1
- package/src/MultiXYPlotRenderer/MultiXYPlotRenderer.ts +2 -2
- package/src/WiggleRPC/MultiWiggleGetSources.ts +68 -0
- package/src/WiggleRPC/WiggleGetGlobalQuantitativeStats.ts +44 -0
- package/src/WiggleRPC/WiggleGetMultiRegionQuantitativeStats.ts +73 -0
- package/src/WiggleRPC/rpcMethods.ts +3 -170
- package/src/index.ts +4 -4
- package/src/shared/YScaleBar.tsx +4 -2
- package/src/shared/configShared.ts +90 -0
- package/src/shared/modelShared.ts +510 -0
- package/src/util.ts +24 -26
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { getContainingView } from '@jbrowse/core/util'
|
|
3
|
+
import { when } from 'mobx'
|
|
4
|
+
import {
|
|
5
|
+
ExportSvgDisplayOptions,
|
|
6
|
+
LinearGenomeViewModel,
|
|
7
|
+
} from '@jbrowse/plugin-linear-genome-view'
|
|
8
|
+
import { WiggleDisplayModel } from './model'
|
|
9
|
+
import { StatBars } from '../components/WiggleDisplayComponent'
|
|
10
|
+
|
|
11
|
+
export async function renderSvg(
|
|
12
|
+
self: WiggleDisplayModel,
|
|
13
|
+
opts: ExportSvgDisplayOptions,
|
|
14
|
+
superRenderSvg: (opts: ExportSvgDisplayOptions) => Promise<React.ReactNode>,
|
|
15
|
+
) {
|
|
16
|
+
await when(() => !!self.stats && !!self.regionCannotBeRenderedText)
|
|
17
|
+
const { offsetPx } = getContainingView(self) as LinearGenomeViewModel
|
|
18
|
+
return (
|
|
19
|
+
<>
|
|
20
|
+
<g id="snpcov">{await superRenderSvg(opts)}</g>
|
|
21
|
+
<g transform={`translate(${Math.max(-offsetPx, 0)})`}>
|
|
22
|
+
<StatBars model={self} orientation="left" exportSVG />
|
|
23
|
+
</g>
|
|
24
|
+
</>
|
|
25
|
+
)
|
|
26
|
+
}
|
|
@@ -106,7 +106,7 @@ export default class MultiWiggleAdapter extends BaseFeatureDataAdapter {
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
// always render bigwig instead of calculating a feature density for it
|
|
109
|
-
async
|
|
109
|
+
async getMultiRegionFeatureDensityStats(_regions: Region[]) {
|
|
110
110
|
return { featureDensity: 0 }
|
|
111
111
|
}
|
|
112
112
|
|
|
@@ -77,7 +77,7 @@ export default function MultiWiggleWidget({ model }: { model: AddTrackModel }) {
|
|
|
77
77
|
const session = getSession(model)
|
|
78
78
|
|
|
79
79
|
const trackId = [
|
|
80
|
-
`${trackName.toLowerCase().
|
|
80
|
+
`${trackName.toLowerCase().replaceAll(' ', '_')}-${Date.now()}`,
|
|
81
81
|
`${session.adminMode ? '' : '-sessionTrack'}`,
|
|
82
82
|
].join('')
|
|
83
83
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Feature } from '@jbrowse/core/util'
|
|
1
|
+
import { groupBy, Feature } from '@jbrowse/core/util'
|
|
2
2
|
import { drawXY } from '../drawxy'
|
|
3
|
-
import {
|
|
3
|
+
import { YSCALEBAR_LABEL_OFFSET } from '../util'
|
|
4
4
|
|
|
5
5
|
import WiggleBaseRenderer, {
|
|
6
6
|
MultiRenderArgsDeserialized as MultiArgs,
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType'
|
|
2
|
+
import SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'
|
|
3
|
+
import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'
|
|
4
|
+
import { RenderArgs } from '@jbrowse/core/rpc/coreRpcMethods'
|
|
5
|
+
import { renameRegionsIfNeeded, Region } from '@jbrowse/core/util'
|
|
6
|
+
import { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'
|
|
7
|
+
import { AnyConfigurationModel } from '@jbrowse/core/configuration'
|
|
8
|
+
|
|
9
|
+
export class MultiWiggleGetSources extends RpcMethodType {
|
|
10
|
+
name = 'MultiWiggleGetSources'
|
|
11
|
+
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
|
+
async deserializeArguments(args: any, rpcDriverClassName: string) {
|
|
14
|
+
const l = await super.deserializeArguments(args, rpcDriverClassName)
|
|
15
|
+
return {
|
|
16
|
+
...l,
|
|
17
|
+
filters: args.filters
|
|
18
|
+
? new SerializableFilterChain({
|
|
19
|
+
filters: args.filters,
|
|
20
|
+
})
|
|
21
|
+
: undefined,
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async serializeArguments(
|
|
26
|
+
args: RenderArgs & {
|
|
27
|
+
signal?: AbortSignal
|
|
28
|
+
statusCallback?: (arg: string) => void
|
|
29
|
+
},
|
|
30
|
+
rpcDriverClassName: string,
|
|
31
|
+
) {
|
|
32
|
+
const pm = this.pluginManager
|
|
33
|
+
const assemblyManager = pm.rootModel?.session?.assemblyManager
|
|
34
|
+
if (!assemblyManager) {
|
|
35
|
+
return args
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const renamedArgs = await renameRegionsIfNeeded(assemblyManager, {
|
|
39
|
+
...args,
|
|
40
|
+
filters: args.filters?.toJSON().filters,
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
return super.serializeArguments(renamedArgs, rpcDriverClassName)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async execute(
|
|
47
|
+
args: {
|
|
48
|
+
adapterConfig: AnyConfigurationModel
|
|
49
|
+
signal?: RemoteAbortSignal
|
|
50
|
+
sessionId: string
|
|
51
|
+
headers?: Record<string, string>
|
|
52
|
+
regions: Region[]
|
|
53
|
+
bpPerPx: number
|
|
54
|
+
},
|
|
55
|
+
rpcDriverClassName: string,
|
|
56
|
+
) {
|
|
57
|
+
const pm = this.pluginManager
|
|
58
|
+
const deserializedArgs = await this.deserializeArguments(
|
|
59
|
+
args,
|
|
60
|
+
rpcDriverClassName,
|
|
61
|
+
)
|
|
62
|
+
const { regions, adapterConfig, sessionId } = deserializedArgs
|
|
63
|
+
const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)
|
|
64
|
+
|
|
65
|
+
// @ts-expect-error
|
|
66
|
+
return dataAdapter.getSources(regions, deserializedArgs)
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType'
|
|
2
|
+
import SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'
|
|
3
|
+
import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'
|
|
4
|
+
import { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'
|
|
5
|
+
import { QuantitativeStats } from '@jbrowse/core/util/stats'
|
|
6
|
+
import { AnyConfigurationModel } from '@jbrowse/core/configuration'
|
|
7
|
+
|
|
8
|
+
export class WiggleGetGlobalQuantitativeStats extends RpcMethodType {
|
|
9
|
+
name = 'WiggleGetGlobalQuantitativeStats'
|
|
10
|
+
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
+
async deserializeArguments(args: any, rpcDriverClassName: string) {
|
|
13
|
+
const l = await super.deserializeArguments(args, rpcDriverClassName)
|
|
14
|
+
return {
|
|
15
|
+
...l,
|
|
16
|
+
filters: args.filters
|
|
17
|
+
? new SerializableFilterChain({
|
|
18
|
+
filters: args.filters,
|
|
19
|
+
})
|
|
20
|
+
: undefined,
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async execute(
|
|
25
|
+
args: {
|
|
26
|
+
adapterConfig: AnyConfigurationModel
|
|
27
|
+
signal?: RemoteAbortSignal
|
|
28
|
+
headers?: Record<string, string>
|
|
29
|
+
sessionId: string
|
|
30
|
+
},
|
|
31
|
+
rpcDriverClassName: string,
|
|
32
|
+
): Promise<QuantitativeStats> {
|
|
33
|
+
const pm = this.pluginManager
|
|
34
|
+
const deserializedArgs = await this.deserializeArguments(
|
|
35
|
+
args,
|
|
36
|
+
rpcDriverClassName,
|
|
37
|
+
)
|
|
38
|
+
const { adapterConfig, sessionId } = deserializedArgs
|
|
39
|
+
const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)
|
|
40
|
+
|
|
41
|
+
// @ts-expect-error
|
|
42
|
+
return dataAdapter.getGlobalStats(deserializedArgs)
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType'
|
|
2
|
+
import SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'
|
|
3
|
+
import { RenderArgs } from '@jbrowse/core/rpc/coreRpcMethods'
|
|
4
|
+
import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'
|
|
5
|
+
import { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'
|
|
6
|
+
import { Region, renameRegionsIfNeeded } from '@jbrowse/core/util'
|
|
7
|
+
import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'
|
|
8
|
+
|
|
9
|
+
export class WiggleGetMultiRegionQuantitativeStats extends RpcMethodType {
|
|
10
|
+
name = 'WiggleGetMultiRegionQuantitativeStats'
|
|
11
|
+
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
|
+
async deserializeArguments(args: any, rpcDriverClassName: string) {
|
|
14
|
+
const l = await super.deserializeArguments(args, rpcDriverClassName)
|
|
15
|
+
return {
|
|
16
|
+
...l,
|
|
17
|
+
filters: args.filters
|
|
18
|
+
? new SerializableFilterChain({
|
|
19
|
+
filters: args.filters,
|
|
20
|
+
})
|
|
21
|
+
: undefined,
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async serializeArguments(
|
|
26
|
+
args: RenderArgs & {
|
|
27
|
+
signal?: AbortSignal
|
|
28
|
+
statusCallback?: (arg: string) => void
|
|
29
|
+
},
|
|
30
|
+
rpcDriverClassName: string,
|
|
31
|
+
) {
|
|
32
|
+
const pm = this.pluginManager
|
|
33
|
+
const assemblyManager = pm.rootModel?.session?.assemblyManager
|
|
34
|
+
if (!assemblyManager) {
|
|
35
|
+
return args
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const renamedArgs = await renameRegionsIfNeeded(assemblyManager, {
|
|
39
|
+
...args,
|
|
40
|
+
filters: args.filters?.toJSON().filters,
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
return super.serializeArguments(renamedArgs, rpcDriverClassName)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async execute(
|
|
47
|
+
args: {
|
|
48
|
+
adapterConfig: {}
|
|
49
|
+
signal?: RemoteAbortSignal
|
|
50
|
+
sessionId: string
|
|
51
|
+
headers?: Record<string, string>
|
|
52
|
+
regions: Region[]
|
|
53
|
+
bpPerPx: number
|
|
54
|
+
},
|
|
55
|
+
rpcDriverClassName: string,
|
|
56
|
+
) {
|
|
57
|
+
const pm = this.pluginManager
|
|
58
|
+
const deserializedArgs = await this.deserializeArguments(
|
|
59
|
+
args,
|
|
60
|
+
rpcDriverClassName,
|
|
61
|
+
)
|
|
62
|
+
const { regions, adapterConfig, sessionId } = deserializedArgs
|
|
63
|
+
const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)
|
|
64
|
+
|
|
65
|
+
if (dataAdapter instanceof BaseFeatureDataAdapter) {
|
|
66
|
+
return dataAdapter.getMultiRegionQuantitativeStats(
|
|
67
|
+
regions,
|
|
68
|
+
deserializedArgs,
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
throw new Error('Data adapter not found')
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -1,170 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { RenderArgs } from '@jbrowse/core/rpc/coreRpcMethods'
|
|
5
|
-
import { renameRegionsIfNeeded, Region } from '@jbrowse/core/util'
|
|
6
|
-
import { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'
|
|
7
|
-
import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'
|
|
8
|
-
import { FeatureStats } from '@jbrowse/core/util/stats'
|
|
9
|
-
|
|
10
|
-
export class WiggleGetGlobalStats extends RpcMethodType {
|
|
11
|
-
name = 'WiggleGetGlobalStats'
|
|
12
|
-
|
|
13
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
|
-
async deserializeArguments(args: any, rpcDriverClassName: string) {
|
|
15
|
-
const l = await super.deserializeArguments(args, rpcDriverClassName)
|
|
16
|
-
return {
|
|
17
|
-
...l,
|
|
18
|
-
filters: args.filters
|
|
19
|
-
? new SerializableFilterChain({
|
|
20
|
-
filters: args.filters,
|
|
21
|
-
})
|
|
22
|
-
: undefined,
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
async execute(
|
|
27
|
-
args: {
|
|
28
|
-
adapterConfig: {}
|
|
29
|
-
signal?: RemoteAbortSignal
|
|
30
|
-
headers?: Record<string, string>
|
|
31
|
-
sessionId: string
|
|
32
|
-
},
|
|
33
|
-
rpcDriverClassName: string,
|
|
34
|
-
): Promise<FeatureStats> {
|
|
35
|
-
const pm = this.pluginManager
|
|
36
|
-
const deserializedArgs = await this.deserializeArguments(
|
|
37
|
-
args,
|
|
38
|
-
rpcDriverClassName,
|
|
39
|
-
)
|
|
40
|
-
const { adapterConfig, sessionId } = deserializedArgs
|
|
41
|
-
const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)
|
|
42
|
-
|
|
43
|
-
// @ts-expect-error
|
|
44
|
-
return dataAdapter.getGlobalStats(deserializedArgs)
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export class WiggleGetMultiRegionStats extends RpcMethodType {
|
|
49
|
-
name = 'WiggleGetMultiRegionStats'
|
|
50
|
-
|
|
51
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
|
-
async deserializeArguments(args: any, rpcDriverClassName: string) {
|
|
53
|
-
const l = await super.deserializeArguments(args, rpcDriverClassName)
|
|
54
|
-
return {
|
|
55
|
-
...l,
|
|
56
|
-
filters: args.filters
|
|
57
|
-
? new SerializableFilterChain({
|
|
58
|
-
filters: args.filters,
|
|
59
|
-
})
|
|
60
|
-
: undefined,
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
async serializeArguments(
|
|
65
|
-
args: RenderArgs & {
|
|
66
|
-
signal?: AbortSignal
|
|
67
|
-
statusCallback?: (arg: string) => void
|
|
68
|
-
},
|
|
69
|
-
rpcDriverClassName: string,
|
|
70
|
-
) {
|
|
71
|
-
const pm = this.pluginManager
|
|
72
|
-
const assemblyManager = pm.rootModel?.session?.assemblyManager
|
|
73
|
-
if (!assemblyManager) {
|
|
74
|
-
return args
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
const renamedArgs = await renameRegionsIfNeeded(assemblyManager, {
|
|
78
|
-
...args,
|
|
79
|
-
filters: args.filters?.toJSON().filters,
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
return super.serializeArguments(renamedArgs, rpcDriverClassName)
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
async execute(
|
|
86
|
-
args: {
|
|
87
|
-
adapterConfig: {}
|
|
88
|
-
signal?: RemoteAbortSignal
|
|
89
|
-
sessionId: string
|
|
90
|
-
headers?: Record<string, string>
|
|
91
|
-
regions: Region[]
|
|
92
|
-
bpPerPx: number
|
|
93
|
-
},
|
|
94
|
-
rpcDriverClassName: string,
|
|
95
|
-
) {
|
|
96
|
-
const pm = this.pluginManager
|
|
97
|
-
const deserializedArgs = await this.deserializeArguments(
|
|
98
|
-
args,
|
|
99
|
-
rpcDriverClassName,
|
|
100
|
-
)
|
|
101
|
-
const { regions, adapterConfig, sessionId } = deserializedArgs
|
|
102
|
-
const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)
|
|
103
|
-
|
|
104
|
-
if (dataAdapter instanceof BaseFeatureDataAdapter) {
|
|
105
|
-
return dataAdapter.getMultiRegionStats(regions, deserializedArgs)
|
|
106
|
-
}
|
|
107
|
-
throw new Error('Data adapter not found')
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export class MultiWiggleGetSources extends RpcMethodType {
|
|
112
|
-
name = 'MultiWiggleGetSources'
|
|
113
|
-
|
|
114
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
115
|
-
async deserializeArguments(args: any, rpcDriverClassName: string) {
|
|
116
|
-
const l = await super.deserializeArguments(args, rpcDriverClassName)
|
|
117
|
-
return {
|
|
118
|
-
...l,
|
|
119
|
-
filters: args.filters
|
|
120
|
-
? new SerializableFilterChain({
|
|
121
|
-
filters: args.filters,
|
|
122
|
-
})
|
|
123
|
-
: undefined,
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
async serializeArguments(
|
|
128
|
-
args: RenderArgs & {
|
|
129
|
-
signal?: AbortSignal
|
|
130
|
-
statusCallback?: (arg: string) => void
|
|
131
|
-
},
|
|
132
|
-
rpcDriverClassName: string,
|
|
133
|
-
) {
|
|
134
|
-
const pm = this.pluginManager
|
|
135
|
-
const assemblyManager = pm.rootModel?.session?.assemblyManager
|
|
136
|
-
if (!assemblyManager) {
|
|
137
|
-
return args
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
const renamedArgs = await renameRegionsIfNeeded(assemblyManager, {
|
|
141
|
-
...args,
|
|
142
|
-
filters: args.filters?.toJSON().filters,
|
|
143
|
-
})
|
|
144
|
-
|
|
145
|
-
return super.serializeArguments(renamedArgs, rpcDriverClassName)
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
async execute(
|
|
149
|
-
args: {
|
|
150
|
-
adapterConfig: {}
|
|
151
|
-
signal?: RemoteAbortSignal
|
|
152
|
-
sessionId: string
|
|
153
|
-
headers?: Record<string, string>
|
|
154
|
-
regions: Region[]
|
|
155
|
-
bpPerPx: number
|
|
156
|
-
},
|
|
157
|
-
rpcDriverClassName: string,
|
|
158
|
-
) {
|
|
159
|
-
const pm = this.pluginManager
|
|
160
|
-
const deserializedArgs = await this.deserializeArguments(
|
|
161
|
-
args,
|
|
162
|
-
rpcDriverClassName,
|
|
163
|
-
)
|
|
164
|
-
const { regions, adapterConfig, sessionId } = deserializedArgs
|
|
165
|
-
const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)
|
|
166
|
-
|
|
167
|
-
// @ts-expect-error
|
|
168
|
-
return dataAdapter.getSources(regions, deserializedArgs)
|
|
169
|
-
}
|
|
170
|
-
}
|
|
1
|
+
export * from './MultiWiggleGetSources'
|
|
2
|
+
export * from './WiggleGetMultiRegionQuantitativeStats'
|
|
3
|
+
export * from './WiggleGetGlobalQuantitativeStats'
|
package/src/index.ts
CHANGED
|
@@ -30,8 +30,8 @@ import MultiWiggleAddTrackWidgetF from './MultiWiggleAddTrackWidget'
|
|
|
30
30
|
import * as utils from './util'
|
|
31
31
|
|
|
32
32
|
import {
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
WiggleGetGlobalQuantitativeStats,
|
|
34
|
+
WiggleGetMultiRegionQuantitativeStats,
|
|
35
35
|
MultiWiggleGetSources,
|
|
36
36
|
} from './WiggleRPC/rpcMethods'
|
|
37
37
|
|
|
@@ -101,8 +101,8 @@ export default class WigglePlugin extends Plugin {
|
|
|
101
101
|
},
|
|
102
102
|
)
|
|
103
103
|
|
|
104
|
-
pm.addRpcMethod(() => new
|
|
105
|
-
pm.addRpcMethod(() => new
|
|
104
|
+
pm.addRpcMethod(() => new WiggleGetGlobalQuantitativeStats(pm))
|
|
105
|
+
pm.addRpcMethod(() => new WiggleGetMultiRegionQuantitativeStats(pm))
|
|
106
106
|
pm.addRpcMethod(() => new MultiWiggleGetSources(pm))
|
|
107
107
|
}
|
|
108
108
|
|
package/src/shared/YScaleBar.tsx
CHANGED
|
@@ -3,11 +3,13 @@ import { useTheme } from '@mui/material'
|
|
|
3
3
|
import { observer } from 'mobx-react'
|
|
4
4
|
import { axisPropsFromTickScale, Axis, LEFT, RIGHT } from 'react-d3-axis-mod'
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
type Ticks = ReturnType<typeof axisPropsFromTickScale>
|
|
7
|
+
|
|
8
|
+
export default observer(function YScaleBar({
|
|
7
9
|
model,
|
|
8
10
|
orientation,
|
|
9
11
|
}: {
|
|
10
|
-
model: { ticks?:
|
|
12
|
+
model: { ticks?: Ticks }
|
|
11
13
|
orientation?: string
|
|
12
14
|
}) {
|
|
13
15
|
const { ticks } = model
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { ConfigurationSchema } from '@jbrowse/core/configuration'
|
|
2
|
+
import { baseLinearDisplayConfigSchema } from '@jbrowse/plugin-linear-genome-view'
|
|
3
|
+
import { types } from 'mobx-state-tree'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* #config SharedWiggleDisplay
|
|
7
|
+
*/
|
|
8
|
+
export default function sharedWiggleConfigFactory() {
|
|
9
|
+
return ConfigurationSchema(
|
|
10
|
+
'MultiLinearWiggleDisplay',
|
|
11
|
+
{
|
|
12
|
+
/**
|
|
13
|
+
* #slot
|
|
14
|
+
*/
|
|
15
|
+
autoscale: {
|
|
16
|
+
type: 'stringEnum',
|
|
17
|
+
defaultValue: 'local',
|
|
18
|
+
model: types.enumeration('Autoscale type', [
|
|
19
|
+
'global',
|
|
20
|
+
'local',
|
|
21
|
+
'globalsd',
|
|
22
|
+
'localsd',
|
|
23
|
+
'zscore',
|
|
24
|
+
]),
|
|
25
|
+
description:
|
|
26
|
+
'global/local using their min/max values or w/ standard deviations (globalsd/localsd)',
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* #slot
|
|
31
|
+
*/
|
|
32
|
+
minimalTicks: {
|
|
33
|
+
type: 'boolean',
|
|
34
|
+
defaultValue: false,
|
|
35
|
+
description: 'use the minimal amount of ticks',
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* #slot
|
|
40
|
+
*/
|
|
41
|
+
minScore: {
|
|
42
|
+
type: 'number',
|
|
43
|
+
defaultValue: Number.MIN_VALUE,
|
|
44
|
+
description: 'minimum value for the y-scale',
|
|
45
|
+
},
|
|
46
|
+
/**
|
|
47
|
+
* #slot
|
|
48
|
+
*/
|
|
49
|
+
maxScore: {
|
|
50
|
+
type: 'number',
|
|
51
|
+
description: 'maximum value for the y-scale',
|
|
52
|
+
defaultValue: Number.MAX_VALUE,
|
|
53
|
+
},
|
|
54
|
+
/**
|
|
55
|
+
* #slot
|
|
56
|
+
*/
|
|
57
|
+
numStdDev: {
|
|
58
|
+
type: 'number',
|
|
59
|
+
description:
|
|
60
|
+
'number of standard deviations to use for autoscale types globalsd or localsd',
|
|
61
|
+
defaultValue: 3,
|
|
62
|
+
},
|
|
63
|
+
/**
|
|
64
|
+
* #slot
|
|
65
|
+
*/
|
|
66
|
+
scaleType: {
|
|
67
|
+
type: 'stringEnum',
|
|
68
|
+
model: types.enumeration('Scale type', ['linear', 'log']), // todo zscale
|
|
69
|
+
description: 'The type of scale to use',
|
|
70
|
+
defaultValue: 'linear',
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* #slot
|
|
75
|
+
*/
|
|
76
|
+
inverted: {
|
|
77
|
+
type: 'boolean',
|
|
78
|
+
description: 'draw upside down',
|
|
79
|
+
defaultValue: false,
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
/**
|
|
84
|
+
* #baseConfiguration
|
|
85
|
+
*/
|
|
86
|
+
baseConfiguration: baseLinearDisplayConfigSchema,
|
|
87
|
+
explicitlyTyped: true,
|
|
88
|
+
},
|
|
89
|
+
)
|
|
90
|
+
}
|