@jbrowse/plugin-hic 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/LICENSE +201 -0
- package/dist/HicAdapter/HicAdapter.d.ts +32 -0
- package/dist/HicAdapter/HicAdapter.js +85 -0
- package/dist/HicAdapter/HicAdapter.js.map +1 -0
- package/dist/HicAdapter/configSchema.d.ts +13 -0
- package/dist/HicAdapter/configSchema.js +22 -0
- package/dist/HicAdapter/configSchema.js.map +1 -0
- package/dist/HicAdapter/index.d.ts +3 -0
- package/dist/HicAdapter/index.js +39 -0
- package/dist/HicAdapter/index.js.map +1 -0
- package/dist/HicRenderer/HicRenderer.d.ts +53 -0
- package/dist/HicRenderer/HicRenderer.js +126 -0
- package/dist/HicRenderer/HicRenderer.js.map +1 -0
- package/dist/HicRenderer/components/HicRendering.d.ts +10 -0
- package/dist/HicRenderer/components/HicRendering.js +16 -0
- package/dist/HicRenderer/components/HicRendering.js.map +1 -0
- package/dist/HicRenderer/configSchema.d.ts +28 -0
- package/dist/HicRenderer/configSchema.js +37 -0
- package/dist/HicRenderer/configSchema.js.map +1 -0
- package/dist/HicRenderer/index.d.ts +3 -0
- package/dist/HicRenderer/index.js +17 -0
- package/dist/HicRenderer/index.js.map +1 -0
- package/dist/HicTrack/configSchema.d.ts +75 -0
- package/dist/HicTrack/configSchema.js +17 -0
- package/dist/HicTrack/configSchema.js.map +1 -0
- package/dist/HicTrack/index.d.ts +3 -0
- package/dist/HicTrack/index.js +20 -0
- package/dist/HicTrack/index.js.map +1 -0
- package/dist/LinearHicDisplay/configSchema.d.ts +33 -0
- package/dist/LinearHicDisplay/configSchema.js +25 -0
- package/dist/LinearHicDisplay/configSchema.js.map +1 -0
- package/dist/LinearHicDisplay/index.d.ts +3 -0
- package/dist/LinearHicDisplay/index.js +24 -0
- package/dist/LinearHicDisplay/index.js.map +1 -0
- package/dist/LinearHicDisplay/model.d.ts +332 -0
- package/dist/LinearHicDisplay/model.js +95 -0
- package/dist/LinearHicDisplay/model.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/esm/HicAdapter/HicAdapter.d.ts +32 -0
- package/esm/HicAdapter/HicAdapter.js +77 -0
- package/esm/HicAdapter/HicAdapter.js.map +1 -0
- package/esm/HicAdapter/configSchema.d.ts +13 -0
- package/esm/HicAdapter/configSchema.js +20 -0
- package/esm/HicAdapter/configSchema.js.map +1 -0
- package/esm/HicAdapter/index.d.ts +3 -0
- package/esm/HicAdapter/index.js +11 -0
- package/esm/HicAdapter/index.js.map +1 -0
- package/esm/HicRenderer/HicRenderer.d.ts +53 -0
- package/esm/HicRenderer/HicRenderer.js +97 -0
- package/esm/HicRenderer/HicRenderer.js.map +1 -0
- package/esm/HicRenderer/components/HicRendering.d.ts +10 -0
- package/esm/HicRenderer/components/HicRendering.js +11 -0
- package/esm/HicRenderer/components/HicRendering.js.map +1 -0
- package/esm/HicRenderer/configSchema.d.ts +28 -0
- package/esm/HicRenderer/configSchema.js +35 -0
- package/esm/HicRenderer/configSchema.js.map +1 -0
- package/esm/HicRenderer/index.d.ts +3 -0
- package/esm/HicRenderer/index.js +12 -0
- package/esm/HicRenderer/index.js.map +1 -0
- package/esm/HicTrack/configSchema.d.ts +75 -0
- package/esm/HicTrack/configSchema.js +15 -0
- package/esm/HicTrack/configSchema.js.map +1 -0
- package/esm/HicTrack/index.d.ts +3 -0
- package/esm/HicTrack/index.js +15 -0
- package/esm/HicTrack/index.js.map +1 -0
- package/esm/LinearHicDisplay/configSchema.d.ts +33 -0
- package/esm/LinearHicDisplay/configSchema.js +23 -0
- package/esm/LinearHicDisplay/configSchema.js.map +1 -0
- package/esm/LinearHicDisplay/index.d.ts +3 -0
- package/esm/LinearHicDisplay/index.js +19 -0
- package/esm/LinearHicDisplay/index.js.map +1 -0
- package/esm/LinearHicDisplay/model.d.ts +332 -0
- package/esm/LinearHicDisplay/model.js +93 -0
- package/esm/LinearHicDisplay/model.js.map +1 -0
- package/esm/index.d.ts +7 -0
- package/esm/index.js +50 -0
- package/esm/index.js.map +1 -0
- package/package.json +60 -0
- package/src/HicAdapter/HicAdapter.ts +150 -0
- package/src/HicAdapter/configSchema.ts +26 -0
- package/src/HicAdapter/index.ts +15 -0
- package/src/HicRenderer/HicRenderer.tsx +170 -0
- package/src/HicRenderer/components/HicRendering.test.tsx +21 -0
- package/src/HicRenderer/components/HicRendering.tsx +24 -0
- package/src/HicRenderer/components/__snapshots__/HicRendering.test.tsx.snap +14 -0
- package/src/HicRenderer/configSchema.ts +42 -0
- package/src/HicRenderer/index.ts +17 -0
- package/src/HicTrack/configSchema.ts +23 -0
- package/src/HicTrack/index.ts +16 -0
- package/src/LinearHicDisplay/configSchema.ts +33 -0
- package/src/LinearHicDisplay/index.ts +21 -0
- package/src/LinearHicDisplay/model.ts +104 -0
- package/src/declare.d.ts +2 -0
- package/src/index.ts +71 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DisplayType } from '@jbrowse/core/pluggableElementTypes'
|
|
2
|
+
import PluginManager from '@jbrowse/core/PluginManager'
|
|
3
|
+
import { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view'
|
|
4
|
+
|
|
5
|
+
import configSchemaFactory from './configSchema'
|
|
6
|
+
import stateModelFactory from './model'
|
|
7
|
+
|
|
8
|
+
export default (pluginManager: PluginManager) => {
|
|
9
|
+
pluginManager.addDisplayType(() => {
|
|
10
|
+
const configSchema = configSchemaFactory(pluginManager)
|
|
11
|
+
return new DisplayType({
|
|
12
|
+
name: 'LinearHicDisplay',
|
|
13
|
+
displayName: 'Hi-C contact matrix display',
|
|
14
|
+
configSchema,
|
|
15
|
+
stateModel: stateModelFactory(configSchema),
|
|
16
|
+
trackType: 'HicTrack',
|
|
17
|
+
viewType: 'LinearGenomeView',
|
|
18
|
+
ReactComponent: BaseLinearDisplayComponent,
|
|
19
|
+
})
|
|
20
|
+
})
|
|
21
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { ConfigurationReference, getConf } from '@jbrowse/core/configuration'
|
|
2
|
+
import { BaseLinearDisplay } from '@jbrowse/plugin-linear-genome-view'
|
|
3
|
+
import { types, getEnv } from 'mobx-state-tree'
|
|
4
|
+
import { AnyConfigurationSchemaType } from '@jbrowse/core/configuration'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* #stateModel LinearHicDisplay
|
|
8
|
+
* #category display
|
|
9
|
+
* extends `BaseLinearDisplay`
|
|
10
|
+
*/
|
|
11
|
+
function x() {} // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
12
|
+
|
|
13
|
+
export default (configSchema: AnyConfigurationSchemaType) =>
|
|
14
|
+
types
|
|
15
|
+
.compose(
|
|
16
|
+
'LinearHicDisplay',
|
|
17
|
+
BaseLinearDisplay,
|
|
18
|
+
types.model({
|
|
19
|
+
/**
|
|
20
|
+
* #property
|
|
21
|
+
*/
|
|
22
|
+
type: types.literal('LinearHicDisplay'),
|
|
23
|
+
/**
|
|
24
|
+
* #property
|
|
25
|
+
*/
|
|
26
|
+
configuration: ConfigurationReference(configSchema),
|
|
27
|
+
/**
|
|
28
|
+
* #property
|
|
29
|
+
*/
|
|
30
|
+
resolution: types.optional(types.number, 1),
|
|
31
|
+
}),
|
|
32
|
+
)
|
|
33
|
+
.views(self => {
|
|
34
|
+
const { renderProps: superRenderProps } = self
|
|
35
|
+
return {
|
|
36
|
+
/**
|
|
37
|
+
* #getter
|
|
38
|
+
*/
|
|
39
|
+
get blockType() {
|
|
40
|
+
return 'dynamicBlocks'
|
|
41
|
+
},
|
|
42
|
+
/**
|
|
43
|
+
* #getter
|
|
44
|
+
*/
|
|
45
|
+
get rendererTypeName() {
|
|
46
|
+
return 'HicRenderer'
|
|
47
|
+
},
|
|
48
|
+
/**
|
|
49
|
+
* #method
|
|
50
|
+
*/
|
|
51
|
+
renderProps() {
|
|
52
|
+
const config = self.rendererType.configSchema.create(
|
|
53
|
+
getConf(self, 'renderer') || {},
|
|
54
|
+
getEnv(self),
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
return {
|
|
58
|
+
...superRenderProps(),
|
|
59
|
+
config,
|
|
60
|
+
rpcDriverName: self.rpcDriverName,
|
|
61
|
+
displayModel: self,
|
|
62
|
+
resolution: self.resolution,
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
}
|
|
66
|
+
})
|
|
67
|
+
.actions(self => ({
|
|
68
|
+
/**
|
|
69
|
+
* #action
|
|
70
|
+
*/
|
|
71
|
+
setResolution(n: number) {
|
|
72
|
+
self.resolution = n
|
|
73
|
+
},
|
|
74
|
+
}))
|
|
75
|
+
.views(self => {
|
|
76
|
+
const { trackMenuItems: superTrackMenuItems } = self
|
|
77
|
+
return {
|
|
78
|
+
/**
|
|
79
|
+
* #getter
|
|
80
|
+
*/
|
|
81
|
+
trackMenuItems() {
|
|
82
|
+
return [
|
|
83
|
+
...superTrackMenuItems(),
|
|
84
|
+
{
|
|
85
|
+
label: 'Resolution',
|
|
86
|
+
subMenu: [
|
|
87
|
+
{
|
|
88
|
+
label: 'Finer resolution',
|
|
89
|
+
onClick: () => {
|
|
90
|
+
self.setResolution(self.resolution * 2)
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
label: 'Coarser resolution',
|
|
95
|
+
onClick: () => {
|
|
96
|
+
self.setResolution(self.resolution / 2)
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
}
|
|
104
|
+
})
|
package/src/declare.d.ts
ADDED
package/src/index.ts
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import Plugin from '@jbrowse/core/Plugin'
|
|
2
|
+
import PluginManager from '@jbrowse/core/PluginManager'
|
|
3
|
+
import { FileLocation } from '@jbrowse/core/util/types'
|
|
4
|
+
import Color from 'color'
|
|
5
|
+
import HicRendererF from './HicRenderer'
|
|
6
|
+
import HicTrackF from './HicTrack'
|
|
7
|
+
import LinearHicDisplayF from './LinearHicDisplay'
|
|
8
|
+
import HicAdapterF from './HicAdapter'
|
|
9
|
+
import {
|
|
10
|
+
AdapterGuesser,
|
|
11
|
+
getFileName,
|
|
12
|
+
TrackTypeGuesser,
|
|
13
|
+
} from '@jbrowse/core/util/tracks'
|
|
14
|
+
|
|
15
|
+
export default class HicPlugin extends Plugin {
|
|
16
|
+
name = 'HicPlugin'
|
|
17
|
+
|
|
18
|
+
install(pluginManager: PluginManager) {
|
|
19
|
+
HicAdapterF(pluginManager)
|
|
20
|
+
HicRendererF(pluginManager)
|
|
21
|
+
HicTrackF(pluginManager)
|
|
22
|
+
LinearHicDisplayF(pluginManager)
|
|
23
|
+
|
|
24
|
+
pluginManager.addToExtensionPoint(
|
|
25
|
+
'Core-guessAdapterForLocation',
|
|
26
|
+
(adapterGuesser: AdapterGuesser) => {
|
|
27
|
+
return (
|
|
28
|
+
file: FileLocation,
|
|
29
|
+
index?: FileLocation,
|
|
30
|
+
adapterHint?: string,
|
|
31
|
+
) => {
|
|
32
|
+
const regexGuess = /\.hic/i
|
|
33
|
+
const adapterName = 'HicAdapter'
|
|
34
|
+
const fileName = getFileName(file)
|
|
35
|
+
const obj = {
|
|
36
|
+
type: adapterName,
|
|
37
|
+
hicLocation: file,
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (regexGuess.test(fileName) && !adapterHint) {
|
|
41
|
+
return obj
|
|
42
|
+
} else if (adapterHint === adapterName) {
|
|
43
|
+
return obj
|
|
44
|
+
}
|
|
45
|
+
return adapterGuesser(file, index, adapterHint)
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
)
|
|
49
|
+
pluginManager.addToExtensionPoint(
|
|
50
|
+
'Core-guessTrackTypeForLocation',
|
|
51
|
+
(trackTypeGuesser: TrackTypeGuesser) => {
|
|
52
|
+
return (adapterName: string) => {
|
|
53
|
+
if (adapterName === 'HicAdapter') {
|
|
54
|
+
return 'HicTrack'
|
|
55
|
+
}
|
|
56
|
+
return trackTypeGuesser(adapterName)
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
configure(pluginManager: PluginManager) {
|
|
63
|
+
pluginManager.jexl.addFunction('alpha', (color: Color, value: number) =>
|
|
64
|
+
color.alpha(value),
|
|
65
|
+
)
|
|
66
|
+
pluginManager.jexl.addFunction('hsl', (color: Color) => color.hsl())
|
|
67
|
+
pluginManager.jexl.addFunction('colorString', (color: Color) =>
|
|
68
|
+
color.string(),
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
}
|