@jbrowse/plugin-sequence 1.7.11 → 2.1.0

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 (128) hide show
  1. package/dist/BgzipFastaAdapter/BgzipFastaAdapter.js +50 -68
  2. package/dist/BgzipFastaAdapter/BgzipFastaAdapter.js.map +1 -0
  3. package/dist/BgzipFastaAdapter/configSchema.js +31 -43
  4. package/dist/BgzipFastaAdapter/configSchema.js.map +1 -0
  5. package/dist/BgzipFastaAdapter/index.js +8 -14
  6. package/dist/BgzipFastaAdapter/index.js.map +1 -0
  7. package/dist/ChromSizesAdapter/ChromSizesAdapter.d.ts +9 -9
  8. package/dist/ChromSizesAdapter/ChromSizesAdapter.js +134 -166
  9. package/dist/ChromSizesAdapter/ChromSizesAdapter.js.map +1 -0
  10. package/dist/ChromSizesAdapter/configSchema.js +12 -21
  11. package/dist/ChromSizesAdapter/configSchema.js.map +1 -0
  12. package/dist/ChromSizesAdapter/index.js +8 -14
  13. package/dist/ChromSizesAdapter/index.js.map +1 -0
  14. package/dist/DivSequenceRenderer/components/DivSequenceRendering.js +130 -229
  15. package/dist/DivSequenceRenderer/components/DivSequenceRendering.js.map +1 -0
  16. package/dist/DivSequenceRenderer/configSchema.js +10 -19
  17. package/dist/DivSequenceRenderer/configSchema.js.map +1 -0
  18. package/dist/DivSequenceRenderer/index.js +10 -22
  19. package/dist/DivSequenceRenderer/index.js.map +1 -0
  20. package/dist/GCContentAdapter/GCContentAdapter.js +181 -248
  21. package/dist/GCContentAdapter/GCContentAdapter.js.map +1 -0
  22. package/dist/GCContentAdapter/configSchema.js +7 -16
  23. package/dist/GCContentAdapter/configSchema.js.map +1 -0
  24. package/dist/GCContentAdapter/index.js +33 -28
  25. package/dist/GCContentAdapter/index.js.map +1 -0
  26. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.js +177 -266
  27. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.js.map +1 -0
  28. package/dist/IndexedFastaAdapter/configSchema.js +21 -36
  29. package/dist/IndexedFastaAdapter/configSchema.js.map +1 -0
  30. package/dist/IndexedFastaAdapter/index.js +8 -14
  31. package/dist/IndexedFastaAdapter/index.js.map +1 -0
  32. package/dist/LinearReferenceSequenceDisplay/configSchema.js +5 -16
  33. package/dist/LinearReferenceSequenceDisplay/configSchema.js.map +1 -0
  34. package/dist/LinearReferenceSequenceDisplay/index.js +7 -20
  35. package/dist/LinearReferenceSequenceDisplay/index.js.map +1 -0
  36. package/dist/LinearReferenceSequenceDisplay/model.d.ts +17 -15
  37. package/dist/LinearReferenceSequenceDisplay/model.js +88 -99
  38. package/dist/LinearReferenceSequenceDisplay/model.js.map +1 -0
  39. package/dist/TwoBitAdapter/TwoBitAdapter.js +178 -274
  40. package/dist/TwoBitAdapter/TwoBitAdapter.js.map +1 -0
  41. package/dist/TwoBitAdapter/configSchema.js +16 -28
  42. package/dist/TwoBitAdapter/configSchema.js.map +1 -0
  43. package/dist/TwoBitAdapter/index.js +8 -14
  44. package/dist/TwoBitAdapter/index.js.map +1 -0
  45. package/dist/index.js +255 -312
  46. package/dist/index.js.map +1 -0
  47. package/dist/referenceSeqTrackConfig.js +71 -86
  48. package/dist/referenceSeqTrackConfig.js.map +1 -0
  49. package/esm/BgzipFastaAdapter/BgzipFastaAdapter.d.ts +7 -0
  50. package/esm/BgzipFastaAdapter/BgzipFastaAdapter.js +28 -0
  51. package/esm/BgzipFastaAdapter/BgzipFastaAdapter.js.map +1 -0
  52. package/esm/BgzipFastaAdapter/configSchema.d.ts +2 -0
  53. package/esm/BgzipFastaAdapter/configSchema.js +30 -0
  54. package/esm/BgzipFastaAdapter/configSchema.js.map +1 -0
  55. package/esm/BgzipFastaAdapter/index.d.ts +1 -0
  56. package/esm/BgzipFastaAdapter/index.js +2 -0
  57. package/esm/BgzipFastaAdapter/index.js.map +1 -0
  58. package/esm/ChromSizesAdapter/ChromSizesAdapter.d.ts +19 -0
  59. package/esm/ChromSizesAdapter/ChromSizesAdapter.js +39 -0
  60. package/esm/ChromSizesAdapter/ChromSizesAdapter.js.map +1 -0
  61. package/esm/ChromSizesAdapter/configSchema.d.ts +2 -0
  62. package/esm/ChromSizesAdapter/configSchema.js +11 -0
  63. package/esm/ChromSizesAdapter/configSchema.js.map +1 -0
  64. package/esm/ChromSizesAdapter/index.d.ts +1 -0
  65. package/esm/ChromSizesAdapter/index.js +2 -0
  66. package/esm/ChromSizesAdapter/index.js.map +1 -0
  67. package/esm/DivSequenceRenderer/components/DivSequenceRendering.d.ts +21 -0
  68. package/esm/DivSequenceRenderer/components/DivSequenceRendering.js +97 -0
  69. package/esm/DivSequenceRenderer/components/DivSequenceRendering.js.map +1 -0
  70. package/esm/DivSequenceRenderer/configSchema.d.ts +2 -0
  71. package/esm/DivSequenceRenderer/configSchema.js +9 -0
  72. package/esm/DivSequenceRenderer/configSchema.js.map +1 -0
  73. package/esm/DivSequenceRenderer/index.d.ts +2 -0
  74. package/esm/DivSequenceRenderer/index.js +3 -0
  75. package/esm/DivSequenceRenderer/index.js.map +1 -0
  76. package/esm/GCContentAdapter/GCContentAdapter.d.ts +23 -0
  77. package/esm/GCContentAdapter/GCContentAdapter.js +97 -0
  78. package/esm/GCContentAdapter/GCContentAdapter.js.map +1 -0
  79. package/esm/GCContentAdapter/configSchema.d.ts +3 -0
  80. package/esm/GCContentAdapter/configSchema.js +7 -0
  81. package/esm/GCContentAdapter/configSchema.js.map +1 -0
  82. package/esm/GCContentAdapter/index.d.ts +6 -0
  83. package/esm/GCContentAdapter/index.js +8 -0
  84. package/esm/GCContentAdapter/index.js.map +1 -0
  85. package/esm/IndexedFastaAdapter/IndexedFastaAdapter.d.ts +27 -0
  86. package/esm/IndexedFastaAdapter/IndexedFastaAdapter.js +90 -0
  87. package/esm/IndexedFastaAdapter/IndexedFastaAdapter.js.map +1 -0
  88. package/esm/IndexedFastaAdapter/configSchema.d.ts +2 -0
  89. package/esm/IndexedFastaAdapter/configSchema.js +20 -0
  90. package/esm/IndexedFastaAdapter/configSchema.js.map +1 -0
  91. package/esm/IndexedFastaAdapter/index.d.ts +1 -0
  92. package/esm/IndexedFastaAdapter/index.js +2 -0
  93. package/esm/IndexedFastaAdapter/index.js.map +1 -0
  94. package/esm/LinearReferenceSequenceDisplay/configSchema.d.ts +1 -0
  95. package/esm/LinearReferenceSequenceDisplay/configSchema.js +4 -0
  96. package/esm/LinearReferenceSequenceDisplay/configSchema.js.map +1 -0
  97. package/esm/LinearReferenceSequenceDisplay/index.d.ts +2 -0
  98. package/esm/LinearReferenceSequenceDisplay/index.js +3 -0
  99. package/esm/LinearReferenceSequenceDisplay/index.js.map +1 -0
  100. package/esm/LinearReferenceSequenceDisplay/model.d.ts +210 -0
  101. package/esm/LinearReferenceSequenceDisplay/model.js +83 -0
  102. package/esm/LinearReferenceSequenceDisplay/model.js.map +1 -0
  103. package/esm/TwoBitAdapter/TwoBitAdapter.d.ts +26 -0
  104. package/esm/TwoBitAdapter/TwoBitAdapter.js +79 -0
  105. package/esm/TwoBitAdapter/TwoBitAdapter.js.map +1 -0
  106. package/esm/TwoBitAdapter/configSchema.d.ts +2 -0
  107. package/esm/TwoBitAdapter/configSchema.js +16 -0
  108. package/esm/TwoBitAdapter/configSchema.js.map +1 -0
  109. package/esm/TwoBitAdapter/index.d.ts +1 -0
  110. package/esm/TwoBitAdapter/index.js +2 -0
  111. package/esm/TwoBitAdapter/index.js.map +1 -0
  112. package/esm/index.d.ts +6 -0
  113. package/esm/index.js +197 -0
  114. package/esm/index.js.map +1 -0
  115. package/esm/referenceSeqTrackConfig.d.ts +2 -0
  116. package/esm/referenceSeqTrackConfig.js +63 -0
  117. package/esm/referenceSeqTrackConfig.js.map +1 -0
  118. package/package.json +20 -13
  119. package/src/ChromSizesAdapter/ChromSizesAdapter.ts +22 -42
  120. package/src/DivSequenceRenderer/components/DivSequenceRendering.test.js +1 -1
  121. package/src/LinearReferenceSequenceDisplay/model.ts +4 -2
  122. package/dist/BgzipFastaAdapter/BgzipFastaAdapter.test.js +0 -64
  123. package/dist/ChromSizesAdapter/ChromSizesAdapter.test.js +0 -46
  124. package/dist/DivSequenceRenderer/components/DivSequenceRendering.test.js +0 -245
  125. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.test.js +0 -81
  126. package/dist/TwoBitAdapter/TwoBitAdapter.test.js +0 -94
  127. package/dist/declare.d.js +0 -1
  128. package/dist/index.test.js +0 -29
