@jbrowse/plugin-bed 2.5.0 → 2.6.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 (97) hide show
  1. package/dist/BedAdapter/BedAdapter.js +1 -2
  2. package/dist/BedAdapter/configSchema.js +0 -1
  3. package/dist/BedAdapter/index.js +0 -1
  4. package/dist/BedTabixAdapter/BedTabixAdapter.js +1 -2
  5. package/dist/BedTabixAdapter/configSchema.js +0 -1
  6. package/dist/BedTabixAdapter/index.js +0 -1
  7. package/dist/BedpeAdapter/BedpeAdapter.d.ts +2 -2
  8. package/dist/BedpeAdapter/BedpeAdapter.js +11 -6
  9. package/dist/BedpeAdapter/configSchema.js +0 -1
  10. package/dist/BedpeAdapter/index.js +0 -1
  11. package/dist/BigBedAdapter/BigBedAdapter.js +2 -3
  12. package/dist/BigBedAdapter/configSchema.js +0 -1
  13. package/dist/BigBedAdapter/index.js +0 -1
  14. package/dist/index.js +8 -1
  15. package/dist/util.js +1 -3
  16. package/esm/BedAdapter/BedAdapter.js +1 -2
  17. package/esm/BedAdapter/configSchema.js +0 -1
  18. package/esm/BedAdapter/index.js +0 -1
  19. package/esm/BedTabixAdapter/BedTabixAdapter.js +1 -2
  20. package/esm/BedTabixAdapter/configSchema.js +0 -1
  21. package/esm/BedTabixAdapter/index.js +0 -1
  22. package/esm/BedpeAdapter/BedpeAdapter.d.ts +2 -2
  23. package/esm/BedpeAdapter/BedpeAdapter.js +11 -6
  24. package/esm/BedpeAdapter/configSchema.js +0 -1
  25. package/esm/BedpeAdapter/index.js +0 -1
  26. package/esm/BigBedAdapter/BigBedAdapter.js +2 -3
  27. package/esm/BigBedAdapter/configSchema.js +0 -1
  28. package/esm/BigBedAdapter/index.js +0 -1
  29. package/esm/index.js +8 -1
  30. package/esm/util.js +1 -3
  31. package/package.json +4 -5
  32. package/dist/BedAdapter/BedAdapter.js.map +0 -1
  33. package/dist/BedAdapter/configSchema.js.map +0 -1
  34. package/dist/BedAdapter/index.js.map +0 -1
  35. package/dist/BedTabixAdapter/BedTabixAdapter.js.map +0 -1
  36. package/dist/BedTabixAdapter/configSchema.js.map +0 -1
  37. package/dist/BedTabixAdapter/index.js.map +0 -1
  38. package/dist/BedpeAdapter/BedpeAdapter.js.map +0 -1
  39. package/dist/BedpeAdapter/configSchema.js.map +0 -1
  40. package/dist/BedpeAdapter/index.js.map +0 -1
  41. package/dist/BigBedAdapter/BigBedAdapter.js.map +0 -1
  42. package/dist/BigBedAdapter/configSchema.js.map +0 -1
  43. package/dist/BigBedAdapter/index.js.map +0 -1
  44. package/dist/index.js.map +0 -1
  45. package/dist/util.js.map +0 -1
  46. package/esm/BedAdapter/BedAdapter.js.map +0 -1
  47. package/esm/BedAdapter/configSchema.js.map +0 -1
  48. package/esm/BedAdapter/index.js.map +0 -1
  49. package/esm/BedTabixAdapter/BedTabixAdapter.js.map +0 -1
  50. package/esm/BedTabixAdapter/configSchema.js.map +0 -1
  51. package/esm/BedTabixAdapter/index.js.map +0 -1
  52. package/esm/BedpeAdapter/BedpeAdapter.js.map +0 -1
  53. package/esm/BedpeAdapter/configSchema.js.map +0 -1
  54. package/esm/BedpeAdapter/index.js.map +0 -1
  55. package/esm/BigBedAdapter/BigBedAdapter.js.map +0 -1
  56. package/esm/BigBedAdapter/configSchema.js.map +0 -1
  57. package/esm/BigBedAdapter/index.js.map +0 -1
  58. package/esm/index.js.map +0 -1
  59. package/esm/util.js.map +0 -1
  60. package/src/BedAdapter/BedAdapter.test.ts +0 -166
  61. package/src/BedAdapter/BedAdapter.ts +0 -171
  62. package/src/BedAdapter/__snapshots__/BedAdapter.test.ts.snap +0 -437
  63. package/src/BedAdapter/configSchema.ts +0 -69
  64. package/src/BedAdapter/index.ts +0 -16
  65. package/src/BedAdapter/test_data/gwas.bed +0 -20
  66. package/src/BedAdapter/test_data/volvox-autosql.bed +0 -1
  67. package/src/BedAdapter/test_data/volvox-bed12.bed +0 -4
  68. package/src/BedAdapter/test_data/volvox.sort.bed +0 -109
  69. package/src/BedAdapter/test_data/volvox.sort.with.header.bed +0 -121
  70. package/src/BedTabixAdapter/BedTabixAdapter.test.ts +0 -196
  71. package/src/BedTabixAdapter/BedTabixAdapter.ts +0 -105
  72. package/src/BedTabixAdapter/__snapshots__/BedTabixAdapter.test.ts.snap +0 -437
  73. package/src/BedTabixAdapter/configSchema.ts +0 -71
  74. package/src/BedTabixAdapter/index.ts +0 -16
  75. package/src/BedTabixAdapter/test_data/gwas.bed.gz +0 -0
  76. package/src/BedTabixAdapter/test_data/gwas.bed.gz.tbi +0 -0
  77. package/src/BedTabixAdapter/test_data/volvox-autosql.bed.gz +0 -0
  78. package/src/BedTabixAdapter/test_data/volvox-autosql.bed.gz.tbi +0 -0
  79. package/src/BedTabixAdapter/test_data/volvox-bed12.bed.gz +0 -0
  80. package/src/BedTabixAdapter/test_data/volvox-bed12.bed.gz.tbi +0 -0
  81. package/src/BedTabixAdapter/test_data/volvox.sort.bed.gz +0 -0
  82. package/src/BedTabixAdapter/test_data/volvox.sort.bed.gz.tbi +0 -0
  83. package/src/BedTabixAdapter/test_data/volvox.sort.with.header.bed.gz +0 -0
  84. package/src/BedTabixAdapter/test_data/volvox.sort.with.header.bed.gz.tbi +0 -0
  85. package/src/BedpeAdapter/BedpeAdapter.ts +0 -202
  86. package/src/BedpeAdapter/configSchema.ts +0 -34
  87. package/src/BedpeAdapter/index.ts +0 -16
  88. package/src/BigBedAdapter/BigBedAdapter.test.ts +0 -28
  89. package/src/BigBedAdapter/BigBedAdapter.ts +0 -130
  90. package/src/BigBedAdapter/__snapshots__/BigBedAdapter.test.ts.snap +0 -254
  91. package/src/BigBedAdapter/configSchema.ts +0 -22
  92. package/src/BigBedAdapter/index.ts +0 -16
  93. package/src/BigBedAdapter/test_data/volvox.bb +0 -0
  94. package/src/__snapshots__/index.test.ts.snap +0 -3
  95. package/src/index.test.ts +0 -16
  96. package/src/index.ts +0 -120
  97. package/src/util.ts +0 -181
