jbrowse-plugin-msaview 2.0.0 → 2.0.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/LaunchMsaView/components/NewNCBIBlastQuery/NcbiBlastPanel.js +3 -3
- package/dist/LaunchMsaView/components/NewNCBIBlastQuery/NcbiBlastPanel.js.map +1 -1
- package/dist/LaunchMsaView/components/NewNCBIBlastQuery/index.d.ts +1 -2
- package/dist/LaunchMsaView/components/NewNCBIBlastQuery/index.js +1 -2
- package/dist/LaunchMsaView/components/NewNCBIBlastQuery/index.js.map +1 -1
- package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js +2 -2
- package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js.map +1 -1
- package/dist/MsaViewPanel/model.d.ts +15 -20
- package/dist/MsaViewPanel/model.js +27 -19
- package/dist/MsaViewPanel/model.js.map +1 -1
- package/dist/jbrowse-plugin-msaview.umd.production.min.js +23 -39
- package/dist/jbrowse-plugin-msaview.umd.production.min.js.map +4 -4
- package/dist/utils/msa.js +31 -11
- package/dist/utils/msa.js.map +1 -1
- package/dist/utils/ncbiBlast.js +4 -4
- package/dist/utils/ncbiBlast.js.map +1 -1
- package/package.json +3 -2
- package/src/LaunchMsaView/components/NewNCBIBlastQuery/NcbiBlastPanel.tsx +3 -3
- package/src/LaunchMsaView/components/NewNCBIBlastQuery/index.tsx +1 -2
- package/src/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.tsx +2 -1
- package/src/MsaViewPanel/model.ts +25 -19
- package/src/utils/msa.ts +38 -8
- package/src/utils/ncbiBlast.ts +4 -4
package/dist/utils/msa.js
CHANGED
|
@@ -45,6 +45,21 @@ async function runKalign({ sequence, onProgress, }) {
|
|
|
45
45
|
tree: await textfetch(`${base}/kalign/result/${jobId}/phylotree`),
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
|
+
async function runMafft({ sequence, onProgress, }) {
|
|
49
|
+
const jobId = await textfetch(`${base}/mafft/run`, {
|
|
50
|
+
method: 'POST',
|
|
51
|
+
body: new URLSearchParams({
|
|
52
|
+
email: 'colin.diesh@gmail.com',
|
|
53
|
+
stype: 'protein',
|
|
54
|
+
sequence,
|
|
55
|
+
}),
|
|
56
|
+
});
|
|
57
|
+
await wait({ jobId, algorithm: 'mafft', onProgress });
|
|
58
|
+
return {
|
|
59
|
+
msa: await textfetch(`${base}/mafft/result/${jobId}/fa`),
|
|
60
|
+
tree: await textfetch(`${base}/mafft/result/${jobId}/phylotree`),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
48
63
|
async function wait({ onProgress, jobId, algorithm, }) {
|
|
49
64
|
while (true) {
|
|
50
65
|
for (let i = 0; i < 10; i++) {
|
|
@@ -59,17 +74,22 @@ async function wait({ onProgress, jobId, algorithm, }) {
|
|
|
59
74
|
}
|
|
60
75
|
export async function launchMSA({ algorithm, sequence, onProgress, }) {
|
|
61
76
|
onProgress(`Launching ${algorithm} MSA...`);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
77
|
+
switch (algorithm) {
|
|
78
|
+
case 'clustalo': {
|
|
79
|
+
return runClustalOmega({ sequence, onProgress });
|
|
80
|
+
}
|
|
81
|
+
case 'muscle': {
|
|
82
|
+
return runMuscle({ sequence, onProgress });
|
|
83
|
+
}
|
|
84
|
+
case 'kalign': {
|
|
85
|
+
return runKalign({ sequence, onProgress });
|
|
86
|
+
}
|
|
87
|
+
case 'mafft': {
|
|
88
|
+
return runMafft({ sequence, onProgress });
|
|
89
|
+
}
|
|
90
|
+
default: {
|
|
91
|
+
throw new Error('unknown algorithm');
|
|
92
|
+
}
|
|
73
93
|
}
|
|
74
94
|
}
|
|
75
95
|
//# sourceMappingURL=msa.js.map
|
package/dist/utils/msa.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msa.js","sourceRoot":"","sources":["../../src/utils/msa.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"msa.js","sourceRoot":"","sources":["../../src/utils/msa.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/ncbiBlast.js
CHANGED
|
@@ -47,14 +47,14 @@ async function waitForRid({ rid, onProgress, }) {
|
|
|
47
47
|
onProgress(`Re-checking BLAST status in... ${iter - i}`);
|
|
48
48
|
}
|
|
49
49
|
const res = await textfetch(`${BLAST_URL}?CMD=Get&FORMAT_OBJECT=SearchInfo&RID=${rid}`);
|
|
50
|
-
if (
|
|
50
|
+
if (/\s+Status=WAITING/m.test(res)) {
|
|
51
51
|
continue;
|
|
52
52
|
}
|
|
53
|
-
else if (
|
|
53
|
+
else if (/\s+Status=FAILED/m.test(res)) {
|
|
54
54
|
throw new Error(`BLAST ${rid} failed; please report to blast-help@ncbi.nlm.nih.gov`);
|
|
55
55
|
}
|
|
56
|
-
else if (
|
|
57
|
-
if (
|
|
56
|
+
else if (/\s+Status=READY/m.test(res)) {
|
|
57
|
+
if (/\s+ThereAreHits=yes/m.test(res)) {
|
|
58
58
|
return true;
|
|
59
59
|
}
|
|
60
60
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ncbiBlast.js","sourceRoot":"","sources":["../../src/utils/ncbiBlast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEvD,MAAM,CAAC,MAAM,SAAS,GAAG,gDAAgD,CAAA;AAEzE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAC/B,KAAK,EACL,aAAa,EACb,YAAY,EACZ,UAAU,EACV,KAAK,GAON;IACC,UAAU,CAAC,6BAA6B,CAAC,CAAA;IACzC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,YAAY,CAAC;QACjC,KAAK;QACL,aAAa;QACb,YAAY;KACb,CAAC,CAAA;IACF,KAAK,CAAC,GAAG,CAAC,CAAA;IACV,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAA;IACrC,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,GAAG,SAAS,gBAAgB,GAAG,8CAA8C,CAC9E,CAAA;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAGpD,CAAA;IAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAA;AACtB,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,EAC1B,KAAK,EACL,YAAY,EACZ,aAAa,GAKd;IACC,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE;QACrC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,eAAe,CAAC;YACxB,GAAG,EAAE,KAAK;YACV,OAAO,EAAE,YAAY;YACrB,QAAQ,EAAE,aAAa;YACvB,KAAK,EAAE,KAAK;YACZ,GAAG,CAAC,aAAa,KAAK,kBAAkB;gBACtC,CAAC,CAAC;oBACE,YAAY,EAAE,IAAI;oBAClB,OAAO,EAAE,wBAAwB;iBAClC;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;KACH,CAAC,CAAA;IAEF,4EAA4E;IAC5E,qEAAqE;IACrE,8DAA8D;IAC9D,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAEjD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAA;AACtB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,EACxB,GAAG,EACH,UAAU,GAIX;IACC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,EAAE,CAAA;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;YACnB,UAAU,CAAC,kCAAkC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAA;QAC1D,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,GAAG,SAAS,yCAAyC,GAAG,EAAE,CAC3D,CAAA;QACD,IAAI,
|
|
1
|
+
{"version":3,"file":"ncbiBlast.js","sourceRoot":"","sources":["../../src/utils/ncbiBlast.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "2.0.
|
|
2
|
+
"version": "2.0.2",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"name": "jbrowse-plugin-msaview",
|
|
5
5
|
"keywords": [
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"eslint-plugin-prettier": "^5.1.0",
|
|
61
61
|
"eslint-plugin-react": "^7.20.3",
|
|
62
62
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
63
|
+
"eslint-plugin-unicorn": "^54.0.0",
|
|
63
64
|
"mobx": "^6.10.2",
|
|
64
65
|
"mobx-react": "^9.0.1",
|
|
65
66
|
"mobx-state-tree": "^5.3.0",
|
|
@@ -67,7 +68,7 @@
|
|
|
67
68
|
"pretty-bytes": "^6.1.1",
|
|
68
69
|
"react": "^18.2.0",
|
|
69
70
|
"react-dom": "^18.2.0",
|
|
70
|
-
"rimraf": "^
|
|
71
|
+
"rimraf": "^6.0.0",
|
|
71
72
|
"rxjs": "^7.8.1",
|
|
72
73
|
"tss-react": "^4.9.2",
|
|
73
74
|
"typescript": "^5.2.2"
|
|
@@ -110,9 +110,9 @@ const NcbiBlastPanel = observer(function NcbiBlastPanel2({
|
|
|
110
110
|
maxRows={10}
|
|
111
111
|
fullWidth
|
|
112
112
|
value={
|
|
113
|
-
|
|
114
|
-
?
|
|
115
|
-
:
|
|
113
|
+
proteinSequence
|
|
114
|
+
? `>${getTranscriptDisplayName(selectedTranscript)}\n${proteinSequence}`
|
|
115
|
+
: 'Loading...'
|
|
116
116
|
}
|
|
117
117
|
InputProps={{
|
|
118
118
|
readOnly: true,
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export default NcbiBlastPanel
|
|
1
|
+
export { default } from './NcbiBlastPanel'
|
|
@@ -23,6 +23,7 @@ import {
|
|
|
23
23
|
getTranscriptDisplayName,
|
|
24
24
|
getId,
|
|
25
25
|
getTranscriptFeatures,
|
|
26
|
+
getGeneDisplayName,
|
|
26
27
|
} from '../../util'
|
|
27
28
|
import { fetchGeneList } from './fetchGeneList'
|
|
28
29
|
import { preCalculatedLaunchView } from './preCalculatedLaunchView'
|
|
@@ -120,7 +121,7 @@ const PreLoadedMSA = observer(function PreLoadedMSA2({
|
|
|
120
121
|
await preCalculatedLaunchView({
|
|
121
122
|
userSelection,
|
|
122
123
|
session,
|
|
123
|
-
newViewTitle:
|
|
124
|
+
newViewTitle: getGeneDisplayName(ret),
|
|
124
125
|
view,
|
|
125
126
|
feature: ret,
|
|
126
127
|
})
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Instance, addDisposer, cast, types } from 'mobx-state-tree'
|
|
2
2
|
import { autorun } from 'mobx'
|
|
3
3
|
import { MSAModelF } from 'react-msaview'
|
|
4
|
-
import { Feature, getSession
|
|
4
|
+
import { Feature, getSession } from '@jbrowse/core/util'
|
|
5
5
|
import { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'
|
|
6
6
|
import { BaseViewModel } from '@jbrowse/core/pluggableElementTypes'
|
|
7
7
|
|
|
@@ -101,7 +101,6 @@ export default function stateModelFactory() {
|
|
|
101
101
|
* #getter
|
|
102
102
|
*/
|
|
103
103
|
get transcriptToMsaMap() {
|
|
104
|
-
console.log(self.connectedFeature)
|
|
105
104
|
return self.connectedFeature
|
|
106
105
|
? genomeToTranscriptSeqMapping(self.connectedFeature)
|
|
107
106
|
: undefined
|
|
@@ -226,13 +225,20 @@ export default function stateModelFactory() {
|
|
|
226
225
|
self,
|
|
227
226
|
autorun(async () => {
|
|
228
227
|
if (self.blastParams) {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
228
|
+
try {
|
|
229
|
+
self.setProgress('Submitting query')
|
|
230
|
+
const data = await doLaunchBlast({
|
|
231
|
+
self: self as JBrowsePluginMsaViewModel,
|
|
232
|
+
})
|
|
233
|
+
self.setData(data)
|
|
234
|
+
self.setBlastParams(undefined)
|
|
235
|
+
self.setProgress('')
|
|
236
|
+
} catch (e) {
|
|
237
|
+
self.setError(e)
|
|
238
|
+
console.error(e)
|
|
239
|
+
} finally {
|
|
240
|
+
self.setProgress('')
|
|
241
|
+
}
|
|
236
242
|
}
|
|
237
243
|
}),
|
|
238
244
|
)
|
|
@@ -243,14 +249,14 @@ export default function stateModelFactory() {
|
|
|
243
249
|
autorun(() => {
|
|
244
250
|
const { mouseCol, mouseClickCol } = self
|
|
245
251
|
const r1 =
|
|
246
|
-
mouseCol
|
|
247
|
-
?
|
|
248
|
-
:
|
|
252
|
+
mouseCol === undefined
|
|
253
|
+
? undefined
|
|
254
|
+
: msaCoordToGenomeCoord({ model: self, coord: mouseCol })
|
|
249
255
|
const r2 =
|
|
250
|
-
mouseClickCol
|
|
251
|
-
?
|
|
252
|
-
:
|
|
253
|
-
self.setConnectedHighlights([r1, r2].filter(
|
|
256
|
+
mouseClickCol === undefined
|
|
257
|
+
? undefined
|
|
258
|
+
: msaCoordToGenomeCoord({ model: self, coord: mouseClickCol })
|
|
259
|
+
self.setConnectedHighlights([r1, r2].filter(f => !!f))
|
|
254
260
|
}),
|
|
255
261
|
)
|
|
256
262
|
|
|
@@ -261,9 +267,9 @@ export default function stateModelFactory() {
|
|
|
261
267
|
const { connectedView, zoomToBaseLevel, mouseClickCol } = self
|
|
262
268
|
const { assemblyManager } = getSession(self)
|
|
263
269
|
const r2 =
|
|
264
|
-
mouseClickCol
|
|
265
|
-
?
|
|
266
|
-
:
|
|
270
|
+
mouseClickCol === undefined
|
|
271
|
+
? undefined
|
|
272
|
+
: msaCoordToGenomeCoord({ model: self, coord: mouseClickCol })
|
|
267
273
|
|
|
268
274
|
if (!r2 || !connectedView) {
|
|
269
275
|
return
|
package/src/utils/msa.ts
CHANGED
|
@@ -67,6 +67,28 @@ async function runKalign({
|
|
|
67
67
|
tree: await textfetch(`${base}/kalign/result/${jobId}/phylotree`),
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
+
|
|
71
|
+
async function runMafft({
|
|
72
|
+
sequence,
|
|
73
|
+
onProgress,
|
|
74
|
+
}: {
|
|
75
|
+
sequence: string
|
|
76
|
+
onProgress: (arg: string) => void
|
|
77
|
+
}) {
|
|
78
|
+
const jobId = await textfetch(`${base}/mafft/run`, {
|
|
79
|
+
method: 'POST',
|
|
80
|
+
body: new URLSearchParams({
|
|
81
|
+
email: 'colin.diesh@gmail.com',
|
|
82
|
+
stype: 'protein',
|
|
83
|
+
sequence,
|
|
84
|
+
}),
|
|
85
|
+
})
|
|
86
|
+
await wait({ jobId, algorithm: 'mafft', onProgress })
|
|
87
|
+
return {
|
|
88
|
+
msa: await textfetch(`${base}/mafft/result/${jobId}/fa`),
|
|
89
|
+
tree: await textfetch(`${base}/mafft/result/${jobId}/phylotree`),
|
|
90
|
+
}
|
|
91
|
+
}
|
|
70
92
|
async function wait({
|
|
71
93
|
onProgress,
|
|
72
94
|
jobId,
|
|
@@ -99,13 +121,21 @@ export async function launchMSA({
|
|
|
99
121
|
onProgress: (arg: string) => void
|
|
100
122
|
}) {
|
|
101
123
|
onProgress(`Launching ${algorithm} MSA...`)
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
124
|
+
switch (algorithm) {
|
|
125
|
+
case 'clustalo': {
|
|
126
|
+
return runClustalOmega({ sequence, onProgress })
|
|
127
|
+
}
|
|
128
|
+
case 'muscle': {
|
|
129
|
+
return runMuscle({ sequence, onProgress })
|
|
130
|
+
}
|
|
131
|
+
case 'kalign': {
|
|
132
|
+
return runKalign({ sequence, onProgress })
|
|
133
|
+
}
|
|
134
|
+
case 'mafft': {
|
|
135
|
+
return runMafft({ sequence, onProgress })
|
|
136
|
+
}
|
|
137
|
+
default: {
|
|
138
|
+
throw new Error('unknown algorithm')
|
|
139
|
+
}
|
|
110
140
|
}
|
|
111
141
|
}
|
package/src/utils/ncbiBlast.ts
CHANGED
|
@@ -88,14 +88,14 @@ async function waitForRid({
|
|
|
88
88
|
const res = await textfetch(
|
|
89
89
|
`${BLAST_URL}?CMD=Get&FORMAT_OBJECT=SearchInfo&RID=${rid}`,
|
|
90
90
|
)
|
|
91
|
-
if (
|
|
91
|
+
if (/\s+Status=WAITING/m.test(res)) {
|
|
92
92
|
continue
|
|
93
|
-
} else if (
|
|
93
|
+
} else if (/\s+Status=FAILED/m.test(res)) {
|
|
94
94
|
throw new Error(
|
|
95
95
|
`BLAST ${rid} failed; please report to blast-help@ncbi.nlm.nih.gov`,
|
|
96
96
|
)
|
|
97
|
-
} else if (
|
|
98
|
-
if (
|
|
97
|
+
} else if (/\s+Status=READY/m.test(res)) {
|
|
98
|
+
if (/\s+ThereAreHits=yes/m.test(res)) {
|
|
99
99
|
return true
|
|
100
100
|
} else {
|
|
101
101
|
throw new Error('No hits found')
|