BIG-SCAPEをGoogle Colaboratoryで実行する


BIG-SCAPEはオランダのグループが開発した二次代謝産物生合成遺伝子クラスター比較ツールである。
事前に二次代謝産物生合成遺伝子クラスター予測ツールantiSMASHを利用して解析されたデータ群を解析し、比較結果を見やすく出力してくれる。
Google Colaboratoryでも動作さえることができるため、方法を記録する。

製作者のホームページ
https://bigscape-corason.secondarymetabolites.org/

引用文献
https://www.nature.com/articles/s41589-019-0400-9

2023年5月10日にCondaを利用しない方法へと変更しました。
condaを利用するよりも早く実行することができます。

2023年10月17日、Pfamデータベースのダウンロード元が変更されたことに気づきました。
ダウンロード先を変更しました。

2025年1月27日追記
著者らによりupdateが入り、仕様が少し変更されました。
- pyhmmerが必要になったようです
- hmmデータベースのpathの入力が必要になった
- 機能が分割され、最初に「cluster, query, benchmark」の指定が必要になった
- 従来の機能を利用するならclusterを指定すれば良い
- 現時点でリリースされている最新版はbeta版であるため、今後改善が入ると予想される。古いversionを使いたい場合は最後の「BiG-SCAPEの古いバージョンを利用した場合」を参照する。
- 現状、最新版はまだbeta版であることもあり、旧バージョンよりも大幅に時間がかかるようである。改善するまで利用しない方が良いかもしれない。


<h1>インストールの過程で必要なモジュールのインストール</h1>

最初のセル
以下、スクリプトを上から順にセルにコピーペーストして実行すると良い。
```
import os
import shutil
import subprocess
from subprocess import Popen
```

<h1>biopythonのインストール</h1>
biopythonとpyhmmerのインストールが必要である。

2025年1月26日追記
pyhmmerの追加、biopythonのversion指定を外した。version指定をしなくても動作するようになった。

```
!pip install biopython
!pip install pyhmmer
```

<h1>BIG-SCAPEと付随する必要なツールのインストール</h1>

sudo pat-getを利用したインストールが簡便である。Condaでもインストール可能である。ただし、こちらの方は時間がかかる。condaを利用したinstallは参考のために本ページの最後に記載する。

```
!sudo apt-get install hmmer2 hmmer diamond-aligner fasttree  ncbi-blast+
```

<h1>BiG-SCAPEのダウンロード</h1>
まず、BiG-SCAPEのプログラムをダウンロードする。

```
!git clone https://github.com/medema-group/BiG-SCAPE.git
```

これにより、BiG-SCAPEフォルダが作られるはずである。
左側のフォルダボタンを押すことで確認する。

<h1>Pfamデータベースのダウンロード</h1>

BiG-SCAPEフォルダにPfamデータベースをダウンロードし、フォーマットする必要がある。
そのため、以下の操作を行う。

```
#ルートに作られるBiG-SCAPEフォルダの中にPfamデータベースを格納する必要があるため、フォルダを移動する
%cd BiG-SCAPE

#Pfamデータベースをダウンロードする。
#以下は過去のデータベースからダウンロードする際のコマンドです。
#cmd = 'wget ftp://ftp.ebi.ac.uk/pub/databases/Pfam/releases/Pfam32.0/Pfam-A.hmm.gz && gunzip Pfam-A.hmm.gz'
cmd = 'wget ftp://ftp.ebi.ac.uk/pub/databases/Pfam/current_release/Pfam-A.hmm.gz && gunzip Pfam-A.hmm.gz'
test = subprocess.Popen(cmd, shell=True, text=True,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
outs, errs = test.communicate()

#Pfamデータベースをセットアップする
cmd = 'hmmpress Pfam-A.hmm'
test = subprocess.Popen(cmd, shell=True, text=True,stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
outs, errs = test.communicate()

#完了後もとのフォルダに戻る。
%cd ../
```

<h1>BiG-SCAPEの動作確認</h1>

BiG-SCAPEのhlepを呼び出すことで、正常に動作するか確認する。
特にエラーが出なければ良い。

```
#@title BiG-SCAPE 動作確認
cmd = "python BiG-SCAPE/bigscape.py --help"
test = subprocess.Popen(cmd, shell=True, text=True,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
#test.wait()
outs, errs = test.communicate()
print(outs)
print(errs)
```

clusterの機能に関してもhelpを確認しておくといい。
```
#@title BiG-SCAPE 動作確認
cmd = "python BiG-SCAPE/bigscape.py cluster -h"
test = subprocess.Popen(cmd, shell=True, text=True,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
#test.wait()
outs, errs = test.communicate()
print(outs)
print(errs)
```