@@ -0,0 +1,26 @@
1
+ import { BaseSequenceAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
2
+ import { NoAssemblyRegion } from '@jbrowse/core/util/types';
3
+ import { Feature } from '@jbrowse/core/util/simpleFeature';
4
+ import { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema';
5
+ import PluginManager from '@jbrowse/core/PluginManager';
6
+ import { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache';
7
+ export default class TwoBitAdapter extends BaseSequenceAdapter {
8
+ private twobit;
9
+ protected chromSizesData: Promise<Record<string, number> | undefined>;
10
+ private initChromSizes;
11
+ constructor(config: AnyConfigurationModel, getSubAdapter?: getSubAdapterType, pluginManager?: PluginManager);
12
+ getRefNames(): Promise<string[]>;
13
+ getRegions(): Promise<NoAssemblyRegion[]>;
14
+ /**
15
+ * Fetch features for a certain region
16
+ * @param param -
17
+ * @returns Observable of Feature objects in the region
18
+ */
19
+ getFeatures({ refName, start, end }: NoAssemblyRegion): import("rxjs").Observable<Feature>;
20
+ /**
21
+ * called to provide a hint that data tied to a certain region
22
+ * will not be needed for the forseeable future and can be purged
23
+ * from caches, etc
24
+ */
25
+ freeResources(): void;
26
+ }
@@ -0,0 +1,79 @@
1
+ import { BaseSequenceAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
2
+ import { openLocation } from '@jbrowse/core/util/io';
3
+ import { ObservableCreate } from '@jbrowse/core/util/rxjs';
4
+ import SimpleFeature from '@jbrowse/core/util/simpleFeature';
5
+ import { TwoBitFile } from '@gmod/twobit';
6
+ import { readConfObject } from '@jbrowse/core/configuration';
7
+ export default class TwoBitAdapter extends BaseSequenceAdapter {
8
+ constructor(config, getSubAdapter, pluginManager) {
9
+ super(config, getSubAdapter, pluginManager);
10
+ this.chromSizesData = this.initChromSizes();
11
+ this.twobit = new TwoBitFile({
12
+ filehandle: openLocation(readConfObject(config, 'twoBitLocation'), this.pluginManager),
13
+ });
14
+ }
15
+ async initChromSizes() {
16
+ const conf = readConfObject(this.config, 'chromSizesLocation');
17
+ // check against default and empty in case someone makes the field blank in
18
+ // config editor, may want better way to check "optional config slots" in
19
+ // future
20
+ if (conf.uri !== '/path/to/default.chrom.sizes' && conf.uri !== '') {
21
+ const file = openLocation(conf, this.pluginManager);
22
+ const data = await file.readFile('utf8');
23
+ return Object.fromEntries(data === null || data === void 0 ? void 0 : data.split('\n').filter(line => !!line.trim()).map(line => {
24
+ const [name, length] = line.split('\t');
25
+ return [name, +length];
26
+ }));
27
+ }
28
+ return undefined;
29
+ }
30
+ async getRefNames() {
31
+ const chromSizesData = await this.chromSizesData;
32
+ if (chromSizesData) {
33
+ return Object.keys(chromSizesData);
34
+ }
35
+ return this.twobit.getSequenceNames();
36
+ }
37
+ async getRegions() {
38
+ const chromSizesData = await this.chromSizesData;
39
+ if (chromSizesData) {
40
+ return Object.keys(chromSizesData).map(refName => ({
41
+ refName,
42
+ start: 0,
43
+ end: chromSizesData[refName],
44
+ }));
45
+ }
46
+ const refSizes = await this.twobit.getSequenceSizes();
47
+ return Object.keys(refSizes).map(refName => ({
48
+ refName,
49
+ start: 0,
50
+ end: refSizes[refName],
51
+ }));
52
+ }
53
+ /**
54
+ * Fetch features for a certain region
55
+ * @param param -
56
+ * @returns Observable of Feature objects in the region
57
+ */
58
+ getFeatures({ refName, start, end }) {
59
+ return ObservableCreate(async (observer) => {
60
+ const size = await this.twobit.getSequenceSize(refName);
61
+ const regionEnd = size !== undefined ? Math.min(size, end) : end;
62
+ const seq = await this.twobit.getSequence(refName, start, regionEnd);
63
+ if (seq) {
64
+ observer.next(new SimpleFeature({
65
+ id: `${refName} ${start}-${regionEnd}`,
66
+ data: { refName, start, end: regionEnd, seq },
67
+ }));
68
+ }
69
+ observer.complete();
70
+ });
71
+ }
72
+ /**
73
+ * called to provide a hint that data tied to a certain region
74
+ * will not be needed for the forseeable future and can be purged
75
+ * from caches, etc
76
+ */
77
+ freeResources( /* { region } */) { }
78
+ }
79
+ //# sourceMappingURL=TwoBitAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TwoBitAdapter.js","sourceRoot":"","sources":["../../src/TwoBitAdapter/TwoBitAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
2
+ export default _default;
@@ -0,0 +1,16 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration';
2
+ export default ConfigurationSchema('TwoBitAdapter', {
3
+ twoBitLocation: {
4
+ type: 'fileLocation',
5
+ defaultValue: { uri: '/path/to/my.2bit', locationType: 'UriLocation' },
6
+ },
7
+ chromSizesLocation: {
8
+ type: 'fileLocation',
9
+ defaultValue: {
10
+ uri: '/path/to/default.chrom.sizes',
11
+ locationType: 'UriLocation',
12
+ },
13
+ description: 'An optional chrom.sizes file can be supplied to speed up loading since parsing the twobit file can take time',
14
+ },
15
+ }, { explicitlyTyped: true });
16
+ //# sourceMappingURL=configSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/TwoBitAdapter/configSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,eAAe,mBAAmB,CAChC,eAAe,EACf;IACE,cAAc,EAAE;QACd,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE;KACvE;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE;YACZ,GAAG,EAAE,8BAA8B;YACnC,YAAY,EAAE,aAAa;SAC5B;QACD,WAAW,EACT,8GAA8G;KACjH;CACF,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAA"}
@@ -0,0 +1 @@
1
+ export { default as configSchema } from './configSchema';
@@ -0,0 +1,2 @@
1
+ export { default as configSchema } from './configSchema';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/TwoBitAdapter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
package/esm/index.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import Plugin from '@jbrowse/core/Plugin';
2
+ import PluginManager from '@jbrowse/core/PluginManager';
3
+ export default class SequencePlugin extends Plugin {
4
+ name: string;
5
+ install(pluginManager: PluginManager): void;
6
+ }
package/esm/index.js ADDED
@@ -0,0 +1,197 @@
1
+ import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType';
2
+ import { createBaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models';
3
+ import FeatureRendererType from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
4
+ import TrackType from '@jbrowse/core/pluggableElementTypes/TrackType';
5
+ import Plugin from '@jbrowse/core/Plugin';
6
+ import { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view';
7
+ import { makeIndex, getFileName, } from '@jbrowse/core/util/tracks';
8
+ import { configSchema as bgzipFastaAdapterConfigSchema } from './BgzipFastaAdapter';
9
+ import { configSchema as chromSizesAdapterConfigSchema } from './ChromSizesAdapter';
10
+ import { configSchema as divSequenceRendererConfigSchema, ReactComponent as DivSequenceRendererReactComponent, } from './DivSequenceRenderer';
11
+ import { configSchema as indexedFastaAdapterConfigSchema } from './IndexedFastaAdapter';
12
+ import { configSchema as linearReferenceSequenceDisplayConfigSchema, modelFactory as linearReferenceSequenceDisplayModelFactory, } from './LinearReferenceSequenceDisplay';
13
+ import { configSchema as twoBitAdapterConfigSchema } from './TwoBitAdapter';
14
+ import GCContentAdapterF from './GCContentAdapter';
15
+ import { createReferenceSeqTrackConfig } from './referenceSeqTrackConfig';
16
+ /* adjust in both directions */
17
+ class DivSequenceRenderer extends FeatureRendererType {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.supportsSVG = true;
21
+ }
22
+ getExpandedRegion(region) {
23
+ return {
24
+ ...region,
25
+ start: Math.max(region.start - 3, 0),
26
+ end: region.end + 3,
27
+ };
28
+ }
29
+ }
30
+ export default class SequencePlugin extends Plugin {
31
+ constructor() {
32
+ super(...arguments);
33
+ this.name = 'SequencePlugin';
34
+ }
35
+ install(pluginManager) {
36
+ pluginManager.addAdapterType(() => new AdapterType({
37
+ name: 'TwoBitAdapter',
38
+ configSchema: twoBitAdapterConfigSchema,
39
+ adapterMetadata: {
40
+ category: null,
41
+ hiddenFromGUI: true,
42
+ displayName: null,
43
+ description: null,
44
+ },
45
+ getAdapterClass: () => import('./TwoBitAdapter/TwoBitAdapter').then(r => r.default),
46
+ }));
47
+ pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
48
+ return (file, index, adapterHint) => {
49
+ const regexGuess = /\.2bit$/i;
50
+ const adapterName = 'TwoBitAdapter';
51
+ const fileName = getFileName(file);
52
+ const obj = {
53
+ type: adapterName,
54
+ twoBitLocation: file,
55
+ };
56
+ if (regexGuess.test(fileName) && !adapterHint) {
57
+ return obj;
58
+ }
59
+ else if (adapterHint === adapterName) {
60
+ return obj;
61
+ }
62
+ return adapterGuesser(file, index, adapterHint);
63
+ };
64
+ });
65
+ pluginManager.addToExtensionPoint('Core-guessTrackTypeForLocation', (trackTypeGuesser) => {
66
+ return (adapterName) => {
67
+ if (adapterName === 'TwoBitAdapter') {
68
+ return 'ReferenceSequenceTrack';
69
+ }
70
+ return trackTypeGuesser(adapterName);
71
+ };
72
+ });
73
+ pluginManager.addAdapterType(() => new AdapterType({
74
+ name: 'ChromSizesAdapter',
75
+ configSchema: chromSizesAdapterConfigSchema,
76
+ adapterMetadata: {
77
+ category: null,
78
+ hiddenFromGUI: true,
79
+ displayName: null,
80
+ description: null,
81
+ },
82
+ getAdapterClass: () => import('./ChromSizesAdapter/ChromSizesAdapter').then(r => r.default),
83
+ }));
84
+ pluginManager.addAdapterType(() => new AdapterType({
85
+ name: 'IndexedFastaAdapter',
86
+ configSchema: indexedFastaAdapterConfigSchema,
87
+ adapterMetadata: {
88
+ category: null,
89
+ hiddenFromGUI: true,
90
+ displayName: null,
91
+ description: null,
92
+ },
93
+ getAdapterClass: () => import('./IndexedFastaAdapter/IndexedFastaAdapter').then(r => r.default),
94
+ }));
95
+ pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
96
+ return (file, index, adapterHint) => {
97
+ const regexGuess = /\.(fa|fasta|fas|fna|mfa)$/i;
98
+ const adapterName = 'IndexedFastaAdapter';
99
+ const fileName = getFileName(file);
100
+ const obj = {
101
+ type: adapterName,
102
+ fastaLocation: file,
103
+ faiLocation: index || makeIndex(file, '.fai'),
104
+ };
105
+ if (regexGuess.test(fileName) && !adapterHint) {
106
+ return obj;
107
+ }
108
+ else if (adapterHint === adapterName) {
109
+ return obj;
110
+ }
111
+ return adapterGuesser(file, index, adapterHint);
112
+ };
113
+ });
114
+ pluginManager.addToExtensionPoint('Core-guessTrackTypeForLocation', (trackTypeGuesser) => {
115
+ return (adapterName) => {
116
+ if (adapterName === 'IndexedFastaAdapter') {
117
+ return 'ReferenceSequenceTrack';
118
+ }
119
+ return trackTypeGuesser(adapterName);
120
+ };
121
+ });
122
+ pluginManager.addAdapterType(() => new AdapterType({
123
+ name: 'BgzipFastaAdapter',
124
+ configSchema: bgzipFastaAdapterConfigSchema,
125
+ adapterMetadata: {
126
+ category: null,
127
+ hiddenFromGUI: true,
128
+ displayName: null,
129
+ description: null,
130
+ },
131
+ getAdapterClass: () => import('./BgzipFastaAdapter/BgzipFastaAdapter').then(r => r.default),
132
+ }));
133
+ pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
134
+ return (file, index, adapterHint) => {
135
+ const regexGuess = /\.(fa|fasta|fas|fna|mfa)\.b?gz$/i;
136
+ const adapterName = 'BgzipFastaAdapter';
137
+ const fileName = getFileName(file);
138
+ const obj = {
139
+ type: adapterName,
140
+ faiLocation: makeIndex(file, '.fai'),
141
+ gziLocation: makeIndex(file, '.gzi'),
142
+ };
143
+ if (regexGuess.test(fileName) && !adapterHint) {
144
+ return obj;
145
+ }
146
+ else if (adapterHint === adapterName) {
147
+ return obj;
148
+ }
149
+ return adapterGuesser(file, index, adapterHint);
150
+ };
151
+ });
152
+ pluginManager.addToExtensionPoint('Core-guessTrackTypeForLocation', (trackTypeGuesser) => {
153
+ return (adapterName) => {
154
+ if (adapterName === 'BgzipFastaAdapter') {
155
+ return 'ReferenceSequenceTrack';
156
+ }
157
+ return trackTypeGuesser(adapterName);
158
+ };
159
+ });
160
+ pluginManager.addAdapterType(() => new AdapterType({
161
+ name: 'GCContentAdapter',
162
+ adapterMetadata: {
163
+ category: null,
164
+ hiddenFromGUI: true,
165
+ displayName: null,
166
+ description: null,
167
+ },
168
+ ...pluginManager.load(GCContentAdapterF),
169
+ }));
170
+ pluginManager.addTrackType(() => {
171
+ const configSchema = createReferenceSeqTrackConfig(pluginManager);
172
+ return new TrackType({
173
+ name: 'ReferenceSequenceTrack',
174
+ configSchema,
175
+ stateModel: createBaseTrackModel(pluginManager, 'ReferenceSequenceTrack', configSchema),
176
+ });
177
+ });
178
+ pluginManager.addDisplayType(() => {
179
+ const stateModel = linearReferenceSequenceDisplayModelFactory(linearReferenceSequenceDisplayConfigSchema);
180
+ return {
181
+ name: 'LinearReferenceSequenceDisplay',
182
+ configSchema: linearReferenceSequenceDisplayConfigSchema,
183
+ stateModel,
184
+ trackType: 'ReferenceSequenceTrack',
185
+ viewType: 'LinearGenomeView',
186
+ ReactComponent: BaseLinearDisplayComponent,
187
+ };
188
+ });
189
+ pluginManager.addRendererType(() => new DivSequenceRenderer({
190
+ name: 'DivSequenceRenderer',
191
+ ReactComponent: DivSequenceRendererReactComponent,
192
+ configSchema: divSequenceRendererConfigSchema,
193
+ pluginManager,
194
+ }));
195
+ }
196
+ }
197
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,iDAAiD,CAAA;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAA;AACjF,OAAO,mBAAmB,MAAM,mEAAmE,CAAA;AACnG,OAAO,SAAS,MAAM,+CAA+C,CAAA;AACrE,OAAO,MAAM,MAAM,sBAAsB,CAAA;AAEzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAA;AAC/E,OAAO,EACL,SAAS,EAET,WAAW,GAEZ,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,YAAY,IAAI,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AACnF,OAAO,EAAE,YAAY,IAAI,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AACnF,OAAO,EACL,YAAY,IAAI,+BAA+B,EAC/C,cAAc,IAAI,iCAAiC,GACpD,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,YAAY,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAA;AACvF,OAAO,EACL,YAAY,IAAI,0CAA0C,EAC1D,YAAY,IAAI,0CAA0C,GAC3D,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,YAAY,IAAI,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,iBAAiB,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAA;AAEzE,+BAA+B;AAC/B,MAAM,mBAAoB,SAAQ,mBAAmB;IAArD;;QACE,gBAAW,GAAG,IAAI,CAAA;IASpB,CAAC;IAPC,iBAAiB,CAAC,MAAc;QAC9B,OAAO;YACL,GAAG,MAAM;YACT,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YACpC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC;SACpB,CAAA;IACH,CAAC;CACF;AAED,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,MAAM;IAAlD;;QACE,SAAI,GAAG,gBAAgB,CAAA;IA0OzB,CAAC;IAxOC,OAAO,CAAC,aAA4B;QAClC,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;YACd,IAAI,EAAE,eAAe;YACrB,YAAY,EAAE,yBAAyB;YACvC,eAAe,EAAE;gBACf,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,eAAe,EAAE,GAAG,EAAE,CACpB,MAAM,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;SAC/D,CAAC,CACL,CAAA;QACD,aAAa,CAAC,mBAAmB,CAC/B,8BAA8B,EAC9B,CAAC,cAA8B,EAAE,EAAE;YACjC,OAAO,CACL,IAAkB,EAClB,KAAoB,EACpB,WAAoB,EACpB,EAAE;gBACF,MAAM,UAAU,GAAG,UAAU,CAAA;gBAC7B,MAAM,WAAW,GAAG,eAAe,CAAA;gBACnC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAClC,MAAM,GAAG,GAAG;oBACV,IAAI,EAAE,WAAW;oBACjB,cAAc,EAAE,IAAI;iBACrB,CAAA;gBACD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;oBAC7C,OAAO,GAAG,CAAA;iBACX;qBAAM,IAAI,WAAW,KAAK,WAAW,EAAE;oBACtC,OAAO,GAAG,CAAA;iBACX;gBACD,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;YACjD,CAAC,CAAA;QACH,CAAC,CACF,CAAA;QACD,aAAa,CAAC,mBAAmB,CAC/B,gCAAgC,EAChC,CAAC,gBAAkC,EAAE,EAAE;YACrC,OAAO,CAAC,WAAmB,EAAE,EAAE;gBAC7B,IAAI,WAAW,KAAK,eAAe,EAAE;oBACnC,OAAO,wBAAwB,CAAA;iBAChC;gBACD,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAA;YACtC,CAAC,CAAA;QACH,CAAC,CACF,CAAA;QAED,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;YACd,IAAI,EAAE,mBAAmB;YACzB,YAAY,EAAE,6BAA6B;YAC3C,eAAe,EAAE;gBACf,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,eAAe,EAAE,GAAG,EAAE,CACpB,MAAM,CAAC,uCAAuC,CAAC,CAAC,IAAI,CAClD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CACf;SACJ,CAAC,CACL,CAAA;QAED,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;YACd,IAAI,EAAE,qBAAqB;YAC3B,YAAY,EAAE,+BAA+B;YAC7C,eAAe,EAAE;gBACf,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,eAAe,EAAE,GAAG,EAAE,CACpB,MAAM,CAAC,2CAA2C,CAAC,CAAC,IAAI,CACtD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CACf;SACJ,CAAC,CACL,CAAA;QACD,aAAa,CAAC,mBAAmB,CAC/B,8BAA8B,EAC9B,CAAC,cAA8B,EAAE,EAAE;YACjC,OAAO,CACL,IAAkB,EAClB,KAAoB,EACpB,WAAoB,EACpB,EAAE;gBACF,MAAM,UAAU,GAAG,4BAA4B,CAAA;gBAC/C,MAAM,WAAW,GAAG,qBAAqB,CAAA;gBACzC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAClC,MAAM,GAAG,GAAG;oBACV,IAAI,EAAE,WAAW;oBACjB,aAAa,EAAE,IAAI;oBACnB,WAAW,EAAE,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;iBAC9C,CAAA;gBAED,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;oBAC7C,OAAO,GAAG,CAAA;iBACX;qBAAM,IAAI,WAAW,KAAK,WAAW,EAAE;oBACtC,OAAO,GAAG,CAAA;iBACX;gBACD,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;YACjD,CAAC,CAAA;QACH,CAAC,CACF,CAAA;QACD,aAAa,CAAC,mBAAmB,CAC/B,gCAAgC,EAChC,CAAC,gBAAkC,EAAE,EAAE;YACrC,OAAO,CAAC,WAAmB,EAAE,EAAE;gBAC7B,IAAI,WAAW,KAAK,qBAAqB,EAAE;oBACzC,OAAO,wBAAwB,CAAA;iBAChC;gBACD,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAA;YACtC,CAAC,CAAA;QACH,CAAC,CACF,CAAA;QAED,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;YACd,IAAI,EAAE,mBAAmB;YACzB,YAAY,EAAE,6BAA6B;YAC3C,eAAe,EAAE;gBACf,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,eAAe,EAAE,GAAG,EAAE,CACpB,MAAM,CAAC,uCAAuC,CAAC,CAAC,IAAI,CAClD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CACf;SACJ,CAAC,CACL,CAAA;QAED,aAAa,CAAC,mBAAmB,CAC/B,8BAA8B,EAC9B,CAAC,cAA8B,EAAE,EAAE;YACjC,OAAO,CACL,IAAkB,EAClB,KAAoB,EACpB,WAAoB,EACpB,EAAE;gBACF,MAAM,UAAU,GAAG,kCAAkC,CAAA;gBACrD,MAAM,WAAW,GAAG,mBAAmB,CAAA;gBACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAClC,MAAM,GAAG,GAAG;oBACV,IAAI,EAAE,WAAW;oBACjB,WAAW,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;oBACpC,WAAW,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;iBACrC,CAAA;gBAED,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;oBAC7C,OAAO,GAAG,CAAA;iBACX;qBAAM,IAAI,WAAW,KAAK,WAAW,EAAE;oBACtC,OAAO,GAAG,CAAA;iBACX;gBACD,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;YACjD,CAAC,CAAA;QACH,CAAC,CACF,CAAA;QACD,aAAa,CAAC,mBAAmB,CAC/B,gCAAgC,EAChC,CAAC,gBAAkC,EAAE,EAAE;YACrC,OAAO,CAAC,WAAmB,EAAE,EAAE;gBAC7B,IAAI,WAAW,KAAK,mBAAmB,EAAE;oBACvC,OAAO,wBAAwB,CAAA;iBAChC;gBACD,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAA;YACtC,CAAC,CAAA;QACH,CAAC,CACF,CAAA;QAED,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;YACd,IAAI,EAAE,kBAAkB;YACxB,eAAe,EAAE;gBACf,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aAClB;YACD,GAAG,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC;SACzC,CAAC,CACL,CAAA;QACD,aAAa,CAAC,YAAY,CAAC,GAAG,EAAE;YAC9B,MAAM,YAAY,GAAG,6BAA6B,CAAC,aAAa,CAAC,CAAA;YAEjE,OAAO,IAAI,SAAS,CAAC;gBACnB,IAAI,EAAE,wBAAwB;gBAC9B,YAAY;gBACZ,UAAU,EAAE,oBAAoB,CAC9B,aAAa,EACb,wBAAwB,EACxB,YAAY,CACb;aACF,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE;YAChC,MAAM,UAAU,GAAG,0CAA0C,CAC3D,0CAA0C,CAC3C,CAAA;YACD,OAAO;gBACL,IAAI,EAAE,gCAAgC;gBACtC,YAAY,EAAE,0CAA0C;gBACxD,UAAU;gBACV,SAAS,EAAE,wBAAwB;gBACnC,QAAQ,EAAE,kBAAkB;gBAC5B,cAAc,EAAE,0BAA0B;aAC3C,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,aAAa,CAAC,eAAe,CAC3B,GAAG,EAAE,CACH,IAAI,mBAAmB,CAAC;YACtB,IAAI,EAAE,qBAAqB;YAC3B,cAAc,EAAE,iCAAiC;YACjD,YAAY,EAAE,+BAA+B;YAC7C,aAAa;SACd,CAAC,CACL,CAAA;IACH,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ export declare function createReferenceSeqTrackConfig(pluginManager: PluginManager): import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
@@ -0,0 +1,63 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { types } from 'mobx-state-tree';
3
+ import { ConfigurationSchema } from '@jbrowse/core/configuration';
4
+ /*
5
+ Note: this is primarily a copy of createBaseTrackConfig, except with a subset
6
+ of the config slots, to avoid including fields that don't make sense for the
7
+ ReferenceSequenceTrack
8
+ */
9
+ export function createReferenceSeqTrackConfig(pluginManager) {
10
+ return ConfigurationSchema('ReferenceSequenceTrack', {
11
+ adapter: pluginManager.pluggableConfigSchemaType('adapter'),
12
+ displays: types.array(pluginManager.pluggableConfigSchemaType('display')),
13
+ name: {
14
+ type: 'string',
15
+ description: 'optional track name',
16
+ defaultValue: '',
17
+ },
18
+ metadata: {
19
+ type: 'frozen',
20
+ description: 'anything to add about this track',
21
+ defaultValue: {},
22
+ },
23
+ }, {
24
+ preProcessSnapshot: s => {
25
+ const snap = JSON.parse(JSON.stringify(s));
26
+ const displayTypes = new Set();
27
+ const { displays = [] } = snap;
28
+ if (snap.trackId !== 'placeholderId') {
29
+ // Gets the displays on the track snapshot and the possible displays
30
+ // from the track type and adds any missing possible displays to the
31
+ // snapshot
32
+ displays.forEach((d) => d && displayTypes.add(d.type));
33
+ const trackType = pluginManager.getTrackType(snap.type);
34
+ trackType.displayTypes.forEach(displayType => {
35
+ if (!displayTypes.has(displayType.name)) {
36
+ displays.push({
37
+ displayId: `${snap.trackId}-${displayType.name}`,
38
+ type: displayType.name,
39
+ });
40
+ }
41
+ });
42
+ }
43
+ return { ...snap, displays };
44
+ },
45
+ explicitIdentifier: 'trackId',
46
+ explicitlyTyped: true,
47
+ actions: (self) => ({
48
+ addDisplayConf(displayConf) {
49
+ const { type } = displayConf;
50
+ if (!type) {
51
+ throw new Error(`unknown display type ${type}`);
52
+ }
53
+ const display = self.displays.find((d) => d && d.displayId === displayConf.displayId);
54
+ if (display) {
55
+ return display;
56
+ }
57
+ const length = self.displays.push(displayConf);
58
+ return self.displays[length - 1];
59
+ },
60
+ }),
61
+ });
62
+ }
63
+ //# sourceMappingURL=referenceSeqTrackConfig.js.map
@@ -0,0 +1 @@
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/plugin-sequence",
3
- "version": "1.7.11",
3
+ "version": "2.1.0",
4
4
  "description": "JBrowse 2 sequence adapters, tracks, etc.",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -20,32 +20,36 @@
