望洋の猫

分からなくて右往左往してる猫が同じような猫に共有するためのブログ

fastqからplinkで解析できるまでのツール全部載せin docker@windowsPC

はじめに

  • NGSの解析ってmac持ってないと話にならない感ある。

  • でもwiondowsしか持ってない人もいると思うし、dockerでできるようにした。

  • 簡単に言うと、linux環境を作ってそこにいろいろツールをぶち込んで、全部jupyter notebook*1で動くようにする。bashコマンドも入れるから、bash-python間でデータをそのまま受け渡すこともできる。

  • vscodeでも動く*2

  • 何もわからず聞く人もいなく右往左往したため、同じような人のために分からないながら書きましたという腰の低い気持ちでここに記す。


環境構築編

  1. windows版のdockerデスクトップをダウンロードする。 www.docker.com
  2. 下記のページの、「開発環境」「Dockerfile」「docker-compose.yml」「グラフの日本語化」までをすべて真似する。 www.ritolab.com
  3. 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
    

  4. 以下のツールは実物(?)を入れるほうが簡単。 製作者のHP等でダウンロードする。


最終的なフォルダ構成


使い方編

  1. 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

  2. 最後のjupyter notebookコマンドを入れると、ブラウザが立ち上がるまたはURLが表示される。
    URLの場合は、一番下のものをchromeなどのアドレスバーにコピペする。

  3. 出てきたファイル一覧の中に"Home"があるが、そこをクリックした先 イコール hogeenv/src となる。
    (つまり、上記のファイル構成においては、"PJT"フォルダが見えている状態)
    右上あたりにファイルを作成するボタンがあるので、そこからnotebookを作成し、1_jupyterフォルダ下などに置く。


  • pythonをベースにし*5、例えばfastqのちょっと上のほうだけ切り取ろう(?)というコード*6

  • 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:上部メニュー→カーネルからpythonbashかという言語を選べる。が、!コマンドを使えるのでpythonでよい。

*6:後でもっとかっこいいコードに差し替えるかも。

*7:これすごいメリットだと思う

なつきやすいのはネコだけじゃない【論文読み】

引用

Cameron-Beaumont, C., Lowe, S. E., & Bradshaw, J. W. (2002). Evidence suggesting preadaptation to domestication throughout the small Felidae. Biological Journal of the Linnean Society, 75(3), 361-366.

解説

現在世界に存在するすべてのイエネコの祖先は、リビアヤマネコであるということがゲノムからわかっています。ネコ科にはたくさんの種がいるのにどうしてリビアヤマネコだけが現在の「イエネコ」になったのでしょうか?

実は、ほとんどのネコ科はヒトと一緒に暮らすという点であまり向いていません。考えてみると、ヒトは炭水化物をたくさん食べるのにネコ科は肉食です。警戒心が高く、テリトリーがあって、結束のある大きな社会集団を作ることはありません。 すなわち、ネコ科は全般的に家畜化に対する適性(論文では「前適応(pre-adaptation)」)がないのです。しかし、ネコが私たちの足にスリスリするのは事実ですから、その祖先種であるリビアヤマネコは他のネコ科動物よりもその適性が高かったのかもしれません。

そこでこの研究では、動物園にいるネコ科動物が、飼育係さんに対して親和的行動をどれくらい示すかが調べられました。その結果、多くの種が親和的行動を示すということ、さらに、オセロット(Leopardus pardalis)が最もその頻度が高かったことが示されました。

オセロットはイエネコとは割と離れた種です。しかし、9-16kgもあるそうなので、ペットには不向きだったのではないかと著者らは推測しています。そして、リビアヤマネコだけが親和的行動を示す特別な種であるわけではなかったことから、ヒトの側に家畜化した理由があったのではないか、つまり地域や当時のイベントによってたまたまネコが家畜化されたのではないか、とも述べています。例えばちょうど、農耕が始まって→ネズミが沸いて→ネコが寄ってきた、とかですね。

