@jbrowse/plugin-sequence 2.0.0 → 2.1.2

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 (142) hide show
  1. package/dist/BgzipFastaAdapter/BgzipFastaAdapter.js +16 -34
  2. package/dist/BgzipFastaAdapter/BgzipFastaAdapter.js.map +1 -1
  3. package/dist/BgzipFastaAdapter/configSchema.js +1 -1
  4. package/dist/BgzipFastaAdapter/configSchema.js.map +1 -1
  5. package/dist/BgzipFastaAdapter/index.d.ts +3 -1
  6. package/dist/BgzipFastaAdapter/index.js +38 -3
  7. package/dist/BgzipFastaAdapter/index.js.map +1 -1
  8. package/dist/ChromSizesAdapter/ChromSizesAdapter.d.ts +9 -9
  9. package/dist/ChromSizesAdapter/ChromSizesAdapter.js +34 -128
  10. package/dist/ChromSizesAdapter/ChromSizesAdapter.js.map +1 -1
  11. package/dist/ChromSizesAdapter/configSchema.js +1 -1
  12. package/dist/ChromSizesAdapter/configSchema.js.map +1 -1
  13. package/dist/ChromSizesAdapter/index.d.ts +3 -1
  14. package/dist/ChromSizesAdapter/index.js +38 -3
  15. package/dist/ChromSizesAdapter/index.js.map +1 -1
  16. package/dist/DivSequenceRenderer/components/DivSequenceRendering.js +51 -89
  17. package/dist/DivSequenceRenderer/components/DivSequenceRendering.js.map +1 -1
  18. package/dist/DivSequenceRenderer/configSchema.js +1 -1
  19. package/dist/DivSequenceRenderer/configSchema.js.map +1 -1
  20. package/dist/DivSequenceRenderer/index.d.ts +3 -2
  21. package/dist/DivSequenceRenderer/index.js +25 -5
  22. package/dist/DivSequenceRenderer/index.js.map +1 -1
  23. package/dist/GCContentAdapter/GCContentAdapter.d.ts +1 -7
  24. package/dist/GCContentAdapter/GCContentAdapter.js +75 -180
  25. package/dist/GCContentAdapter/GCContentAdapter.js.map +1 -1
  26. package/dist/GCContentAdapter/configSchema.js +3 -3
  27. package/dist/GCContentAdapter/configSchema.js.map +1 -1
  28. package/dist/GCContentAdapter/index.d.ts +1 -4
  29. package/dist/GCContentAdapter/index.js +15 -7
  30. package/dist/GCContentAdapter/index.js.map +1 -1
  31. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.js +77 -171
  32. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.js.map +1 -1
  33. package/dist/IndexedFastaAdapter/configSchema.js +1 -1
  34. package/dist/IndexedFastaAdapter/configSchema.js.map +1 -1
  35. package/dist/IndexedFastaAdapter/index.d.ts +3 -1
  36. package/dist/IndexedFastaAdapter/index.js +38 -3
  37. package/dist/IndexedFastaAdapter/index.js.map +1 -1
  38. package/dist/LinearReferenceSequenceDisplay/configSchema.js +6 -3
  39. package/dist/LinearReferenceSequenceDisplay/configSchema.js.map +1 -1
  40. package/dist/LinearReferenceSequenceDisplay/index.d.ts +3 -2
  41. package/dist/LinearReferenceSequenceDisplay/index.js +16 -5
  42. package/dist/LinearReferenceSequenceDisplay/index.js.map +1 -1
  43. package/dist/LinearReferenceSequenceDisplay/model.d.ts +1 -1
  44. package/dist/LinearReferenceSequenceDisplay/model.js +29 -33
  45. package/dist/LinearReferenceSequenceDisplay/model.js.map +1 -1
  46. package/dist/{referenceSeqTrackConfig.d.ts → ReferenceSequenceTrack/configSchema.d.ts} +0 -0
  47. package/dist/{referenceSeqTrackConfig.js → ReferenceSequenceTrack/configSchema.js} +19 -30
  48. package/dist/ReferenceSequenceTrack/configSchema.js.map +1 -0
  49. package/dist/ReferenceSequenceTrack/index.d.ts +3 -0
  50. package/dist/ReferenceSequenceTrack/index.js +19 -0
  51. package/dist/ReferenceSequenceTrack/index.js.map +1 -0
  52. package/dist/SequenceSearchAdapter/SequenceSearchAdapter.d.ts +8 -0
  53. package/dist/SequenceSearchAdapter/SequenceSearchAdapter.js +84 -0
  54. package/dist/SequenceSearchAdapter/SequenceSearchAdapter.js.map +1 -0
  55. package/dist/SequenceSearchAdapter/configSchema.d.ts +2 -0
  56. package/dist/SequenceSearchAdapter/configSchema.js +28 -0
  57. package/dist/SequenceSearchAdapter/configSchema.js.map +1 -0
  58. package/dist/SequenceSearchAdapter/index.d.ts +3 -0
  59. package/dist/SequenceSearchAdapter/index.js +44 -0
  60. package/dist/SequenceSearchAdapter/index.js.map +1 -0
  61. package/dist/TwoBitAdapter/TwoBitAdapter.js +66 -174
  62. package/dist/TwoBitAdapter/TwoBitAdapter.js.map +1 -1
  63. package/dist/TwoBitAdapter/configSchema.js +1 -1
  64. package/dist/TwoBitAdapter/configSchema.js.map +1 -1
  65. package/dist/TwoBitAdapter/index.d.ts +3 -1
  66. package/dist/TwoBitAdapter/index.js +38 -3
  67. package/dist/TwoBitAdapter/index.js.map +1 -1
  68. package/dist/createExtensionPoints.d.ts +3 -0
  69. package/dist/createExtensionPoints.js +86 -0
  70. package/dist/createExtensionPoints.js.map +1 -0
  71. package/dist/index.js +27 -261
  72. package/dist/index.js.map +1 -1
  73. package/esm/BgzipFastaAdapter/index.d.ts +3 -1
  74. package/esm/BgzipFastaAdapter/index.js +15 -1
  75. package/esm/BgzipFastaAdapter/index.js.map +1 -1
  76. package/esm/ChromSizesAdapter/ChromSizesAdapter.d.ts +9 -9
  77. package/esm/ChromSizesAdapter/ChromSizesAdapter.js +20 -26
  78. package/esm/ChromSizesAdapter/ChromSizesAdapter.js.map +1 -1
  79. package/esm/ChromSizesAdapter/index.d.ts +3 -1
  80. package/esm/ChromSizesAdapter/index.js +15 -1
  81. package/esm/ChromSizesAdapter/index.js.map +1 -1
  82. package/esm/DivSequenceRenderer/index.d.ts +3 -2
  83. package/esm/DivSequenceRenderer/index.js +25 -2
  84. package/esm/DivSequenceRenderer/index.js.map +1 -1
  85. package/esm/GCContentAdapter/GCContentAdapter.d.ts +1 -7
  86. package/esm/GCContentAdapter/GCContentAdapter.js +7 -18
  87. package/esm/GCContentAdapter/GCContentAdapter.js.map +1 -1
  88. package/esm/GCContentAdapter/index.d.ts +1 -4
  89. package/esm/GCContentAdapter/index.js +11 -3
  90. package/esm/GCContentAdapter/index.js.map +1 -1
  91. package/esm/IndexedFastaAdapter/index.d.ts +3 -1
  92. package/esm/IndexedFastaAdapter/index.js +15 -1
  93. package/esm/IndexedFastaAdapter/index.js.map +1 -1
  94. package/esm/LinearReferenceSequenceDisplay/configSchema.js +1 -1
  95. package/esm/LinearReferenceSequenceDisplay/configSchema.js.map +1 -1
  96. package/esm/LinearReferenceSequenceDisplay/index.d.ts +3 -2
  97. package/esm/LinearReferenceSequenceDisplay/index.js +16 -2
  98. package/esm/LinearReferenceSequenceDisplay/index.js.map +1 -1
  99. package/esm/LinearReferenceSequenceDisplay/model.d.ts +1 -1
  100. package/esm/{referenceSeqTrackConfig.d.ts → ReferenceSequenceTrack/configSchema.d.ts} +0 -0
  101. package/esm/{referenceSeqTrackConfig.js → ReferenceSequenceTrack/configSchema.js} +1 -1
  102. package/esm/ReferenceSequenceTrack/configSchema.js.map +1 -0
  103. package/esm/ReferenceSequenceTrack/index.d.ts +3 -0
  104. package/esm/ReferenceSequenceTrack/index.js +14 -0
  105. package/esm/ReferenceSequenceTrack/index.js.map +1 -0
  106. package/esm/SequenceSearchAdapter/SequenceSearchAdapter.d.ts +8 -0
  107. package/esm/SequenceSearchAdapter/SequenceSearchAdapter.js +81 -0
  108. package/esm/SequenceSearchAdapter/SequenceSearchAdapter.js.map +1 -0
  109. package/esm/SequenceSearchAdapter/configSchema.d.ts +2 -0
  110. package/esm/SequenceSearchAdapter/configSchema.js +26 -0
  111. package/esm/SequenceSearchAdapter/configSchema.js.map +1 -0
  112. package/esm/SequenceSearchAdapter/index.d.ts +3 -0
  113. package/esm/SequenceSearchAdapter/index.js +16 -0
  114. package/esm/SequenceSearchAdapter/index.js.map +1 -0
  115. package/esm/TwoBitAdapter/index.d.ts +3 -1
  116. package/esm/TwoBitAdapter/index.js +15 -1
  117. package/esm/TwoBitAdapter/index.js.map +1 -1
  118. package/esm/createExtensionPoints.d.ts +3 -0
  119. package/esm/createExtensionPoints.js +84 -0
  120. package/esm/createExtensionPoints.js.map +1 -0
  121. package/esm/index.js +19 -186
  122. package/esm/index.js.map +1 -1
  123. package/package.json +6 -8
  124. package/src/BgzipFastaAdapter/index.ts +22 -1
  125. package/src/ChromSizesAdapter/ChromSizesAdapter.ts +22 -42
  126. package/src/ChromSizesAdapter/index.ts +22 -1
  127. package/src/DivSequenceRenderer/index.ts +31 -2
  128. package/src/GCContentAdapter/GCContentAdapter.ts +15 -25
  129. package/src/GCContentAdapter/index.ts +17 -4
  130. package/src/IndexedFastaAdapter/index.ts +22 -1
  131. package/src/LinearReferenceSequenceDisplay/configSchema.ts +1 -1
  132. package/src/LinearReferenceSequenceDisplay/index.ts +19 -2
  133. package/src/{referenceSeqTrackConfig.ts → ReferenceSequenceTrack/configSchema.ts} +0 -0
  134. package/src/ReferenceSequenceTrack/index.ts +21 -0
  135. package/src/SequenceSearchAdapter/SequenceSearchAdapter.ts +103 -0
  136. package/src/SequenceSearchAdapter/configSchema.ts +31 -0
  137. package/src/SequenceSearchAdapter/index.ts +22 -0
  138. package/src/TwoBitAdapter/index.ts +21 -1
  139. package/src/createExtensionPoints.ts +122 -0
  140. package/src/index.ts +20 -268
  141. package/dist/referenceSeqTrackConfig.js.map +0 -1
  142. package/esm/referenceSeqTrackConfig.js.map +0 -1