20
20
  "main": "dist/index.js",
21
21
  "files": [
22
22
  "dist",
23
- "src"
23
+ "src",
24
+ "esm"
24
25
  ],
25
26
  "scripts": {
26
- "build": "babel src --root-mode upward --out-dir dist --extensions .ts,.js,.tsx,.jsx",
27
+ "build": "npm-run-all build:*",
27
28
  "test": "cd ../..; jest plugins/sequence",
28
29
  "prepublishOnly": "yarn test",
29
30
  "prepack": "yarn build; yarn useDist",
30
31
  "postpack": "yarn useSrc",
31
32
  "useDist": "node ../../scripts/useDist.js",
32
33
  "useSrc": "node ../../scripts/useSrc.js",
33
- "postbuild": "tsc --build tsconfig.build.json"
34
+ "prebuild": "npm run clean",
35
+ "build:esm": "tsc --build tsconfig.build.esm.json",
36
+ "build:es5": "tsc --build tsconfig.build.es5.json",
37
+ "clean": "rimraf dist esm *.tsbuildinfo"
34
38
  },
35
39
  "dependencies": {
36
40
  "@babel/runtime": "^7.17.9",
37
41
  "@gmod/indexedfasta": "^2.0.2",
38
42
  "@gmod/twobit": "^1.1.12",
39
- "abortable-promise-cache": "^1.5.0",
40
- "generic-filehandle": "^2.2.2"
43
+ "abortable-promise-cache": "^1.5.0"
41
44
  },
