@jbrowse/plugin-bed 2.6.1 → 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 (95) hide show
  1. package/dist/BedAdapter/BedAdapter.js +0 -1
  2. package/dist/BedAdapter/configSchema.js +0 -1
  3. package/dist/BedAdapter/index.js +0 -1
  4. package/dist/BedTabixAdapter/BedTabixAdapter.js +0 -1
  5. package/dist/BedTabixAdapter/configSchema.js +0 -1
  6. package/dist/BedTabixAdapter/index.js +0 -1
  7. package/dist/BedpeAdapter/BedpeAdapter.js +0 -1
  8. package/dist/BedpeAdapter/configSchema.js +0 -1
  9. package/dist/BedpeAdapter/index.js +0 -1
  10. package/dist/BigBedAdapter/BigBedAdapter.js +0 -1
  11. package/dist/BigBedAdapter/configSchema.js +0 -1
  12. package/dist/BigBedAdapter/index.js +0 -1
  13. package/dist/index.js +0 -1
  14. package/dist/util.js +0 -1
  15. package/esm/BedAdapter/BedAdapter.js +0 -1
  16. package/esm/BedAdapter/configSchema.js +0 -1
  17. package/esm/BedAdapter/index.js +0 -1
  18. package/esm/BedTabixAdapter/BedTabixAdapter.js +0 -1
  19. package/esm/BedTabixAdapter/configSchema.js +0 -1
  20. package/esm/BedTabixAdapter/index.js +0 -1
  21. package/esm/BedpeAdapter/BedpeAdapter.js +0 -1
  22. package/esm/BedpeAdapter/configSchema.js +0 -1
  23. package/esm/BedpeAdapter/index.js +0 -1
  24. package/esm/BigBedAdapter/BigBedAdapter.js +0 -1
  25. package/esm/BigBedAdapter/configSchema.js +0 -1
  26. package/esm/BigBedAdapter/index.js +0 -1
  27. package/esm/index.js +0 -1
  28. package/esm/util.js +0 -1
  29. package/package.json +3 -4
  30. package/dist/BedAdapter/BedAdapter.js.map +0 -1
  31. package/dist/BedAdapter/configSchema.js.map +0 -1
  32. package/dist/BedAdapter/index.js.map +0 -1
  33. package/dist/BedTabixAdapter/BedTabixAdapter.js.map +0 -1
  34. package/dist/BedTabixAdapter/configSchema.js.map +0 -1
  35. package/dist/BedTabixAdapter/index.js.map +0 -1
  36. package/dist/BedpeAdapter/BedpeAdapter.js.map +0 -1
  37. package/dist/BedpeAdapter/configSchema.js.map +0 -1
  38. package/dist/BedpeAdapter/index.js.map +0 -1
  39. package/dist/BigBedAdapter/BigBedAdapter.js.map +0 -1
  40. package/dist/BigBedAdapter/configSchema.js.map +0 -1
  41. package/dist/BigBedAdapter/index.js.map +0 -1
  42. package/dist/index.js.map +0 -1
  43. package/dist/util.js.map +0 -1
  44. package/esm/BedAdapter/BedAdapter.js.map +0 -1
  45. package/esm/BedAdapter/configSchema.js.map +0 -1
  46. package/esm/BedAdapter/index.js.map +0 -1
  47. package/esm/BedTabixAdapter/BedTabixAdapter.js.map +0 -1
  48. package/esm/BedTabixAdapter/configSchema.js.map +0 -1
  49. package/esm/BedTabixAdapter/index.js.map +0 -1
  50. package/esm/BedpeAdapter/BedpeAdapter.js.map +0 -1
  51. package/esm/BedpeAdapter/configSchema.js.map +0 -1
  52. package/esm/BedpeAdapter/index.js.map +0 -1
  53. package/esm/BigBedAdapter/BigBedAdapter.js.map +0 -1
  54. package/esm/BigBedAdapter/configSchema.js.map +0 -1
  55. package/esm/BigBedAdapter/index.js.map +0 -1
  56. package/esm/index.js.map +0 -1
  57. package/esm/util.js.map +0 -1
  58. package/src/BedAdapter/BedAdapter.test.ts +0 -166
  59. package/src/BedAdapter/BedAdapter.ts +0 -171
  60. package/src/BedAdapter/__snapshots__/BedAdapter.test.ts.snap +0 -437
  61. package/src/BedAdapter/configSchema.ts +0 -69
  62. package/src/BedAdapter/index.ts +0 -16
  63. package/src/BedAdapter/test_data/gwas.bed +0 -20
  64. package/src/BedAdapter/test_data/volvox-autosql.bed +0 -1
  65. package/src/BedAdapter/test_data/volvox-bed12.bed +0 -4
  66. package/src/BedAdapter/test_data/volvox.sort.bed +0 -109
  67. package/src/BedAdapter/test_data/volvox.sort.with.header.bed +0 -121
  68. package/src/BedTabixAdapter/BedTabixAdapter.test.ts +0 -196
  69. package/src/BedTabixAdapter/BedTabixAdapter.ts +0 -105
  70. package/src/BedTabixAdapter/__snapshots__/BedTabixAdapter.test.ts.snap +0 -437
  71. package/src/BedTabixAdapter/configSchema.ts +0 -71
  72. package/src/BedTabixAdapter/index.ts +0 -16
  73. package/src/BedTabixAdapter/test_data/gwas.bed.gz +0 -0
  74. package/src/BedTabixAdapter/test_data/gwas.bed.gz.tbi +0 -0
  75. package/src/BedTabixAdapter/test_data/volvox-autosql.bed.gz +0 -0
  76. package/src/BedTabixAdapter/test_data/volvox-autosql.bed.gz.tbi +0 -0
  77. package/src/BedTabixAdapter/test_data/volvox-bed12.bed.gz +0 -0
  78. package/src/BedTabixAdapter/test_data/volvox-bed12.bed.gz.tbi +0 -0
  79. package/src/BedTabixAdapter/test_data/volvox.sort.bed.gz +0 -0
  80. package/src/BedTabixAdapter/test_data/volvox.sort.bed.gz.tbi +0 -0
  81. package/src/BedTabixAdapter/test_data/volvox.sort.with.header.bed.gz +0 -0
  82. package/src/BedTabixAdapter/test_data/volvox.sort.with.header.bed.gz.tbi +0 -0
  83. package/src/BedpeAdapter/BedpeAdapter.ts +0 -208
  84. package/src/BedpeAdapter/configSchema.ts +0 -34
  85. package/src/BedpeAdapter/index.ts +0 -16
  86. package/src/BigBedAdapter/BigBedAdapter.test.ts +0 -28
  87. package/src/BigBedAdapter/BigBedAdapter.ts +0 -127
  88. package/src/BigBedAdapter/__snapshots__/BigBedAdapter.test.ts.snap +0 -254
  89. package/src/BigBedAdapter/configSchema.ts +0 -22
  90. package/src/BigBedAdapter/index.ts +0 -16
  91. package/src/BigBedAdapter/test_data/volvox.bb +0 -0
  92. package/src/__snapshots__/index.test.ts.snap +0 -3
  93. package/src/index.test.ts +0 -16
  94. package/src/index.ts +0 -133
  95. package/src/util.ts +0 -180
