alterlab-blast について
ローカルでBLAST+による配列検索を行い、データベースを構築して表形式の結果を解析するコマンドラインスキルです。核酸・タンパク質配列を扱い、大規模なタンパク質検索にはDIAMONDも利用できます。
主な機能
- 01makeblastdbによるローカルDB構築
- 02blastn、blastp、blastx、tblastnの実行
- 03解析可能な表形式の検索結果
- 04NCBI分類IDによる検索範囲の指定
- 05bitscoreによるヒットの解析・絞り込み・順位付け
- 06大規模なタンパク質検索でのDIAMOND利用
活用シーン
- 01ローカルDBに対するクエリ配列の検索
- 02BLAST検索用のFASTAデータ準備
- 03指定した分類群に配列検索を限定
- 04表形式の結果から最上位ヒットを選択
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-blastインストール後、Claude Code で/alterlab-blastを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonreferences/blast_cli.mddiamond.mdscripts/parse_blast_tab.py詳細
BLAST+ — コマンドライン配列検索
ローカル環境で NCBI BLAST+ 2.17.0 による検索を最初から最後まで実行できます。makeblastdb でデータベースを構築し、blastn/blastp/blastx/tblastn で検索して、機械で解析できる表形式の出力を生成し、分類群で絞り込みます。非常に大規模なタンパク質検索では、DIAMOND の blastp --ultra-sensitive に切り替えます(DIAMOND プロジェクトによると、BLAST の 100~10,000 倍の速度です)。これは CLI/ローカルデータベース向けのスキルであり、Biopython の Web API や gget のワンライナーとは明確に異なります(下の振り分け表を参照してください)。
大量のデータベース構築や大規模な検索は CPU/I/O を大量に使用し、完全にオフラインで実行できます。API 呼び出しを消費するより、ローカルの計算環境で実行するのに適しています。
このスキルを使う場面
次のいずれかに該当するリクエストで、このスキルを使用してください。
- 「これらの配列を BLAST にかけて」「blastn/blastp/blastx/tblastn を実行して」「コマンドラインで BLAST を実行して」
- 「ローカル BLAST データベースを構築して」「makeblastdb」「この FASTA を BLAST 用にインデックス化して」
- 「リードをローカルの nt/nr データベースに対して検索して」「解析できる BLAST ヒットを表形式で取得して」
- 「BLAST 検索を分類群に絞り込んで」(
-taxids/-negative_taxids) - 「数百万のタンパク質に対する BLAST が遅すぎる」→ DIAMOND
blastp - BLAST DB から配列を取得する(
blastdbcmd。-parse_seqidsが必要)
対象外
BLAST+ に無理に対応させず、関連するリクエストは適切な兄弟スキルに振り分けてください。
| リクエストの主な内容 | 振り分け先 |
|---|---|
Web BLAST API(Bio.Blast.NCBIWWW.qblast)、または Bio.Blast で解析する Python パイプライン内の BLAST スクリプト | alterlab-biopython |
手早く使えるワンライナーでの BLAST/データベース検索(gget blast、遺伝子/構造/エンリッチメント検索) | alterlab-gget |
| 多数のバイオ系 Web サービス(UniProt、KEGG、Ensembl REST、NCBI eUtils)への統合的なプログラムアクセス | alterlab-bioservices |
| 配列類似性検索ではなく、配列からの系統樹の構築/検索 | alterlab-phylogenetics |
| リファレンスゲノムへのリードアラインメント(BWA/minimap2 → BAM)および SAM/BAM の処理 | alterlab-pysam |
| FASTQ→VCF のバリアントコーリングパイプライン | alterlab-nf-core-sarek |
| 転写産物レベルの RNA-seq 定量(salmon/kallisto) | alterlab-rnaseq-quant |
| 16S/ITS アンプリコン分類(QIIME 2) | alterlab-qiime2-amplicon |
| タンパク質の構造予測/埋め込み(ESM、AlphaFold) | alterlab-esm |
ユーザーが明示的に「Web BLAST」「NCBIWWW」「何もインストールせずに」と指定した場合は、このスキルではなく alterlab-biopython を使います。
クイックスタート
# 1. Build a protein DB (‑parse_seqids enables blastdbcmd retrieval + DIAMOND reuse)
makeblastdb -in proteins.fasta -dbtype prot -parse_seqids -out mydb -title "my proteins"
# 2. Search, tabular output you can parse, std 12 columns
blastp -query query.faa -db mydb -outfmt 6 -evalue 1e-5 -out hits.tsv
# 3. QC / summarize the tabular output (stdlib only)
uv run python scripts/parse_blast_tab.py hits.tsv --best-hit
-outfmt 6 は、機械で読み取れる形式の標準です。デフォルトの列は std セット、つまり qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore です。同じ列にコメント行を加えるには -outfmt 7 を使います。
適切なプログラムの選択
| クエリ | 対象 DB | プログラム |
|---|---|---|
| 塩基配列 | 塩基配列 | blastn |
| タンパク質 | タンパク質 | blastp |
| 塩基配列(翻訳済み) | タンパク質 | blastx |
| タンパク質 | 塩基配列(翻訳済み) | tblastn |
makeblastdb の -dbtype は、対象が塩基配列なら nucl、タンパク質なら prot です。
よくある5つの誤解
-max_target_seqsは「上位N件のベストヒット」を絞り込むフィルターではありません。 検索中にヒューリスティックな打ち切りとして適用される、保持するアラインメント済み配列の数です。同点の場合はスコアではなく「データベース内の配列順」で決まります。-max_target_seqs 1を指定しても、確実に最良のヒットが返るわけではありません。最良のヒットを得るには、十分に大きな値を指定し、ソート後に最上位の行を選んでください(scripts/parse_blast_tab.py --best-hitを参照)。デフォルトは500です。blastnで誤った-taskを指定すること。megablast(デフォルト)は非常によく似た配列用です。種をまたぐ、またはより離れたヒットにはblastnを、約30 nt未満のクエリ(プライマー、sgRNA)にはblastn-shortを使用してください。dc-megablastは種間比較向けの不連続オプションです。- DBの構築時に
-parse_seqidsを忘れること。 これを指定しないと、blastdbcmd -entryで配列を取り出せず、DIAMONDでも配列IDを適切に再利用できません。DBを再構築せずに後から追加することはできません。 - DIAMONDでカスタム列リストの
-outfmtを引用符で囲むこと。 BLAST+では指定内容を引用符で囲みます(-outfmt '6 qseqid sseqid pident evalue')。DIAMONDでは引用符で囲みません(--outfmt 6 qseqid sseqid pident evalue)。これを取り違えると、エラーが表示されないまま問題になることがよくあります。 - マルチスレッド。
-num_threads Nを使用してください。BLAST+ 2.15以降では、デフォルトの-mt_mode 0により、クエリとデータベースのサイズに応じてBLASTが分割方法を選択します。NCBIはこの設定を変更しないことを推奨しています。意図がある場合に限り、上書きしてください。-mt_mode 1= ThreadByQuery(小さなクエリが多数)、-mt_mode 2= ThreadByDatabase(大きなクエリが少数、大規模DB)。
全オプションのリファレンス、分類体系による絞り込み、DBの準備の詳細:
references/blast_cli.md。
分類体系による絞り込み
NCBI taxidを使って、検索対象をクレードに限定したり、クレードを除外したりできます。
blastn -query q.fna -db nt -taxids 9606 -outfmt 6 -out human_only.tsv
blastp -query q.faa -db nr -negative_taxids 2 -outfmt 6 -out no_bacteria.tsv
taxidによる絞り込みには、分類体系に対応したデータベースが必要です(NCBIのフォーマット済みnt / nrのように、*.taxidマッピングとともに構築またはダウンロードされたもの)。references/blast_cli.mdを参照してください。
DIAMOND — 大規模なタンパク質検索を高速化
数百万のタンパク質に対するblastp / blastxの実行が遅すぎる場合は、タンパク質空間の検索にそのまま置き換えて使えるDIAMONDを利用できます。
diamond makedb --in nr.faa -d nr_diamond
diamond blastp -d nr_diamond -q query.faa -o hits.tsv \
--ultra-sensitive --outfmt 6 qseqid sseqid pident length evalue bitscore
感度の段階(高速 → 最高感度):--fast、--mid-sensitive、--sensitive、--more-sensitive、--very-sensitive、--ultra-sensitive。感度フラグを指定しない場合、DIAMONDはデフォルトモードで実行されます。このモードの感度は--fastと--mid-sensitiveの中間です。BLASTに匹敵する再現率が必要な場合は、--ultra-sensitiveを使用してください。DIAMONDの--outfmt 6は、以下のBLAST+用タブ区切り形式パーサーと互換性があります。詳細とトレードオフについては、references/diamond.mdを参照してください。
推奨ワークフロー
- 上記のクエリ/サブジェクト表からプログラムを選びます。
makeblastdb -parse_seqidsを使ってDBを構築します(またはNCBIのフォーマット済みDBをダウンロードします)。約100万を超えるタンパク質の場合は、代わりにDIAMOND DBを構築してください。-outfmt 6、明示的な-evalue閾値、適切な-task(blastn)、-num_threadsを指定して検索します。絞り込む場合は-taxidsを追加してください。scripts/parse_blast_tab.pyで解析とQCを行います。bitscoreでソートし、クエリごとのベストヒットを抽出し、identity/coverage/e-valueのフィルターを適用します。また、列数が切り詰められているように見える場合は、-max_target_seqsの落とし穴について警告します。blastdbcmd -db mydb -entry <id>でヒットした配列を取得します(-parse_seqidsが必要です)。
報告前の確認
blastn -version/diamond versionが実際に実行されたことを確認してください。生成していないヒットを報告しないでください。- 使用したプログラム、
-task、-evalue、DBを明記してください。これらがなければ結果に意味はありません。 -max_target_seqsを使用した場合、保持数を上位N件と見なすのではなく、事後にbitscoreでソートしてベストヒットを選んだことを確認してください。- DIAMONDの結果については、使用した感度レベルを記載してください。
参考資料
references/blast_cli.md— BLAST+ 2.17.0 のオプションに関する完全なリファレンスです。プログラム、makeblastdb、-outfmtの列、-task、分類群のスコープ指定、-mt_mode、blastdbcmdによる取得、および-max_target_seqsに関する注意事項を掲載しています。references/diamond.md— DIAMOND のデータベース構築、感度モード、出力形式、および BLAST+ より DIAMOND を選ぶべき状況を解説しています。- NCBI BLAST+ マニュアル:https://www.ncbi.nlm.nih.gov/books/NBK569856/
- DIAMOND:https://github.com/bbuchfink/diamond
AlterLab Academic Skills スイートの一部です。