Alterlab blast
Skill AlterLab-IEU/AlterLab-Academic-Skills/skills/bioinformatics/alterlab-blast
239 evaluated academic Claude/agent skills across 17 research domains (bioinformatics, data science, clinical, social-science methods, Turkish academia & more). Executable eval per skill, deterministic citation verifier, research→write→review→publish pipeline, and a skill-finder front door. Claude Code, Cursor, Codex, Gemini CLI & Copilot.
npx -y skills add AlterLab-IEU/AlterLab-Academic-Skills --skill alterlab-blastAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Runs NCBI BLAST+ 2.17.0 sequence searches from the command line: makeblastdb (with -parse_seqids), blastn/blastp/blastx/tblastn with tabular -outfmt 6/7 for parsing, correct -task choice (megablast vs blastn vs blastn-short), -taxids/-negative_taxids taxonomic scoping, and -mt_mode multithreading; plus a DIAMOND blastp --ultra-sensitive path for large protein searches. Warns that -max_target_seqs is a heuristic keep-count, not a top-N best-hits filter. Use when the user wants command-line BLAST, makeblastdb, a local BLAST database, blastn/blastp/blastx/tblastn searches, or DIAMOND protein search. For the Bio.Blast web NCBIWWW API prefer alterlab-biopython; for quick one-liner database lookups prefer alterlab-gget. Part of the AlterLab Academic Skills suite.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
9.3 KB, as published. Nobody here has run it
BLAST+ — Command-Line Sequence Search
Run local NCBI BLAST+ 2.17.0 searches end-to-end: build a database with
makeblastdb, search it with blastn / blastp / blastx / tblastn, emit
machine-parseable tabular output, and scope by taxonomy. For very large protein
searches, hand off to DIAMOND blastp --ultra-sensitive (100x–10,000x the
speed of BLAST, per the DIAMOND project). This is the CLI / local-database
skill; it is deliberately distinct from the Biopython web API and the gget
one-liner (see routing table below).
Bulk DB builds and large searches are CPU/IO-heavy and fully offline — good candidates to run on local compute rather than burning API calls.
When to Use This Skill
Use this skill when the request involves any of:
- "BLAST these sequences", "run blastn/blastp/blastx/tblastn", "command-line BLAST"
- "build a local BLAST database", "makeblastdb", "index this FASTA for BLAST"
- "search my reads against a local nt/nr database", "get tabular BLAST hits I can parse"
- "scope the BLAST search to a taxon" (
-taxids/-negative_taxids) - "BLAST is too slow on millions of proteins" → DIAMOND
blastp - retrieving sequences out of a BLAST DB (
blastdbcmd, requires-parse_seqids)
Does NOT Trigger
Route adjacent requests to the right sibling skill instead of forcing BLAST+:
| The request is really about… | Route to |
|---|---|
The web BLAST API (Bio.Blast.NCBIWWW.qblast), or scripting BLAST inside a Python pipeline with Bio.Blast parsing | alterlab-biopython |
A quick one-liner BLAST/database lookup (gget blast, gene/structure/enrichment lookups) | alterlab-gget |
| Unified programmatic access to many bio web services (UniProt, KEGG, Ensembl REST, NCBI eUtils) | alterlab-bioservices |
| Building/searching a phylogenetic tree from sequences, not a similarity search | alterlab-phylogenetics |
| Read alignment to a reference genome (BWA/minimap2 → BAM) and SAM/BAM handling | alterlab-pysam |
| FASTQ→VCF variant calling pipeline | alterlab-nf-core-sarek |
| Transcript-level RNA-seq quantification (salmon/kallisto) | alterlab-rnaseq-quant |
| 16S/ITS amplicon classification (QIIME 2) | alterlab-qiime2-amplicon |
| Protein structure prediction / embeddings (ESM, AlphaFold) | alterlab-esm |
If the user explicitly says "web BLAST", "NCBIWWW", or "without installing
anything", they want alterlab-biopython, not this skill.
Quick Start
# 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 is the canonical machine-readable format; its default columns are
the std set: qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore. Use -outfmt 7 for the same columns plus comment lines.
Choosing the Right Program
| Query | Subject DB | Program |
|---|---|---|
| nucleotide | nucleotide | blastn |
| protein | protein | blastp |
| nucleotide (translated) | protein | blastx |
| protein | nucleotide (translated) | tblastn |
-dbtype for makeblastdb is nucl for nucleotide subjects, prot for protein.
The Five Things People Get Wrong
-max_target_seqsis NOT a "top N best hits" filter. It is the number of aligned sequences to keep, applied during the search as a heuristic cutoff; ties are broken "by order of sequences in the database", not by score. Setting-max_target_seqs 1does not reliably return the single best hit. To get the best hit, keep a generous value and pick the top row after sorting by bitscore (seescripts/parse_blast_tab.py --best-hit). Default is 500.- Wrong
-taskforblastn.megablast(default) is for highly similar sequences; useblastnfor cross-species / more divergent hits andblastn-shortfor queries < ~30 nt (primers, sgRNAs).dc-megablastis the discontiguous option for inter-species comparison. - Forgetting
-parse_seqidsat DB-build time. Without it you cannot pull sequences back out withblastdbcmd -entry, and DIAMOND cannot reuse the sequence IDs cleanly. You cannot add it later without rebuilding. - Quoting the
-outfmtcustom column list for DIAMOND. BLAST+ wants the spec quoted (-outfmt '6 qseqid sseqid pident evalue'); DIAMOND wants it unquoted (--outfmt 6 qseqid sseqid pident evalue). Mixing these up is a common silent error. - Multithreading. Use
-num_threads N. For many small queries, set-mt_mode 1(split by query) so all threads stay busy;-mt_mode 0(default, split by database volume) suits few large queries. BLAST+ 2.15+ can choose automatically, but set it explicitly when in doubt.
Full option reference, taxonomy scoping, and DB-prep details:
references/blast_cli.md.
Taxonomic Scoping
Restrict a search to (or away from) clades by 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
Scoping by taxid requires a taxonomy-aware database (one built/downloaded with
its *.taxid mapping, e.g. NCBI's pre-formatted nt / nr). See
references/blast_cli.md.
DIAMOND — Fast Path for Large Protein Searches
When blastp / blastx against millions of proteins is too slow, DIAMOND is a
drop-in for protein-space search:
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
Sensitivity ladder (fast → most sensitive): --fast, --mid-sensitive,
--sensitive, --more-sensitive, --very-sensitive, --ultra-sensitive.
Use --ultra-sensitive when you need BLAST-comparable recall; default fast mode
trades sensitivity for speed. DIAMOND's --outfmt 6 is compatible with the
BLAST+ tabular parser below. Details and tradeoffs:
references/diamond.md.
Recommended Workflow
- Pick the program from the query/subject table above.
- Build the DB with
makeblastdb -parse_seqids(or download a pre-formatted NCBI DB). For >~1M proteins, build a DIAMOND DB instead. - Search with
-outfmt 6, an explicit-evaluethreshold, the right-task(blastn), and-num_threads. Add-taxidsif scoping. - Parse & QC with
scripts/parse_blast_tab.py— it sorts by bitscore, extracts best-hit-per-query, applies identity/coverage/e-value filters, and flags the-max_target_seqspitfall if the column count looks truncated. - Retrieve any hit sequence with
blastdbcmd -db mydb -entry <id>(needs-parse_seqids).
Verify Before Reporting
- Confirm
blastn -version/diamond versionactually ran — never report hits you did not produce. - State the program,
-task,-evalue, and DB used; results are meaningless without them. - If you used
-max_target_seqs, confirm best-hit selection was done by post-hoc bitscore sort, not by trusting the keep-count as a top-N. - For DIAMOND results, note the sensitivity level used.
References
references/blast_cli.md— full BLAST+ 2.17.0 option reference: programs,makeblastdb,-outfmtcolumns,-task, taxonomy scoping,-mt_mode,blastdbcmdretrieval, and the-max_target_seqscaveat.references/diamond.md— DIAMOND DB build, sensitivity modes, output formats, and when to choose it over BLAST+.- NCBI BLAST+ manual: https://www.ncbi.nlm.nih.gov/books/NBK569856/
- DIAMOND: https://github.com/bbuchfink/diamond
Part of the AlterLab Academic Skills suite.