@jbrowse/plugin-sequence 1.7.9 → 2.0.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 (126) 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.js +132 -166
  8. package/dist/ChromSizesAdapter/ChromSizesAdapter.js.map +1 -0
  9. package/dist/ChromSizesAdapter/configSchema.js +12 -21
  10. package/dist/ChromSizesAdapter/configSchema.js.map +1 -0
  11. package/dist/ChromSizesAdapter/index.js +8 -14
  12. package/dist/ChromSizesAdapter/index.js.map +1 -0
  13. package/dist/DivSequenceRenderer/components/DivSequenceRendering.js +130 -229
  14. package/dist/DivSequenceRenderer/components/DivSequenceRendering.js.map +1 -0
  15. package/dist/DivSequenceRenderer/configSchema.js +10 -19
  16. package/dist/DivSequenceRenderer/configSchema.js.map +1 -0
  17. package/dist/DivSequenceRenderer/index.js +10 -22
  18. package/dist/DivSequenceRenderer/index.js.map +1 -0
  19. package/dist/GCContentAdapter/GCContentAdapter.js +181 -248
  20. package/dist/GCContentAdapter/GCContentAdapter.js.map +1 -0
  21. package/dist/GCContentAdapter/configSchema.js +7 -16
  22. package/dist/GCContentAdapter/configSchema.js.map +1 -0
  23. package/dist/GCContentAdapter/index.js +33 -28
  24. package/dist/GCContentAdapter/index.js.map +1 -0
  25. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.js +177 -266
  26. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.js.map +1 -0
  27. package/dist/IndexedFastaAdapter/configSchema.js +21 -36
  28. package/dist/IndexedFastaAdapter/configSchema.js.map +1 -0
  29. package/dist/IndexedFastaAdapter/index.js +8 -14
  30. package/dist/IndexedFastaAdapter/index.js.map +1 -0
  31. package/dist/LinearReferenceSequenceDisplay/configSchema.js +5 -16
  32. package/dist/LinearReferenceSequenceDisplay/configSchema.js.map +1 -0
  33. package/dist/LinearReferenceSequenceDisplay/index.js +7 -20
  34. package/dist/LinearReferenceSequenceDisplay/index.js.map +1 -0
  35. package/dist/LinearReferenceSequenceDisplay/model.d.ts +18 -16
  36. package/dist/LinearReferenceSequenceDisplay/model.js +88 -99
  37. package/dist/LinearReferenceSequenceDisplay/model.js.map +1 -0
  38. package/dist/TwoBitAdapter/TwoBitAdapter.js +178 -274
  39. package/dist/TwoBitAdapter/TwoBitAdapter.js.map +1 -0
  40. package/dist/TwoBitAdapter/configSchema.js +16 -28
  41. package/dist/TwoBitAdapter/configSchema.js.map +1 -0
  42. package/dist/TwoBitAdapter/index.js +8 -14
  43. package/dist/TwoBitAdapter/index.js.map +1 -0
  44. package/dist/index.js +255 -312
  45. package/dist/index.js.map +1 -0
  46. package/dist/referenceSeqTrackConfig.js +71 -86
  47. package/dist/referenceSeqTrackConfig.js.map +1 -0
  48. package/esm/BgzipFastaAdapter/BgzipFastaAdapter.d.ts +7 -0
  49. package/esm/BgzipFastaAdapter/BgzipFastaAdapter.js +28 -0
  50. package/esm/BgzipFastaAdapter/BgzipFastaAdapter.js.map +1 -0
  51. package/esm/BgzipFastaAdapter/configSchema.d.ts +2 -0
  52. package/esm/BgzipFastaAdapter/configSchema.js +30 -0
  53. package/esm/BgzipFastaAdapter/configSchema.js.map +1 -0
  54. package/esm/BgzipFastaAdapter/index.d.ts +1 -0
  55. package/esm/BgzipFastaAdapter/index.js +2 -0
  56. package/esm/BgzipFastaAdapter/index.js.map +1 -0
  57. package/esm/ChromSizesAdapter/ChromSizesAdapter.d.ts +19 -0
  58. package/esm/ChromSizesAdapter/ChromSizesAdapter.js +45 -0
  59. package/esm/ChromSizesAdapter/ChromSizesAdapter.js.map +1 -0
  60. package/esm/ChromSizesAdapter/configSchema.d.ts +2 -0
  61. package/esm/ChromSizesAdapter/configSchema.js +11 -0
  62. package/esm/ChromSizesAdapter/configSchema.js.map +1 -0
  63. package/esm/ChromSizesAdapter/index.d.ts +1 -0
  64. package/esm/ChromSizesAdapter/index.js +2 -0
  65. package/esm/ChromSizesAdapter/index.js.map +1 -0
  66. package/esm/DivSequenceRenderer/components/DivSequenceRendering.d.ts +21 -0
  67. package/esm/DivSequenceRenderer/components/DivSequenceRendering.js +97 -0
  68. package/esm/DivSequenceRenderer/components/DivSequenceRendering.js.map +1 -0
  69. package/esm/DivSequenceRenderer/configSchema.d.ts +2 -0
  70. package/esm/DivSequenceRenderer/configSchema.js +9 -0
  71. package/esm/DivSequenceRenderer/configSchema.js.map +1 -0
  72. package/esm/DivSequenceRenderer/index.d.ts +2 -0
  73. package/esm/DivSequenceRenderer/index.js +3 -0
  74. package/esm/DivSequenceRenderer/index.js.map +1 -0
  75. package/esm/GCContentAdapter/GCContentAdapter.d.ts +23 -0
  76. package/esm/GCContentAdapter/GCContentAdapter.js +97 -0
  77. package/esm/GCContentAdapter/GCContentAdapter.js.map +1 -0
  78. package/esm/GCContentAdapter/configSchema.d.ts +3 -0
  79. package/esm/GCContentAdapter/configSchema.js +7 -0
  80. package/esm/GCContentAdapter/configSchema.js.map +1 -0
  81. package/esm/GCContentAdapter/index.d.ts +6 -0
  82. package/esm/GCContentAdapter/index.js +8 -0
  83. package/esm/GCContentAdapter/index.js.map +1 -0
  84. package/esm/IndexedFastaAdapter/IndexedFastaAdapter.d.ts +27 -0
  85. package/esm/IndexedFastaAdapter/IndexedFastaAdapter.js +90 -0
  86. package/esm/IndexedFastaAdapter/IndexedFastaAdapter.js.map +1 -0
  87. package/esm/IndexedFastaAdapter/configSchema.d.ts +2 -0
  88. package/esm/IndexedFastaAdapter/configSchema.js +20 -0
  89. package/esm/IndexedFastaAdapter/configSchema.js.map +1 -0
  90. package/esm/IndexedFastaAdapter/index.d.ts +1 -0
  91. package/esm/IndexedFastaAdapter/index.js +2 -0
  92. package/esm/IndexedFastaAdapter/index.js.map +1 -0
  93. package/esm/LinearReferenceSequenceDisplay/configSchema.d.ts +1 -0
  94. package/esm/LinearReferenceSequenceDisplay/configSchema.js +4 -0
  95. package/esm/LinearReferenceSequenceDisplay/configSchema.js.map +1 -0
  96. package/esm/LinearReferenceSequenceDisplay/index.d.ts +2 -0
  97. package/esm/LinearReferenceSequenceDisplay/index.js +3 -0
  98. package/esm/LinearReferenceSequenceDisplay/index.js.map +1 -0
  99. package/esm/LinearReferenceSequenceDisplay/model.d.ts +210 -0
  100. package/esm/LinearReferenceSequenceDisplay/model.js +83 -0
  101. package/esm/LinearReferenceSequenceDisplay/model.js.map +1 -0
  102. package/esm/TwoBitAdapter/TwoBitAdapter.d.ts +26 -0
  103. package/esm/TwoBitAdapter/TwoBitAdapter.js +79 -0
  104. package/esm/TwoBitAdapter/TwoBitAdapter.js.map +1 -0
  105. package/esm/TwoBitAdapter/configSchema.d.ts +2 -0
  106. package/esm/TwoBitAdapter/configSchema.js +16 -0
  107. package/esm/TwoBitAdapter/configSchema.js.map +1 -0
  108. package/esm/TwoBitAdapter/index.d.ts +1 -0
  109. package/esm/TwoBitAdapter/index.js +2 -0
  110. package/esm/TwoBitAdapter/index.js.map +1 -0
  111. package/esm/index.d.ts +6 -0
  112. package/esm/index.js +197 -0
  113. package/esm/index.js.map +1 -0
  114. package/esm/referenceSeqTrackConfig.d.ts +2 -0
  115. package/esm/referenceSeqTrackConfig.js +63 -0
  116. package/esm/referenceSeqTrackConfig.js.map +1 -0
  117. package/package.json +16 -8
  118. package/src/DivSequenceRenderer/components/DivSequenceRendering.test.js +1 -1
  119. package/src/LinearReferenceSequenceDisplay/model.ts +4 -2
  120. package/dist/BgzipFastaAdapter/BgzipFastaAdapter.test.js +0 -64
  121. package/dist/ChromSizesAdapter/ChromSizesAdapter.test.js +0 -46
  122. package/dist/DivSequenceRenderer/components/DivSequenceRendering.test.js +0 -245
  123. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.test.js +0 -81
  124. package/dist/TwoBitAdapter/TwoBitAdapter.test.js +0 -94
  125. package/dist/declare.d.js +0 -1
  126. 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":"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"}