@@ -1,3 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`plugin in a stock JBrowse 1`] = `{}`;
package/src/index.test.ts DELETED
@@ -1,16 +0,0 @@
1
- import PluginManager from '@jbrowse/core/PluginManager'
2
- import { getSnapshot } from 'mobx-state-tree'
3
- import ThisPlugin from '.'
4
-
5
- test('plugin in a stock JBrowse', () => {
6
- const pluginManager = new PluginManager([new ThisPlugin()])
7
- pluginManager.createPluggableElements()
8
- pluginManager.configure()
9
- expect(() => pluginManager.addPlugin(new ThisPlugin())).toThrow(
10
- /JBrowse already configured, cannot add plugins/,
11
- )
12
-
13
- const BigBedAdapter = pluginManager.getAdapterType('BigBedAdapter')
14
- const config = BigBedAdapter.configSchema.create({ type: 'BigBedAdapter' })
15
- expect(getSnapshot(config)).toMatchSnapshot()
16
- })
package/src/index.ts DELETED
@@ -1,120 +0,0 @@
1
- import Plugin from '@jbrowse/core/Plugin'
2
- import PluginManager from '@jbrowse/core/PluginManager'
3
- import BigBedAdapterF from './BigBedAdapter'
4
- import BedpeAdapterF from './BedpeAdapter'
5
- import BedTabixAdapterF from './BedTabixAdapter'
6
- import BedAdapterF from './BedAdapter'
7
- import { FileLocation } from '@jbrowse/core/util/types'
8
- import {
9
- getFileName,
10
- makeIndex,
11
- makeIndexType,
12
- AdapterGuesser,
13
- } from '@jbrowse/core/util/tracks'
14
-
15
- export default class BedPlugin extends Plugin {
16
- name = 'BedPlugin'
17
-
18
- install(pluginManager: PluginManager) {
19
- BigBedAdapterF(pluginManager)
20
- BedAdapterF(pluginManager)
21
- BedpeAdapterF(pluginManager)
22
- BedTabixAdapterF(pluginManager)
23
- pluginManager.addToExtensionPoint(
24
- 'Core-guessAdapterForLocation',
25
- (adapterGuesser: AdapterGuesser) => {
26
- return (
27
- file: FileLocation,
28
- index?: FileLocation,
29
- adapterHint?: string,
30
- ) => {
31
- const regexGuess = /\.(bb|bigbed)$/i
32
- const adapterName = 'BigBedAdapter'
33
- const fileName = getFileName(file)
34
- const obj = {
35
- type: adapterName,
36
- bigBedLocation: file,
37
- }
38
-
39
- if (regexGuess.test(fileName) && !adapterHint) {
40
- return obj
41
- } else if (adapterHint === adapterName) {
42
- return obj
43
- }
44
- return adapterGuesser(file, index, adapterHint)
45
- }
46
- },
47
- )
48
-
49
- pluginManager.addToExtensionPoint(
50
- 'Core-guessAdapterForLocation',
51
- (adapterGuesser: AdapterGuesser) => {
52
- return (
53
- file: FileLocation,
54
- index?: FileLocation,
55
- adapterHint?: string,
56
- ) => {
57
- const regexGuess = /\.bedpe\.gz$/i
58
- const adapterName = 'BedpeAdapter'
59
- const fileName = getFileName(file)
60
- if (regexGuess.test(fileName) || adapterHint === adapterName) {
61
- return {
62
- type: adapterName,
63
- bedpeLocation: file,
64
- }
65
- }
66
- return adapterGuesser(file, index, adapterHint)
67
- }
68
- },
69
- )
70
-
71
- pluginManager.addToExtensionPoint(
72
- 'Core-guessAdapterForLocation',
73
- (adapterGuesser: AdapterGuesser) => {
74
- return (
75
- file: FileLocation,
76
- index?: FileLocation,
77
- adapterHint?: string,
78
- ) => {
79
- const regexGuess = /\.bed\.b?gz$/i
80
- const adapterName = 'BedTabixAdapter'
81
- const fileName = getFileName(file)
82
- const indexName = index && getFileName(index)
83
- if (regexGuess.test(fileName) || adapterHint === adapterName) {
84
- return {
85
- type: adapterName,
86
- bedGzLocation: file,
87
- index: {
88
- location: index || makeIndex(file, '.tbi'),
89
- indexType: makeIndexType(indexName, 'CSI', 'TBI'),
90
- },
91
- }
92
- }
93
- return adapterGuesser(file, index, adapterHint)
94
- }
95
- },
96
- )
97
-
98
- pluginManager.addToExtensionPoint(
99
- 'Core-guessAdapterForLocation',
100
- (adapterGuesser: AdapterGuesser) => {
101
- return (
102
- file: FileLocation,
103
- index?: FileLocation,
104
- adapterHint?: string,
105
- ) => {
106
- const regexGuess = /\.bed$/i
107
- const adapterName = 'BedAdapter'
108
- const fileName = getFileName(file)
109
- if (regexGuess.test(fileName) || adapterHint === adapterName) {
110
- return {
111
- type: adapterName,
112
- bedLocation: file,
113
- }
114
- }
115
- return adapterGuesser(file, index, adapterHint)
116
- }
117
- },
118
- )
119
- }
120
- }
package/src/util.ts DELETED
@@ -1,181 +0,0 @@
1
- import { SimpleFeature, Feature } from '@jbrowse/core/util'
2
- import BED from '@gmod/bed'
3
-
4
- export function ucscProcessedTranscript(feature: Feature) {
5
- const children = feature.children()
6
- // split the blocks into UTR, CDS, and exons
7
- const thickStart = feature.get('thickStart')
8
- const thickEnd = feature.get('thickEnd')
9
-
10
- if (!thickStart && !thickEnd) {
11
- return feature
12
- }
13
-
14
- const blocks: Feature[] = children
15
- ? children
16
- .filter(child => child.get('type') === 'block')
17
- .sort((a, b) => a.get('start') - b.get('start'))
18
- : []
19
-
20
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
- const newChildren: Record<string, any> = []
22
- blocks.forEach(block => {
23
- const start = block.get('start')
24
- const end = block.get('end')
25
- if (thickStart >= end) {
26
- // left-side UTR
27
- const prime = feature.get('strand') > 0 ? 'five' : 'three'
28
- newChildren.push({
29
- type: `${prime}_prime_UTR`,
30
- start,
31
- end,
32
- })
33
- } else if (thickStart > start && thickStart < end && thickEnd >= end) {
34
- // UTR | CDS
35
- const prime = feature.get('strand') > 0 ? 'five' : 'three'
36
- newChildren.push(
37
- {
38
- type: `${prime}_prime_UTR`,
39
- start,
40
- end: thickStart,
41
- },
42
- {
43
- type: 'CDS',
44
- start: thickStart,
45
- end,
46
- },
47
- )
48
- } else if (thickStart <= start && thickEnd >= end) {
49
- // CDS
50
- newChildren.push({
51
- type: 'CDS',
52
- start,
53
- end,
54
- })
55
- } else if (thickStart > start && thickStart < end && thickEnd < end) {
56
- // UTR | CDS | UTR
57
- const leftPrime = feature.get('strand') > 0 ? 'five' : 'three'
58
- const rightPrime = feature.get('strand') > 0 ? 'three' : 'five'
59
- newChildren.push(
60
- {
61
- type: `${leftPrime}_prime_UTR`,
62
- start,
63
- end: thickStart,
64
- },
65
- {
66
- type: `CDS`,
67
- start: thickStart,
68
- end: thickEnd,
69
- },
70
- {
71
- type: `${rightPrime}_prime_UTR`,
72
- start: thickEnd,
73
- end,
74
- },
75
- )
76
- } else if (thickStart <= start && thickEnd > start && thickEnd < end) {
77
- // CDS | UTR
78
- const prime = feature.get('strand') > 0 ? 'three' : 'five'
79
- newChildren.push(
80
- {
81
- type: `CDS`,
82
- start,
83
- end: thickEnd,
84
- },
85
- {
86
- type: `${prime}_prime_UTR`,
87
- start: thickEnd,
88
- end,
89
- },
90
- )
91
- } else if (thickEnd <= start) {
92
- // right-side UTR
93
- const prime = feature.get('strand') > 0 ? 'three' : 'five'
94
- newChildren.push({
95
- type: `${prime}_prime_UTR`,
96
- start,
97
- end,
98
- })
99
- }
100
- })
101
- const newData = Object.fromEntries(
102
- feature.tags().map(tag => [tag, feature.get(tag)]),
103
- )
104
- newData.subfeatures = newChildren
105
- newData.type = 'mRNA'
106
- newData.uniqueId = feature.id()
107
- delete newData.chromStarts
108
- delete newData.chromStart
109
- delete newData.chromEnd
110
- delete newData.chrom
111
- delete newData.blockStarts
112
- delete newData.blockSizes
113
- delete newData.blockCount
114
- delete newData.thickStart
115
- delete newData.thickEnd
116
- const newFeature = new SimpleFeature({
117
- data: newData,
118
- id: feature.id(),
119
- })
120
- return newFeature
121
- }
122
-
123
- function defaultParser(fields: string[], line: string) {
124
- return Object.fromEntries(line.split('\t').map((f, i) => [fields[i], f]))
125
- }
126
-
127
- export function featureData(
128
- line: string,
129
- colRef: number,
130
- colStart: number,
131
- colEnd: number,
132
- scoreColumn: string,
133
- parser: BED,
134
- uniqueId: string,
135
- names?: string[],
136
- ) {
137
- const l = line.split('\t')
138
- const refName = l[colRef]
139
- const start = +l[colStart]
140
- const colSame = colStart === colEnd ? 1 : 0
141
-
142
- const end = +l[colEnd] + colSame
143
- const data = names
144
- ? defaultParser(names, line)
145
- : parser.parseLine(line, { uniqueId })
146
-
147
- const { blockCount, blockSizes, blockStarts, chromStarts } = data
148
-
149
- if (blockCount) {
150
- const starts = chromStarts || blockStarts || []
151
- const sizes = blockSizes
152
- const blocksOffset = start
153
- data.subfeatures = []
154
-
155
- for (let b = 0; b < blockCount; b += 1) {
156
- const bmin = (starts[b] || 0) + blocksOffset
157
- const bmax = bmin + (sizes[b] || 0)
158
- data.subfeatures.push({
159
- uniqueId: `${uniqueId}-${b}`,
160
- start: bmin,
161
- end: bmax,
162
- type: 'block',
163
- })
164
- }
165
- }
166
-
167
- if (scoreColumn) {
168
- data.score = +data[scoreColumn]
169
- }
170
- delete data.chrom
171
- delete data.chromStart
172
- delete data.chromEnd
173
- const f = new SimpleFeature({
174
- ...data,
175
- start,
176
- end,
177
- refName,
178
- uniqueId,
179
- })
180
- return f.get('thickStart') ? ucscProcessedTranscript(f) : f
181
- }