@jbrowse/plugin-wiggle 2.4.1 → 2.5.0
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 +2 -2
- package/dist/BigWigAdapter/BigWigAdapter.js.map +1 -1
- package/dist/BigWigAdapter/configSchema.d.ts +20 -1
- package/dist/CreateMultiWiggleExtension/ConfirmDialog.d.ts +0 -1
- package/dist/DensityRenderer/configSchema.d.ts +33 -1
- package/dist/LinePlotRenderer/configSchema.d.ts +44 -1
- package/dist/LinearWiggleDisplay/components/SetColorDialog.d.ts +0 -1
- package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +0 -1
- package/dist/LinearWiggleDisplay/models/configSchema.d.ts +98 -1
- package/dist/LinearWiggleDisplay/models/model.d.ts +93 -58
- package/dist/LinearWiggleDisplay/models/model.js +8 -25
- package/dist/LinearWiggleDisplay/models/model.js.map +1 -1
- package/dist/MultiDensityRenderer/configSchema.d.ts +33 -1
- package/dist/MultiLineRenderer/configSchema.d.ts +51 -1
- package/dist/MultiLinearWiggleDisplay/components/DraggableDialog.d.ts +0 -1
- package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.d.ts +0 -1
- package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js +36 -37
- package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +0 -1
- package/dist/MultiLinearWiggleDisplay/models/configSchema.d.ts +107 -1
- package/dist/MultiLinearWiggleDisplay/models/model.d.ts +62 -23
- package/dist/MultiLinearWiggleDisplay/models/model.js +3 -19
- package/dist/MultiLinearWiggleDisplay/models/model.js.map +1 -1
- package/dist/MultiQuantitativeTrack/configSchema.d.ts +73 -1
- package/dist/MultiRowLineRenderer/configSchema.d.ts +51 -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 +0 -1
- package/dist/MultiWiggleRendering.d.ts +0 -1
- package/dist/MultiXYPlotRenderer/configSchema.d.ts +65 -1
- package/dist/QuantitativeTrack/configSchema.d.ts +73 -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 +0 -1
- package/dist/XYPlotRenderer/configSchema.d.ts +65 -1
- package/dist/configSchema.d.ts +51 -1
- package/dist/index.d.ts +156 -47
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/shared/SetMinMaxDialog.d.ts +0 -1
- package/dist/shared/YScaleBar.d.ts +0 -1
- package/dist/util.d.ts +9 -6
- package/dist/util.js +13 -12
- package/dist/util.js.map +1 -1
- package/esm/BigWigAdapter/BigWigAdapter.d.ts +2 -2
- package/esm/BigWigAdapter/BigWigAdapter.js +4 -3
- package/esm/BigWigAdapter/BigWigAdapter.js.map +1 -1
- package/esm/BigWigAdapter/configSchema.d.ts +20 -1
- package/esm/CreateMultiWiggleExtension/ConfirmDialog.d.ts +0 -1
- package/esm/DensityRenderer/configSchema.d.ts +33 -1
- package/esm/LinePlotRenderer/configSchema.d.ts +44 -1
- package/esm/LinearWiggleDisplay/components/SetColorDialog.d.ts +0 -1
- package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +0 -1
- package/esm/LinearWiggleDisplay/models/configSchema.d.ts +98 -1
- package/esm/LinearWiggleDisplay/models/model.d.ts +93 -58
- package/esm/LinearWiggleDisplay/models/model.js +10 -27
- package/esm/LinearWiggleDisplay/models/model.js.map +1 -1
- package/esm/MultiDensityRenderer/configSchema.d.ts +33 -1
- package/esm/MultiLineRenderer/configSchema.d.ts +51 -1
- package/esm/MultiLinearWiggleDisplay/components/DraggableDialog.d.ts +0 -1
- package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.d.ts +0 -1
- package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.js +36 -37
- package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +0 -1
- package/esm/MultiLinearWiggleDisplay/models/configSchema.d.ts +107 -1
- package/esm/MultiLinearWiggleDisplay/models/model.d.ts +62 -23
- package/esm/MultiLinearWiggleDisplay/models/model.js +4 -20
- package/esm/MultiLinearWiggleDisplay/models/model.js.map +1 -1
- package/esm/MultiQuantitativeTrack/configSchema.d.ts +73 -1
- package/esm/MultiRowLineRenderer/configSchema.d.ts +51 -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 +0 -1
- package/esm/MultiWiggleRendering.d.ts +0 -1
- package/esm/MultiXYPlotRenderer/configSchema.d.ts +65 -1
- package/esm/QuantitativeTrack/configSchema.d.ts +73 -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 +0 -1
- package/esm/XYPlotRenderer/configSchema.d.ts +65 -1
- package/esm/configSchema.d.ts +51 -1
- package/esm/index.d.ts +156 -47
- package/esm/index.js +3 -3
- package/esm/index.js.map +1 -1
- package/esm/shared/SetMinMaxDialog.d.ts +0 -1
- package/esm/shared/YScaleBar.d.ts +0 -1
- package/esm/util.d.ts +9 -6
- package/esm/util.js +10 -9
- package/esm/util.js.map +1 -1
- package/package.json +3 -3
- package/src/BigWigAdapter/BigWigAdapter.test.ts +8 -3
- package/src/BigWigAdapter/BigWigAdapter.ts +6 -3
- package/src/LinearWiggleDisplay/models/model.tsx +11 -29
- package/src/MultiLinearWiggleDisplay/components/SetColorDialog.tsx +53 -50
- package/src/MultiLinearWiggleDisplay/models/model.tsx +4 -20
- package/src/MultiWiggleAdapter/MultiWiggleAdapter.ts +1 -1
- 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/util.ts +24 -17
|
@@ -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/util.ts
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
getSession,
|
|
6
6
|
getContainingView,
|
|
7
7
|
} from '@jbrowse/core/util'
|
|
8
|
-
import {
|
|
8
|
+
import { QuantitativeStats } from '@jbrowse/core/util/stats'
|
|
9
9
|
import { getRpcSessionId } from '@jbrowse/core/util/tracks'
|
|
10
10
|
import { addDisposer, isAlive } from 'mobx-state-tree'
|
|
11
11
|
|
|
@@ -176,9 +176,10 @@ export function groupBy<T>(array: T[], predicate: (v: T) => string) {
|
|
|
176
176
|
return result
|
|
177
177
|
}
|
|
178
178
|
|
|
179
|
-
export async function
|
|
179
|
+
export async function getQuantitativeStats(
|
|
180
180
|
self: {
|
|
181
181
|
adapterConfig: AnyConfigurationModel
|
|
182
|
+
configuration: AnyConfigurationModel
|
|
182
183
|
autoscaleType: string
|
|
183
184
|
setMessage: (str: string) => void
|
|
184
185
|
},
|
|
@@ -187,7 +188,7 @@ export async function getStats(
|
|
|
187
188
|
signal?: AbortSignal
|
|
188
189
|
filters?: string[]
|
|
189
190
|
},
|
|
190
|
-
): Promise<
|
|
191
|
+
): Promise<QuantitativeStats> {
|
|
191
192
|
const { rpcManager } = getSession(self)
|
|
192
193
|
const nd = getConf(self, 'numStdDev') || 3
|
|
193
194
|
const { adapterConfig, autoscaleType } = self
|
|
@@ -204,11 +205,11 @@ export async function getStats(
|
|
|
204
205
|
}
|
|
205
206
|
|
|
206
207
|
if (autoscaleType === 'global' || autoscaleType === 'globalsd') {
|
|
207
|
-
const results:
|
|
208
|
+
const results: QuantitativeStats = (await rpcManager.call(
|
|
208
209
|
sessionId,
|
|
209
|
-
'
|
|
210
|
+
'WiggleGetGlobalQuantitativeStats',
|
|
210
211
|
params,
|
|
211
|
-
)) as
|
|
212
|
+
)) as QuantitativeStats
|
|
212
213
|
const { scoreMin, scoreMean, scoreStdDev } = results
|
|
213
214
|
// globalsd uses heuristic to avoid unnecessary scoreMin<0
|
|
214
215
|
// if the scoreMin is never less than 0
|
|
@@ -225,7 +226,7 @@ export async function getStats(
|
|
|
225
226
|
const { dynamicBlocks, bpPerPx } = getContainingView(self) as LGV
|
|
226
227
|
const results = (await rpcManager.call(
|
|
227
228
|
sessionId,
|
|
228
|
-
'
|
|
229
|
+
'WiggleGetMultiRegionQuantitativeStats',
|
|
229
230
|
{
|
|
230
231
|
...params,
|
|
231
232
|
regions: dynamicBlocks.contentBlocks.map(region => {
|
|
@@ -238,7 +239,7 @@ export async function getStats(
|
|
|
238
239
|
}),
|
|
239
240
|
bpPerPx,
|
|
240
241
|
},
|
|
241
|
-
)) as
|
|
242
|
+
)) as QuantitativeStats
|
|
242
243
|
const { scoreMin, scoreMean, scoreStdDev } = results
|
|
243
244
|
|
|
244
245
|
// localsd uses heuristic to avoid unnecessary scoreMin<0 if the
|
|
@@ -255,20 +256,25 @@ export async function getStats(
|
|
|
255
256
|
if (autoscaleType === 'zscale') {
|
|
256
257
|
return rpcManager.call(
|
|
257
258
|
sessionId,
|
|
258
|
-
'
|
|
259
|
+
'WiggleGetGlobalQuantitativeStats',
|
|
259
260
|
params,
|
|
260
|
-
) as Promise<
|
|
261
|
+
) as Promise<QuantitativeStats>
|
|
261
262
|
}
|
|
262
263
|
throw new Error(`invalid autoscaleType '${autoscaleType}'`)
|
|
263
264
|
}
|
|
264
265
|
|
|
265
|
-
export function
|
|
266
|
-
|
|
266
|
+
export function quantitativeStatsAutorun(self: {
|
|
267
|
+
featureDensityStatsReady: boolean
|
|
267
268
|
regionTooLarge: boolean
|
|
269
|
+
error: unknown
|
|
268
270
|
setLoading: (aborter: AbortController) => void
|
|
269
271
|
setError: (error: unknown) => void
|
|
270
|
-
|
|
272
|
+
updateQuantitativeStats: (
|
|
273
|
+
stats: QuantitativeStats,
|
|
274
|
+
statsRegion: string,
|
|
275
|
+
) => void
|
|
271
276
|
renderProps: () => Record<string, unknown>
|
|
277
|
+
configuration: AnyConfigurationModel
|
|
272
278
|
adapterConfig: AnyConfigurationModel
|
|
273
279
|
autoscaleType: string
|
|
274
280
|
setMessage: (str: string) => void
|
|
@@ -284,20 +290,21 @@ export function statsAutorun(self: {
|
|
|
284
290
|
|
|
285
291
|
if (
|
|
286
292
|
!view.initialized ||
|
|
287
|
-
!self.
|
|
288
|
-
self.regionTooLarge
|
|
293
|
+
!self.featureDensityStatsReady ||
|
|
294
|
+
self.regionTooLarge ||
|
|
295
|
+
self.error
|
|
289
296
|
) {
|
|
290
297
|
return
|
|
291
298
|
}
|
|
292
299
|
const statsRegion = JSON.stringify(view.dynamicBlocks)
|
|
293
300
|
|
|
294
|
-
const wiggleStats = await
|
|
301
|
+
const wiggleStats = await getQuantitativeStats(self, {
|
|
295
302
|
signal: aborter.signal,
|
|
296
303
|
...self.renderProps(),
|
|
297
304
|
})
|
|
298
305
|
|
|
299
306
|
if (isAlive(self)) {
|
|
300
|
-
self.
|
|
307
|
+
self.updateQuantitativeStats(wiggleStats, statsRegion)
|
|
301
308
|
}
|
|
302
309
|
} catch (e) {
|
|
303
310
|
if (!isAbortException(e) && isAlive(self)) {
|