Sapporo WES on DDBJ dogfooding
DDBJ で Sapporo を起動している
現在はIPでアクセス制限をしている
まずは /service-info にアクセスしてみる
code:terminal
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>
なぜ
IP制限を遠隔に置いているフロントエンドサーバのIPで設定しているので socks proxy (ssh -D) でつないでいるが、この設定はブラウザには反映されるが ssh/curl などの CLI には適用されないらしい
しょうがないのでブラウザで見てみる
code:access via Chrome
{
"default_workflow_engine_parameters": [],
"executable_workflows": [
{
"workflow_attachment": [
{
"file_name": "trimming_and_qc.cwl",
},
{
"file_name": "fastqc.cwl",
},
{
"file_name": "trimmomatic_pe.cwl",
}
],
"workflow_name": "cwltool_attach_all_files",
"workflow_type": "CWL",
"workflow_type_version": "v1.0",
"workflow_url": "./trimming_and_qc.cwl"
},
{
"workflow_attachment": [],
"workflow_name": "cwltool_remote_workflow",
"workflow_type": "CWL",
"workflow_type_version": "v1.0",
},
{
"workflow_attachment": [
{
"file_name": "file_input.nf",
},
{
"file_name": "nf_test_input.txt",
}
],
"workflow_name": "nextflow_file_input",
"workflow_type": "Nextflow",
"workflow_type_version": "v1.0",
"workflow_url": "./file_input.nf"
},
{
"workflow_attachment": [
{
"file_name": "params_outdir.nf",
}
],
"workflow_name": "nextflow_params_outdir",
"workflow_type": "Nextflow",
"workflow_type_version": "v1.0",
"workflow_url": "./params_outdir.nf"
},
{
"workflow_attachment": [
{
"file_name": "str_input.nf",
}
],
"workflow_name": "nextflow_str_input",
"workflow_type": "Nextflow",
"workflow_type_version": "v1.0",
"workflow_url": "./str_input.nf"
},
{
"workflow_attachment": [
{
"file_name": "Snakefile",
},
{
"file_name": "scripts/plot-quals.py",
},
{
"file_name": "envs/stats.yaml",
},
{
"file_name": "envs/calling.yaml",
},
{
"file_name": "envs/mapping.yaml",
},
{
"file_name": "data/samples/A.fastq",
},
{
"file_name": "data/samples/B.fastq",
},
{
"file_name": "data/samples/C.fastq",
},
{
"file_name": "data/genome.fa",
},
{
"file_name": "data/genome.fa.amb",
},
{
"file_name": "data/genome.fa.fai",
},
{
"file_name": "data/genome.fa.sa",
},
{
"file_name": "data/genome.fa.pac",
},
{
"file_name": "data/genome.fa.ann",
},
{
"file_name": "data/genome.fa.bwt",
}
],
"workflow_name": "snakemake_tutorial_wf",
"workflow_type": "Snakemake",
"workflow_type_version": "v1.0",
"workflow_url": "./Snakefile"
},
{
"workflow_attachment": [
{
"file_name": "Dockstore.cwl",
}
],
"workflow_name": "cromwell_bamstats_cwl",
"workflow_type": "CWL",
"workflow_type_version": "v1.0",
"workflow_url": "./Dockstore.cwl"
},
{
"workflow_attachment": [
{
"file_name": "Dockstore.wdl",
}
],
"workflow_name": "cromwell_bamstats_wdl",
"workflow_type": "WDL",
"workflow_type_version": "1.0",
"workflow_url": "./Dockstore.wdl"
}
],
"supported_filesystem_protocols": [
"http",
"https",
"file",
"s3"
],
"supported_wes_versions": [
"sapporo-wes-1.0.0"
],
"system_state_counts": {},
"tags": {
"debug": false,
"get_runs": true,
"registered_only_mode": true,
"wes_name": "sapporo",
"workflow_attachment": true
},
"workflow_engine_versions": {
"cromwell": "55",
"cwltool": "1.0.20191225192155",
"ep3 (experimental)": "v1.0.0",
"nextflow": "21.01.1-edge",
"snakemake": "v5.32.0",
"toil (experimental)": "4.1.0"
},
"workflow_type_versions": {
"CWL": {
"workflow_type_version": [
"v1.0",
"v1.1",
"v1.1.0-dev1"
]
},
"Nextflow": {
"workflow_type_version": [
"v1.0"
]
},
"Snakemake": {
"workflow_type_version": [
"v1.0"
]
},
"WDL": {
"workflow_type_version": [
"1.0"
]
}
}
}
workflow attachment 多すぎでは
CWL は本来 URL だけ指定すれば relative path で依存を取りに行ってくれるのでここまでする必要はない
nextflow, snakemake などディレクトリパスを指定されているものはこうするしかない
本質的には TRS でなんとかすべき (workflow_url に TRSプロトコルが指定されたら WES サーバがよしなにする)
nf-core や github 上のツールを取るときに代わりにTRSプロトコルを喋るAPIサーバがあればいいのかも?
まずはCLIから投げてみましょう
IP whitelist に載っているサーバにsshしてから
code:terminal
$ echo '{"run_ids":"SRR1274307","repo": "ebi","nthreads": 4}' > workflow_params.json $ echo '{"--debug":"","--timestamps":""}' > workflow_engine_parameters.json
$ curl -s -X POST \
-F "workflow_type=CWL" \
-F "workflow_type_version=v1.0" \
-F "workflow_engine_name=cwltool" \
-F "workflow_params=<workflow_params.json" \
-F "workflow_engine_parameters=<workflow_engine_parameters.json" \
{"msg":"Currently, sapporo-service is running with registered_only_mode. Therefore, you need to specify a workflow using workflow_name field. A list of executable workflows can be retrieved requesting GET /service-info","status_code":400}
アッ register_only だった
じゃあとりあえず Sapporo-web でいけるかみてみましょう
Web UI についてのメモ
"State" が不穏
debug 用途なら隠しといてもいいかも?
"github" をクリックすると sapporo-web に飛ぶがいいか?
まあいいか
メッセージ文をちょっとこなれた感じにしてもいいかもな感
connection check せないかんのがわかりづらいなー
submit したときに connection check して pass したら submit するのがよさそう
workflows の updated_date は何が入ってるのか
workflow を消そうとしても個別にはクリックできないが全選択ボタンでは選択できる、しかし delete を押しても何も起こらない
リロードすると service が吹っ飛んでしまう謎のバグに遭遇
匿名モードだと起きないのでブラウザのエクステンションの問題?
localstorageに残っていたゴミのせいだった
Safari は Safari で別のエラーが起きている
Safari は怪しいリクエストに prefight request を飛ばす
raw.githubusercontent を取りに行くときにこれが飛んで処理ができないので落ちているっぽい
GET するときに content-type: text/plain にすればいけるのでは説
workflow parameters が form じゃなくて json or yaml になっている
まあしょうがないが……