ところで個人的な感想ですが、動物園では動物は飼育係からゴハンをもらっているため、ここで見られる親和的行動は本当の「なつきやすさ」を示しているのでしょうか。いろんな飼育係さんがいるはずなので、どのように日常的なコミュニケーションを取ってきたのかは統制できていないはずです。19年前と結構古い論文なので、アップデートが望まれるところです。

しかし、「ネコはたまたまペットになった」仮説は可愛いですよね。そうあったらおもしろいです。他にも似た主張をする論文はいくつかあるので、いつかご紹介したいと思います。

 

この記事について

勉強用です。内容の間違いに責任は取れません。無断転載を禁じます。

長く離れると、ネコはたくさんおしゃべりをする【論文読み】

引用

Eriksson, M., Keeling, L. J., & Rehn, T. (2017). Cats and owners interact more with each other after a longer duration of separation. PloS one, 12(10), e0185599.

解説

ネコは独立心が強い動物だと考えられており、ネコがヒトとの触れ合いを必要としているのかについてはあまりよくわかっていません。この研究では、14頭の単頭飼いのネコを対象に、飼い主が30分または4時間留守にし、

  1. 不在前・不在中・不在後のネコと飼い主の行動は、留守番の時間の長さによってどう変わるのか?

  2. 飼い主とネコの行動は関連しているのか? (例えば、飼い主がよく話しかけるネコほどよくしゃべる、など)を調べました。

その結果、

  1. 飼い主が長く(4時間)留守にしたときの方が、短い(30分)留守のときよりも、飼い主と再会したときにネコはたくさんゴロゴロ言い、たくさんストレッチ(屈伸?)を行いました。また、飼い主のほうも、長く留守にしたときの方が、ネコに対してたくさん話しかけました。

  2. しかし、ネコの行動は飼い主の行動と関連するわけではありませんでした。つまり、よく話しかける飼い主に対して、ネコのゴロゴロやストレッチ行動がたくさん出るわけではありませんでした。

ネコが飼い主のことをどう思っているのか? は私も含め、ネコの飼い主さんの永遠の謎です。これまでの研究では、赤ちゃんやイヌで行った実験をネコでも行って、「ネコは飼い主に対してあまり愛着を持たない」という結果が示されていました。しかしこの研究では、長時間飼い主が留守にすると、ネコもある程度さびしいのかもしれないという結果が得られました。一方で、おもしろいことに、ネコと飼い主の行動はあまり関連しませんでした。単純な相関だけを調べているので、今後、時間軸を含めた分析を行えば(例えば、飼い主が呼びかけたらネコは応答するのか?など)、もしかしたら飼い主とネコの行動に関連がみられるのかもしれません。

また、ネコはあまり飼い主のことを見ませんが、音声でより多くのコミュニケーションを行っているように感じられます(私のネコは私よりもはるかにおしゃべりです)。実際、ネコの声はヒトにとって、ネコの祖先種よりもはるかに心地よく聞こえるという研究もあります。今後、ネコの音声に関する研究が進んでいくかもしれません。

この記事について

勉強用です。内容の間違いに責任は取れません。無断転載を禁じます。

奥が深いネコの「白」【論文読み】

引用

Chuong, E. B., Elde, N. C., & Feschotte, C. (2017). Regulatory activities of transposable elements: from conflicts to benefits. Nature Reviews Genetics, 18(2), 71.

解説

下のネコちゃんたちはどちらにも白が入っていますが、なんとなくこの2つの「白」は別物だと考えられてきました。実際、ネコの毛色に関するいろんな本やウェブサイトをめくると、こんな感じで書かれています(↓)。

左の真っ白の様式はかなり特徴的で①かなりの割合でブルーの目やオッドアイ聴覚障害を伴う ②Wを1つでも親から引き継ぐと、必ず真っ白になる などが挙げられます。しかし、実は左も右も同じ遺伝子上にあったのです。そして、「白色」を生む変異は、レトロウイルス由来のものでした。レトロウイルスとは、過去に感染したウイルスが宿主の「遺伝子の一部」と化してしまうものです(下図)。

