データ解析のscript管理
NGS等から来るデータの解析をするとき、よく実行する解析は大体決まっている。これらに使うスクリプトをどのように管理するのか、これまでにもその時々で悩ましい問題だった。githubを使った管理を導入しようと思ってアカウントを作り検討していた時もあったが、その時の環境と管理しなければならないスクリプトの数などを考えて、それほど効率化も出来なさそうだし逆に煩雑になりそうだったのでやめたことがあった。
その後はホームに雛形になるようなスクリプトを大雑把な解析ごとにまとめて置いておき、都度コピーして使うようなやり方をしていたが、最近それでは適切にバージョン管理できない弊害が目立つようになってきた。
現在の使用状況としては、(1) サーバー、複数のローカルなどいくつかの環境で解析を実行している、(2) 異なる事案で同じようなスクリプトを使い回している、(3) 他方、その事案かぎりのスクリプトも管理したい、(3) 複数人で開発するような共同作業はあまり想定されないが、他の人にスクリプトを渡したり見せたりできる方が良い、といった感じだ。今回まず取り組んだのはこのうちの(3)と、一部(2)であり、gitのコマンドを使ってローカルにバージョン管理を始めた。
アプリケーションごとにgitリポジトリでローカル管理
gitはgithubなどのサービスと一緒に使っている印象が強いが、gitのコマンドをCUI環境だけで使うことも当然できる。自分のスクリプト管理をより厳格にすることが当面の目的なので、まずローカルだけでgitを使用することにした。
基本的な使い方としては、アプリケーションごとにリポジトリを作り、解析用スクリプトを書いていく。何度も実行するアプリケーションの場合、リモートリポジトリになるフォルダをローカルなPCの中に作って、そこからgit cloneするようにすることで、バージョン管理されたスクリプトを事案ごとに簡単に準備することができる。
例えば、ChIP-seqで使うスクリプトをまとめたリモートリポジトリを作る。.gitが後ろにつくディレクトリを作成して、git init --bare --sharedを実行。これは、リモートリポジトリになる。
(base) tk$ mkdir chipseq.git
(base) tk$ cd chipseq.git/
(base) tk$ git init --bare --shared
Initialized empty shared Git repository in /Users/tk/ana/chipseq.git/
(base) tk$ cd workdir
(base) tk$ git init
Initialized empty Git repository in /Users/tk/projects/workdir/.git/
(base) tk$ git remote add origin '/Users/tk/ana/chipseq.git/'
(base) tk$ git push origin master
(base) tk$ cd workdir2
(base) tk$ git clone /Users/tk/ana/chipseq.git