---
# System prepended metadata

title: 36th Workflow Meetup (2021-01-18 Mon)

---

# 36th Workflow Meetup (2021-01-18 Mon)
================================

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

2021-01-18(Mon)
13:00 - 19:00 まで。

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

# 事前計画

## 全体

## 石井

- 次回の日程を決める
- とあるドキュメントを書くための作業をする
- Workflow Engineまわりの情報を共有する
    - Workflow Meetup の github pagesにも書いたほうが良いだろう。

## 西田

- [Streamlining data-intensive biology with workflow systems](https://doi.org/10.1093/gigascience/giaa140) についてコミュニティで情報交換する
    - Hypothes.is を用いたアノテーションの共有
- https://workflow-meetup-jp.github.io の更新
    - 各ワークフローシステムのベストプラクティスの追加
- Snakemake tutorialの和訳
    - https://github.com/workflow-meetup-jp/snakemake-tutorial-jp の更新

## 丹生
- [medal](https://github.com/tom-tan/medal) いじり

# こうなりました

## 全体

- 次回のミートアップの日程をきめました2021/2/1 13:00-
- Slackやミートアップ中に流れてくる情報を、hackmdにあるまとめページに書くという方針をとりあえずとってみようと思います。
    - 全部書き出せるわけではないですが、、、ちょっと挑戦してみようと思います。
- 各種ワークフローシステムの使い方などは、[Workflow Meetupのページ](https://workflow-meetup-jp.github.io/)に、まとめていってみようという試みをはじめました。
    - 各システムについて、以下の項目をうめていこうとおもっています。
        - そのシステムで使えるワークフローがまとまっているレポジトリ nf-coreなど
        - Hello Worldのような、とにかく動くことを確認できるサンプル
        - Hello World以上の学習ができるチュートリアルなどの紹介
        - (optional)可能なら何が学べるかとか書いてあると良い。

## 石井

- zshでsshの接続先ごとに、プロンプトの色を変える方法を丹生さんに習いました
    - なにか色が変わっていないと、現在どのマシンで作業しているのかがわからなくなるので、助かりそう。
```
set_prompt() {
    local md5cmd LF hc uc rc
    md5cmd=md5sum
    LF=$'\n'
    rc="${reset_color}"
    # color=0: 黒は除外
    hc=$(printf "\x1b[38;5;%dm" $(((0x$(echo $HOST | $md5cmd | cut -c -15) % 255)+1)))
    if [ $USER = root ]; then
        uc="%{$fg_bold[red]%}%n"
    else
        uc="%F{white}"
    fi
    PROMPT="[${uc}%n${rc}@${hc}%m${rc}] %F{yellow}%(5~,%-2~/.../%2~,%~)${rc}$LF$ "
}
set_prompt
```
- すえたけんさんにシェルスクリプトを書くためテンプレートを教わる
    - [Minimal safe Bash script template \| Better Dev](https://betterdev.blog/minimal-safe-bash-script-template/)
- AWS CLI start-instances と run-insntaces の違い
    - [Amazon EC2 インスタンスの起動、一覧表示、および終了 \- AWS Command Line Interface](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-services-ec2-instances.html#launching-instances)
    - run-instances
        - [run\-instances — AWS CLI 1\.18\.216 Command Reference](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)
    - start-instances
        - [start\-instances — AWS CLI 1\.18\.216 Command Reference](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html)
            - 停止したインスタンスを起動した語ったので、まずはこちらで解決。`run-instances` でも同じことができるかは不明
    - 参考情報
        - [awscliでEC2インスタンスを起動しステータスがrunningになるまで待つ \| ハックノート](https://hacknote.jp/archives/29423/)
        - > ステータスがruninngになるまで待つにはaws ec2 wait instance-runningコマンドを使用します。

## 末竹

- SAPPORO-service の run dir の mount 周りを修正した
  - https://github.com/ddbj/SAPPORO-service/releases/tag/v1.0.5
- SAPPORO-service で Nextflow を動かす
  - やり方は完全に理解した
  - https://hackmd.io/uWdUbf28Q3SDrmCuNK_e7A?view#結果

## 西田

- https://workflow-meetup-jp.github.io/ にベストプラクティス情報を追加した
- https://academic.oup.com/gigascience/article/10/1/giaa140/6092773 について議論するための https://hypothes.is/users/kozo2 を作った
    - "Getting Started with Workflows"までしか読めませんでした
    - 残りは次回に持越しということで...
    - (石井追記:次回ミートアップで時間をとりましょう。３０分で、最大拡大して１時間くらいにしましょう。もりあがるなら、その次につなげる感じで。)
- https://github.com/workflow-meetup-jp/snakemake-tutorial-jp に setup.md と basics.md を追加した


## 丹生
- シグナルハンドリング全然わからん
    - 解決。エンジンのメインスレッドの**実行後**にシグナルのブロック&シグナル待受スレッドを実行していたのが原因でした。
        - SIGINT や SIGTERM などが、待受用のスレッドではなくメインスレッドに行く場合がある
            - 他のスレッドを実行する前にシグナルをブロックしないといけない
        - 教訓: 言語処理系を疑い始めたら、言語処理系の前に「コンセントは抜けてませんか？」レベルの初歩的な部分から再チェックするべき！！！
    - （石井追記：クラウドで資源確保中にCtrl-cされたときに、確保済みのものを開放したいなどの処理をいれたい）
    - 最近だと [sigwait](https://yupo5656.hatenadiary.org/entry/20060114/p1) を使う
        - `SIGINT` などの非同期シグナルを同期的に扱える
    - リンク先では、シグナルを受け取る専用のスレッドを作成する手法が紹介されている
    - シグナルを受け取るスレッドをどう終了させる？
        - そのままだと子スレッドが動き続けてしまうため、明示的に終了させる必要がある
        - この辺の情報がどこにもない
        - メインスレッドから、シグナル処理用のスレッドに終了用のシグナルを送る
            - `SIGUSR1` -> 失敗。medal の実装言語の[D言語内部](https://dlang.org/phobos/core_memory.html)で予約されている
            - `SIGQUIT`, `SIGTERM` など -> たまにハンドラで処理できずに親の sh 側で処理されてしまう

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

- [Streamlining data\-intensive biology with workflow systems \| GigaScience \| Oxford Academic](https://academic.oup.com/gigascience/article/10/1/giaa140/6092773)
    - [A must\-read review paper for getting started with bioinformatics workflows \- Terra\.Bio](https://terra.bio/review-paper-getting-started-with-workflows/)
- Jupyter Notebook のワークフロー
    - [Sehyun Oh, Levi Waldron, Workshop 100: Cloud based genomics using Terra AnVIL \- YouTube](https://www.youtube.com/watch?v=KYBDeDIf5tQ)
- シェルスクリプトの書き方
    - [Minimal safe Bash script template \| Better Dev](https://betterdev.blog/minimal-safe-bash-script-template/)
- Nextflowのサンプルコード Hello World
    - [Get started — Nextflow 20\.10\.0 documentation](https://www.nextflow.io/docs/latest/getstarted.html)
        - `str` というパラメータを書き換えることもできる
- Nextflowについて
    - パラメータをファイルから渡す方法
        - [Importing Parameters in Nextflow using json / yaml file · Issue \#208 · nextflow\-io/nextflow](https://github.com/nextflow-io/nextflow/issues/208)
            - ここで `-params-file` というオプションについて議論されている
- Nextflow Tutorial
    - これ以外にもあるとおもわれる
    - [seqeralabs/nextflow\-tutorial: Nextflow training material for introductory tutorial](https://github.com/seqeralabs/nextflow-tutorial)
- Nextflow Pattern
    - [Nextflow Patterns](http://nextflow-io.github.io/patterns/index.html)
        - Best Practice的なもの
- Nextflow のよかったところ（意見）
    - テンプレートが優秀
- Nextflow の特徴（意見）
    - シェルからの以降がしやすいだろう。
    - ハードコーディングが大丈夫な人は、なじみやすい
        - 出力ディレクトリに、 `/data` とかかかれていると、そのディレクトリに書き込めてします。
- Nextflow公式ドキュメントに見つけられていないが大事そうなところ
    - params.dir