@@ -1,16 +0,0 @@
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: 'BigBedAdapter',
11
- displayName: 'BigBed adapter',
12
- configSchema,
13
- getAdapterClass: () => import('./BigBedAdapter').then(r => r.default),
14
- }),
15
- )
16
- }
@@ -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,133 +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
- TrackTypeGuesser,
14
- } from '@jbrowse/core/util/tracks'
15
-
16
- export default class BedPlugin extends Plugin {
17
- name = 'BedPlugin'
18
-
19
- install(pluginManager: PluginManager) {
20
- BigBedAdapterF(pluginManager)
21
- BedAdapterF(pluginManager)
22
- BedpeAdapterF(pluginManager)
23
- BedTabixAdapterF(pluginManager)
24
- pluginManager.addToExtensionPoint(
25
- 'Core-guessAdapterForLocation',
26
- (adapterGuesser: AdapterGuesser) => {
27
- return (
28
- file: FileLocation,
29
- index?: FileLocation,
30
- adapterHint?: string,
31
- ) => {
32
- const regexGuess = /\.(bb|bigbed)$/i
33
- const adapterName = 'BigBedAdapter'
34
- const fileName = getFileName(file)
35
- const obj = {
36
- type: adapterName,
37
- bigBedLocation: 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
-
50
- pluginManager.addToExtensionPoint(
51
- 'Core-guessAdapterForLocation',
52
- (adapterGuesser: AdapterGuesser) => {
53
- return (
54
- file: FileLocation,
55
- index?: FileLocation,
56
- adapterHint?: string,
57
- ) => {
58
- const regexGuess = /\.bedpe\.gz$/i
59
- const adapterName = 'BedpeAdapter'
60
- const fileName = getFileName(file)
61
- if (regexGuess.test(fileName) || adapterHint === adapterName) {
62
- return {
63
- type: adapterName,
64
- bedpeLocation: file,
65
- }
66
- }
67
- return adapterGuesser(file, index, adapterHint)
68
- }
69
- },
70
- )
71
-
72
- pluginManager.addToExtensionPoint(
73
- 'Core-guessAdapterForLocation',
74
- (adapterGuesser: AdapterGuesser) => {
75
- return (
76
- file: FileLocation,
77
- index?: FileLocation,
78
- adapterHint?: string,
79
- ) => {
80
- const regexGuess = /\.bed\.b?gz$/i
81
- const adapterName = 'BedTabixAdapter'
82
- const fileName = getFileName(file)
83
- const indexName = index && getFileName(index)
84
- if (regexGuess.test(fileName) || adapterHint === adapterName) {
85
- return {
86
- type: adapterName,
87
- bedGzLocation: file,
88
- index: {
89
- location: index || makeIndex(file, '.tbi'),
90
- indexType: makeIndexType(indexName, 'CSI', 'TBI'),
91
- },
92
- }
93
- }
94
- return adapterGuesser(file, index, adapterHint)
95
- }
96
- },
97
- )
98
-
99
- pluginManager.addToExtensionPoint(
100
- 'Core-guessAdapterForLocation',
101
- (adapterGuesser: AdapterGuesser) => {
102
- return (
103
- file: FileLocation,
104
- index?: FileLocation,
105
- adapterHint?: string,
106
- ) => {
107
- const regexGuess = /\.bed$/i
108
- const adapterName = 'BedAdapter'
109
- const fileName = getFileName(file)
110
- if (regexGuess.test(fileName) || adapterHint === adapterName) {
111
- return {
112
- type: adapterName,
113
- bedLocation: file,
114
- }
115
- }
116
- return adapterGuesser(file, index, adapterHint)
117
- }
118
- },
119
- )
120
-
121
- pluginManager.addToExtensionPoint(
122
- 'Core-guessTrackTypeForLocation',
123
- (trackTypeGuesser: TrackTypeGuesser) => {
124
- return (adapterName: string) => {
125
- if (adapterName === 'BedpeAdapter') {
126
- return 'VariantTrack'
127
- }
128
- return trackTypeGuesser(adapterName)
129
- }
130
- },
131
- )
132
- }
133
- }
package/src/util.ts DELETED
@@ -1,180 +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
- return new SimpleFeature({
117
- data: newData,
118
- id: feature.id(),
119
- })
120
- }
121
-
122
- function defaultParser(fields: string[], line: string) {
123
- return Object.fromEntries(line.split('\t').map((f, i) => [fields[i], f]))
124
- }
125
-
126
- export function featureData(
127
- line: string,
128
- colRef: number,
129
- colStart: number,
130
- colEnd: number,
131
- scoreColumn: string,
132
- parser: BED,
133
- uniqueId: string,
134
- names?: string[],
135
- ) {
136
- const l = line.split('\t')
137
- const refName = l[colRef]
138
- const start = +l[colStart]
139
- const colSame = colStart === colEnd ? 1 : 0
140
-
141
- const end = +l[colEnd] + colSame
142
- const data = names
143
- ? defaultParser(names, line)
144
- : parser.parseLine(line, { uniqueId })
145
-
146
- const { blockCount, blockSizes, blockStarts, chromStarts } = data
147
-
148
- if (blockCount) {
149
- const starts = chromStarts || blockStarts || []
150
- const sizes = blockSizes
151
- const blocksOffset = start
152
- data.subfeatures = []
153
-
154
- for (let b = 0; b < blockCount; b += 1) {
155
- const bmin = (starts[b] || 0) + blocksOffset
156
- const bmax = bmin + (sizes[b] || 0)
157
- data.subfeatures.push({
158
- uniqueId: `${uniqueId}-${b}`,
159
- start: bmin,
160
- end: bmax,
161
- type: 'block',
162
- })
163
- }
164
- }
165
-
166
- if (scoreColumn) {
167
- data.score = +data[scoreColumn]
168
- }
169
- delete data.chrom
170
- delete data.chromStart
171
- delete data.chromEnd
172
- const f = new SimpleFeature({
173
- ...data,
174
- start,
175
- end,
176
- refName,
177
- uniqueId,
178
- })
179
- return f.get('thickStart') ? ucscProcessedTranscript(f) : f
180
- }