@@ -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.9",
3
+ "version": "2.0.0",
4
4
  "description": "JBrowse 2 sequence adapters, tracks, etc.",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -20,17 +20,21 @@
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",
@@ -43,9 +47,10 @@
43
47
  "@jbrowse/core": "^1.0.0",
44
48
  "@jbrowse/plugin-linear-genome-view": "^1.0.0",
45
49
  "@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",
50
+ "@mui/material": "^5.0.0",
51
+ "mobx": "^6.0.0",
52
+ "mobx-react": "^7.0.0",
53
+ "mobx-state-tree": "^5.0.0",
49
54
  "prop-types": "^15.0.0",
50
55
  "react": ">=16.8.0",
51
56
  "rxjs": "^6.0.0"
@@ -53,5 +58,8 @@
53
58
  "publishConfig": {
54
59
  "access": "public"
55
60
  },
56
- "gitHead": "a6504c385d703ce6e755d05652ef659ffe28c864"
61
+ "distModule": "esm/index.js",
62
+ "srcModule": "src/index.ts",
63
+ "module": "esm/index.js",
64
+ "gitHead": "ecc7f5d47351a5ea04bc00f3a6eb6dfb607342e6"
57
65
  }
@@ -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) {
@@ -1,64 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
-
7
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
-
9
- var _operators = require("rxjs/operators");
10
-
11
- var _BgzipFastaAdapter = _interopRequireDefault(require("./BgzipFastaAdapter"));
12
-
13
- var _configSchema = _interopRequireDefault(require("./configSchema"));
14
-
15
- test('can use a indexed fasta with gzi', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
16
- var adapter, features, featuresArray, features2, featuresArray2;
17
- return _regenerator.default.wrap(function _callee$(_context) {
18
- while (1) {
19
- switch (_context.prev = _context.next) {
20
- case 0:
21
- adapter = new _BgzipFastaAdapter.default(_configSchema.default.create({
22
- fastaLocation: {
23
- localPath: require.resolve('../../test_data/volvox.fa.gz'),
24
- locationType: 'LocalPathLocation'
25
- },
26
- faiLocation: {
27
- localPath: require.resolve('../../test_data/volvox.fa.gz.fai'),
28
- locationType: 'LocalPathLocation'
29
- },
30
- gziLocation: {
31
- localPath: require.resolve('../../test_data/volvox.fa.gz.gzi'),
32
- locationType: 'LocalPathLocation'
33
- }
34
- }));
35
- features = adapter.getFeatures({
36
- refName: 'ctgA',
37
- start: 0,
38
- end: 20000
39
- });
40
- _context.next = 4;
41
- return features.pipe((0, _operators.toArray)()).toPromise();
42
-
43
- case 4:
44
- featuresArray = _context.sent;
45
- expect(featuresArray).toMatchSnapshot();
46
- features2 = adapter.getFeatures({
47
- refName: 'ctgC',
48
- start: 0,
49
- end: 20000
50
- });
51
- _context.next = 9;
52
- return features2.pipe((0, _operators.toArray)()).toPromise();
53
-
54
- case 9:
55
- featuresArray2 = _context.sent;
56
- expect(featuresArray2).toMatchSnapshot();
57
-
58
- case 11:
59
- case "end":
60
- return _context.stop();
61
- }
62
- }
63
- }, _callee);
64
- })));
@@ -1,46 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
-
7
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
-
9
- var _ChromSizesAdapter = _interopRequireDefault(require("./ChromSizesAdapter"));
10
-
11
- var _configSchema = _interopRequireDefault(require("./configSchema"));
12
-
13
- test('adapter can fetch sequence from volvox.chrom.sizes', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
14
- var adapter, regions;
15
- return _regenerator.default.wrap(function _callee$(_context) {
16
- while (1) {
17
- switch (_context.prev = _context.next) {
18
- case 0:
19
- adapter = new _ChromSizesAdapter.default(_configSchema.default.create({
20
- chromSizesLocation: {
21
- localPath: require.resolve('./test_data/volvox.chrom.sizes'),
22
- locationType: 'LocalPathLocation'
23
- }
24
- }));
25
- _context.next = 3;
26
- return adapter.getRegions();
27
-
28
- case 3:
29
- regions = _context.sent;
30
- expect(regions).toEqual([{
31
- refName: 'ctgA',
32
- start: 0,
33
- end: 50001
34
- }, {
35
- refName: 'ctgB',
36
- start: 0,
37
- end: 6079
38
- }]);
39
-
40
- case 5:
41
- case "end":
42
- return _context.stop();
43
- }
44
- }
45
- }, _callee);
46
- })));