---
# System prepended metadata

title: '55th Workflow Meetup (2022-08-17 Wed, 18 Thu)'

---

# 55th Workflow Meetup (2022-08-17 Wed, 18 Thu)
================================

[20220817-18 · workflow\-meetup\-jp/workflow\-meetup Wiki](https://github.com/workflow-meetup-jp/workflow-meetup/wiki/20220817-18)

2022-08-17(Wed),18(Thu)
13:00 - 19:00 まで。

完全リモートのため、全世界どこからでも参加可能。

# 事前計画

## 全体

## 石井

- 次回9月7日水曜日,8木曜日、を予定(BH22.9の間),９月のピタゴラは9/1のはず。
    - 10月5,6(ピタゴラと同じ)
    - 11月2(ピタゴラと同じ、3が祝日のため休み)または9と10
    - 12月7,8(ワールドカップ期間だが昼間は大丈夫だと思われる)
- VSCode Live Share Extension と Remote Containerのデモに参加した
    - 関連付けの関係か最初ブラウザで開いたが、あらためて、VSCodeのLive Shareのメニューから「Join」を選び、URLを入力したら、VSCodeから参加できた。

### 2022-08-18

- 事務仕事をしていた。
- 池田さんにぜひ、slurm+docker環境で、toil(CWL)を試してほしいとお伝えした。
    - そのために、知っていることを伝えるだけお伝えしました。たぶん記事にしたほうがよいのだろう。

## とう（鄧）
初参加
始めの2時間に石井さんに教えてもらった資料のメモ
```
MyBinder
https://mybinder.org/
BioJava 
https://biojava.org/
GitHub 
https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-template-repository
GATK
https://gatk.broadinstitute.org/hc/en-us
Pitagora Network
https://pitagora-network.org/events/meetup/2022/meetup-202209
Dependency Hell
https://nf-co.re/
CWL
https://www.commonwl.org/
https://www.commonwl.org/specification/
https://www.commonwl.org/implementations/
Terra
https://terra.bio/
Ngrok
https://ngrok.com/
Galaxy
https://galaxyproject.org/
Pubmed
https://pubmed.ncbi.nlm.nih.gov/
Eg abstractのパース
Beautifulsoup
https://www.crummy.com/software/BeautifulSoup/bs4/doc/
Eg https://www.twilio.com/blog/web-scraping-and-parsing-html-in-python-with-beautiful-soup-jp
StAX
https://www.baeldung.com/java-stax
.h5(hdfファイル)

SAM/BAM/CRAMファイル

How to parse BLAST output 
https://www.biostars.org/p/98693/

BioJulia
https://qiita.com/yuifu/items/b2031d0367da878fddae
```

# こうなりました

## 全体

### JupyterLabのgithubサイトを作る

## 石井

- 次回のミートアップのスケジュールを決めた。
- CWLライブコーディングする際には、予めこちらでもCWL化できそうなツールを用意しておいたほうがよい。
    - 会場でなにかやりたい人がいるかきいて、それがないときのバックアップとして用意しておくイメージ
    - 今日のまなびとしては、時間がかかったのが、CSSセレクタの使い方だった。
- bh22.9でCWLライブコーディングをやるとしたら

```text
CWLにしたいツールがある方へ。
ツールとテストデータ（できたらパブリックなデータ、できたら小さいとうれしい）があったら、
BH22.9でライブコーディングのネタにさせてもらえるとうれしいです。

#BH22_9 #WorkflowDevMeetup #commonwl #commonwljp
```

- ライブコーディング時は参加者の誰かがドメイン知識をもっていないと時間がかかる。すぐテストがおわるとよい。

## 西田

## 丹生
- CWL Live coding
  - 結果は https://github.com/workflow-meetup-jp/livecoding-2022-08-17
  - [pup](https://github.com/ericchiang/pup) で https://workflow-meetup-jp.github.io/ の内容から次回開催日程情報を取得するまでやった
    ```console
    $ curl -L https://workflow-meetup-jp.github.io/ -o data/index.html
    $ pup "div.home p:nth-child(3) a text{}" -f data/index.html
    次回ミートアップは2022-08-17(Wed), 18(Thu) 13:00-19:00(JST)
    ```
  - 時間がかかったのは Live Share の接続設定周りと `pup` で必要項目抽出のための CSS セレクタ周り
      - やはりドメイン知識は必要
- ついに [shaft](https://github.com/tom-tan/shaft) に [njs](https://github.com/nginx/njs) を組み込むことに成功した
  - **JavaScript engine も含めてシングルバイナリ！**
  - シングルバイナリなツールを配布するときのベストプラクティスは？
      - njs (BSD-2), musl libc (MIT) なので、これらを含めたバイナリ配布時には License and copyright notice が必要
      - shaft は [v0.6.1](https://github.com/tom-tan/shaft/releases/tag/v0.6.1) から `shaft --license` で notice 出すようにした
      - 他のツールはどうやって対応しているのか気になる
  - 残るは [`InitialWorkDirRequirement`](https://www.commonwl.org/v1.0/CommandLineTool.html#InitialWorkDirRequirement)、[`DockerRequirement`](https://www.commonwl.org/v1.0/CommandLineTool.html#DockerRequirement)、[`SoftwareRequirement`](https://www.commonwl.org/v1.0/CommandLineTool.html#SoftwareRequirement) 対応
      - `DockerRequirement` と `SoftwareRequirement` は同じ仕組みで対応予定
      - cwltool が `InitialWorkDirRequirement` を正しく実装できていないのを発見… (報告はこれから)
          - コンテナを使わない場合、 `writable: false` でも普通に書き換えできてしまう
              - おそらく symlink で実装しているのが原因
              - symlink では書き込み制限できないため、本質的にはコピーするしかなさそう
                  - bind mount などの策はあるが、root 権限が必要
          - 仕様: https://www.commonwl.org/v1.2/CommandLineTool.html#InitialWorkDirRequirement
            > Disruptive changes to the referenced file or directory must not be allowed unless InplaceUpdateRequirement.inplaceUpdate is true.
            > Command line tools may receive an error on attempting to rename or delete files or directories that are not explicitly marked as writable.

## 新海

- liveコーディング参加
    - 面白かった
- 今日の学び：windows上のvscodeは、別にwslから立ち上げなくもwsl領域にアクセスできる（by丹生さん）
    - wsl上のvscodeではliveコーディングのログインが上手くいかなかった
- 今日の学び(二日目)：Pestoはどうもネットワークの規制が厳しめのところだとやっぱり難しい

## 池田

- slurmのクラスターを構成したので、toil-cwl-runnerを利用してCWLのワークフローを実行
    - toil-cwl-runnerを介して実行

```
toil-cwl-runner --batchSystem slurm --disableCaching --set PATH=${PATH} --tmpdir-prefix ${PWD}/tmp/ job.cwl job.yml
```

石井さんからアドバイスをいただいた

- `--batchSystem slurm --disableCaching` これはtoil-cwl-runnerで必須
- `--set PATH=${PATH}` virtualenv上でtoilをインストールしているため、サブミットされたノード上でワークフローを動作させるための弥縫策
    - 解決: TOILを実行する環境で TOIL_CHECK_ENV="True" 環境変数を設定すればよい 

結果まずは`TOIL_CHECK_ENV="True"`を指定

```
export TOIL_CHECK_ENV="True"
```

その後、下記のコマンドでcwlのjobをサブミット

```
toil-cwl-runner --batchSystem slurm \
    --disableCaching \
    --tmpdir-prefix ${PWD}/tmp/ \
    job.cwl job.yml
```

dockerを利用したjobが正常に動作しないという問題も解決


toil-cwl-runnerとslurmを利用するときのオプションについて

下記が参考になる
https://github.com/biosciencedbc/jga-analysis-jobmanager/blob/c32a7094dfbb80ec526a2ebab2fc8f80416ba1ca/utils/utils.go#L637

singularity を利用し始めたときに落ちる穴について
singularity に対して下記のオプションが必要になる事がある
- CWL_SINGULARITY_CACHE=
- SINGULARITY_BIND=

(石井参考)：問題がおこったときは、issueをcloseしたものも含めて検索すると問題の解決策がでてくることがあります。biostar, discourseのcwlのやつとかでもみつかるかもしれません。toilとcwltoolの両方を検索するとよいとおもいます。

# 前回のミートアップから今回のミートアップまでにSlackなどにあったリンクメモ

- ここから書く