この遺伝子は「KIT遺伝子」と言い、ネコ以外の動物でも白色と関係しています。動物の白は家畜化(ヒトによる動物の選抜)から生まれたものなので、とても興味深い遺伝子な気がします。

 

この記事について

勉強用です。内容の間違いに責任は取れません。無断転載を禁じます。

 

ネコに利き手はあるのか?【論文読み】

引用

Ocklenburg, S., Isparta, S., Peterburs, J., & Papadatou-Pastou, M. (2019). Paw preferences in cats and dogs: Meta-analysis. Laterality: Asymmetries of Body, Brain and Cognition, 24(6), 647-677.

Isparta, S., Demirbas, Y. S., Bars, Z., Kul, B. C., Güntürkün, O., Ocklenburg, S., & Pereira, G. D. G. (2020). The relationship between problem-solving ability and laterality in cats. Behavioural Brain Research, 112691.

解説

人間では、右利きの人と左利きの人の割合が9:1ですが、これはどの時代・地域でもほぼ不変だと言われています。なぜこんなに極端なのでしょうか? 動物を調べることで、その進化がわかるかもしれません。

実は2019年の時点で、ネコ利き手を調べた論文はなんと32本も出ています。Ocklenburgら(2019)はそれらを全部まとめ、全体の傾向を調べました(このような研究をメタ分析と言います)。

結果は、①両利きよりも利き手があるネコのほうが多い ②全体の傾向としてはやや右利きが多いが、偶然の範囲内 ③オスよりもメスのほうが右利きが多い(これは統計学的に意味を持っていた) でした。 ちなみにイヌでは「両利き」の割合がずっと多いという結果が出ています。

「犬歯」と言うようにイヌは獲物を歯で切り裂き、ネコは鋭い爪を使います。ネコならではの使い分けが利き手を生んだのでは? という考察がされています。しかも、Ispartaら(2020)の研究では、利き手があるネコのほうが、箱からゴハンを取り出すような問題をよく解くことができました。ネコちゃんの利き手は簡単に調べられます(下図)。ぜひご自宅でも試してみてください(=^・^=)

この記事について

勉強用です。内容の間違いに責任は取れません。無断転載を禁じます。

ネコの加速度からネコの生活を知る【論文読み】

引用

Yamazaki, A., et al. (2020). Utility of a novel activity monitor assessing physical activities and sleep quality in cats. Plos one, 15(7), e0236795.

Gruen, M. E., Griffith, E., Thomson, A., Simpson, W., & Lascelles, B. D. X. (2014). Detection of clinically relevant pain relief in cats with degenerative joint disease associated pain. Journal of veterinary internal medicine, 28(2), 346-350.

解説

ヒトではウェアラブルバイスが日常的に使われるようになってきています。例えば、Fitbitでは、歩数や、心拍、睡眠時のレム、ノンレム睡眠(これも心拍ですが)を知ることができます。ネコにもつけてみたら便利かと思いますが、心拍に関しては今のところ毛を剃る必要があるので、実用段階には至っていません。ですが、ネコの加速度(どの方向にどれくらい動いたか)は容易に計測することができ、最近はそれを応用した論文がいくつか発表されています。(ちなみに私はCATLOGを使っています。食べている、水を飲んでいる回数や時間帯がわかるので、老猫にはありがたいです)

さて、論文ですが、

①    Yamazaki et al. (2020) この論文では、ネコが寝ているときや休んでいるとき、ジャンプしているときの実際の動きと、加速度計が強く相関していることを示しました。

②    Gruen et al. (2014) 変性関節疾患にかかっているネコたちとそうでないネコたちの加速度を比較しています。両者には差がありましたが、ネコの加速度には、飼い主が仕事の日か休日かというような要因がのっていることもわかりました。

ちなみにこの論文の共通点は、図1がどれも、デバイスをつけたネコちゃんの大きな写真だということです。たぶん著者のネコちゃんなのでしょう。私も今書いている論文には、自分のネコをなんとか載せたいと思っています。

※①はオープンアクセス誌(閲覧が無料)なので、どなたも見ることが可能です。

この記事について

勉強用です。内容の間違いに責任は取れません。無断転載を禁じます。