ベストプラクティス(案)

バイオインフォの解析などを共有したいと思っている。

バイオインフォ(にかぎらずデータ解析一般)では基本的に
・インプットデータ
・処理ソース
・アウトプットデータ
が基本コンポーネントである。さらにいうとインプットから直接アウトプットにいけない場合も多いので、中間ファイルが必要な場面も多い。取り回しやデータの保全を考えるとインプットデータとアウトプットデータはそれぞれのディレクトリに単独で居てくれた方が嬉しいので、中間ファイルは別におかれるべきである。

考えた結果

projectA_1
     |--dat   # input data
     |--src   # analysis source 
     |--tmp   # temporary file
     |--out   # output data

という配置でやっている。
そして、さらに下流の解析に行くときは

projectA_2
     |--dat
     |--src
     |--tmp
     |--out
     |--init.sh

を作る。projectA_1/outprojectA_2/datの中身になる(ことが多い)。このときシムリンクにするのが良いか、コピーした方が良いかは考え中。コピーするメリットはデータが保全できること。リンクのメリットはディスクサイズとパイプラインとしての再利用性。このときのコピー(あるいはリンク貼り作業)もinit.shで記録しておくと後々再現性が高い。

srcの中も処理内容によってスクリプトが別個になってしまうのは仕方がないとして、最終的に全ての処理を一括で行うmain.shみたいのがあるとよい。ファイル名に気をつけるのとエラー処理をきちんとするスクリプトを書いておけば、各ディレクトリのinit.shmain.shを実行していけばパイプラインになる。あるいは誰かに渡すとき最悪これだけやってもらうだけで解析が進む。

この制約を自分に課すようになってから、自分のいま扱っているファイルがdatなのかtmpなのかoutなのか意識するようになった(ような気がする)。制約は自由度を下げるが、逆に型にはめることでイレギュラーに敏感になることができる。トレーニングの間は有効に作用することが多いように思う。

コメント

このブログの人気の投稿

Inverse-normal transformation

SKAT

locuszoom