msa をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
自前でquery配列からMultiple Sequence Alignment(MSA)を作る...
***MSA作成ツール [#x51e265e]
複数存在して用途目的にあわせて選ぶ
-[[MMseqs2]] https://github.com/soedinglab/MMseqs2
ColabFoldが使用している高速クラスタリング・検索ツール
-JackHMMER/HHblits
AlphaFold2でも使われるツール
データベースと絡めると
|BGCOLOR(YELLOW):ツール|BGCOLOR(YELLOW):データベース|BGCO...
|MMseqs2|UniRef30| |高速・省リソース(Boltz/ColabFold用途)|
|JackHMMER|UniRef90 + MGnify|UniRef90(ホモログ探索)向けと...
|HHblits|BFD / UniClust30|どちらか一方. alphafold2では2...
alphafold2では JackHMMER でUniRef90とMGnifyを検索して、HH...
LocalColabFoldをローカルで実行する場合は、UniRef30、Colab...
ここでは UniRef30 を対象に [[MMseqs2]] で MSA を作る事に...
マルチマーな蛋白質に対しては素直に localcolabfold を導入...
***MMseqs2の導入 [#b55d2635]
ここでは ColabFold が採用している [[MMseqs2]] を入れます.
[[https://github.com/soedinglab/MMseqs2/releases>+https:/...
コンパイルせず、これをそのまま使いたいと思います.
最新の「MMseqs2 Release 18-8cc5c」で 「mmseqs-linux-avx2....
#code(nonumber){{
[root@rockylinux9 ~]# cd /apps/src/
[root@rockylinux9 src]# wget https://github.com/soedingla...
[root@rockylinux9 src]# cd ..
[root@rockylinux9 apps]# tar xf src/mmseqs-linux-avx2.tar...
(オプション)
[root@rockylinux9 apps]# cp mmseqs/util/bash-completion.s...
}}
EnvironmentModulesは「/apps/modulefiles/mmseqs」
#code(nonumber){{
#%Module1.0
set root /apps/mmseqs
prepend-path PATH $root/bin
}}
***データベース準備 [#j76843e9]
UniRef(UniProt Reference Clusters)を用意します.
アミノ酸配列が90%以上一致するタンパク質が1つのクラスター...
配列が30%以上で似ているタンパク質が1つのクラスターに纏め...
推奨は UniRef30
っが、uniprot.orgでの提供はない模様で ColabFold で提供さ...
展開先は SSD なドライブが望ましいそうな. まぁー確かに.
#code(nonumber){{
[root@rockylinux9 ~]# mkdir -p /db/{uniref30,src}
[root@rockylinux9 ~]# cd /db/src
[root@rockylinux9 src]# wget https://wwwuser.gwdg.de/~com...
[root@rockylinux9 src]# cd ../uniref30
[root@rockylinux9 uniref30]# tar xf /db/src/uniref30_2302...
[root@rockylinux9 uniref30]# ls -l
total 224591556
-rw-------. 1 528745 9100 30961144274 May 16 2023 unire...
-rw-------. 1 528745 9100 5797891705 May 22 2023 unire...
-rw-------. 1 528745 9100 667957493 May 22 2023 unire...
-rw-------. 1 528745 9100 46247602628 May 16 2023 unire...
-rw-------. 1 528745 9100 337 May 22 2023 unire...
-rw-------. 1 528745 9100 137235400133 May 16 2023 unire...
-rw-------. 1 528745 9100 9071701972 May 16 2023 unire...
[root@rockylinux9 uniref30]# du -hs .
215G .
[root@rockylinux9 uniref30]#
(MMseqs2 用プロファイルDB変換)
[root@rockylinux9 uniref30]# /apps/mmseqs/bin/mmseqs tsv...
(ケーキとお茶)
[timeを入れたら下記になった. 実時間で143minの待ち. 4core...
real 143m4.638s <-- (各coreが動いていた総時間 user...
user 37m45.828s
sys 6m14.018s
[root@rockylinux9 uniref30]#
[root@rockylinux9 uniref30]# ls -l
total 381182412
-rw-------. 1 528745 9100 30961144274 May 16 2023 unire...
-rw-r--r--. 1 root root 5787495369 Nov 14 21:23 unire...
-rw-r--r--. 1 root root 8709887243 Nov 14 21:40 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:40 unire...
-rw-r--r--. 1 root root 867494002 Nov 14 21:40 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:24 unire...
lrwxrwxrwx. 1 root root 22 Nov 14 21:24 unire...
lrwxrwxrwx. 1 root root 29 Nov 14 21:24 unire...
lrwxrwxrwx. 1 root root 28 Nov 14 21:24 unire...
-rw-r--r--. 1 root root 879290728 Nov 14 21:24 unire...
-rw-------. 1 528745 9100 5797891705 May 22 2023 unire...
-rw-r--r--. 1 root root 83036144795 Nov 14 20:56 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:00 unire...
-rw-r--r--. 1 root root 43200163261 Nov 14 21:14 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:17 unire...
-rw-r--r--. 1 root root 8910693488 Nov 14 21:17 unire...
-rw-r--r--. 1 root root 8957791292 Nov 14 21:00 unire...
-rw-------. 1 528745 9100 667957493 May 22 2023 unire...
-rw-------. 1 528745 9100 46247602628 May 16 2023 unire...
-rw-------. 1 528745 9100 337 May 22 2023 unire...
-rw-------. 1 528745 9100 137235400133 May 16 2023 unire...
-rw-------. 1 528745 9100 9071701972 May 16 2023 unire...
[root@rockylinux9 uniref30]#
(インデックス作成)
[root@rockylinux9 uniref30]# /apps/mmseqs/bin/mmseqs cre...
(ケーキとお茶 2nd)
real 80m36.952s
user 59m5.088s
sys 2m13.538s
[root@rockylinux9 uniref30]#
[root@rockylinux9 uniref30]# ls -l
total 621506080
drwxr-xr-x. 3 root root 4096 Nov 14 22:12 tmp
-rw-------. 1 528745 9100 30961144274 May 16 2023 unire...
-rw-r--r--. 1 root root 5787495369 Nov 14 21:23 unire...
-rw-r--r--. 1 root root 8709887243 Nov 14 21:40 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:40 unire...
-rw-r--r--. 1 root root 867494002 Nov 14 21:40 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:24 unire...
lrwxrwxrwx. 1 root root 22 Nov 14 21:24 unire...
lrwxrwxrwx. 1 root root 29 Nov 14 21:24 unire...
lrwxrwxrwx. 1 root root 28 Nov 14 21:24 unire...
-rw-r--r--. 1 root root 388177920 Nov 14 23:32 unire...
-rw-r--r--. 1 root root 159321395200 Nov 14 23:32 unire...
-rw-r--r--. 1 root root 28806189056 Nov 14 23:32 unire...
-rw-r--r--. 1 root root 28789460992 Nov 14 23:32 unire...
-rw-r--r--. 1 root root 28786122752 Nov 14 23:33 unire...
-rw-r--r--. 1 root root 4 Nov 14 23:33 unire...
-rw-r--r--. 1 root root 848 Nov 14 23:33 unire...
-rw-r--r--. 1 root root 879290728 Nov 14 21:24 unire...
-rw-------. 1 528745 9100 5797891705 May 22 2023 unire...
-rw-r--r--. 1 root root 83036144795 Nov 14 20:56 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:00 unire...
-rw-r--r--. 1 root root 43200163261 Nov 14 21:14 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:17 unire...
-rw-r--r--. 1 root root 8910693488 Nov 14 21:17 unire...
-rw-r--r--. 1 root root 8957791292 Nov 14 21:00 unire...
-rw-------. 1 528745 9100 667957493 May 22 2023 unire...
-rw-------. 1 528745 9100 46247602628 May 16 2023 unire...
-rw-------. 1 528745 9100 337 May 22 2023 unire...
-rw-------. 1 528745 9100 137235400133 May 16 2023 unire...
-rw-------. 1 528745 9100 9071701972 May 16 2023 unire...
[root@rockylinux9 uniref30]#
[root@rockylinux9 uniref30]# du -hs .
593G .
[root@rockylinux9 uniref30]#
}}
これで データベース の準備が出来たので、試しに検索してみる
***検索実行 [#r2fa1a4e]
検索ファイルはfasta形式でこんな感じ
#code(nonumber){{
[saber@rockylinux9 ~]$ mkdir msa
[saber@rockylinux9 ~]$ cd msa/
[saber@rockylinux9 msa]$
[saber@rockylinux9 msa]$ vi query.fasta
>sample
PIAQIHILEGRSDEQKETLIREVSEAISRSLDAPLTSVRVIITEMAKGHFGIGGELASK
[saber@rockylinux9 msa]$
[saber@rockylinux9 msa]$ ls -l
total 4
-rw-r--r--. 1 saber saber 68 Nov 5 03:27 query.fasta
[saber@rockylinux9 msa]$
}}
これを検索してみます
「mmseq createdb」で検索ファイルのデータベース化を行って
「mmseq search」で uniref30 への検索を実施します.
#code(nonumber){{
[saber@rockylinux9 msa]$ module use /apps/modulefiles/
[saber@rockylinux9 msa]$ module load mmseqs
[saber@rockylinux9 msa]$ work=$(mktemp -d -p $(pwd))
[saber@rockylinux9 msa]$ mmseqs createdb query.fasta $w...
createdb query.fasta query.qdb
:
:
[saber@rockylinux9 msa]$
[saber@rockylinux9 msa]$ ls -l $work
total 32
-rw-r--r--. 1 saber saber 61 Nov 15 00:31 query.qdb
-rw-r--r--. 1 saber saber 4 Nov 15 00:31 query.qdb.dbtype
-rw-r--r--. 1 saber saber 8 Nov 15 00:31 query.qdb_h
-rw-r--r--. 1 saber saber 4 Nov 15 00:31 query.qdb_h.dbt...
-rw-r--r--. 1 saber saber 6 Nov 15 00:31 query.qdb_h.index
-rw-r--r--. 1 saber saber 7 Nov 15 00:31 query.qdb.index
-rw-r--r--. 1 saber saber 11 Nov 15 00:31 query.qdb.lookup
-rw-r--r--. 1 saber saber 14 Nov 15 00:31 query.qdb.source
[saber@rockylinux9 msa]$ mmseqs search $work/query.qd...
}}
検索が終わって、
得られた検索結果ファイルを「mmseqs result2msa」で a3m 形...
#code(nonumber){{
[saber@rockylinux9 msa]$ ls -l $work
total 48
-rw-r--r--. 1 saber saber 61 Nov 15 00:31 query.qdb
-rw-r--r--. 1 saber saber 4 Nov 15 00:31 query.qdb.dbt...
-rw-r--r--. 1 saber saber 8 Nov 15 00:31 query.qdb_h
-rw-r--r--. 1 saber saber 4 Nov 15 00:31 query.qdb_h.d...
-rw-r--r--. 1 saber saber 6 Nov 15 00:31 query.qdb_h.i...
-rw-r--r--. 1 saber saber 7 Nov 15 00:31 query.qdb.index
-rw-r--r--. 1 saber saber 11 Nov 15 00:31 query.qdb.loo...
-rw-r--r--. 1 saber saber 14 Nov 15 00:31 query.qdb.sou...
-rw-r--r--. 1 saber saber 2237 Nov 15 00:50 query.res ...
-rw-r--r--. 1 saber saber 4 Nov 15 00:50 query.res.dbt...
-rw-r--r--. 1 saber saber 9 Nov 15 00:50 query.res.ind...
drwxr-xr-x. 3 saber saber 48 Nov 15 00:35 tmp
[saber@rockylinux9 msa]$
[saber@rockylinux9 msa]$ head $work/query.res
151993339 104 0.833 5.264E-25 0 5...
76067200 86 0.745 1.157E-18 0 5...
284902848 73 0.610 3.026E-14 0 5...
21494430 72 0.605 5.716E-14 0 5...
43193666 70 0.620 5.302E-13 0 5...
306434389 66 0.598 1.279E-11 0 5...
98039153 64 0.574 6.288E-11 0 5...
208056876 63 0.526 1.635E-10 0 5...
317866183 61 0.557 8.045E-10 0 5...
43586680 61 0.519 8.045E-10 0 5...
[saber@rockylinux9 msa]$ wc -l query.res
49 query.res
[saber@rockylinux9 msa]$
[saber@rockylinux9 msa]$ mmseqs result2msa $work/query.q...
[saber@rockylinux9 msa]$
[saber@rockylinux9 msa]$ ls -l $work
total 68
-rw-r--r--. 1 saber saber 9046 Nov 15 01:07 query.a3m ...
-rw-r--r--. 1 saber saber 4 Nov 15 01:07 query.a3m.dbt...
-rw-r--r--. 1 saber saber 9 Nov 15 01:07 query.a3m.ind...
-rw-r--r--. 1 saber saber 61 Nov 15 00:31 query.qdb
-rw-r--r--. 1 saber saber 4 Nov 15 00:31 query.qdb.dbt...
-rw-r--r--. 1 saber saber 8 Nov 15 00:31 query.qdb_h
-rw-r--r--. 1 saber saber 4 Nov 15 00:31 query.qdb_h.d...
-rw-r--r--. 1 saber saber 6 Nov 15 00:31 query.qdb_h.i...
-rw-r--r--. 1 saber saber 7 Nov 15 00:31 query.qdb.index
-rw-r--r--. 1 saber saber 11 Nov 15 00:31 query.qdb.loo...
-rw-r--r--. 1 saber saber 14 Nov 15 00:31 query.qdb.sou...
-rw-r--r--. 1 saber saber 2237 Nov 15 00:50 query.res
-rw-r--r--. 1 saber saber 4 Nov 15 00:50 query.res.dbt...
-rw-r--r--. 1 saber saber 9 Nov 15 00:50 query.res.index
drwxr-xr-x. 3 saber saber 48 Nov 15 00:35 tmp
[saber@rockylinux9 msa]$
}}
***msaサーバを作る [#u3c20764]
boltzで
「boltz predict --msa_server http://localhost:8000/msa in...
とされる「--msa_server」の宛先を作ります
dockerとかNginX/apache httpを用意せず、必要になったら上げ...
あと基本的に前段のコマンドを順繰り流すだけなので、ある意...
pythonのFastAPIを使います.
#code(nonumber){{
[root@rockylinux9 ~]# dnf install python3-pip
}}
msaサーバを実行するユーザになって pip でパッケージを入れ...
#code(nonumber){{
[saber@rockylinux9 ~]$ pip install fastapi uvicorn python...
[saber@rockylinux9 ~]$ ls -l .local/bin/
total 8
-rwxr-xr-x. 1 saber saber 210 Nov 15 21:39 fastapi
-rwxr-xr-x. 1 saber saber 211 Nov 15 21:39 uvicorn
[saber@rockylinux9 ~]$
}}
っでmsaサーバのスクリプトですが、下記を使います。これを「...
#code(python,nonumber){{
from fastapi import FastAPI, UploadFile
import subprocess
import uuid
import os
app = FastAPI()
DB_PATH = "/db/uniref30/uniref30_2302_db"
TMP_DIR = "/tmp"
@app.post("/msa")
async def run_msa(file: UploadFile):
# 一時ファイル
job_id = str(uuid.uuid4())
query_fasta = f"{TMP_DIR}/{job_id}.fasta"
query_db = f"{TMP_DIR}/{job_id}_qdb"
result_db = f"{TMP_DIR}/{job_id}_res"
msa_out = f"{TMP_DIR}/{job_id}.a3m"
# 保存
with open(query_fasta, "wb") as f:
f.write(await file.read())
# MMseqs2 実行
subprocess.run(["mmseqs", "createdb", query_fasta, qu...
subprocess.run(["mmseqs", "search", query_db, DB_PATH...
subprocess.run(["mmseqs", "result2msa", query_db, DB_...
# 結果返却
with open(msa_out, "r") as f:
msa = f.read()
# cleanup は省略 (必要なら cron で)
return {"msa": msa}
}}
PATH環境変数に $HOME/.local/bin がある事を確認して、「msa...
#code(nonumber){{
[saber@rockylinux9 ~]$ echo $PATH
/home/saber/.local/bin:/home/saber/bin:/usr/share/Modules...
[saber@rockylinux9 ~]$ ls -l $HOME/msa_server.py
-rw-r--r--. 1 saber saber 960 Nov 15 21:44 /home/saber/ms...
[saber@rockylinux9 ~]$ uvicorn msa_server:app --host 0.0....
INFO: Started server process [43478]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press C...
:
}}
msaサーバを停止させるには、CTRL+C (コントロールキーを押し...
っでこの段階でテストしてみます. 検索用ファイル「query.fas...
#code(nonumber){{
[saber@rockylinux9 ~]$ curl -X POST -F "file=@query.fasta...
}}
これで立ち上げた msa サーバ経由で検索してくれます
結果ですが、
#code(nonumber){{
[saber@rockylinux9 ~]$ curl -X POST -F "file=@query.fasta...
{"msa":">sample\nPIAQIHILEGRSDEQKETLIREVSEAISRSLDAPLTSVRV...
}}
とjson形式で改行が"\n"で繋がった文字列を吐き出してくれます.
***めも [#v9859a9a]
こちらはあくまでも1配列から msa を用意しているだけです。...
それをするなら colabfold(+配列データベースも用意) で cola...
終了行:
自前でquery配列からMultiple Sequence Alignment(MSA)を作る...
***MSA作成ツール [#x51e265e]
複数存在して用途目的にあわせて選ぶ
-[[MMseqs2]] https://github.com/soedinglab/MMseqs2
ColabFoldが使用している高速クラスタリング・検索ツール
-JackHMMER/HHblits
AlphaFold2でも使われるツール
データベースと絡めると
|BGCOLOR(YELLOW):ツール|BGCOLOR(YELLOW):データベース|BGCO...
|MMseqs2|UniRef30| |高速・省リソース(Boltz/ColabFold用途)|
|JackHMMER|UniRef90 + MGnify|UniRef90(ホモログ探索)向けと...
|HHblits|BFD / UniClust30|どちらか一方. alphafold2では2...
alphafold2では JackHMMER でUniRef90とMGnifyを検索して、HH...
LocalColabFoldをローカルで実行する場合は、UniRef30、Colab...
ここでは UniRef30 を対象に [[MMseqs2]] で MSA を作る事に...
マルチマーな蛋白質に対しては素直に localcolabfold を導入...
***MMseqs2の導入 [#b55d2635]
ここでは ColabFold が採用している [[MMseqs2]] を入れます.
[[https://github.com/soedinglab/MMseqs2/releases>+https:/...
コンパイルせず、これをそのまま使いたいと思います.
最新の「MMseqs2 Release 18-8cc5c」で 「mmseqs-linux-avx2....
#code(nonumber){{
[root@rockylinux9 ~]# cd /apps/src/
[root@rockylinux9 src]# wget https://github.com/soedingla...
[root@rockylinux9 src]# cd ..
[root@rockylinux9 apps]# tar xf src/mmseqs-linux-avx2.tar...
(オプション)
[root@rockylinux9 apps]# cp mmseqs/util/bash-completion.s...
}}
EnvironmentModulesは「/apps/modulefiles/mmseqs」
#code(nonumber){{
#%Module1.0
set root /apps/mmseqs
prepend-path PATH $root/bin
}}
***データベース準備 [#j76843e9]
UniRef(UniProt Reference Clusters)を用意します.
アミノ酸配列が90%以上一致するタンパク質が1つのクラスター...
配列が30%以上で似ているタンパク質が1つのクラスターに纏め...
推奨は UniRef30
っが、uniprot.orgでの提供はない模様で ColabFold で提供さ...
展開先は SSD なドライブが望ましいそうな. まぁー確かに.
#code(nonumber){{
[root@rockylinux9 ~]# mkdir -p /db/{uniref30,src}
[root@rockylinux9 ~]# cd /db/src
[root@rockylinux9 src]# wget https://wwwuser.gwdg.de/~com...
[root@rockylinux9 src]# cd ../uniref30
[root@rockylinux9 uniref30]# tar xf /db/src/uniref30_2302...
[root@rockylinux9 uniref30]# ls -l
total 224591556
-rw-------. 1 528745 9100 30961144274 May 16 2023 unire...
-rw-------. 1 528745 9100 5797891705 May 22 2023 unire...
-rw-------. 1 528745 9100 667957493 May 22 2023 unire...
-rw-------. 1 528745 9100 46247602628 May 16 2023 unire...
-rw-------. 1 528745 9100 337 May 22 2023 unire...
-rw-------. 1 528745 9100 137235400133 May 16 2023 unire...
-rw-------. 1 528745 9100 9071701972 May 16 2023 unire...
[root@rockylinux9 uniref30]# du -hs .
215G .
[root@rockylinux9 uniref30]#
(MMseqs2 用プロファイルDB変換)
[root@rockylinux9 uniref30]# /apps/mmseqs/bin/mmseqs tsv...
(ケーキとお茶)
[timeを入れたら下記になった. 実時間で143minの待ち. 4core...
real 143m4.638s <-- (各coreが動いていた総時間 user...
user 37m45.828s
sys 6m14.018s
[root@rockylinux9 uniref30]#
[root@rockylinux9 uniref30]# ls -l
total 381182412
-rw-------. 1 528745 9100 30961144274 May 16 2023 unire...
-rw-r--r--. 1 root root 5787495369 Nov 14 21:23 unire...
-rw-r--r--. 1 root root 8709887243 Nov 14 21:40 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:40 unire...
-rw-r--r--. 1 root root 867494002 Nov 14 21:40 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:24 unire...
lrwxrwxrwx. 1 root root 22 Nov 14 21:24 unire...
lrwxrwxrwx. 1 root root 29 Nov 14 21:24 unire...
lrwxrwxrwx. 1 root root 28 Nov 14 21:24 unire...
-rw-r--r--. 1 root root 879290728 Nov 14 21:24 unire...
-rw-------. 1 528745 9100 5797891705 May 22 2023 unire...
-rw-r--r--. 1 root root 83036144795 Nov 14 20:56 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:00 unire...
-rw-r--r--. 1 root root 43200163261 Nov 14 21:14 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:17 unire...
-rw-r--r--. 1 root root 8910693488 Nov 14 21:17 unire...
-rw-r--r--. 1 root root 8957791292 Nov 14 21:00 unire...
-rw-------. 1 528745 9100 667957493 May 22 2023 unire...
-rw-------. 1 528745 9100 46247602628 May 16 2023 unire...
-rw-------. 1 528745 9100 337 May 22 2023 unire...
-rw-------. 1 528745 9100 137235400133 May 16 2023 unire...
-rw-------. 1 528745 9100 9071701972 May 16 2023 unire...
[root@rockylinux9 uniref30]#
(インデックス作成)
[root@rockylinux9 uniref30]# /apps/mmseqs/bin/mmseqs cre...
(ケーキとお茶 2nd)
real 80m36.952s
user 59m5.088s
sys 2m13.538s
[root@rockylinux9 uniref30]#
[root@rockylinux9 uniref30]# ls -l
total 621506080
drwxr-xr-x. 3 root root 4096 Nov 14 22:12 tmp
-rw-------. 1 528745 9100 30961144274 May 16 2023 unire...
-rw-r--r--. 1 root root 5787495369 Nov 14 21:23 unire...
-rw-r--r--. 1 root root 8709887243 Nov 14 21:40 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:40 unire...
-rw-r--r--. 1 root root 867494002 Nov 14 21:40 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:24 unire...
lrwxrwxrwx. 1 root root 22 Nov 14 21:24 unire...
lrwxrwxrwx. 1 root root 29 Nov 14 21:24 unire...
lrwxrwxrwx. 1 root root 28 Nov 14 21:24 unire...
-rw-r--r--. 1 root root 388177920 Nov 14 23:32 unire...
-rw-r--r--. 1 root root 159321395200 Nov 14 23:32 unire...
-rw-r--r--. 1 root root 28806189056 Nov 14 23:32 unire...
-rw-r--r--. 1 root root 28789460992 Nov 14 23:32 unire...
-rw-r--r--. 1 root root 28786122752 Nov 14 23:33 unire...
-rw-r--r--. 1 root root 4 Nov 14 23:33 unire...
-rw-r--r--. 1 root root 848 Nov 14 23:33 unire...
-rw-r--r--. 1 root root 879290728 Nov 14 21:24 unire...
-rw-------. 1 528745 9100 5797891705 May 22 2023 unire...
-rw-r--r--. 1 root root 83036144795 Nov 14 20:56 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:00 unire...
-rw-r--r--. 1 root root 43200163261 Nov 14 21:14 unire...
-rw-r--r--. 1 root root 4 Nov 14 21:17 unire...
-rw-r--r--. 1 root root 8910693488 Nov 14 21:17 unire...
-rw-r--r--. 1 root root 8957791292 Nov 14 21:00 unire...
-rw-------. 1 528745 9100 667957493 May 22 2023 unire...
-rw-------. 1 528745 9100 46247602628 May 16 2023 unire...
-rw-------. 1 528745 9100 337 May 22 2023 unire...
-rw-------. 1 528745 9100 137235400133 May 16 2023 unire...
-rw-------. 1 528745 9100 9071701972 May 16 2023 unire...
[root@rockylinux9 uniref30]#
[root@rockylinux9 uniref30]# du -hs .
593G .
[root@rockylinux9 uniref30]#
}}
これで データベース の準備が出来たので、試しに検索してみる
***検索実行 [#r2fa1a4e]
検索ファイルはfasta形式でこんな感じ
#code(nonumber){{
[saber@rockylinux9 ~]$ mkdir msa
[saber@rockylinux9 ~]$ cd msa/
[saber@rockylinux9 msa]$
[saber@rockylinux9 msa]$ vi query.fasta
>sample
PIAQIHILEGRSDEQKETLIREVSEAISRSLDAPLTSVRVIITEMAKGHFGIGGELASK
[saber@rockylinux9 msa]$
[saber@rockylinux9 msa]$ ls -l
total 4
-rw-r--r--. 1 saber saber 68 Nov 5 03:27 query.fasta
[saber@rockylinux9 msa]$
}}
これを検索してみます
「mmseq createdb」で検索ファイルのデータベース化を行って
「mmseq search」で uniref30 への検索を実施します.
#code(nonumber){{
[saber@rockylinux9 msa]$ module use /apps/modulefiles/
[saber@rockylinux9 msa]$ module load mmseqs
[saber@rockylinux9 msa]$ work=$(mktemp -d -p $(pwd))
[saber@rockylinux9 msa]$ mmseqs createdb query.fasta $w...
createdb query.fasta query.qdb
:
:
[saber@rockylinux9 msa]$
[saber@rockylinux9 msa]$ ls -l $work
total 32
-rw-r--r--. 1 saber saber 61 Nov 15 00:31 query.qdb
-rw-r--r--. 1 saber saber 4 Nov 15 00:31 query.qdb.dbtype
-rw-r--r--. 1 saber saber 8 Nov 15 00:31 query.qdb_h
-rw-r--r--. 1 saber saber 4 Nov 15 00:31 query.qdb_h.dbt...
-rw-r--r--. 1 saber saber 6 Nov 15 00:31 query.qdb_h.index
-rw-r--r--. 1 saber saber 7 Nov 15 00:31 query.qdb.index
-rw-r--r--. 1 saber saber 11 Nov 15 00:31 query.qdb.lookup
-rw-r--r--. 1 saber saber 14 Nov 15 00:31 query.qdb.source
[saber@rockylinux9 msa]$ mmseqs search $work/query.qd...
}}
検索が終わって、
得られた検索結果ファイルを「mmseqs result2msa」で a3m 形...
#code(nonumber){{
[saber@rockylinux9 msa]$ ls -l $work
total 48
-rw-r--r--. 1 saber saber 61 Nov 15 00:31 query.qdb
-rw-r--r--. 1 saber saber 4 Nov 15 00:31 query.qdb.dbt...
-rw-r--r--. 1 saber saber 8 Nov 15 00:31 query.qdb_h
-rw-r--r--. 1 saber saber 4 Nov 15 00:31 query.qdb_h.d...
-rw-r--r--. 1 saber saber 6 Nov 15 00:31 query.qdb_h.i...
-rw-r--r--. 1 saber saber 7 Nov 15 00:31 query.qdb.index
-rw-r--r--. 1 saber saber 11 Nov 15 00:31 query.qdb.loo...
-rw-r--r--. 1 saber saber 14 Nov 15 00:31 query.qdb.sou...
-rw-r--r--. 1 saber saber 2237 Nov 15 00:50 query.res ...
-rw-r--r--. 1 saber saber 4 Nov 15 00:50 query.res.dbt...
-rw-r--r--. 1 saber saber 9 Nov 15 00:50 query.res.ind...
drwxr-xr-x. 3 saber saber 48 Nov 15 00:35 tmp
[saber@rockylinux9 msa]$
[saber@rockylinux9 msa]$ head $work/query.res
151993339 104 0.833 5.264E-25 0 5...
76067200 86 0.745 1.157E-18 0 5...
284902848 73 0.610 3.026E-14 0 5...
21494430 72 0.605 5.716E-14 0 5...
43193666 70 0.620 5.302E-13 0 5...
306434389 66 0.598 1.279E-11 0 5...
98039153 64 0.574 6.288E-11 0 5...
208056876 63 0.526 1.635E-10 0 5...
317866183 61 0.557 8.045E-10 0 5...
43586680 61 0.519 8.045E-10 0 5...
[saber@rockylinux9 msa]$ wc -l query.res
49 query.res
[saber@rockylinux9 msa]$
[saber@rockylinux9 msa]$ mmseqs result2msa $work/query.q...
[saber@rockylinux9 msa]$
[saber@rockylinux9 msa]$ ls -l $work
total 68
-rw-r--r--. 1 saber saber 9046 Nov 15 01:07 query.a3m ...
-rw-r--r--. 1 saber saber 4 Nov 15 01:07 query.a3m.dbt...
-rw-r--r--. 1 saber saber 9 Nov 15 01:07 query.a3m.ind...
-rw-r--r--. 1 saber saber 61 Nov 15 00:31 query.qdb
-rw-r--r--. 1 saber saber 4 Nov 15 00:31 query.qdb.dbt...
-rw-r--r--. 1 saber saber 8 Nov 15 00:31 query.qdb_h
-rw-r--r--. 1 saber saber 4 Nov 15 00:31 query.qdb_h.d...
-rw-r--r--. 1 saber saber 6 Nov 15 00:31 query.qdb_h.i...
-rw-r--r--. 1 saber saber 7 Nov 15 00:31 query.qdb.index
-rw-r--r--. 1 saber saber 11 Nov 15 00:31 query.qdb.loo...
-rw-r--r--. 1 saber saber 14 Nov 15 00:31 query.qdb.sou...
-rw-r--r--. 1 saber saber 2237 Nov 15 00:50 query.res
-rw-r--r--. 1 saber saber 4 Nov 15 00:50 query.res.dbt...
-rw-r--r--. 1 saber saber 9 Nov 15 00:50 query.res.index
drwxr-xr-x. 3 saber saber 48 Nov 15 00:35 tmp
[saber@rockylinux9 msa]$
}}
***msaサーバを作る [#u3c20764]
boltzで
「boltz predict --msa_server http://localhost:8000/msa in...
とされる「--msa_server」の宛先を作ります
dockerとかNginX/apache httpを用意せず、必要になったら上げ...
あと基本的に前段のコマンドを順繰り流すだけなので、ある意...
pythonのFastAPIを使います.
#code(nonumber){{
[root@rockylinux9 ~]# dnf install python3-pip
}}
msaサーバを実行するユーザになって pip でパッケージを入れ...
#code(nonumber){{
[saber@rockylinux9 ~]$ pip install fastapi uvicorn python...
[saber@rockylinux9 ~]$ ls -l .local/bin/
total 8
-rwxr-xr-x. 1 saber saber 210 Nov 15 21:39 fastapi
-rwxr-xr-x. 1 saber saber 211 Nov 15 21:39 uvicorn
[saber@rockylinux9 ~]$
}}
っでmsaサーバのスクリプトですが、下記を使います。これを「...
#code(python,nonumber){{
from fastapi import FastAPI, UploadFile
import subprocess
import uuid
import os
app = FastAPI()
DB_PATH = "/db/uniref30/uniref30_2302_db"
TMP_DIR = "/tmp"
@app.post("/msa")
async def run_msa(file: UploadFile):
# 一時ファイル
job_id = str(uuid.uuid4())
query_fasta = f"{TMP_DIR}/{job_id}.fasta"
query_db = f"{TMP_DIR}/{job_id}_qdb"
result_db = f"{TMP_DIR}/{job_id}_res"
msa_out = f"{TMP_DIR}/{job_id}.a3m"
# 保存
with open(query_fasta, "wb") as f:
f.write(await file.read())
# MMseqs2 実行
subprocess.run(["mmseqs", "createdb", query_fasta, qu...
subprocess.run(["mmseqs", "search", query_db, DB_PATH...
subprocess.run(["mmseqs", "result2msa", query_db, DB_...
# 結果返却
with open(msa_out, "r") as f:
msa = f.read()
# cleanup は省略 (必要なら cron で)
return {"msa": msa}
}}
PATH環境変数に $HOME/.local/bin がある事を確認して、「msa...
#code(nonumber){{
[saber@rockylinux9 ~]$ echo $PATH
/home/saber/.local/bin:/home/saber/bin:/usr/share/Modules...
[saber@rockylinux9 ~]$ ls -l $HOME/msa_server.py
-rw-r--r--. 1 saber saber 960 Nov 15 21:44 /home/saber/ms...
[saber@rockylinux9 ~]$ uvicorn msa_server:app --host 0.0....
INFO: Started server process [43478]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press C...
:
}}
msaサーバを停止させるには、CTRL+C (コントロールキーを押し...
っでこの段階でテストしてみます. 検索用ファイル「query.fas...
#code(nonumber){{
[saber@rockylinux9 ~]$ curl -X POST -F "file=@query.fasta...
}}
これで立ち上げた msa サーバ経由で検索してくれます
結果ですが、
#code(nonumber){{
[saber@rockylinux9 ~]$ curl -X POST -F "file=@query.fasta...
{"msa":">sample\nPIAQIHILEGRSDEQKETLIREVSEAISRSLDAPLTSVRV...
}}
とjson形式で改行が"\n"で繋がった文字列を吐き出してくれます.
***めも [#v9859a9a]
こちらはあくまでも1配列から msa を用意しているだけです。...
それをするなら colabfold(+配列データベースも用意) で cola...
ページ名:
1