@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.
Files changed (96) hide show
  1. package/LICENSE +201 -0
  2. package/dist/HicAdapter/HicAdapter.d.ts +32 -0
  3. package/dist/HicAdapter/HicAdapter.js +85 -0
  4. package/dist/HicAdapter/HicAdapter.js.map +1 -0
  5. package/dist/HicAdapter/configSchema.d.ts +13 -0
  6. package/dist/HicAdapter/configSchema.js +22 -0
  7. package/dist/HicAdapter/configSchema.js.map +1 -0
  8. package/dist/HicAdapter/index.d.ts +3 -0
  9. package/dist/HicAdapter/index.js +39 -0
  10. package/dist/HicAdapter/index.js.map +1 -0
  11. package/dist/HicRenderer/HicRenderer.d.ts +53 -0
  12. package/dist/HicRenderer/HicRenderer.js +126 -0
  13. package/dist/HicRenderer/HicRenderer.js.map +1 -0
  14. package/dist/HicRenderer/components/HicRendering.d.ts +10 -0
  15. package/dist/HicRenderer/components/HicRendering.js +16 -0
  16. package/dist/HicRenderer/components/HicRendering.js.map +1 -0
  17. package/dist/HicRenderer/configSchema.d.ts +28 -0
  18. package/dist/HicRenderer/configSchema.js +37 -0
  19. package/dist/HicRenderer/configSchema.js.map +1 -0
  20. package/dist/HicRenderer/index.d.ts +3 -0
  21. package/dist/HicRenderer/index.js +17 -0
  22. package/dist/HicRenderer/index.js.map +1 -0
  23. package/dist/HicTrack/configSchema.d.ts +75 -0
  24. package/dist/HicTrack/configSchema.js +17 -0
  25. package/dist/HicTrack/configSchema.js.map +1 -0
  26. package/dist/HicTrack/index.d.ts +3 -0
  27. package/dist/HicTrack/index.js +20 -0
  28. package/dist/HicTrack/index.js.map +1 -0
  29. package/dist/LinearHicDisplay/configSchema.d.ts +33 -0
  30. package/dist/LinearHicDisplay/configSchema.js +25 -0
  31. package/dist/LinearHicDisplay/configSchema.js.map +1 -0
  32. package/dist/LinearHicDisplay/index.d.ts +3 -0
  33. package/dist/LinearHicDisplay/index.js +24 -0
  34. package/dist/LinearHicDisplay/index.js.map +1 -0
  35. package/dist/LinearHicDisplay/model.d.ts +332 -0
  36. package/dist/LinearHicDisplay/model.js +95 -0
  37. package/dist/LinearHicDisplay/model.js.map +1 -0
  38. package/dist/index.d.ts +7 -0
  39. package/dist/index.js +56 -0
  40. package/dist/index.js.map +1 -0
  41. package/esm/HicAdapter/HicAdapter.d.ts +32 -0
  42. package/esm/HicAdapter/HicAdapter.js +77 -0
  43. package/esm/HicAdapter/HicAdapter.js.map +1 -0
  44. package/esm/HicAdapter/configSchema.d.ts +13 -0
  45. package/esm/HicAdapter/configSchema.js +20 -0
  46. package/esm/HicAdapter/configSchema.js.map +1 -0
  47. package/esm/HicAdapter/index.d.ts +3 -0
  48. package/esm/HicAdapter/index.js +11 -0
  49. package/esm/HicAdapter/index.js.map +1 -0
  50. package/esm/HicRenderer/HicRenderer.d.ts +53 -0
  51. package/esm/HicRenderer/HicRenderer.js +97 -0
  52. package/esm/HicRenderer/HicRenderer.js.map +1 -0
  53. package/esm/HicRenderer/components/HicRendering.d.ts +10 -0
  54. package/esm/HicRenderer/components/HicRendering.js +11 -0
  55. package/esm/HicRenderer/components/HicRendering.js.map +1 -0
  56. package/esm/HicRenderer/configSchema.d.ts +28 -0
  57. package/esm/HicRenderer/configSchema.js +35 -0
  58. package/esm/HicRenderer/configSchema.js.map +1 -0
  59. package/esm/HicRenderer/index.d.ts +3 -0
  60. package/esm/HicRenderer/index.js +12 -0
  61. package/esm/HicRenderer/index.js.map +1 -0
  62. package/esm/HicTrack/configSchema.d.ts +75 -0
  63. package/esm/HicTrack/configSchema.js +15 -0
  64. package/esm/HicTrack/configSchema.js.map +1 -0
  65. package/esm/HicTrack/index.d.ts +3 -0
  66. package/esm/HicTrack/index.js +15 -0
  67. package/esm/HicTrack/index.js.map +1 -0
  68. package/esm/LinearHicDisplay/configSchema.d.ts +33 -0
  69. package/esm/LinearHicDisplay/configSchema.js +23 -0
  70. package/esm/LinearHicDisplay/configSchema.js.map +1 -0
  71. package/esm/LinearHicDisplay/index.d.ts +3 -0
  72. package/esm/LinearHicDisplay/index.js +19 -0
  73. package/esm/LinearHicDisplay/index.js.map +1 -0
  74. package/esm/LinearHicDisplay/model.d.ts +332 -0
  75. package/esm/LinearHicDisplay/model.js +93 -0
  76. package/esm/LinearHicDisplay/model.js.map +1 -0
  77. package/esm/index.d.ts +7 -0
  78. package/esm/index.js +50 -0
  79. package/esm/index.js.map +1 -0
  80. package/package.json +60 -0
  81. package/src/HicAdapter/HicAdapter.ts +150 -0
  82. package/src/HicAdapter/configSchema.ts +26 -0
  83. package/src/HicAdapter/index.ts +15 -0
  84. package/src/HicRenderer/HicRenderer.tsx +170 -0
  85. package/src/HicRenderer/components/HicRendering.test.tsx +21 -0
  86. package/src/HicRenderer/components/HicRendering.tsx +24 -0
  87. package/src/HicRenderer/components/__snapshots__/HicRendering.test.tsx.snap +14 -0
  88. package/src/HicRenderer/configSchema.ts +42 -0
  89. package/src/HicRenderer/index.ts +17 -0
  90. package/src/HicTrack/configSchema.ts +23 -0
  91. package/src/HicTrack/index.ts +16 -0
  92. package/src/LinearHicDisplay/configSchema.ts +33 -0
  93. package/src/LinearHicDisplay/index.ts +21 -0
  94. package/src/LinearHicDisplay/model.ts +104 -0
  95. package/src/declare.d.ts +2 -0
  96. 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
+ })
@@ -0,0 +1,2 @@
1
+ declare module '@jbrowse/core/util/offscreenCanvasPonyfill'
2
+ declare module 'hic-straw'
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
+ }