@jbrowse/plugin-data-management 2.3.1 → 2.3.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.
- package/dist/ucsc-trackhub/model.js +11 -17
- package/dist/ucsc-trackhub/model.js.map +1 -1
- package/dist/ucsc-trackhub/ucscTrackHub.d.ts +23 -5
- package/dist/ucsc-trackhub/ucscTrackHub.js +90 -143
- package/dist/ucsc-trackhub/ucscTrackHub.js.map +1 -1
- package/esm/ucsc-trackhub/model.js +11 -17
- package/esm/ucsc-trackhub/model.js.map +1 -1
- package/esm/ucsc-trackhub/ucscTrackHub.d.ts +23 -5
- package/esm/ucsc-trackhub/ucscTrackHub.js +87 -143
- package/esm/ucsc-trackhub/ucscTrackHub.js.map +1 -1
- package/package.json +2 -2
- package/src/ucsc-trackhub/model.ts +15 -26
- package/src/ucsc-trackhub/ucscTrackHub.ts +326 -0
- package/src/ucsc-trackhub/ucscTrackHub.js +0 -442
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { objectHash } from '@jbrowse/core/util';
|
|
1
|
+
import { isUriLocation, objectHash } from '@jbrowse/core/util';
|
|
2
2
|
import { openLocation } from '@jbrowse/core/util/io';
|
|
3
3
|
import { generateUnsupportedTrackConf, generateUnknownTrackConf, } from '@jbrowse/core/util/tracks';
|
|
4
4
|
import ucscAssemblies from './ucscAssemblies';
|
|
5
5
|
export { ucscAssemblies };
|
|
6
|
-
export async function fetchHubFile(
|
|
6
|
+
export async function fetchHubFile(hubLocation) {
|
|
7
7
|
try {
|
|
8
|
-
const hubFileText = await openLocation(
|
|
8
|
+
const hubFileText = await openLocation(hubLocation).readFile('utf8');
|
|
9
9
|
const { HubFile } = await import('@gmod/ucsc-hub');
|
|
10
10
|
return new HubFile(hubFileText);
|
|
11
11
|
}
|
|
@@ -13,19 +13,40 @@ export async function fetchHubFile(hubFileLocation) {
|
|
|
13
13
|
throw new Error(`Not a valid hub.txt file, got error: '${error}'`);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
export async function fetchGenomesFile(
|
|
17
|
-
const genomesFileText = await openLocation(
|
|
16
|
+
export async function fetchGenomesFile(genomesLoc) {
|
|
17
|
+
const genomesFileText = await openLocation(genomesLoc).readFile('utf8');
|
|
18
18
|
const { GenomesFile } = await import('@gmod/ucsc-hub');
|
|
19
19
|
return new GenomesFile(genomesFileText);
|
|
20
20
|
}
|
|
21
|
-
export async function fetchTrackDbFile(
|
|
22
|
-
const text = await openLocation(
|
|
21
|
+
export async function fetchTrackDbFile(trackDbLoc) {
|
|
22
|
+
const text = await openLocation(trackDbLoc).readFile('utf8');
|
|
23
23
|
const { TrackDbFile } = await import('@gmod/ucsc-hub');
|
|
24
24
|
return new TrackDbFile(text);
|
|
25
25
|
}
|
|
26
|
-
export function
|
|
26
|
+
export function makeLoc(first, base) {
|
|
27
|
+
return {
|
|
28
|
+
uri: new URL(first, base.uri).href,
|
|
29
|
+
locationType: 'UriLocation',
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function makeLocAlt(first, alt, base) {
|
|
33
|
+
return first ? makeLoc(first, base) : makeLoc(alt, base);
|
|
34
|
+
}
|
|
35
|
+
export function makeLoc2(first, alt) {
|
|
36
|
+
return first
|
|
37
|
+
? {
|
|
38
|
+
uri: first,
|
|
39
|
+
locationType: 'LocalPath',
|
|
40
|
+
}
|
|
41
|
+
: {
|
|
42
|
+
uri: alt,
|
|
43
|
+
locationType: 'UriLocation',
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function generateTracks(trackDb, trackDbLoc, assemblyName, sequenceAdapter) {
|
|
27
47
|
const tracks = [];
|
|
28
48
|
trackDb.forEach((track, trackName) => {
|
|
49
|
+
var _a;
|
|
29
50
|
const trackKeys = Array.from(track.keys());
|
|
30
51
|
const parentTrackKeys = [
|
|
31
52
|
'superTrack',
|
|
@@ -39,7 +60,7 @@ export function generateTracks(trackDb, trackDbFileLocation, assemblyName, seque
|
|
|
39
60
|
const parentTracks = [];
|
|
40
61
|
let currentTrackName = trackName;
|
|
41
62
|
do {
|
|
42
|
-
currentTrackName = trackDb.get(currentTrackName).get('parent');
|
|
63
|
+
currentTrackName = ((_a = trackDb.get(currentTrackName)) === null || _a === void 0 ? void 0 : _a.get('parent')) || '';
|
|
43
64
|
if (currentTrackName) {
|
|
44
65
|
;
|
|
45
66
|
[currentTrackName] = currentTrackName.split(' ');
|
|
@@ -47,63 +68,37 @@ export function generateTracks(trackDb, trackDbFileLocation, assemblyName, seque
|
|
|
47
68
|
}
|
|
48
69
|
} while (currentTrackName);
|
|
49
70
|
parentTracks.reverse();
|
|
50
|
-
const categories = parentTracks
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
res
|
|
54
|
-
tracks.push(
|
|
71
|
+
const categories = parentTracks
|
|
72
|
+
.map(p => p === null || p === void 0 ? void 0 : p.get('shortLabel'))
|
|
73
|
+
.filter((f) => !!f);
|
|
74
|
+
const res = makeTrackConfig(track, categories, trackDbLoc, trackDb, sequenceAdapter);
|
|
75
|
+
tracks.push({
|
|
76
|
+
...res,
|
|
77
|
+
trackId: `ucsc-trackhub-${objectHash(res)}`,
|
|
78
|
+
assemblyNames: [assemblyName],
|
|
79
|
+
});
|
|
55
80
|
});
|
|
56
81
|
return tracks;
|
|
57
82
|
}
|
|
58
|
-
function makeTrackConfig(track, categories,
|
|
83
|
+
function makeTrackConfig(track, categories, trackDbLoc, trackDb, sequenceAdapter) {
|
|
84
|
+
var _a;
|
|
59
85
|
let trackType = track.get('type');
|
|
86
|
+
const name = track.get('shortLabel') || '';
|
|
87
|
+
const bigDataUrl = track.get('bigDataUrl') || '';
|
|
88
|
+
const bigDataIdx = track.get('bigDataIndex') || '';
|
|
89
|
+
const isUri = isUriLocation(trackDbLoc);
|
|
60
90
|
if (!trackType) {
|
|
61
|
-
trackType = trackDb.get(track.get('parent')).get('type');
|
|
91
|
+
trackType = (_a = trackDb.get(track.get('parent') || '')) === null || _a === void 0 ? void 0 : _a.get('type');
|
|
62
92
|
}
|
|
63
|
-
let baseTrackType = trackType.split(' ')[0];
|
|
64
|
-
if (baseTrackType === 'bam' &&
|
|
65
|
-
track.get('bigDataUrl').toLowerCase().endsWith('cram')) {
|
|
93
|
+
let baseTrackType = (trackType === null || trackType === void 0 ? void 0 : trackType.split(' ')[0]) || '';
|
|
94
|
+
if (baseTrackType === 'bam' && bigDataUrl.toLowerCase().endsWith('cram')) {
|
|
66
95
|
baseTrackType = 'cram';
|
|
67
96
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
uri: new URL(track.get('bigDataUrl'), trackDbFileLocation.uri).href,
|
|
72
|
-
locationType: 'UriLocation',
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
bigDataLocation = {
|
|
77
|
-
localPath: track.get('bigDataUrl'),
|
|
78
|
-
locationType: 'LocalPathLocation',
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
let bigDataIndexLocation;
|
|
97
|
+
const bigDataLocation = isUri
|
|
98
|
+
? makeLoc(bigDataUrl, trackDbLoc)
|
|
99
|
+
: makeLoc2(bigDataUrl);
|
|
82
100
|
switch (baseTrackType) {
|
|
83
101
|
case 'bam':
|
|
84
|
-
if (trackDbFileLocation.uri) {
|
|
85
|
-
bigDataIndexLocation = track.get('bigDataIndex')
|
|
86
|
-
? {
|
|
87
|
-
uri: new URL(track.get('bigDataIndex'), trackDbFileLocation.uri)
|
|
88
|
-
.href,
|
|
89
|
-
locationType: 'UriLocation',
|
|
90
|
-
}
|
|
91
|
-
: {
|
|
92
|
-
uri: new URL(`${track.get('bigDataUrl')}.bai`, trackDbFileLocation.uri).href,
|
|
93
|
-
locationType: 'UriLocation',
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
bigDataIndexLocation = track.get('bigDataIndex')
|
|
98
|
-
? {
|
|
99
|
-
localPath: track.get('bigDataIndex'),
|
|
100
|
-
locationType: 'LocalPathLocation',
|
|
101
|
-
}
|
|
102
|
-
: {
|
|
103
|
-
localPath: `${track.get('bigDataUrl')}.bai`,
|
|
104
|
-
locationType: 'LocalPathLocation',
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
102
|
return {
|
|
108
103
|
type: 'AlignmentsTrack',
|
|
109
104
|
name: track.get('shortLabel'),
|
|
@@ -113,22 +108,16 @@ function makeTrackConfig(track, categories, trackDbFileLocation, trackDb, sequen
|
|
|
113
108
|
type: 'BamAdapter',
|
|
114
109
|
bamLocation: bigDataLocation,
|
|
115
110
|
index: {
|
|
116
|
-
location:
|
|
111
|
+
location: isUri
|
|
112
|
+
? makeLocAlt(bigDataIdx, bigDataUrl + '.bai', trackDbLoc)
|
|
113
|
+
: makeLoc2(bigDataIdx, bigDataUrl + '.bai'),
|
|
117
114
|
},
|
|
118
115
|
},
|
|
119
116
|
};
|
|
120
|
-
case 'bed':
|
|
121
|
-
return generateUnsupportedTrackConf(track.get('shortLabel'), baseTrackType, categories);
|
|
122
|
-
case 'bed5FloatScore':
|
|
123
|
-
return generateUnsupportedTrackConf(track.get('shortLabel'), baseTrackType, categories);
|
|
124
|
-
case 'bedGraph':
|
|
125
|
-
return generateUnsupportedTrackConf(track.get('shortLabel'), baseTrackType, categories);
|
|
126
|
-
case 'bedRnaElements':
|
|
127
|
-
return generateUnsupportedTrackConf(track.get('shortLabel'), baseTrackType, categories);
|
|
128
117
|
case 'bigBarChart':
|
|
129
118
|
return {
|
|
130
119
|
type: 'FeatureTrack',
|
|
131
|
-
name
|
|
120
|
+
name,
|
|
132
121
|
description: track.get('longLabel'),
|
|
133
122
|
category: categories,
|
|
134
123
|
adapter: {
|
|
@@ -142,7 +131,7 @@ function makeTrackConfig(track, categories, trackDbFileLocation, trackDb, sequen
|
|
|
142
131
|
case 'bigBed':
|
|
143
132
|
return {
|
|
144
133
|
type: 'FeatureTrack',
|
|
145
|
-
name
|
|
134
|
+
name,
|
|
146
135
|
description: track.get('longLabel'),
|
|
147
136
|
category: categories,
|
|
148
137
|
adapter: {
|
|
@@ -153,7 +142,7 @@ function makeTrackConfig(track, categories, trackDbFileLocation, trackDb, sequen
|
|
|
153
142
|
case 'bigGenePred':
|
|
154
143
|
return {
|
|
155
144
|
type: 'FeatureTrack',
|
|
156
|
-
name
|
|
145
|
+
name,
|
|
157
146
|
description: track.get('longLabel'),
|
|
158
147
|
category: categories,
|
|
159
148
|
adapter: {
|
|
@@ -164,7 +153,7 @@ function makeTrackConfig(track, categories, trackDbFileLocation, trackDb, sequen
|
|
|
164
153
|
case 'bigChain':
|
|
165
154
|
return {
|
|
166
155
|
type: 'FeatureTrack',
|
|
167
|
-
name
|
|
156
|
+
name,
|
|
168
157
|
description: track.get('longLabel'),
|
|
169
158
|
category: categories,
|
|
170
159
|
adapter: {
|
|
@@ -178,7 +167,7 @@ function makeTrackConfig(track, categories, trackDbFileLocation, trackDb, sequen
|
|
|
178
167
|
case 'bigInteract':
|
|
179
168
|
return {
|
|
180
169
|
type: 'FeatureTrack',
|
|
181
|
-
name
|
|
170
|
+
name,
|
|
182
171
|
description: track.get('longLabel'),
|
|
183
172
|
category: categories,
|
|
184
173
|
adapter: {
|
|
@@ -192,7 +181,7 @@ function makeTrackConfig(track, categories, trackDbFileLocation, trackDb, sequen
|
|
|
192
181
|
case 'bigMaf':
|
|
193
182
|
return {
|
|
194
183
|
type: 'FeatureTrack',
|
|
195
|
-
name
|
|
184
|
+
name,
|
|
196
185
|
description: track.get('longLabel'),
|
|
197
186
|
category: categories,
|
|
198
187
|
adapter: {
|
|
@@ -206,7 +195,7 @@ function makeTrackConfig(track, categories, trackDbFileLocation, trackDb, sequen
|
|
|
206
195
|
case 'bigPsl':
|
|
207
196
|
return {
|
|
208
197
|
type: 'FeatureTrack',
|
|
209
|
-
name
|
|
198
|
+
name,
|
|
210
199
|
description: track.get('longLabel'),
|
|
211
200
|
category: categories,
|
|
212
201
|
adapter: {
|
|
@@ -220,7 +209,7 @@ function makeTrackConfig(track, categories, trackDbFileLocation, trackDb, sequen
|
|
|
220
209
|
case 'bigWig':
|
|
221
210
|
return {
|
|
222
211
|
type: 'QuantitativeTrack',
|
|
223
|
-
name
|
|
212
|
+
name,
|
|
224
213
|
description: track.get('longLabel'),
|
|
225
214
|
category: categories,
|
|
226
215
|
adapter: {
|
|
@@ -228,56 +217,25 @@ function makeTrackConfig(track, categories, trackDbFileLocation, trackDb, sequen
|
|
|
228
217
|
bigWigLocation: bigDataLocation,
|
|
229
218
|
},
|
|
230
219
|
};
|
|
231
|
-
case 'broadPeak':
|
|
232
|
-
return generateUnsupportedTrackConf(track.get('shortLabel'), baseTrackType, categories);
|
|
233
|
-
case 'coloredExon':
|
|
234
|
-
return generateUnsupportedTrackConf(track.get('shortLabel'), baseTrackType, categories);
|
|
235
220
|
case 'cram':
|
|
236
|
-
if (trackDbFileLocation.uri) {
|
|
237
|
-
bigDataIndexLocation = track.get('bigDataIndex')
|
|
238
|
-
? {
|
|
239
|
-
uri: new URL(track.get('bigDataIndex'), trackDbFileLocation.uri)
|
|
240
|
-
.href,
|
|
241
|
-
locationType: 'UriLocation',
|
|
242
|
-
}
|
|
243
|
-
: {
|
|
244
|
-
uri: new URL(`${track.get('bigDataUrl')}.crai`, trackDbFileLocation.uri).href,
|
|
245
|
-
locationType: 'UriLocation',
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
bigDataIndexLocation = track.get('bigDataIndex')
|
|
250
|
-
? {
|
|
251
|
-
localPath: track.get('bigDataIndex'),
|
|
252
|
-
locationType: 'LocalPathLocation',
|
|
253
|
-
}
|
|
254
|
-
: {
|
|
255
|
-
localPath: `${track.get('bigDataUrl')}.crai`,
|
|
256
|
-
locationType: 'LocalPathLocation',
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
221
|
return {
|
|
260
222
|
type: 'AlignmentsTrack',
|
|
261
|
-
name
|
|
223
|
+
name,
|
|
262
224
|
description: track.get('longLabel'),
|
|
263
225
|
category: categories,
|
|
264
226
|
adapter: {
|
|
265
227
|
type: 'CramAdapter',
|
|
266
228
|
cramLocation: bigDataLocation,
|
|
267
|
-
craiLocation:
|
|
229
|
+
craiLocation: isUri
|
|
230
|
+
? makeLocAlt(bigDataIdx, bigDataUrl + '.crai', trackDbLoc)
|
|
231
|
+
: makeLoc2(bigDataIdx, bigDataUrl + '.crai'),
|
|
268
232
|
sequenceAdapter,
|
|
269
233
|
},
|
|
270
234
|
};
|
|
271
|
-
case 'gvf':
|
|
272
|
-
return generateUnsupportedTrackConf(track.get('shortLabel'), baseTrackType, categories);
|
|
273
|
-
case 'ld2':
|
|
274
|
-
return generateUnsupportedTrackConf(track.get('shortLabel'), baseTrackType, categories);
|
|
275
|
-
case 'narrowPeak':
|
|
276
|
-
return generateUnsupportedTrackConf(track.get('shortLabel'), baseTrackType, categories);
|
|
277
235
|
case 'bigNarrowPeak':
|
|
278
236
|
return {
|
|
279
237
|
type: 'FeatureTrack',
|
|
280
|
-
name
|
|
238
|
+
name,
|
|
281
239
|
description: track.get('longLabel'),
|
|
282
240
|
category: categories,
|
|
283
241
|
adapter: {
|
|
@@ -286,52 +244,27 @@ function makeTrackConfig(track, categories, trackDbFileLocation, trackDb, sequen
|
|
|
286
244
|
},
|
|
287
245
|
};
|
|
288
246
|
case 'peptideMapping':
|
|
289
|
-
return generateUnsupportedTrackConf(
|
|
247
|
+
return generateUnsupportedTrackConf(name, baseTrackType, categories);
|
|
290
248
|
case 'vcfTabix':
|
|
291
|
-
if (trackDbFileLocation.uri) {
|
|
292
|
-
bigDataIndexLocation = track.get('bigDataIndex')
|
|
293
|
-
? {
|
|
294
|
-
uri: new URL(track.get('bigDataIndex'), trackDbFileLocation.uri)
|
|
295
|
-
.href,
|
|
296
|
-
locationType: 'UriLocation',
|
|
297
|
-
}
|
|
298
|
-
: {
|
|
299
|
-
uri: new URL(`${track.get('bigDataUrl')}.tbi`, trackDbFileLocation.uri).href,
|
|
300
|
-
locationType: 'UriLocation',
|
|
301
|
-
};
|
|
302
|
-
}
|
|
303
|
-
else {
|
|
304
|
-
bigDataIndexLocation = track.get('bigDataIndex')
|
|
305
|
-
? {
|
|
306
|
-
localPath: track.get('bigDataIndex'),
|
|
307
|
-
locationType: 'LocalPathLocation',
|
|
308
|
-
}
|
|
309
|
-
: {
|
|
310
|
-
localPath: `${track.get('bigDataUrl')}.tbi`,
|
|
311
|
-
locationType: 'LocalPathLocation',
|
|
312
|
-
};
|
|
313
|
-
}
|
|
314
249
|
return {
|
|
315
250
|
type: 'VariantTrack',
|
|
316
|
-
name
|
|
251
|
+
name,
|
|
317
252
|
description: track.get('longLabel'),
|
|
318
253
|
category: categories,
|
|
319
254
|
adapter: {
|
|
320
255
|
type: 'VcfTabixAdapter',
|
|
321
256
|
vcfGzLocation: bigDataLocation,
|
|
322
257
|
index: {
|
|
323
|
-
location:
|
|
258
|
+
location: isUri
|
|
259
|
+
? makeLocAlt(bigDataIdx, bigDataUrl + '.tbi', trackDbLoc)
|
|
260
|
+
: makeLoc2(bigDataIdx, bigDataUrl + '.tbi'),
|
|
324
261
|
},
|
|
325
262
|
},
|
|
326
263
|
};
|
|
327
|
-
case 'wig':
|
|
328
|
-
return generateUnsupportedTrackConf(track.get('shortLabel'), baseTrackType, categories);
|
|
329
|
-
case 'wigMaf':
|
|
330
|
-
return generateUnsupportedTrackConf(track.get('shortLabel'), baseTrackType, categories);
|
|
331
264
|
case 'hic':
|
|
332
265
|
return {
|
|
333
266
|
type: 'HicTrack',
|
|
334
|
-
name
|
|
267
|
+
name,
|
|
335
268
|
description: track.get('longLabel'),
|
|
336
269
|
category: categories,
|
|
337
270
|
adapter: {
|
|
@@ -339,10 +272,21 @@ function makeTrackConfig(track, categories, trackDbFileLocation, trackDb, sequen
|
|
|
339
272
|
hicLocation: bigDataLocation,
|
|
340
273
|
},
|
|
341
274
|
};
|
|
342
|
-
|
|
343
|
-
|
|
275
|
+
// unsupported types
|
|
276
|
+
// case 'gvf':
|
|
277
|
+
// case 'ld2':
|
|
278
|
+
// case 'narrowPeak':
|
|
279
|
+
// case 'wig':
|
|
280
|
+
// case 'wigMaf':
|
|
281
|
+
// case 'halSnake':
|
|
282
|
+
// case 'bed':
|
|
283
|
+
// case 'bed5FloatScore':
|
|
284
|
+
// case 'bedGraph':
|
|
285
|
+
// case 'bedRnaElements':
|
|
286
|
+
// case 'broadPeak':
|
|
287
|
+
// case 'coloredExon':
|
|
344
288
|
default:
|
|
345
|
-
return generateUnknownTrackConf(
|
|
289
|
+
return generateUnknownTrackConf(name, baseTrackType, categories);
|
|
346
290
|
}
|
|
347
291
|
}
|
|
348
292
|
//# sourceMappingURL=ucscTrackHub.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ucscTrackHub.js","sourceRoot":"","sources":["../../src/ucsc-trackhub/ucscTrackHub.
|
|
1
|
+
{"version":3,"file":"ucscTrackHub.js","sourceRoot":"","sources":["../../src/ucsc-trackhub/ucscTrackHub.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-data-management",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.2",
|
|
4
4
|
"description": "JBrowse 2 linear genome view",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -60,5 +60,5 @@
|
|
|
60
60
|
"distModule": "esm/index.js",
|
|
61
61
|
"srcModule": "src/index.ts",
|
|
62
62
|
"module": "esm/index.js",
|
|
63
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "467d973535bb7b2664e9f66311fb0dc21c1ce5ba"
|
|
64
64
|
}
|
|
@@ -43,11 +43,11 @@ export default function UCSCTrackHubConnection(pluginManager: PluginManager) {
|
|
|
43
43
|
const genomesFileLocation = hubUri
|
|
44
44
|
? {
|
|
45
45
|
uri: new URL(genomeFile, hubUri).href,
|
|
46
|
-
locationType: 'UriLocation',
|
|
46
|
+
locationType: 'UriLocation' as const,
|
|
47
47
|
}
|
|
48
48
|
: {
|
|
49
49
|
localPath: genomeFile,
|
|
50
|
-
locationType: 'LocalPathLocation',
|
|
50
|
+
locationType: 'LocalPathLocation' as const,
|
|
51
51
|
}
|
|
52
52
|
const genomesFile = await fetchGenomesFile(genomesFileLocation)
|
|
53
53
|
const trackDbData = []
|
|
@@ -67,43 +67,32 @@ export default function UCSCTrackHubConnection(pluginManager: PluginManager) {
|
|
|
67
67
|
`Cannot find assembly for "${genomeName}" from the genomes file for connection "${connectionName}"`,
|
|
68
68
|
)
|
|
69
69
|
}
|
|
70
|
-
const
|
|
71
|
-
if (!
|
|
70
|
+
const db = genome.get('trackDb')
|
|
71
|
+
if (!db) {
|
|
72
72
|
throw new Error('genomesFile not found on hub')
|
|
73
73
|
}
|
|
74
|
-
const
|
|
74
|
+
const base = new URL(genomeFile, hubUri)
|
|
75
|
+
const trackDbLoc = hubUri
|
|
75
76
|
? {
|
|
76
|
-
uri: new URL(
|
|
77
|
-
locationType: 'UriLocation',
|
|
77
|
+
uri: new URL(db, base).href,
|
|
78
|
+
locationType: 'UriLocation' as const,
|
|
78
79
|
}
|
|
79
80
|
: {
|
|
80
|
-
localPath:
|
|
81
|
-
locationType: 'LocalPathLocation',
|
|
81
|
+
localPath: db,
|
|
82
|
+
locationType: 'LocalPathLocation' as const,
|
|
82
83
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
await fetchTrackDbFile(trackDbFileLocation),
|
|
86
|
-
genomeName,
|
|
87
|
-
conf,
|
|
88
|
-
] as const)
|
|
84
|
+
const trackDb = await fetchTrackDbFile(trackDbLoc)
|
|
85
|
+
trackDbData.push([trackDbLoc, trackDb, genomeName, conf] as const)
|
|
89
86
|
}
|
|
90
87
|
for (const [
|
|
91
|
-
|
|
88
|
+
trackDbLoc,
|
|
92
89
|
trackDbFile,
|
|
93
90
|
genomeName,
|
|
94
91
|
conf,
|
|
95
92
|
] of trackDbData) {
|
|
96
|
-
const
|
|
97
|
-
'sequence',
|
|
98
|
-
'adapter',
|
|
99
|
-
])
|
|
93
|
+
const seqAdapter = readConfObject(conf, ['sequence', 'adapter'])
|
|
100
94
|
self.addTrackConfs(
|
|
101
|
-
generateTracks(
|
|
102
|
-
trackDbFile,
|
|
103
|
-
trackDbFileLocation,
|
|
104
|
-
genomeName,
|
|
105
|
-
sequenceAdapter,
|
|
106
|
-
),
|
|
95
|
+
generateTracks(trackDbFile, trackDbLoc, genomeName, seqAdapter),
|
|
107
96
|
)
|
|
108
97
|
}
|
|
109
98
|
} catch (e) {
|