agentleFS
ssinderssinder/bioinformatics-agent-skills/skills/alphafold-db/SKILL.md

alphafold-db

Skill67 starsChanged 19 days agoMITView on GitHub

Downloads predicted protein structures from the EBI AlphaFold Database API and exports per-protein prediction metadata. Resolves the current PDB/CIF download URL from the API instead of hard-coding a model version, supports batch accession lists, resumable downloads, pLDDT-based quality filtering before spending bandwidth, and validates response content types so HTML error pages are never mistaken for structure files. This skill should be used when fetching AlphaFold models, retrieving predicted structures by UniProt accession, or collecting AlphaFold confidence metrics (pLDDT) is requested.

The file

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Instead, this skill calls GET /api/prediction/{accession} and takes the pdbUrl field straight from the response — the server always points …

    line 31

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

AlphaFold DB Structure Retrieval

Overview

This skill retrieves AlphaFold protein structure predictions from the EBI AlphaFold Database and exports the accompanying confidence metadata. It addresses the single biggest fragility in naive AlphaFold download scripts: the model version number is not stable. The AlphaFold DB retrains models periodically and increments the version suffix (model_v6 → model_v7, …), so any script that builds the URL as AF-{ACCESSION}-F1-model_v6.pdb will silently start returning 404s.

Instead, this skill calls GET /api/prediction/{accession} and takes the pdbUrl field straight from the response — the server always points at the current valid model. The same response also carries per-protein confidence metrics (global pLDDT and the residue fractions in each confidence band) which are free and can be used to filter low-quality models before downloading anything.

The skill also handles the second half of the AlphaFold workflow: selecting the best model from a multi-sample prediction and converting it to PDB format.

When to Use This Skill

  • Fetching predicted structures for a list of UniProt accessions
  • Collecting AlphaFold confidence metrics (pLDDT) without downloading structures
  • Screening a proteome for low-confidence regions before committing to downloads
  • Refreshing an existing structure collection after AlphaFold DB publishes new models
  • Populating a docking or interaction-analysis project with predicted coordinates
  • Picking the highest-confidence model out of an AlphaFold Server / ColabFold / AlphaFold DB prediction package and converting it to PDB

Quick Start

export PYTHONPATH="$PWD/packages"

# 批量下载(ID 文件,每行一个)
python scripts/download_structures.py --ids ids.txt --output-dir structures/

# 直接给 ID
python scripts/download_structures.py --ids P69905 P04637 --output-dir structures/

# 只要元数据,不要 PDB(最快,用于先做质量筛选)
python scripts/download_structures.py --ids ids.txt --metadata-only --output-dir meta/

# 先按 pLDDT 过滤再下载,跳过低质量模型
python scripts/download_structures.py --ids ids.txt --min-plddt 70 --output-dir structures/

# 保留 AlphaFold 原始文件名
python scripts/download_structures.py --ids ids.txt --output-dir structures/ --keep-original-name

# 从多模型预测包里选最佳模型并转成 PDB
python scripts/select_best_model.py --input-dir folds/ --output-dir best/

# 只要排名表,不做转换
python scripts/select_best_model.py --input-dir folds/ --rank-only

Workflow

  1. Collect accessions — --ids accepts either a text file (one accession per line, # for comments) or accession strings directly. A leading header line is detected by pattern rather than skipped unconditionally, so a pure-ID file never loses its first entry.
  2. Query the API — alphafold_client.fetch_predictions() issues one request per accession through the shared http_session (exponential-backoff retry + rate limiting). The API returns a JSON array for a single accession, not an object; the client normalises list / dict / error-object shapes into one record type.
  3. Export metadata — every record is written to alphafold_metadata.csv and .json, including global_plddt and the four confidence-band fractions.
  4. Filter (optional) — with --min-plddt, models below the threshold are counted as filtered and never downloaded.
  5. Download — each pdbUrl is fetched with the response Content-Type checked against the expected PDB types and the payload written as bytes. Files that already exist are skipped unless --force is given.
  6. Report — a summary line reports downloaded / skipped / filtered / failed counts and lists the failed accessions.

Parameters

download_structures.py

ParameterDefaultDescription
--idsrequiredAccession list or path(s) to text files containing accessions
--output-diralphafold_structuresOutput directory for structures and metadata
--metadata-onlyoffQuery and export metadata only; skip file downloads
--min-plddtnoneSkip models whose global pLDDT is below this value (0–100)
--forceoffRe-download files that already exist
--keep-original-nameoffKeep AF-{ID}-F1-model_vN.pdb instead of {ID}.pdb
--timeout120Per-request timeout in seconds

select_best_model.py

ParameterDefaultDescription
--input-dirrequiredDirectory holding the prediction package (structures + summary_confidences_*.json)
--output-dir<input>_selectedWhere the selected model and ranking tables are written
--rank-onlyoffOnly write the ranking table; convert nothing
--rank-byranking_scoreMetric used for ordering: ranking_score / ptm / iptm / mean_plddt
--keep-alloffConvert every model instead of only the best one
--no-convertoffCopy the original files without converting CIF → PDB

Outputs

FileContent
{accession}.pdbDownloaded AlphaFold prediction (or AF-{ID}-F1-model_vN.pdb with --keep-original-name)
alphafold_metadata.csvOne row per protein: accession, gene, description, organism, model version, global pLDDT, confidence-band fractions, structure URLs
alphafold_metadata.jsonSame content as nested JSON
model_ranking.csvOne row per model: position, rank, file names, ranking_score, pTM, ipTM, mean pLDDT, disorder, clash
model_ranking.jsonSame content as nested JSON (plus the rank_by key used)
{structure_stem}.pdbThe selected model converted to PDB format

Validation

  • A downloaded file is really a PDB — the first lines must contain HEADER or ATOM records, and the last line should be END. A file containing HTML (<!DOCTYPE html>) means the server returned an error page; the script's Content-Type check rejects most such cases, but verify if a file is unusually small.
  • pLDDT sanity — AlphaFold's mean per-residue pLDDT is global_plddt. Globular proteins typically sit at 70–95; values below 50 indicate extensive low-confidence regions (often disorder), and values above 95 are unusual.
  • Confidence bands sum to 1 — fraction_plddt_very_low + fraction_plddt_low + fraction_plddt_confident + fraction_plddt_very_high should equal 1.0 (within rounding). A mismatch means the record was truncated.
  • Cross-check against UniProt — the sequence_length in the metadata must equal the UniProt entry length. A mismatch indicates the accession was mapped to a different isoform.
  • Coverage — roughly 230 million entries cover the UniProt reference proteomes; if many accessions report "no prediction", confirm the accessions are canonical rather than isoform or isoform-variant identifiers.
  • ranking_score is a ranking metric, not an accuracy metric — the official definition is 0.8 × ipTM + 0.2 × pTM + 0.5 × fraction_disordered − 100 × has_clash. It is designed to order predictions, not to be interpreted as "how good" the structure is. A structure with ranking_score = 1.0 is the best of its batch, not a 100%-accurate model.
  • PDB column alignment — PDB records are fixed-width. A converted file must have the chain ID at column 22, the residue number at 23–26, and the coordinates at 31–38 / 39–46 / 47–54. Misaligned records are silently misread by every downstream tool, so check with awk 'substr($0,22,1)' if a structure looks off.

References

  • references/methodology.md — API semantics, version-resolution strategy, pLDDT interpretation
  • references/troubleshooting.md — common failures and how to diagnose them

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.