@jbrowse/plugin-wiggle 2.3.4 → 2.4.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.js +5 -6
- package/dist/BigWigAdapter/BigWigAdapter.js.map +1 -1
- package/dist/CreateMultiWiggleExtension/ConfirmDialog.js +1 -1
- package/dist/CreateMultiWiggleExtension/ConfirmDialog.js.map +1 -1
- package/dist/CreateMultiWiggleExtension/index.js +1 -3
- package/dist/CreateMultiWiggleExtension/index.js.map +1 -1
- package/dist/LinearWiggleDisplay/components/Tooltip.d.ts +2 -2
- package/dist/LinearWiggleDisplay/components/Tooltip.js +2 -1
- package/dist/LinearWiggleDisplay/components/Tooltip.js.map +1 -1
- package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +1 -2
- package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js +3 -2
- package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -1
- package/dist/LinearWiggleDisplay/index.d.ts +3 -4
- package/dist/LinearWiggleDisplay/index.js +7 -5
- package/dist/LinearWiggleDisplay/index.js.map +1 -1
- package/dist/LinearWiggleDisplay/models/model.d.ts +99 -28
- package/dist/LinearWiggleDisplay/models/model.js +3 -8
- package/dist/LinearWiggleDisplay/models/model.js.map +1 -1
- package/dist/MultiDensityRenderer/MultiDensityRenderer.js +2 -2
- package/dist/MultiDensityRenderer/MultiDensityRenderer.js.map +1 -1
- package/dist/MultiLineRenderer/MultiLineRenderer.js +2 -2
- package/dist/MultiLineRenderer/MultiLineRenderer.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/components/DraggableDialog.js +1 -1
- package/dist/MultiLinearWiggleDisplay/components/DraggableDialog.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js +4 -4
- package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/components/Tooltip.d.ts +2 -2
- package/dist/MultiLinearWiggleDisplay/components/Tooltip.js +2 -1
- package/dist/MultiLinearWiggleDisplay/components/Tooltip.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +3 -4
- package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js +10 -10
- package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/models/configSchema.js +7 -0
- package/dist/MultiLinearWiggleDisplay/models/configSchema.js.map +1 -1
- package/dist/MultiLinearWiggleDisplay/models/model.d.ts +63 -5
- package/dist/MultiLinearWiggleDisplay/models/model.js +1 -7
- package/dist/MultiLinearWiggleDisplay/models/model.js.map +1 -1
- package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js +2 -2
- package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js.map +1 -1
- package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +2 -2
- package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js.map +1 -1
- package/dist/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +2 -1
- package/dist/MultiWiggleAdapter/MultiWiggleAdapter.js +2 -2
- package/dist/MultiWiggleAdapter/MultiWiggleAdapter.js.map +1 -1
- package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.js +2 -2
- package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.js.map +1 -1
- package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js +5 -5
- package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js.map +1 -1
- package/dist/WiggleBaseRenderer.d.ts +2 -2
- package/dist/WiggleBaseRenderer.js +3 -3
- package/dist/WiggleBaseRenderer.js.map +1 -1
- package/dist/WiggleRPC/rpcMethods.js +2 -2
- package/dist/WiggleRPC/rpcMethods.js.map +1 -1
- package/dist/XYPlotRenderer/index.d.ts +3 -4
- package/dist/XYPlotRenderer/index.js +7 -4
- package/dist/XYPlotRenderer/index.js.map +1 -1
- package/dist/drawxy.js +4 -8
- package/dist/drawxy.js.map +1 -1
- package/dist/index.d.ts +73 -11
- package/dist/index.js +9 -7
- package/dist/index.js.map +1 -1
- package/dist/shared/YScaleBar.d.ts +9 -0
- package/dist/{MultiLinearWiggleDisplay/components → shared}/YScaleBar.js +4 -3
- package/dist/shared/YScaleBar.js.map +1 -0
- package/dist/util.d.ts +1 -1
- package/dist/util.js +6 -5
- package/dist/util.js.map +1 -1
- package/esm/BigWigAdapter/BigWigAdapter.js +5 -6
- package/esm/BigWigAdapter/BigWigAdapter.js.map +1 -1
- package/esm/CreateMultiWiggleExtension/ConfirmDialog.js +1 -1
- package/esm/CreateMultiWiggleExtension/ConfirmDialog.js.map +1 -1
- package/esm/CreateMultiWiggleExtension/index.js +1 -3
- package/esm/CreateMultiWiggleExtension/index.js.map +1 -1
- package/esm/LinearWiggleDisplay/components/Tooltip.d.ts +2 -2
- package/esm/LinearWiggleDisplay/components/Tooltip.js +1 -1
- package/esm/LinearWiggleDisplay/components/Tooltip.js.map +1 -1
- package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +1 -2
- package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.js +2 -2
- package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -1
- package/esm/LinearWiggleDisplay/index.d.ts +3 -4
- package/esm/LinearWiggleDisplay/index.js +3 -2
- package/esm/LinearWiggleDisplay/index.js.map +1 -1
- package/esm/LinearWiggleDisplay/models/model.d.ts +99 -28
- package/esm/LinearWiggleDisplay/models/model.js +2 -7
- package/esm/LinearWiggleDisplay/models/model.js.map +1 -1
- package/esm/MultiDensityRenderer/MultiDensityRenderer.js +2 -2
- package/esm/MultiDensityRenderer/MultiDensityRenderer.js.map +1 -1
- package/esm/MultiLineRenderer/MultiLineRenderer.js +2 -2
- package/esm/MultiLineRenderer/MultiLineRenderer.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/components/DraggableDialog.js +1 -1
- package/esm/MultiLinearWiggleDisplay/components/DraggableDialog.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.js +4 -4
- package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/components/Tooltip.d.ts +2 -2
- package/esm/MultiLinearWiggleDisplay/components/Tooltip.js +1 -1
- package/esm/MultiLinearWiggleDisplay/components/Tooltip.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +3 -4
- package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js +9 -10
- package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/models/configSchema.js +7 -0
- package/esm/MultiLinearWiggleDisplay/models/configSchema.js.map +1 -1
- package/esm/MultiLinearWiggleDisplay/models/model.d.ts +63 -5
- package/esm/MultiLinearWiggleDisplay/models/model.js +1 -7
- package/esm/MultiLinearWiggleDisplay/models/model.js.map +1 -1
- package/esm/MultiRowLineRenderer/MultiRowLineRenderer.js +2 -2
- package/esm/MultiRowLineRenderer/MultiRowLineRenderer.js.map +1 -1
- package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +2 -2
- package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js.map +1 -1
- package/esm/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +2 -1
- package/esm/MultiWiggleAdapter/MultiWiggleAdapter.js +2 -2
- package/esm/MultiWiggleAdapter/MultiWiggleAdapter.js.map +1 -1
- package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.js +2 -2
- package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.js.map +1 -1
- package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.js +5 -5
- package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.js.map +1 -1
- package/esm/WiggleBaseRenderer.d.ts +2 -2
- package/esm/WiggleBaseRenderer.js +3 -3
- package/esm/WiggleBaseRenderer.js.map +1 -1
- package/esm/WiggleRPC/rpcMethods.js +2 -2
- package/esm/WiggleRPC/rpcMethods.js.map +1 -1
- package/esm/XYPlotRenderer/index.d.ts +3 -4
- package/esm/XYPlotRenderer/index.js +3 -1
- package/esm/XYPlotRenderer/index.js.map +1 -1
- package/esm/drawxy.js +4 -8
- package/esm/drawxy.js.map +1 -1
- package/esm/index.d.ts +73 -11
- package/esm/index.js +4 -3
- package/esm/index.js.map +1 -1
- package/esm/shared/YScaleBar.d.ts +9 -0
- package/esm/{LinearWiggleDisplay/components → shared}/YScaleBar.js +4 -3
- package/esm/shared/YScaleBar.js.map +1 -0
- package/esm/util.d.ts +1 -1
- package/esm/util.js +6 -5
- package/esm/util.js.map +1 -1
- package/package.json +3 -3
- package/src/BigWigAdapter/BigWigAdapter.ts +5 -6
- package/src/CreateMultiWiggleExtension/ConfirmDialog.tsx +1 -1
- package/src/CreateMultiWiggleExtension/index.ts +1 -3
- package/src/DensityRenderer/DensityRenderer.test.ts +3 -3
- package/src/LinearWiggleDisplay/components/Tooltip.tsx +2 -1
- package/src/LinearWiggleDisplay/components/WiggleDisplayComponent.tsx +2 -2
- package/src/LinearWiggleDisplay/index.ts +3 -2
- package/src/LinearWiggleDisplay/models/model.tsx +2 -6
- package/src/MultiDensityRenderer/MultiDensityRenderer.ts +2 -2
- package/src/MultiLineRenderer/MultiLineRenderer.ts +2 -2
- package/src/MultiLinearWiggleDisplay/components/DraggableDialog.tsx +1 -1
- package/src/MultiLinearWiggleDisplay/components/SetColorDialog.tsx +4 -4
- package/src/MultiLinearWiggleDisplay/components/Tooltip.tsx +2 -1
- package/src/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.tsx +175 -182
- package/src/MultiLinearWiggleDisplay/models/configSchema.ts +8 -0
- package/src/MultiLinearWiggleDisplay/models/model.tsx +1 -6
- package/src/MultiRowLineRenderer/MultiRowLineRenderer.ts +2 -2
- package/src/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.ts +2 -2
- package/src/MultiWiggleAdapter/MultiWiggleAdapter.ts +3 -2
- package/src/MultiWiggleAddTrackWidget/AddTrackWorkflow.tsx +2 -2
- package/src/MultiXYPlotRenderer/MultiXYPlotRenderer.ts +5 -5
- package/src/WiggleBaseRenderer.tsx +13 -15
- package/src/WiggleRPC/rpcMethods.ts +2 -2
- package/src/WiggleRendering.test.js +1 -1
- package/src/XYPlotRenderer/XYPlotRenderer.test.ts +3 -3
- package/src/XYPlotRenderer/index.ts +4 -1
- package/src/drawxy.ts +6 -8
- package/src/index.ts +8 -9
- package/src/shared/YScaleBar.tsx +25 -0
- package/src/util.ts +5 -4
- package/dist/LinearWiggleDisplay/components/YScaleBar.d.ts +0 -7
- package/dist/LinearWiggleDisplay/components/YScaleBar.js +0 -14
- package/dist/LinearWiggleDisplay/components/YScaleBar.js.map +0 -1
- package/dist/MultiLinearWiggleDisplay/components/YScaleBar.d.ts +0 -7
- package/dist/MultiLinearWiggleDisplay/components/YScaleBar.js.map +0 -1
- package/esm/LinearWiggleDisplay/components/YScaleBar.d.ts +0 -7
- package/esm/LinearWiggleDisplay/components/YScaleBar.js.map +0 -1
- package/esm/MultiLinearWiggleDisplay/components/YScaleBar.d.ts +0 -7
- package/esm/MultiLinearWiggleDisplay/components/YScaleBar.js +0 -9
- package/esm/MultiLinearWiggleDisplay/components/YScaleBar.js.map +0 -1
- package/src/LinearWiggleDisplay/components/YScaleBar.tsx +0 -26
- package/src/MultiLinearWiggleDisplay/components/YScaleBar.tsx +0 -25
|
@@ -7,7 +7,7 @@ import WiggleBaseRenderer, {
|
|
|
7
7
|
} from '../WiggleBaseRenderer'
|
|
8
8
|
|
|
9
9
|
export default class MultiXYPlotRenderer extends WiggleBaseRenderer {
|
|
10
|
-
// @ts-
|
|
10
|
+
// @ts-expect-error
|
|
11
11
|
async draw(ctx: CanvasRenderingContext2D, props: MultiArgs) {
|
|
12
12
|
const { bpPerPx, sources, regions, features } = props
|
|
13
13
|
const [region] = regions
|
|
@@ -35,7 +35,7 @@ export default class MultiXYPlotRenderer extends WiggleBaseRenderer {
|
|
|
35
35
|
ctx.lineTo(width, height)
|
|
36
36
|
ctx.stroke()
|
|
37
37
|
ctx.translate(0, height)
|
|
38
|
-
feats = feats
|
|
38
|
+
feats = [...feats, ...reducedFeatures]
|
|
39
39
|
})
|
|
40
40
|
ctx.restore()
|
|
41
41
|
return { reducedFeatures: feats }
|
|
@@ -19,6 +19,7 @@ function getFilename(uri: string) {
|
|
|
19
19
|
|
|
20
20
|
interface AdapterEntry {
|
|
21
21
|
dataAdapter: BaseFeatureDataAdapter
|
|
22
|
+
source: string
|
|
22
23
|
[key: string]: unknown
|
|
23
24
|
}
|
|
24
25
|
|
|
@@ -73,7 +74,7 @@ export default class MultiWiggleAdapter extends BaseFeatureDataAdapter {
|
|
|
73
74
|
const adapters = await this.getAdapters()
|
|
74
75
|
const stats = (
|
|
75
76
|
await Promise.all(
|
|
76
|
-
// @ts-
|
|
77
|
+
// @ts-expect-error
|
|
77
78
|
adapters.map(adp => adp.dataAdapter.getGlobalStats?.(opts)),
|
|
78
79
|
)
|
|
79
80
|
).filter(f => !!f)
|
|
@@ -94,7 +95,7 @@ export default class MultiWiggleAdapter extends BaseFeatureDataAdapter {
|
|
|
94
95
|
? p
|
|
95
96
|
: new SimpleFeature({
|
|
96
97
|
...p.toJSON(),
|
|
97
|
-
uniqueId: adp.source
|
|
98
|
+
uniqueId: `${adp.source}-${p.id()}`,
|
|
98
99
|
source: adp.source,
|
|
99
100
|
}),
|
|
100
101
|
),
|
|
@@ -23,7 +23,7 @@ const useStyles = makeStyles()(theme => ({
|
|
|
23
23
|
export default function MultiWiggleWidget({ model }: { model: AddTrackModel }) {
|
|
24
24
|
const { classes } = useStyles()
|
|
25
25
|
const [val, setVal] = useState('')
|
|
26
|
-
const [trackName, setTrackName] = useState(
|
|
26
|
+
const [trackName, setTrackName] = useState(`MultiWiggle${+Date.now()}`)
|
|
27
27
|
return (
|
|
28
28
|
<Paper className={classes.paper}>
|
|
29
29
|
<ul>
|
|
@@ -51,7 +51,7 @@ export default function MultiWiggleWidget({ model }: { model: AddTrackModel }) {
|
|
|
51
51
|
hidden
|
|
52
52
|
multiple
|
|
53
53
|
onChange={({ target }) => {
|
|
54
|
-
const res =
|
|
54
|
+
const res = [...(target?.files || [])].map(file => ({
|
|
55
55
|
type: 'BigWigAdapter',
|
|
56
56
|
bigWigLocation: isElectron
|
|
57
57
|
? {
|
|
@@ -7,16 +7,16 @@ import WiggleBaseRenderer, {
|
|
|
7
7
|
} from '../WiggleBaseRenderer'
|
|
8
8
|
|
|
9
9
|
export default class MultiXYPlotRenderer extends WiggleBaseRenderer {
|
|
10
|
-
// @ts-
|
|
10
|
+
// @ts-expect-error
|
|
11
11
|
async draw(ctx: CanvasRenderingContext2D, props: MultiArgs) {
|
|
12
12
|
const { sources, features } = props
|
|
13
13
|
const groups = groupBy([...features.values()], f => f.get('source'))
|
|
14
14
|
const Color = await import('color').then(f => f.default)
|
|
15
15
|
let feats = [] as Feature[]
|
|
16
|
-
|
|
16
|
+
for (const source of sources) {
|
|
17
17
|
const features = groups[source.name]
|
|
18
18
|
if (!features) {
|
|
19
|
-
|
|
19
|
+
continue
|
|
20
20
|
}
|
|
21
21
|
const { reducedFeatures } = drawXY(ctx, {
|
|
22
22
|
...props,
|
|
@@ -25,8 +25,8 @@ export default class MultiXYPlotRenderer extends WiggleBaseRenderer {
|
|
|
25
25
|
colorCallback: () => source.color || 'blue',
|
|
26
26
|
Color,
|
|
27
27
|
})
|
|
28
|
-
feats = feats
|
|
29
|
-
}
|
|
28
|
+
feats = [...feats, ...reducedFeatures]
|
|
29
|
+
}
|
|
30
30
|
return { reducedFeatures: feats }
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import FeatureRendererType, {
|
|
2
2
|
RenderArgs as FeatureRenderArgs,
|
|
3
|
-
RenderArgsSerialized,
|
|
4
3
|
RenderArgsDeserialized as FeatureRenderArgsDeserialized,
|
|
5
|
-
RenderResults,
|
|
6
|
-
ResultsSerialized,
|
|
7
|
-
ResultsDeserialized,
|
|
8
4
|
} from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType'
|
|
9
5
|
import { renderToAbstractCanvas, Feature } from '@jbrowse/core/util'
|
|
10
6
|
import { ThemeOptions } from '@mui/material'
|
|
@@ -34,13 +30,6 @@ export interface MultiRenderArgsDeserialized
|
|
|
34
30
|
sources: Source[]
|
|
35
31
|
}
|
|
36
32
|
|
|
37
|
-
export type {
|
|
38
|
-
RenderArgsSerialized,
|
|
39
|
-
RenderResults,
|
|
40
|
-
ResultsSerialized,
|
|
41
|
-
ResultsDeserialized,
|
|
42
|
-
}
|
|
43
|
-
|
|
44
33
|
export default abstract class WiggleBaseRenderer extends FeatureRendererType {
|
|
45
34
|
supportsSVG = true
|
|
46
35
|
|
|
@@ -50,7 +39,7 @@ export default abstract class WiggleBaseRenderer extends FeatureRendererType {
|
|
|
50
39
|
const [region] = regions
|
|
51
40
|
const width = (region.end - region.start) / bpPerPx
|
|
52
41
|
|
|
53
|
-
// @ts-
|
|
42
|
+
// @ts-expect-error
|
|
54
43
|
const { reducedFeatures, ...rest } = await renderToAbstractCanvas(
|
|
55
44
|
width,
|
|
56
45
|
height,
|
|
@@ -73,9 +62,11 @@ export default abstract class WiggleBaseRenderer extends FeatureRendererType {
|
|
|
73
62
|
return {
|
|
74
63
|
...results,
|
|
75
64
|
...rest,
|
|
76
|
-
features:
|
|
77
|
-
? new Map
|
|
78
|
-
|
|
65
|
+
features: reducedFeatures
|
|
66
|
+
? new Map<string, Feature>(
|
|
67
|
+
reducedFeatures.map((r: Feature) => [r.id(), r]),
|
|
68
|
+
)
|
|
69
|
+
: results.features,
|
|
79
70
|
height,
|
|
80
71
|
width,
|
|
81
72
|
containsNoTransferables: true,
|
|
@@ -91,3 +82,10 @@ export default abstract class WiggleBaseRenderer extends FeatureRendererType {
|
|
|
91
82
|
props: T,
|
|
92
83
|
): Promise<Record<string, unknown> | void>
|
|
93
84
|
}
|
|
85
|
+
|
|
86
|
+
export {
|
|
87
|
+
type RenderArgsSerialized,
|
|
88
|
+
type RenderResults,
|
|
89
|
+
type ResultsDeserialized,
|
|
90
|
+
type ResultsSerialized,
|
|
91
|
+
} from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType'
|
|
@@ -40,7 +40,7 @@ export class WiggleGetGlobalStats extends RpcMethodType {
|
|
|
40
40
|
const { adapterConfig, sessionId } = deserializedArgs
|
|
41
41
|
const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)
|
|
42
42
|
|
|
43
|
-
// @ts-
|
|
43
|
+
// @ts-expect-error
|
|
44
44
|
return dataAdapter.getGlobalStats(deserializedArgs)
|
|
45
45
|
}
|
|
46
46
|
}
|
|
@@ -164,7 +164,7 @@ export class MultiWiggleGetSources extends RpcMethodType {
|
|
|
164
164
|
const { regions, adapterConfig, sessionId } = deserializedArgs
|
|
165
165
|
const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)
|
|
166
166
|
|
|
167
|
-
// @ts-
|
|
167
|
+
// @ts-expect-error
|
|
168
168
|
return dataAdapter.getSources(regions, deserializedArgs)
|
|
169
169
|
}
|
|
170
170
|
}
|
|
@@ -15,7 +15,7 @@ test('one', async () => {
|
|
|
15
15
|
config={{ type: 'DummyRenderer' }}
|
|
16
16
|
/>,
|
|
17
17
|
)
|
|
18
|
-
const test =
|
|
18
|
+
const test = getByTestId('wiggle-rendering-test')
|
|
19
19
|
expect(fireEvent.click(test)).toBeTruthy()
|
|
20
20
|
expect(container.firstChild).toMatchSnapshot()
|
|
21
21
|
})
|
|
@@ -6,9 +6,9 @@ import configSchema from './configSchema'
|
|
|
6
6
|
import XYPlotRenderer from './XYPlotRenderer'
|
|
7
7
|
import ReactComponent from '../WiggleRendering'
|
|
8
8
|
|
|
9
|
-
// @ts-
|
|
9
|
+
// @ts-expect-error
|
|
10
10
|
global.nodeImage = Image
|
|
11
|
-
// @ts-
|
|
11
|
+
// @ts-expect-error
|
|
12
12
|
global.nodeCreateCanvas = createCanvas
|
|
13
13
|
|
|
14
14
|
test('several features', async () => {
|
|
@@ -43,7 +43,7 @@ test('several features', async () => {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
const res = await renderToAbstractCanvas(1000, 200, renderProps, ctx =>
|
|
46
|
-
// @ts-
|
|
46
|
+
// @ts-expect-error
|
|
47
47
|
renderer.draw(ctx, renderProps),
|
|
48
48
|
)
|
|
49
49
|
expect(res).toMatchSnapshot({
|
|
@@ -2,7 +2,6 @@ import ReactComponent from '../WiggleRendering'
|
|
|
2
2
|
import PluginManager from '@jbrowse/core/PluginManager'
|
|
3
3
|
import XYPlotRenderer from './XYPlotRenderer'
|
|
4
4
|
import configSchema from './configSchema'
|
|
5
|
-
export { XYPlotRenderer, configSchema, ReactComponent }
|
|
6
5
|
|
|
7
6
|
export default (pluginManager: PluginManager) => {
|
|
8
7
|
pluginManager.addRendererType(
|
|
@@ -15,3 +14,7 @@ export default (pluginManager: PluginManager) => {
|
|
|
15
14
|
}),
|
|
16
15
|
)
|
|
17
16
|
}
|
|
17
|
+
|
|
18
|
+
export { default as XYPlotRenderer } from './XYPlotRenderer'
|
|
19
|
+
export { default as ReactComponent } from '../WiggleRendering'
|
|
20
|
+
export { default as configSchema } from './configSchema'
|
package/src/drawxy.ts
CHANGED
|
@@ -277,7 +277,7 @@ export function drawLine(
|
|
|
277
277
|
|
|
278
278
|
ctx.beginPath()
|
|
279
279
|
ctx.strokeStyle = c
|
|
280
|
-
const startPos =
|
|
280
|
+
const startPos = lastVal !== undefined ? lastVal : score
|
|
281
281
|
if (!region.reversed) {
|
|
282
282
|
ctx.moveTo(leftPx, toY(startPos))
|
|
283
283
|
ctx.lineTo(leftPx, toY(score))
|
|
@@ -341,13 +341,11 @@ export function drawDensity(
|
|
|
341
341
|
})
|
|
342
342
|
|
|
343
343
|
const scale2 = getScale({ ...scaleOpts, range: [0, height] })
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
readConfObject(config, 'color', { feature, score })
|
|
350
|
-
}
|
|
344
|
+
const cb =
|
|
345
|
+
color === '#f0f'
|
|
346
|
+
? (_: Feature, score: number) => scale(score)
|
|
347
|
+
: (feature: Feature, score: number) =>
|
|
348
|
+
readConfObject(config, 'color', { feature, score })
|
|
351
349
|
const [niceMin, niceMax] = scale2.domain()
|
|
352
350
|
|
|
353
351
|
let prevLeftPx = -Infinity
|
package/src/index.ts
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
|
|
10
10
|
// locals
|
|
11
11
|
import WiggleBaseRenderer from './WiggleBaseRenderer'
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
import BigWigAdapterF from './BigWigAdapter'
|
|
14
14
|
import QuantitativeTrackF from './QuantitativeTrack'
|
|
15
15
|
import MultiQuantitativeTrackF from './MultiQuantitativeTrack'
|
|
@@ -38,9 +38,8 @@ import {
|
|
|
38
38
|
import {
|
|
39
39
|
ReactComponent as LinearWiggleDisplayReactComponent,
|
|
40
40
|
modelFactory as linearWiggleDisplayModelFactory,
|
|
41
|
-
Tooltip,
|
|
42
41
|
} from './LinearWiggleDisplay'
|
|
43
|
-
|
|
42
|
+
|
|
44
43
|
import {
|
|
45
44
|
ReactComponent as XYPlotRendererReactComponent,
|
|
46
45
|
configSchema as xyPlotRendererConfigSchema,
|
|
@@ -120,12 +119,12 @@ export default class WigglePlugin extends Plugin {
|
|
|
120
119
|
|
|
121
120
|
export * from './util'
|
|
122
121
|
|
|
122
|
+
export { default as WiggleRendering } from './WiggleRendering'
|
|
123
123
|
export {
|
|
124
|
-
LinearWiggleDisplayReactComponent,
|
|
125
124
|
Tooltip,
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
125
|
+
ReactComponent as LinearWiggleDisplayReactComponent,
|
|
126
|
+
modelFactory as linearWiggleDisplayModelFactory,
|
|
127
|
+
} from './LinearWiggleDisplay'
|
|
128
|
+
export { type TooltipContentsComponent } from './Tooltip'
|
|
130
129
|
|
|
131
|
-
export
|
|
130
|
+
export { default as WiggleBaseRenderer } from './WiggleBaseRenderer'
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { useTheme } from '@mui/material'
|
|
3
|
+
import { observer } from 'mobx-react'
|
|
4
|
+
import { axisPropsFromTickScale, Axis, LEFT, RIGHT } from 'react-d3-axis-mod'
|
|
5
|
+
|
|
6
|
+
export default observer(function ({
|
|
7
|
+
model,
|
|
8
|
+
orientation,
|
|
9
|
+
}: {
|
|
10
|
+
model: { ticks?: ReturnType<typeof axisPropsFromTickScale> }
|
|
11
|
+
orientation?: string
|
|
12
|
+
}) {
|
|
13
|
+
const { ticks } = model
|
|
14
|
+
const theme = useTheme()
|
|
15
|
+
return ticks ? (
|
|
16
|
+
<Axis
|
|
17
|
+
{...ticks}
|
|
18
|
+
shadow={2}
|
|
19
|
+
format={(n: number) => n}
|
|
20
|
+
style={{ orient: orientation === 'left' ? LEFT : RIGHT }}
|
|
21
|
+
bg={theme.palette.background.default}
|
|
22
|
+
fg={theme.palette.text.primary}
|
|
23
|
+
/>
|
|
24
|
+
) : null
|
|
25
|
+
})
|
package/src/util.ts
CHANGED
|
@@ -168,11 +168,12 @@ export function getNiceDomain({
|
|
|
168
168
|
}
|
|
169
169
|
|
|
170
170
|
export function groupBy<T>(array: T[], predicate: (v: T) => string) {
|
|
171
|
-
|
|
172
|
-
|
|
171
|
+
const result = {} as { [key: string]: T[] }
|
|
172
|
+
for (const value of array) {
|
|
173
|
+
const entry = (result[predicate(value)] ||= [])
|
|
173
174
|
entry.push(value)
|
|
174
|
-
|
|
175
|
-
|
|
175
|
+
}
|
|
176
|
+
return result
|
|
176
177
|
}
|
|
177
178
|
|
|
178
179
|
export async function getStats(
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const react_1 = __importDefault(require("react"));
|
|
7
|
-
const mobx_react_1 = require("mobx-react");
|
|
8
|
-
const react_d3_axis_mod_1 = require("react-d3-axis-mod");
|
|
9
|
-
const YScaleBar = (0, mobx_react_1.observer)(({ model, orientation, }) => {
|
|
10
|
-
const { ticks } = model;
|
|
11
|
-
return ticks ? (react_1.default.createElement(react_d3_axis_mod_1.Axis, { ...ticks, shadow: 2, format: (n) => n, style: { orient: orientation === 'left' ? react_d3_axis_mod_1.LEFT : react_d3_axis_mod_1.RIGHT } })) : null;
|
|
12
|
-
});
|
|
13
|
-
exports.default = YScaleBar;
|
|
14
|
-
//# sourceMappingURL=YScaleBar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"YScaleBar.js","sourceRoot":"","sources":["../../../src/LinearWiggleDisplay/components/YScaleBar.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,2CAAqC;AACrC,yDAAqD;AAGrD,MAAM,SAAS,GAAG,IAAA,qBAAQ,EACxB,CAAC,EACC,KAAK,EACL,WAAW,GAIZ,EAAE,EAAE;IACH,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAEvB,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,8BAAC,wBAAI,OACC,KAAK,EACT,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EACxB,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,wBAAI,CAAC,CAAC,CAAC,yBAAK,EAAE,GACxD,CACH,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CACF,CAAA;AACD,kBAAe,SAAS,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"YScaleBar.js","sourceRoot":"","sources":["../../../src/MultiLinearWiggleDisplay/components/YScaleBar.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,2CAAqC;AACrC,yDAAqD;AAGrD,MAAM,SAAS,GAAG,IAAA,qBAAQ,EACxB,CAAC,EACC,KAAK,EACL,WAAW,GAIZ,EAAE,EAAE;IACH,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACvB,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,8BAAC,wBAAI,OACC,KAAK,EACT,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EACxB,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,wBAAI,CAAC,CAAC,CAAC,yBAAK,EAAE,GACxD,CACH,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CACF,CAAA;AACD,kBAAe,SAAS,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"YScaleBar.js","sourceRoot":"","sources":["../../../src/LinearWiggleDisplay/components/YScaleBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAGrD,MAAM,SAAS,GAAG,QAAQ,CACxB,CAAC,EACC,KAAK,EACL,WAAW,GAIZ,EAAE,EAAE;IACH,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAEvB,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,oBAAC,IAAI,OACC,KAAK,EACT,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EACxB,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,GACxD,CACH,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CACF,CAAA;AACD,eAAe,SAAS,CAAA"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { observer } from 'mobx-react';
|
|
3
|
-
import { Axis, LEFT, RIGHT } from 'react-d3-axis-mod';
|
|
4
|
-
const YScaleBar = observer(({ model, orientation, }) => {
|
|
5
|
-
const { ticks } = model;
|
|
6
|
-
return ticks ? (React.createElement(Axis, { ...ticks, shadow: 2, format: (n) => n, style: { orient: orientation === 'left' ? LEFT : RIGHT } })) : null;
|
|
7
|
-
});
|
|
8
|
-
export default YScaleBar;
|
|
9
|
-
//# sourceMappingURL=YScaleBar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"YScaleBar.js","sourceRoot":"","sources":["../../../src/MultiLinearWiggleDisplay/components/YScaleBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAGrD,MAAM,SAAS,GAAG,QAAQ,CACxB,CAAC,EACC,KAAK,EACL,WAAW,GAIZ,EAAE,EAAE;IACH,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACvB,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,oBAAC,IAAI,OACC,KAAK,EACT,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EACxB,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,GACxD,CACH,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CACF,CAAA;AACD,eAAe,SAAS,CAAA"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { observer } from 'mobx-react'
|
|
3
|
-
import { Axis, LEFT, RIGHT } from 'react-d3-axis-mod'
|
|
4
|
-
import { WiggleDisplayModel } from '../models/model'
|
|
5
|
-
|
|
6
|
-
const YScaleBar = observer(
|
|
7
|
-
({
|
|
8
|
-
model,
|
|
9
|
-
orientation,
|
|
10
|
-
}: {
|
|
11
|
-
model: WiggleDisplayModel
|
|
12
|
-
orientation?: string
|
|
13
|
-
}) => {
|
|
14
|
-
const { ticks } = model
|
|
15
|
-
|
|
16
|
-
return ticks ? (
|
|
17
|
-
<Axis
|
|
18
|
-
{...ticks}
|
|
19
|
-
shadow={2}
|
|
20
|
-
format={(n: number) => n}
|
|
21
|
-
style={{ orient: orientation === 'left' ? LEFT : RIGHT }}
|
|
22
|
-
/>
|
|
23
|
-
) : null
|
|
24
|
-
},
|
|
25
|
-
)
|
|
26
|
-
export default YScaleBar
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { observer } from 'mobx-react'
|
|
3
|
-
import { Axis, LEFT, RIGHT } from 'react-d3-axis-mod'
|
|
4
|
-
import { WiggleDisplayModel } from '../models/model'
|
|
5
|
-
|
|
6
|
-
const YScaleBar = observer(
|
|
7
|
-
({
|
|
8
|
-
model,
|
|
9
|
-
orientation,
|
|
10
|
-
}: {
|
|
11
|
-
model: WiggleDisplayModel
|
|
12
|
-
orientation?: string
|
|
13
|
-
}) => {
|
|
14
|
-
const { ticks } = model
|
|
15
|
-
return ticks ? (
|
|
16
|
-
<Axis
|
|
17
|
-
{...ticks}
|
|
18
|
-
shadow={2}
|
|
19
|
-
format={(n: number) => n}
|
|
20
|
-
style={{ orient: orientation === 'left' ? LEFT : RIGHT }}
|
|
21
|
-
/>
|
|
22
|
-
) : null
|
|
23
|
-
},
|
|
24
|
-
)
|
|
25
|
-
export default YScaleBar
|