<h1>Google Driveへのアクセス</h1>
antiSMASHの解析データを必要とするため、アップロードによる解析はやや煩雑である。
自身のgoogle driveの特定のフォルダにantiSMASHの結果のデータを全て格納し、そこにアクセスして解析すると簡便で良い。
ただし、容量が必要なので、無料のアカウントでは容量が足りなくなる可能性もある。
folder_nameを目的のフォルダ名にする。

```
from google.colab import files
from google.colab import drive
drive.mount('/content/drive')
DRIVE = "MyDrive/folder_name/" #@param {type:"string"}
```

<h1>BiG-SCAPEの実行</h1>
-iの後にインプットファイルの名前が、-oの後に出力ファイルの保存先を指定している。
この設定では解析ファイルが格納されているフォルダに新たに「BS_results」というフォルダを作成して結果を格納する。

2025年1月27日追記
clusterオプションの指定が必要になったため、clusterオプションを追加した。
pfamデータベースのパスの指定が必要になったため「-p BiG-SCAPE/Pfam-A.hmm」を追加した。

```
#BiG-SCAPEへの実行
cmd = "python BiG-SCAPE/bigscape.py cluster -p BiG-SCAPE/Pfam-A.hmm -i " + DRIVE + " -o" + DRIVE + "BS_results"
test = subprocess.Popen(cmd, shell=True, text=True,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
#test.wait()
outs, errs = test.communicate()
print(outs)
print(errs)
```

<h1>出力されたネットワークをcytoscapeで描画する</h1>
BiGSCAPEで出力されたファイル、index.htmlを開くとある程度ネットワーク画像を描画してくれる。しかし、より綺麗な図を目指すのであればcytoscapeを利用した方が良い。

cytoscape
https://cytoscape.org/

まず、cytoscapeをインストールし起動する。
次に、「File > import > Net work from file」
を実行する。
BiGSCAPEの結果、出力フォルダにはnetwork_filesというフォルダが存在する。
このフォルダの中に化合物ファミリーごとのフォルダ (NRPS, PKS, etc) が存在する。
これらのなかに、「.network」という拡張しのファイルが存在するため、これらを開く。
以下のような画面が出てきます。

![スクリーンショット 2023-05-20 13.15.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1825372/974b6be8-2b64-8c86-f8dc-1df6ace31b11.png)

Clustername 1をクリックし、「Source node」に指定する。
Clustername 2をクリックし、「Target node」に指定する。
Raw distanceをクリックし、「Edge attribute」 に指定する。

importが済んだら、「File > Import > Table from File」を実行する。
同じフォルダにある、対応した名前のtsvファイルを開く。
Family numberが入力される。

<h1>BiG-SCAPEの古いバージョンを利用した場合</h1>

ベータ版である、最新場ではなく、古いv1.9を利用することも可能である。
以下の方法で一つ古いversionをダウンロードすることができる。

```
!git clone https://github.com/medema-group/BiG-SCAPE.git -b v1.1.9 --depth 1 
```

他の操作はほとんど同じになる。以下のコマンドでこちらは実行可能である。

```
#BiG-SCAPEへの実行
cmd = "python BiG-SCAPE/bigscape.py -i " + DRIVE + " -o" + DRIVE + "BS_results"
test = subprocess.Popen(cmd, shell=True, text=True,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
#test.wait()
outs, errs = test.communicate()
print(outs)
print(errs)
```


<h1>condaを利用した必要なプログラムのインストール (参考)</h1>

以下の方法でcondaを利用して必要なプログラムをインストールすることが可能である。
しかし、こちらの方法は使わない方が良い。原因は不明だが、うまく動作しない場合がある。
```
%%bash

#MINICONDA_INSTALLER_SCRIPT=Miniconda3-4.5.4-Linux-x86_64.sh
#Miniconda3-4.7.12.1-Linux-x86_64.sh
MINICONDA_INSTALLER_SCRIPT=Miniconda3-4.7.12.1-Linux-x86_64.sh
MINICONDA_PREFIX=/usr/local
wget https://repo.continuum.io/miniconda/$MINICONDA_INSTALLER_SCRIPT
chmod +x $MINICONDA_INSTALLER_SCRIPT
./$MINICONDA_INSTALLER_SCRIPT -b -f -p $MINICONDA_PREFIX

conda update --all

#install hmmer by conda
conda install -y -c bioconda hmmer
conda install -y -c bioconda/label/cf201901 hmmer

conda install -y -c numpy scipy scikit-learn

conda install -y -c anaconda networkx

conda install -y -c bioconda fasttree
conda install -y -c bioconda/label/cf201901 fasttree
```