@@ -0,0 +1,103 @@
1
+ import {
2
+ BaseFeatureDataAdapter,
3
+ BaseOptions,
4
+ } from '@jbrowse/core/data_adapters/BaseAdapter'
5
+ import { ObservableCreate } from '@jbrowse/core/util/rxjs'
6
+ import {
7
+ SimpleFeature,
8
+ Feature,
9
+ Region,
10
+ revcom,
11
+ doesIntersect2,
12
+ } from '@jbrowse/core/util'
13
+ import { toArray } from 'rxjs/operators'
14
+
15
+ export default class extends BaseFeatureDataAdapter {
16
+ public async configure() {
17
+ const adapter = await this.getSubAdapter?.(this.getConf('sequenceAdapter'))
18
+ if (!adapter) {
19
+ throw new Error('Error getting subadapter')
20
+ }
21
+ return adapter.dataAdapter as BaseFeatureDataAdapter
22
+ }
23
+
24
+ public async getRefNames() {
25
+ const adapter = await this.configure()
26
+ return adapter.getRefNames()
27
+ }
28
+
29
+ public getFeatures(query: Region, opts: BaseOptions) {
30
+ return ObservableCreate<Feature>(async observer => {
31
+ const sequenceAdapter = await this.configure()
32
+ const hw = 1000
33
+ let { start: queryStart, end: queryEnd } = query
34
+ queryStart = Math.max(0, queryStart - hw)
35
+ queryEnd += hw
36
+
37
+ if (queryEnd < 0 || queryStart > queryEnd) {
38
+ observer.complete()
39
+ return
40
+ }
41
+
42
+ const ret = sequenceAdapter.getFeatures(
43
+ {
44
+ ...query,
45
+ start: queryStart,
46
+ end: queryEnd,
47
+ },
48
+ opts,
49
+ )
50
+ const feats = await ret.pipe(toArray()).toPromise()
51
+ const residues: string = feats[0]?.get('seq') || ''
52
+ const search = this.getConf('search')
53
+ const searchFoward = this.getConf('searchForward')
54
+ const searchReverse = this.getConf('searchReverse')
55
+ const caseInsensitive = this.getConf('caseInsensitive')
56
+ const re = new RegExp(search, 'g' + (caseInsensitive ? 'i' : ''))
57
+
58
+ if (search) {
59
+ if (searchFoward) {
60
+ const matches = residues.matchAll(re)
61
+ for (const match of matches) {
62
+ const s = queryStart + (match.index || 0)
63
+
64
+ if (doesIntersect2(s, s + search.length, query.start, query.end)) {
65
+ observer.next(
66
+ new SimpleFeature({
67
+ uniqueId: `${this.id}-match-${s}-p`,
68
+ refName: query.refName,
69
+ start: s,
70
+ end: s + match[0].length,
71
+ name: match[0],
72
+ strand: 1,
73
+ }),
74
+ )
75
+ }
76
+ }
77
+ }
78
+ if (searchReverse) {
79
+ const matches = revcom(residues).matchAll(re)
80
+ for (const match of matches) {
81
+ const s = queryEnd - (match.index || 0)
82
+ if (doesIntersect2(s, s + search.length, query.start, query.end)) {
83
+ observer.next(
84
+ new SimpleFeature({
85
+ uniqueId: `${this.id}-match-${s}-n`,
86
+ refName: query.refName,
87
+ start: s - match[0].length,
88
+ name: match[0],
89
+ end: s,
90
+ strand: -1,
91
+ }),
92
+ )
93
+ }
94
+ }
95
+ }
96
+ }
97
+
98
+ observer.complete()
99
+ })
100
+ }
101
+
102
+ public freeResources() {}
103
+ }
@@ -0,0 +1,31 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration'
2
+
3
+ const configSchema = ConfigurationSchema(
4
+ 'SequenceSearchAdapter',
5
+ {
6
+ search: {
7
+ type: 'string',
8
+ defaultValue: '',
9
+ description: 'Search string or regex to search for',
10
+ },
11
+ sequenceAdapter: {
12
+ type: 'frozen',
13
+ defaultValue: null,
14
+ },
15
+ searchForward: {
16
+ type: 'boolean',
17
+ defaultValue: true,
18
+ },
19
+ searchReverse: {
20
+ type: 'boolean',
21
+ defaultValue: true,
22
+ },
23
+ caseInsensitive: {
24
+ type: 'boolean',
25
+ defaultValue: true,
26
+ },
27
+ },
28
+ { explicitlyTyped: true },
29
+ )
30
+
31
+ export default configSchema
@@ -0,0 +1,22 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager'
2
+ import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'
3
+
4
+ import configSchema from './configSchema'
5
+
6
+ export default (pluginManager: PluginManager) => {
7
+ pluginManager.addAdapterType(
8
+ () =>
9
+ new AdapterType({
10
+ name: 'SequenceSearchAdapter',
11
+ adapterMetadata: {
12
+ category: null,
13
+ hiddenFromGUI: true,
14
+ displayName: null,
15
+ description: null,
16
+ },
17
+ configSchema,
18
+ getAdapterClass: () =>
19
+ import('./SequenceSearchAdapter').then(r => r.default),
20
+ }),
21
+ )
22
+ }
@@ -1 +1,21 @@
1
- export { default as configSchema } from './configSchema'
1
+ import PluginManager from '@jbrowse/core/PluginManager'
2
+ import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'
3
+
4
+ import configSchema from './configSchema'
5
+
6
+ export default (pluginManager: PluginManager) => {
7
+ pluginManager.addAdapterType(
8
+ () =>
9
+ new AdapterType({
10
+ name: 'TwoBitAdapter',
11
+ configSchema,
12
+ adapterMetadata: {
13
+ category: null,
14
+ hiddenFromGUI: true,
15
+ displayName: null,
16
+ description: null,
17
+ },
18
+ getAdapterClass: () => import('./TwoBitAdapter').then(r => r.default),
19
+ }),
20
+ )
21
+ }
@@ -0,0 +1,122 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager'
2
+ import { FileLocation } from '@jbrowse/core/util/types'
3
+ import {
4
+ makeIndex,
5
+ getFileName,
6
+ AdapterGuesser,
7
+ TrackTypeGuesser,
8
+ } from '@jbrowse/core/util/tracks'
9
+
10
+ export default (pluginManager: PluginManager) => {
11
+ pluginManager.addToExtensionPoint(
12
+ 'Core-guessAdapterForLocation',
13
+ (adapterGuesser: AdapterGuesser) => {
14
+ return (
15
+ file: FileLocation,
16
+ index?: FileLocation,
17
+ adapterHint?: string,
18
+ ) => {
19
+ const regexGuess = /\.2bit$/i
20
+ const adapterName = 'TwoBitAdapter'
21
+ const fileName = getFileName(file)
22
+ const obj = {
23
+ type: adapterName,
24
+ twoBitLocation: file,
25
+ }
26
+ if (regexGuess.test(fileName) && !adapterHint) {
27
+ return obj
28
+ } else if (adapterHint === adapterName) {
29
+ return obj
30
+ }
31
+ return adapterGuesser(file, index, adapterHint)
32
+ }
33
+ },
34
+ )
35
+ pluginManager.addToExtensionPoint(
36
+ 'Core-guessTrackTypeForLocation',
37
+ (trackTypeGuesser: TrackTypeGuesser) => {
38
+ return (adapterName: string) => {
39
+ if (adapterName === 'TwoBitAdapter') {
40
+ return 'ReferenceSequenceTrack'
41
+ }
42
+ return trackTypeGuesser(adapterName)
43
+ }
44
+ },
45
+ )
46
+
47
+ pluginManager.addToExtensionPoint(
48
+ 'Core-guessAdapterForLocation',
49
+ (adapterGuesser: AdapterGuesser) => {
50
+ return (
51
+ file: FileLocation,
52
+ index?: FileLocation,
53
+ adapterHint?: string,
54
+ ) => {
55
+ const regexGuess = /\.(fa|fasta|fas|fna|mfa)$/i
56
+ const adapterName = 'IndexedFastaAdapter'
57
+ const fileName = getFileName(file)
58
+ const obj = {
59
+ type: adapterName,
60
+ fastaLocation: file,
61
+ faiLocation: index || makeIndex(file, '.fai'),
62
+ }
63
+
64
+ if (regexGuess.test(fileName) && !adapterHint) {
65
+ return obj
66
+ } else if (adapterHint === adapterName) {
67
+ return obj
68
+ }
69
+ return adapterGuesser(file, index, adapterHint)
70
+ }
71
+ },
72
+ )
73
+ pluginManager.addToExtensionPoint(
74
+ 'Core-guessTrackTypeForLocation',
75
+ (trackTypeGuesser: TrackTypeGuesser) => {
76
+ return (adapterName: string) => {
77
+ if (adapterName === 'IndexedFastaAdapter') {
78
+ return 'ReferenceSequenceTrack'
79
+ }
80
+ return trackTypeGuesser(adapterName)
81
+ }
82
+ },
83
+ )
84
+
85
+ pluginManager.addToExtensionPoint(
86
+ 'Core-guessAdapterForLocation',
87
+ (adapterGuesser: AdapterGuesser) => {
88
+ return (
89
+ file: FileLocation,
90
+ index?: FileLocation,
91
+ adapterHint?: string,
92
+ ) => {
93
+ const regexGuess = /\.(fa|fasta|fas|fna|mfa)\.b?gz$/i
94
+ const adapterName = 'BgzipFastaAdapter'
95
+ const fileName = getFileName(file)
96
+ const obj = {
97
+ type: adapterName,
98
+ faiLocation: makeIndex(file, '.fai'),
99
+ gziLocation: makeIndex(file, '.gzi'),
100
+ }
101
+
102
+ if (regexGuess.test(fileName) && !adapterHint) {
103
+ return obj
104
+ } else if (adapterHint === adapterName) {
105
+ return obj
106
+ }
107
+ return adapterGuesser(file, index, adapterHint)
108
+ }
109
+ },
110
+ )
111
+ pluginManager.addToExtensionPoint(
112
+ 'Core-guessTrackTypeForLocation',
113
+ (trackTypeGuesser: TrackTypeGuesser) => {
114
+ return (adapterName: string) => {
115
+ if (adapterName === 'BgzipFastaAdapter') {
116
+ return 'ReferenceSequenceTrack'
117
+ }
118
+ return trackTypeGuesser(adapterName)
119
+ }
120
+ },
121
+ )
122
+ }
package/src/index.ts CHANGED
@@ -1,278 +1,30 @@
1
- import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'
2
- import { Region, FileLocation } from '@jbrowse/core/util/types'
3
- import { createBaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models'
4
- import FeatureRendererType from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType'
5
- import TrackType from '@jbrowse/core/pluggableElementTypes/TrackType'
6
1
  import Plugin from '@jbrowse/core/Plugin'
7
2
  import PluginManager from '@jbrowse/core/PluginManager'
8
- import { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view'
9
- import {
10
- makeIndex,
11
- AdapterGuesser,
12
- getFileName,
13
- TrackTypeGuesser,
14
- } from '@jbrowse/core/util/tracks'
15
- import { configSchema as bgzipFastaAdapterConfigSchema } from './BgzipFastaAdapter'
16
- import { configSchema as chromSizesAdapterConfigSchema } from './ChromSizesAdapter'
17
- import {
18
- configSchema as divSequenceRendererConfigSchema,
19
- ReactComponent as DivSequenceRendererReactComponent,
20
- } from './DivSequenceRenderer'
21
- import { configSchema as indexedFastaAdapterConfigSchema } from './IndexedFastaAdapter'
22
- import {
23
- configSchema as linearReferenceSequenceDisplayConfigSchema,
24
- modelFactory as linearReferenceSequenceDisplayModelFactory,
25
- } from './LinearReferenceSequenceDisplay'
26
- import { configSchema as twoBitAdapterConfigSchema } from './TwoBitAdapter'
27
- import GCContentAdapterF from './GCContentAdapter'
28
- import { createReferenceSeqTrackConfig } from './referenceSeqTrackConfig'
29
-
30
- /* adjust in both directions */
31
- class DivSequenceRenderer extends FeatureRendererType {
32
- supportsSVG = true
33
3
 
34
- getExpandedRegion(region: Region) {
35
- return {
36
- ...region,
37
- start: Math.max(region.start - 3, 0),
38
- end: region.end + 3,
39
- }
40
- }
41
- }
4
+ import TwoBitAdapterF from './TwoBitAdapter'
5
+ import DivSequenceRendererF from './DivSequenceRenderer'
6
+ import BgzipFastaAdapterF from './BgzipFastaAdapter'
7
+ import ChromSizesAdapterF from './ChromSizesAdapter'
8
+ import IndexedFastaAdapterF from './IndexedFastaAdapter'
9
+ import GCContentAdapterF from './GCContentAdapter'
10
+ import SequenceSearchAdapterF from './SequenceSearchAdapter'
11
+ import ReferenceSequenceTrackF from './ReferenceSequenceTrack'
12
+ import LinearReferenceSequenceDisplayF from './LinearReferenceSequenceDisplay'
13
+ import createExtensionPoints from './createExtensionPoints'
42
14
 
43
15
  export default class SequencePlugin extends Plugin {
44
16
  name = 'SequencePlugin'
45
17
 
46
18
  install(pluginManager: PluginManager) {
47
- pluginManager.addAdapterType(
48
- () =>
49
- new AdapterType({
50
- name: 'TwoBitAdapter',
51
- configSchema: twoBitAdapterConfigSchema,
52
- adapterMetadata: {
53
- category: null,
54
- hiddenFromGUI: true,
55
- displayName: null,
56
- description: null,
57
- },
58
- getAdapterClass: () =>
59
- import('./TwoBitAdapter/TwoBitAdapter').then(r => r.default),
60
- }),
61
- )
62
- pluginManager.addToExtensionPoint(
63
- 'Core-guessAdapterForLocation',
64
- (adapterGuesser: AdapterGuesser) => {
65
- return (
66
- file: FileLocation,
67
- index?: FileLocation,
68
- adapterHint?: string,
69
- ) => {
70
- const regexGuess = /\.2bit$/i
71
- const adapterName = 'TwoBitAdapter'
72
- const fileName = getFileName(file)
73
- const obj = {
74
- type: adapterName,
75
- twoBitLocation: file,
76
- }
77
- if (regexGuess.test(fileName) && !adapterHint) {
78
- return obj
79
- } else if (adapterHint === adapterName) {
80
- return obj
81
- }
82
- return adapterGuesser(file, index, adapterHint)
83
- }
84
- },
85
- )
86
- pluginManager.addToExtensionPoint(
87
- 'Core-guessTrackTypeForLocation',
88
- (trackTypeGuesser: TrackTypeGuesser) => {
89
- return (adapterName: string) => {
90
- if (adapterName === 'TwoBitAdapter') {
91
- return 'ReferenceSequenceTrack'
92
- }
93
- return trackTypeGuesser(adapterName)
94
- }
95
- },
96
- )
97
-
98
- pluginManager.addAdapterType(
99
- () =>
100
- new AdapterType({
101
- name: 'ChromSizesAdapter',
102
- configSchema: chromSizesAdapterConfigSchema,
103
- adapterMetadata: {
104
- category: null,
105
- hiddenFromGUI: true,
106
- displayName: null,
107
- description: null,
108
- },
109
- getAdapterClass: () =>
110
- import('./ChromSizesAdapter/ChromSizesAdapter').then(
111
- r => r.default,
112
- ),
113
- }),
114
- )
115
-
116
- pluginManager.addAdapterType(
117
- () =>
118
- new AdapterType({
119
- name: 'IndexedFastaAdapter',
120
- configSchema: indexedFastaAdapterConfigSchema,
121
- adapterMetadata: {
122
- category: null,
123
- hiddenFromGUI: true,
124
- displayName: null,
125
- description: null,
126
- },
127
- getAdapterClass: () =>
128
- import('./IndexedFastaAdapter/IndexedFastaAdapter').then(
129
- r => r.default,
130
- ),
131
- }),
132
- )
133
- pluginManager.addToExtensionPoint(
134
- 'Core-guessAdapterForLocation',
135
- (adapterGuesser: AdapterGuesser) => {
136
- return (
137
- file: FileLocation,
138
- index?: FileLocation,
139
- adapterHint?: string,
140
- ) => {
141
- const regexGuess = /\.(fa|fasta|fas|fna|mfa)$/i
142
- const adapterName = 'IndexedFastaAdapter'
143
- const fileName = getFileName(file)
144
- const obj = {
145
- type: adapterName,
146
- fastaLocation: file,
147
- faiLocation: index || makeIndex(file, '.fai'),
148
- }
149
-
150
- if (regexGuess.test(fileName) && !adapterHint) {
151
- return obj
152
- } else if (adapterHint === adapterName) {
153
- return obj
154
- }
155
- return adapterGuesser(file, index, adapterHint)
156
- }
157
- },
158
- )
159
- pluginManager.addToExtensionPoint(
160
- 'Core-guessTrackTypeForLocation',
161
- (trackTypeGuesser: TrackTypeGuesser) => {
162
- return (adapterName: string) => {
163
- if (adapterName === 'IndexedFastaAdapter') {
164
- return 'ReferenceSequenceTrack'
165
- }
166
- return trackTypeGuesser(adapterName)
167
- }
168
- },
169
- )
170
-
171
- pluginManager.addAdapterType(
172
- () =>
173
- new AdapterType({
174
- name: 'BgzipFastaAdapter',
175
- configSchema: bgzipFastaAdapterConfigSchema,
176
- adapterMetadata: {
177
- category: null,
178
- hiddenFromGUI: true,
179
- displayName: null,
180
- description: null,
181
- },
182
- getAdapterClass: () =>
183
- import('./BgzipFastaAdapter/BgzipFastaAdapter').then(
184
- r => r.default,
185
- ),
186
- }),
187
- )
188
-
189
- pluginManager.addToExtensionPoint(
190
- 'Core-guessAdapterForLocation',
191
- (adapterGuesser: AdapterGuesser) => {
192
- return (
193
- file: FileLocation,
194
- index?: FileLocation,
195
- adapterHint?: string,
196
- ) => {
197
- const regexGuess = /\.(fa|fasta|fas|fna|mfa)\.b?gz$/i
198
- const adapterName = 'BgzipFastaAdapter'
199
- const fileName = getFileName(file)
200
- const obj = {
201
- type: adapterName,
202
- faiLocation: makeIndex(file, '.fai'),
203
- gziLocation: makeIndex(file, '.gzi'),
204
- }
205
-
206
- if (regexGuess.test(fileName) && !adapterHint) {
207
- return obj
208
- } else if (adapterHint === adapterName) {
209
- return obj
210
- }
211
- return adapterGuesser(file, index, adapterHint)
212
- }
213
- },
214
- )
215
- pluginManager.addToExtensionPoint(
216
- 'Core-guessTrackTypeForLocation',
217
- (trackTypeGuesser: TrackTypeGuesser) => {
218
- return (adapterName: string) => {
219
- if (adapterName === 'BgzipFastaAdapter') {
220
- return 'ReferenceSequenceTrack'
221
- }
222
- return trackTypeGuesser(adapterName)
223
- }
224
- },
225
- )
226
-
227
- pluginManager.addAdapterType(
228
- () =>
229
- new AdapterType({
230
- name: 'GCContentAdapter',
231
- adapterMetadata: {
232
- category: null,
233
- hiddenFromGUI: true,
234
- displayName: null,
235
- description: null,
236
- },
237
- ...pluginManager.load(GCContentAdapterF),
238
- }),
239
- )
240
- pluginManager.addTrackType(() => {
241
- const configSchema = createReferenceSeqTrackConfig(pluginManager)
242
-
243
- return new TrackType({
244
- name: 'ReferenceSequenceTrack',
245
- configSchema,
246
- stateModel: createBaseTrackModel(
247
- pluginManager,
248
- 'ReferenceSequenceTrack',
249
- configSchema,
250
- ),
251
- })
252
- })
253
-
254
- pluginManager.addDisplayType(() => {
255
- const stateModel = linearReferenceSequenceDisplayModelFactory(
256
- linearReferenceSequenceDisplayConfigSchema,
257
- )
258
- return {
259
- name: 'LinearReferenceSequenceDisplay',
260
- configSchema: linearReferenceSequenceDisplayConfigSchema,
261
- stateModel,
262
- trackType: 'ReferenceSequenceTrack',
263
- viewType: 'LinearGenomeView',
264
- ReactComponent: BaseLinearDisplayComponent,
265
- }
266
- })
267
-
268
- pluginManager.addRendererType(
269
- () =>
270
- new DivSequenceRenderer({
271
- name: 'DivSequenceRenderer',
272
- ReactComponent: DivSequenceRendererReactComponent,
273
- configSchema: divSequenceRendererConfigSchema,
274
- pluginManager,
275
- }),
276
- )
19
+ DivSequenceRendererF(pluginManager)
20
+ TwoBitAdapterF(pluginManager)
21
+ BgzipFastaAdapterF(pluginManager)
22
+ ChromSizesAdapterF(pluginManager)
23
+ IndexedFastaAdapterF(pluginManager)
24
+ GCContentAdapterF(pluginManager)
25
+ SequenceSearchAdapterF(pluginManager)
26
+ ReferenceSequenceTrackF(pluginManager)
27
+ LinearReferenceSequenceDisplayF(pluginManager)
28
+ createExtensionPoints(pluginManager)
277
29
  }
278
30
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"referenceSeqTrackConfig.js","sourceRoot":"","sources":["../src/referenceSeqTrackConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,uDAAuD;AACvD,mDAAuC;AACvC,6DAAiE;AAGjE;;;;EAIE;AACF,SAAgB,6BAA6B,CAAC,aAA4B;IACxE,OAAO,IAAA,mCAAmB,EACxB,wBAAwB,EACxB;QACE,OAAO,EAAE,aAAa,CAAC,yBAAyB,CAAC,SAAS,CAAC;QAC3D,QAAQ,EAAE,uBAAK,CAAC,KAAK,CAAC,aAAa,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;QACzE,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,qBAAqB;YAClC,YAAY,EAAE,EAAE;SACjB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,kCAAkC;YAC/C,YAAY,EAAE,EAAE;SACjB;KACF,EACD;QACE,kBAAkB,EAAE,UAAA,CAAC;YACnB,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1C,IAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAA;YACtB,IAAA,KAAkB,IAAI,SAAT,EAAb,QAAQ,mBAAG,EAAE,KAAA,CAAS;YAC9B,IAAI,IAAI,CAAC,OAAO,KAAK,eAAe,EAAE;gBACpC,oEAAoE;gBACpE,oEAAoE;gBACpE,WAAW;gBACX,QAAQ,CAAC,OAAO,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAA7B,CAA6B,CAAC,CAAA;gBAC3D,IAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACvD,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,WAAW;oBACxC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;wBACvC,QAAQ,CAAC,IAAI,CAAC;4BACZ,SAAS,EAAE,UAAG,IAAI,CAAC,OAAO,cAAI,WAAW,CAAC,IAAI,CAAE;4BAChD,IAAI,EAAE,WAAW,CAAC,IAAI;yBACvB,CAAC,CAAA;qBACH;gBACH,CAAC,CAAC,CAAA;aACH;YACD,6BAAY,IAAI,KAAE,QAAQ,UAAA,IAAE;QAC9B,CAAC;QACD,kBAAkB,EAAE,SAAS;QAC7B,eAAe,EAAE,IAAI;QACrB,OAAO,EAAE,UAAC,IAAS,IAAK,OAAA,CAAC;YACvB,cAAc,EAAd,UAAe,WAAgD;gBACrD,IAAA,IAAI,GAAK,WAAW,KAAhB,CAAgB;gBAC5B,IAAI,CAAC,IAAI,EAAE;oBACT,MAAM,IAAI,KAAK,CAAC,+BAAwB,IAAI,CAAE,CAAC,CAAA;iBAChD;gBACD,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChC,UAAC,CAAM,IAAK,OAAA,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,WAAW,CAAC,SAAS,EAA1C,CAA0C,CACvD,CAAA;gBACD,IAAI,OAAO,EAAE;oBACX,OAAO,OAAO,CAAA;iBACf;gBACD,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAClC,CAAC;SACF,CAAC,EAfsB,CAetB;KACH,CACF,CAAA;AACH,CAAC;AA3DD,sEA2DC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"referenceSeqTrackConfig.js","sourceRoot":"","sources":["../src/referenceSeqTrackConfig.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAGjE;;;;EAIE;AACF,MAAM,UAAU,6BAA6B,CAAC,aAA4B;IACxE,OAAO,mBAAmB,CACxB,wBAAwB,EACxB;QACE,OAAO,EAAE,aAAa,CAAC,yBAAyB,CAAC,SAAS,CAAC;QAC3D,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;QACzE,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,qBAAqB;YAClC,YAAY,EAAE,EAAE;SACjB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,kCAAkC;YAC/C,YAAY,EAAE,EAAE;SACjB;KACF,EACD;QACE,kBAAkB,EAAE,CAAC,CAAC,EAAE;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAA;YAC9B,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,IAAI,CAAA;YAC9B,IAAI,IAAI,CAAC,OAAO,KAAK,eAAe,EAAE;gBACpC,oEAAoE;gBACpE,oEAAoE;gBACpE,WAAW;gBACX,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;gBAC3D,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACvD,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;oBAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;wBACvC,QAAQ,CAAC,IAAI,CAAC;4BACZ,SAAS,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE;4BAChD,IAAI,EAAE,WAAW,CAAC,IAAI;yBACvB,CAAC,CAAA;qBACH;gBACH,CAAC,CAAC,CAAA;aACH;YACD,OAAO,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAA;QAC9B,CAAC;QACD,kBAAkB,EAAE,SAAS;QAC7B,eAAe,EAAE,IAAI;QACrB,OAAO,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;YACvB,cAAc,CAAC,WAAgD;gBAC7D,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAA;gBAC5B,IAAI,CAAC,IAAI,EAAE;oBACT,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAA;iBAChD;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,WAAW,CAAC,SAAS,CACvD,CAAA;gBACD,IAAI,OAAO,EAAE;oBACX,OAAO,OAAO,CAAA;iBACf;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAClC,CAAC;SACF,CAAC;KACH,CACF,CAAA;AACH,CAAC"}