42
45
  "peerDependencies": {
43
- "@jbrowse/core": "^1.0.0",
44
- "@jbrowse/plugin-linear-genome-view": "^1.0.0",
45
- "@jbrowse/plugin-wiggle": "^1.0.0",
46
- "@material-ui/core": "^4.12.2",
47
- "mobx-react": "^6.0.0",
48
- "mobx-state-tree": "3.14.1",
46
+ "@jbrowse/core": "^2.0.0",
47
+ "@jbrowse/plugin-linear-genome-view": "^2.0.0",
48
+ "@jbrowse/plugin-wiggle": "^2.0.0",
49
+ "@mui/material": "^5.0.0",
50
+ "mobx": "^6.0.0",
51
+ "mobx-react": "^7.0.0",
52
+ "mobx-state-tree": "^5.0.0",
49
53
  "prop-types": "^15.0.0",
50
54
  "react": ">=16.8.0",
51
55
  "rxjs": "^6.0.0"
@@ -53,5 +57,8 @@
53
57
  "publishConfig": {
54
58
  "access": "public"
55
59
  },
56
- "gitHead": "5c21beb48a21f08b0091d293f09ac99174c48f77"
60
+ "distModule": "esm/index.js",
61
+ "srcModule": "src/index.ts",
62
+ "module": "esm/index.js",
63
+ "gitHead": "0db0462fa1f9f15ab4869da085bcab032b9483c3"
57
64
  }
