mcpField
A
alterlab-blast

alterlab-blast

github.com/alterlab-ieuデータ・データベース7862 回インストール5 週間前に更新
リポジトリ

alterlab-blast について

ローカルでBLAST+による配列検索を行い、データベースを構築して表形式の結果を解析するコマンドラインスキルです。核酸・タンパク質配列を扱い、大規模なタンパク質検索にはDIAMONDも利用できます。

主な機能

  1. 01makeblastdbによるローカルDB構築
  2. 02blastn、blastp、blastx、tblastnの実行
  3. 03解析可能な表形式の検索結果
  4. 04NCBI分類IDによる検索範囲の指定
  5. 05bitscoreによるヒットの解析・絞り込み・順位付け
  6. 06大規模なタンパク質検索でのDIAMOND利用

活用シーン

  1. 01ローカルDBに対するクエリ配列の検索
  2. 02BLAST検索用のFASTAデータ準備
  3. 03指定した分類群に配列検索を限定
  4. 04表形式の結果から最上位ヒットを選択

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alterlab-ieu/alterlab-academic-skills --skill alterlab-blast

インストール後、Claude Code で/alterlab-blastを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

evals/
evals.json
references/
blast_cli.md
diamond.md
scripts/
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つの誤解

  1. -max_target_seqsは「上位N件のベストヒット」を絞り込むフィルターではありません。 検索中にヒューリスティックな打ち切りとして適用される、保持するアラインメント済み配列の数です。同点の場合はスコアではなく「データベース内の配列順」で決まります。-max_target_seqs 1を指定しても、確実に最良のヒットが返るわけではありません。最良のヒットを得るには、十分に大きな値を指定し、ソート後に最上位の行を選んでください(scripts/parse_blast_tab.py --best-hitを参照)。デフォルトは500です。
  2. blastnで誤った-taskを指定すること。 megablast(デフォルト)は非常によく似た配列用です。種をまたぐ、またはより離れたヒットにはblastnを、約30 nt未満のクエリ(プライマー、sgRNA)にはblastn-shortを使用してください。dc-megablastは種間比較向けの不連続オプションです。
  3. DBの構築時に-parse_seqidsを忘れること。 これを指定しないと、blastdbcmd -entryで配列を取り出せず、DIAMONDでも配列IDを適切に再利用できません。DBを再構築せずに後から追加することはできません。
  4. DIAMONDでカスタム列リストの-outfmtを引用符で囲むこと。 BLAST+では指定内容を引用符で囲みます(-outfmt '6 qseqid sseqid pident evalue')。DIAMONDでは引用符で囲みません(--outfmt 6 qseqid sseqid pident evalue)。これを取り違えると、エラーが表示されないまま問題になることがよくあります。
  5. マルチスレッド。 -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を参照してください。

推奨ワークフロー

  1. 上記のクエリ/サブジェクト表からプログラムを選びます。
  2. makeblastdb -parse_seqidsを使ってDBを構築します(またはNCBIのフォーマット済みDBをダウンロードします)。約100万を超えるタンパク質の場合は、代わりにDIAMOND DBを構築してください。
  3. -outfmt 6、明示的な-evalue閾値、適切な-task(blastn)、-num_threadsを指定して検索します。絞り込む場合は-taxidsを追加してください。
  4. scripts/parse_blast_tab.pyで解析とQCを行います。bitscoreでソートし、クエリごとのベストヒットを抽出し、identity/coverage/e-valueのフィルターを適用します。また、列数が切り詰められているように見える場合は、-max_target_seqsの落とし穴について警告します。
  5. blastdbcmd -db mydb -entry <id>でヒットした配列を取得します(-parse_seqidsが必要です)。

報告前の確認

  • blastn -version / diamond versionが実際に実行されたことを確認してください。生成していないヒットを報告しないでください。
  • 使用したプログラム、-task、-evalue、DBを明記してください。これらがなければ結果に意味はありません。
  • -max_target_seqsを使用した場合、保持数を上位N件と見なすのではなく、事後にbitscoreでソートしてベストヒットを選んだことを確認してください。
  • DIAMONDの結果については、使用した感度レベルを記載してください。

参考資料

AlterLab Academic Skills スイートの一部です。

コメント