fastqからplinkで解析できるまでのツール全部載せin docker@windowsPC
はじめに
- NGSの解析ってmac持ってないと話にならない感ある。
でもwiondowsしか持ってない人もいると思うし、dockerでできるようにした。
簡単に言うと、linux環境を作ってそこにいろいろツールをぶち込んで、全部jupyter notebook*1で動くようにする。bashコマンドも入れるから、bash-python間でデータをそのまま受け渡すこともできる。
何もわからず聞く人もいなく右往左往したため、同じような人のために分からないながら書きましたという腰の低い気持ちでここに記す。
環境構築編
- windows版のdockerデスクトップをダウンロードする。 www.docker.com
- 下記のページの、「開発環境」「Dockerfile」「docker-compose.yml」「グラフの日本語化」までをすべて真似する。 www.ritolab.com
-
Dockerfileを開き(右クリック→編集)、最後に以下のコードを付け足す。
#ここから付け足し # python ライブラリのインストール RUN python -m pip install pandas RUN python -m pip install numpy RUN python -m pip install matplotlib RUN python -m pip install jupyterlab RUN python -m pip install notebook RUN python -m pip install tqdm RUN python -m pip install ipywidgets widgetsnbextension RUN python -m pip install seaborn RUN python -m pip install openpyxl RUN python -m pip install japanize_matplotlib RUN python -m pip install gpboost RUN python -m pip install patsy RUN python -m pip install statsmodels RUN python -m pip install seaborn #bioinfo用 ##マンハッタンプロット書くやつ RUN git clone https://github.com/Pudkip/Pyhattan RUN python -m pip install ../Pyhattan/dist/Pyhattan-0.1-py2.py3-none-any.whl ##bashを使えるようにできるやつ RUN pip install bash_kernel RUN python -m bash_kernel.install ##QC & トリミングツール RUN wget http://opengene.org/fastp/fastp RUN chmod a+x ./fastp ##エラーコレクションツール RUN git clone https://github.com/emarinier/pollux.git RUN cd /pollux && make ##マッピング RUN git clone https://github.com/lh3/bwa.git RUN cd bwa && make ##samtools, bcftools RUN git clone https://github.com/samtools/htslib.git RUN cd /htslib && autoreconf -i && git submodule update --init --recursive && make && make install RUN git clone https://github.com/samtools/samtools.git RUN cd /samtools && autoheader && autoconf -Wno-syntax && make && make install RUN git clone https://github.com/samtools/bcftools.git RUN cd /bcftools && apt-get update && make ##忘れた RUN apt install \ build-essential g++ \ cmake \ git-all \ liblzma-dev \ zlib1g-dev \ libbz2-dev \ liblzma-dev \ libboost-date-time-dev \ libboost-program-options-dev \ libboost-system-dev \ libboost-filesystem-dev \ libboost-iostreams-dev \ -y ##QCツール(マッピング後に使ってる) RUN git clone --recursive https://github.com/tobiasrausch/alfred.git RUN cd alfred/ && make all && make install ##vcftools RUN git clone https://github.com/vcftools/vcftools.git RUN cd /vcftools && ./autogen.sh && ./configure && make && make install #JAVAが入っていない場合? RUN apt-get install default-jdk -y ##VariantBam RUN git clone --recursive https://github.com/jwalabroad/VariantBam.git RUN cd /VariantBam && ./configure && make
- 以下のツールは実物(?)を入れるほうが簡単。 製作者のHP等でダウンロードする。
最終的なフォルダ構成
使い方編
-
powershellを開いて、Dockerfileが置いてある場所にcd
※hogenv内にdockerfileが置いてあって、そのなかのsrc>PJTフォルダ内にデータやnotebookを置いている。
※3行目でdocker内に入っている。jupyter notebook --allow-root --ip=0.0.0.0 --port 8080部分は右クリックしてペースト。
cd C:/Users/.../hogeenv docker build -t bioinfotools . docker run --rm -p 8080:8080 -v $PWD/src:/home/ --name bioinfoju -it bioinfotools bash jupyter notebook --allow-root --ip=0.0.0.0 --port 8080
-
最後のjupyter notebookコマンドを入れると、ブラウザが立ち上がるまたはURLが表示される。
URLの場合は、一番下のものをchromeなどのアドレスバーにコピペする。
-
出てきたファイル一覧の中に"Home"があるが、そこをクリックした先 イコール hogeenv/src となる。
(つまり、上記のファイル構成においては、"PJT"フォルダが見えている状態)
右上あたりにファイルを作成するボタンがあるので、そこからnotebookを作成し、1_jupyterフォルダ下などに置く。
例
- pythonをベースにした上で、plinkやsamtoolsを動かすコマンド。
このように"!"をつけると、上記のnotebookと同じノートで使用可*7。
ディレクトリ(どの場所にソフトが置いてあるか)に注意。
補足
上述したように、jupyter notebookは開発向きで、fastqが100個ありますというような場合はvscode等を使ってぐるぐる回すのが良い。
そのうち別記事で紹介するかも。
とはいえ、それでもだいたいは重い処理なため並列処理をする必要があるが私にはできないため、スペックの良いPCを用意し、dockerを複数立てて同時に回すという頭の悪い方法を取っている。
間違い、質問等あればコメントください。
*1:コードと処理の結果をノートのように記述できるツール。やったことのログとして非常に便利。
*2:jupyterのほうが処理は早いと感じる。なお、jupyterをvscode内で動かすこともできるが、2022/11/23現在重すぎて使い物にならない。jupyterで開発やテストを実施し、多数のファイルに同じループ処理をする場合は.pyと.shを組み合わせてvscodeに移植するのがいいと思う。
*3:ファイル操作とかQCはたしかできないが、kingという他のツール(⇐親子判定とかできる)が入っている。kingはwindowsだと動かない。結局dockerだと動くけど。
*4:jupyter notebookの場合、admixture32でないとメモリ不足で止まることがあった。
*5:上部メニュー→カーネルからpythonかbashかという言語を選べる。が、!コマンドを使えるのでpythonでよい。
*6:後でもっとかっこいいコードに差し替えるかも。
*7:これすごいメリットだと思う