@@ -2,56 +2,40 @@ import {
2
2
  RegionsAdapter,
3
3
  BaseAdapter,
4
4
  } from '@jbrowse/core/data_adapters/BaseAdapter'
5
- import { FileLocation } from '@jbrowse/core/util/types'
6
5
  import { openLocation } from '@jbrowse/core/util/io'
7
- import { GenericFilehandle } from 'generic-filehandle'
8
- import { readConfObject } from '@jbrowse/core/configuration'
9
- import { Instance } from 'mobx-state-tree'
10
- import MyConfigSchema from './configSchema'
11
- import PluginManager from '@jbrowse/core/PluginManager'
12
- import { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'
13
6
 
14
7
  export default class extends BaseAdapter implements RegionsAdapter {
15
8
  // the map of refSeq to length
16
- protected refSeqs: Promise<Record<string, number>>
9
+ protected setupP?: Promise<{ [key: string]: number }>
17
10
 
18
- protected source: string
19
-
20
- public constructor(
21
- config: Instance<typeof MyConfigSchema>,
22
- getSubAdapter?: getSubAdapterType,
23
- pluginManager?: PluginManager,
24
- ) {
25
- super(config, getSubAdapter, pluginManager)
26
- const chromSizesLocation = readConfObject(config, 'chromSizesLocation')
27
- if (!chromSizesLocation) {
28
- throw new Error('must provide chromSizesLocation')
29
- }
30
- const file = openLocation(
31
- chromSizesLocation as FileLocation,
32
- this.pluginManager,
11
+ async setupPre() {
12
+ const pm = this.pluginManager
13
+ const file = openLocation(this.getConf('chromSizesLocation'), pm)
14
+ const data = await file.readFile('utf8')
15
+ return Object.fromEntries(
16
+ data
17
+ .split('\n')
18
+ .map(f => f.trim())
19
+ .filter(f => !!f)
20
+ .map((line: string) => {
21
+ const [name, length] = line.split('\t')
22
+ return [name, +length]
23
+ }),
33
24
  )
34
- this.source = file.toString()
35
- this.refSeqs = this.init(file)
36
25
  }
37
26
 
38
- private async init(file: GenericFilehandle) {
39
- const data = await file.readFile('utf8')
40
- const refSeqs: { [key: string]: number } = {}
41
- if (!data.length) {
42
- throw new Error(`Could not read file ${file.toString()}`)
27
+ async setup() {
28
+ if (!this.setupP) {
29
+ this.setupP = this.setupPre().catch(e => {
30
+ this.setupP = undefined
31
+ throw e
32
+ })
43
33
  }
44
- data.split('\n').forEach((line: string) => {
45
- if (line.length) {
46
- const [name, length] = line.split('\t')
47
- refSeqs[name] = +length
48
- }
49
- })
50
- return refSeqs
34
+ return this.setupP
51
35
  }
52
36
 
53
37
  public async getRegions() {
54
- const refSeqs = await this.refSeqs
38
+ const refSeqs = await this.setup()
55
39
  return Object.keys(refSeqs).map(refName => ({
56
40
  refName,
57
41
  start: 0,
@@ -59,10 +43,6 @@ export default class extends BaseAdapter implements RegionsAdapter {
59
43
  }))
60
44
  }
61
45
 
62
- public getFeatures() {
63
- throw new Error('sequence not available')
64
- }
65
-
66
46
  public getHeader() {
67
47
  return {}
68
48
  }
@@ -4,7 +4,7 @@ import { render } from '@testing-library/react'
4
4
  import { createJBrowseTheme } from '@jbrowse/core/ui'
5
5
  import PrecomputedLayout from '@jbrowse/core/util/layouts/PrecomputedLayout'
6
6
  import SimpleFeature from '@jbrowse/core/util/simpleFeature'
7
- import { ThemeProvider } from '@material-ui/core'
7
+ import { ThemeProvider } from '@mui/material'
8
8
  import DivSequenceRendering from './DivSequenceRendering'
9
9
  import DivRenderingConfigSchema from '../configSchema'
10
10
 
@@ -3,8 +3,10 @@ import {
3
3
  BaseLinearDisplay,
4
4
  LinearGenomeViewModel,
5
5
  } from '@jbrowse/plugin-linear-genome-view'
6
- import { ConfigurationReference } from '@jbrowse/core/configuration'
7
- import { AnyConfigurationSchemaType } from '@jbrowse/core/configuration/configurationSchema'
6
+ import {
7
+ AnyConfigurationSchemaType,
8
+ ConfigurationReference,
9
+ } from '@jbrowse/core/configuration'
8
10
  import { getContainingView } from '@jbrowse/core/util'
9
11
 
10
12
  export function modelFactory(configSchema: AnyConfigurationSchemaType) {