How to Use AlphaFold Structures to Annotate Protein Domains
By Dr. Zubair Khalid, DVM, MS, PhD ·

After working through this guide you will be able to take a set of protein sequences, call domains with InterProScan, fetch or predict AlphaFold structures for the same proteins, read the pLDDT and predicted aligned error (PAE) confidence measures to decide where one domain ends and the next begins, confirm remote structural homologs with Foldseek, and record everything in a reusable annotation table.
Have these on hand before you start:
- A Linux or macOS shell, plus Python 3 with Biopython for the parsing scripts.
- A Java runtime and Perl for InterProScan, downloaded from the EMBL-EBI release site.
- The Foldseek binary, installable with
conda install -c bioconda foldseek. - One of three structure sources: the AlphaFold Protein Structure Database at alphafold.ebi.ac.uk, the AlphaFold Server web service from Google DeepMind, or a local predictor such as AlphaFold 3, ColabFold, or Protenix.
The workflow follows the logic of a 2026 evaluation published in Nucleic Acids Research, which tested structure prediction scores, Foldseek structure searches, and InterProScan domain calls on gene models from three VEuPathDB species and found that the tools work best in combination [1].
Why Add AlphaFold Structures to InterProScan Annotation
Sequence methods carry most domain annotation workloads. InterProScan scans a protein sequence against libraries of family models such as Pfam and reports matches with coordinates and e-values. This works well whenever a domain has a recognizable sequence signature.
Three situations expose its limits:
- Remote homologs. A domain can retain its fold while its sequence drifts below the detection threshold of even sensitive profile models.
- Broken gene models. A wrong exon boundary or an unnoticed frameshift truncates or scrambles the protein, and every downstream annotation inherits the damage. This is the dominant problem in newly sequenced eukaryotic genomes, where most assemblies never receive manual curation [1].
- Ambiguous boundaries. Long disordered insertions and low-complexity tracts make it hard to say from sequence alone where a domain truly starts and stops.
Structure adds independent evidence. A correctly assembled protein yields an AlphaFold model with compact, well-folded domains joined by low-confidence linkers. A frameshift usually produces a collapsed or fragmented prediction. In the Nucleic Acids Research evaluation, AlphaFold 3 scores computed on gene models before and after expert curation favored the corrected models, supporting 65 to 84 percent of manually curated changes across the three study species [1].
The practical consequence: run the sequence-based and structure-based analyses in parallel, then reconcile them. The rest of this article shows exactly how.
Background: Terms and Confidence Metrics
Domains, signatures, and InterPro accessions
A protein domain is a segment of a polypeptide that folds, and often functions, as a semi-independent unit. Domains recur across proteins in different combinations, which makes domain annotation the main route from raw sequence to functional hypothesis.
Signature databases store statistical models of domain families. Pfam, the most widely used, stores profile hidden Markov models (HMMs) that capture which positions in a family are conserved. InterPro integrates many such databases, including PANTHER, CDD, SMART, PROSITE, and CATH-Gene3D, and assigns stable InterPro accessions (IPR numbers) so that a family keeps one identity even when the underlying member databases evolve.
pLDDT: per-residue confidence
pLDDT (predicted local distance difference test) is a per-residue score from 0 to 100 that AlphaFold stores in the B-factor column of its coordinate files. The documented interpretation bands are:
| pLDDT band | Meaning for annotation |
|---|---|
| Above 90 | Very high confidence, backbone and most side chains accurate |
| 70 to 90 | Confident backbone, side-chain geometry less certain |
| 50 to 70 | Low confidence, backbone position unreliable |
| Below 50 | Very low confidence, residue often disordered in isolation |
PAE: inter-residue relative error
PAE (predicted aligned error) is a matrix of expected positional error, in angstroms, between pairs of residues. Within a well-packed domain, PAE stays low. Between two domains that each fold correctly but sit independently of one another, PAE rises. Reading the block structure of the PAE matrix is the standard way to decide whether two high-confidence segments form one rigid unit or two separate domains.
pTM and ipTM
AlphaFold 3 reports global scores alongside the per-residue values: pTM for single chains and ipTM for interfaces in complexes. These summarize overall prediction quality. They do not tell you where domains begin and end, which remains your interpretive job.
The Toolkit at a Glance

| Tool | What it contributes | Input | Primary output |
|---|---|---|---|
| InterProScan | Sequence-based domain and family calls | Protein FASTA | TSV and GFF3 feature files |
| AlphaFold DB | Precomputed structures for UniProt proteomes | UniProt accession | mmCIF or PDB coordinates, PAE |
| AlphaFold 3, AlphaFold Server, ColabFold, Protenix | New structure predictions | FASTA, optionally MSAs and ligands | Coordinates plus confidence JSON |
| Foldseek | Structure similarity search against PDB or AlphaFold models | Coordinate files | Tabular alignments with TM-scores |
| bedtools | Mapping domain features onto gene models | GFF3 or BED | Overlap tables |
Step-by-Step: AlphaFold Domain Annotation with InterProScan
The worked example uses a synthetic 742-residue kinase-like protein called geneA_polypeptide, plus human p53 (UniProt P04637) for the AlphaFold Database download. Substitute your own identifiers throughout.
Step 1. Prepare a clean protein FASTA
Start from one canonical protein per gene. Translate coding sequences if you began from a genome, drop redundant isoforms unless you need them, and flag sequences containing internal stop codons, which usually indicate pseudogenes or annotation artifacts.
from Bio import SeqIO
for rec in SeqIO.parse("proteins.fasta", "fasta"):
seq = str(rec.seq).upper().rstrip("*")
if "*" in seq:
print(rec.id, "internal stop codon at position", seq.index("*") + 1)
Expected output for a problematic record:
geneB_polypeptide internal stop codon at position 214
Set those records aside. They are prime candidates for the gene model audit in Step 6, and running domain searches on a truncated fragment produces misleading hits.
Step 2. Run InterProScan
Download the InterProScan release archive from the EMBL-EBI site, unpack it, and verify the installation:
./interproscan.sh -h
InterProScan needs a supported Java runtime and Perl. The release notes state the exact versions for your build. A containerized build from Biocontainers is a good alternative if you prefer not to manage Java versions.
For a first pass over a few thousand proteins, run:
./interproscan.sh \
-i proteins.fasta \
-f TSV,GFF3 \
-cpu 16 \
-T /scratch/ipscan_tmp \
-o ipscan.tsv
Key options:
| Option | Purpose | Notes |
|---|---|---|
-i | Input FASTA | One canonical protein per gene keeps reports clean |
-f | Output formats | TSV for parsing, GFF3 for downstream coordinate work |
-appl | Restrict analyses, for example -appl Pfam | Fast first pass, minutes instead of hours |
-goterms | Append GO term columns | Adds trailing columns to the TSV |
-pa | Append pathway cross-references | Same effect on output width |
-cpu | Worker threads | Match your node, 16 is a common choice |
-T | Scratch directory | Put this on fast local disk with ample space |
-dp | Disable the precalculated match lookup | Use when you need fully reproducible runs |
Sequences already present in UniProtKB usually return instantly from InterPro's precalculated match lookup. Novel sequences run through every enabled analysis, which takes hours per few thousand proteins on a 16-core node with the full database set, and only minutes with -appl Pfam.
A TSV record has 13 tab-separated columns:
- Protein accession
- MD5 checksum of the sequence
- Sequence length in amino acids
- Analysis, the member database that produced the match
- Signature accession, for example PF00069
- Signature description
- Match start, 1-based and inclusive
- Match end, 1-based and inclusive
- Score, the e-value for most databases
- Status,
Tfor trusted or?for marginal - Run date
- InterPro accession, or
-when the signature has no IPR mapping - InterPro description, or
-
Example lines from the worked example:
geneA_polypeptide 9c2a180f6193e2e0c8f3ad4c5b6e7f80 742 Pfam PF00069 [Protein kinase](/knowledge/molecular-biology/protein-kinase) domain 120 386 1.2e-59 T 12-06-2025 IPR000719 Protein kinase-like domain
geneA_polypeptide 9c2a180f6193e2e0c8f3ad4c5b6e7f80 742 Pfam PF00096 Zinc finger, C2H2-type 40 72 3.8e-08 T 12-06-2025 IPR013087 Zinc finger, C2H2-type
With -goterms and -pa, three more columns follow, holding GO terms and pathway cross-references.
Sanity checks. Count output rows per protein so nothing silently failed. Spot-check a protein whose biology you know, for example a confirmed kinase should hit PF00069 across the catalytic domain. Confirm that MD5 values differ between distinct sequences, which catches accidental duplicate headers. If you enabled -goterms, verify that GO identifiers actually appear.
Two errors you will eventually meet:
- A stack trace containing
UnsupportedClassVersionError ... unsupported major.minor versionmeans your Java is too old for the InterProScan build. Install the Java version named in the release notes. java.lang.OutOfMemoryError: Java heap spaceduring a full run means the JVM needs more memory. Raise the heap settings documented in theinterproscan.propertiesfile, or reduce the number of concurrent analyses.
Step 3. Get an AlphaFold structure for each protein
You have three routes, and most projects use more than one.
Route 1: the AlphaFold Protein Structure Database. EMBL-EBI hosts precomputed AlphaFold models for UniProt proteomes, more than 200 million entries. If your protein has a UniProt accession, fetch the model directly:
wget https://alphafold.ebi.ac.uk/files/AF-P04637-F1-model_v4.pdb
wget https://alphafold.ebi.ac.uk/files/AF-P04637-F1-model_v4.cif
Residue numbering in these files matches the UniProt sequence, position 1 through the full length, so mapping InterProScan intervals onto the model is direct. Record the version tag (model_v4 here) in your notes, because the database updates models over time and results should stay reproducible. Proteins from a freshly sequenced genome will not be in the database unless that proteome was processed through the submission pipeline.
Route 2: the AlphaFold Server. Google DeepMind runs a free web interface to AlphaFold 3 at alphafoldserver.com. You paste sequences, optionally with ligands, ions, or nucleic acids, and receive coordinates with full confidence output. Daily job allowances make it unsuitable for proteome-scale batches, but for annotating a handful of proteins, or for checking a suspicious gene model interactively, it is the fastest path from sequence to structure.
Route 3: local prediction. Run AlphaFold 3 from its official repository for maximum control, noting that model parameters require a separate research license and serious GPU hardware. ColabFold provides mature notebook-based AlphaFold 2 workflows and doubles as a practical alphafold tutorial for batch predictions. Protenix is an open-source AlphaFold 3-style predictor. For genome-scale work, speed matters, and the evaluation cited above reported that Protenix-Mini, a faster configuration, retained the same discriminatory power as AlphaFold 3 for scoring gene models [1].
All three routes return the same essential artifacts: coordinate files with per-residue pLDDT in the B-factor column, a JSON record containing the PAE matrix, and global scores.
Step 4. Turn confidence into domain boundaries
The core idea: a folded domain appears as a contiguous stretch of high pLDDT with low internal PAE. Linkers and disordered regions appear as low-pLDDT stretches. Domain boundaries fall where confidence drops between two high bands, refined by checking whether the PAE matrix treats adjacent segments as one rigid body or two.
Extract per-residue pLDDT from a PDB-format model with awk, using the fixed wwPDB column positions for the CA atom and the B-factor:
awk '$1 == "ATOM" && substr($0,13,4) == " CA " {print substr($0,23,4), substr($0,61,6)}' \
geneA_model.pdb > plddt_per_residue.txt
head -3 plddt_per_residue.txt
Expected output:
1 88.51
2 91.03
3 93.44
Then merge the confidence values with the InterProScan intervals:
import csv
from pathlib import Path
def ca_plddt(pdb_path):
plddt = {}
for line in Path(pdb_path).read_text().splitlines():
if line.startswith("ATOM") and line[12:16] == " CA ":
plddt[int(line[22:26])] = float(line[60:66])
return plddt
plddt = ca_plddt("geneA_model.pdb")
with open("ipscan.tsv") as handle:
for row in csv.reader(handle, delimiter="\t"):
if len(row) < 13:
continue
protein, sig, desc = row, row, row
start, end = int(row), int(row)
scores = [v for pos, v in plddt.items() if start <= pos <= end]
if scores:
mean = sum(scores) / len(scores)
print(f"{protein}\t{sig}\t{desc}\t{start}-{end}\tmean_pLDDT={mean:.1f}")
Example output:
geneA_polypeptide PF00069 Protein kinase domain 120-386 mean_pLDDT=91.3
geneA_polypeptide PF00096 Zinc finger, C2H2-type 40-72 mean_pLDDT=68.4
Interpretation for this example:
- The kinase domain sits in very high-confidence structure, so the InterProScan call and the model agree and the annotation is solid.
- The C2H2 zinc finger averages in the low-confidence band. Zinc fingers are small and often flexible when tethered to a larger domain, so keep the sequence-based call but mark the boundary and its orientation relative to the kinase domain as provisional until the PAE matrix supports it.
Reading the PAE matrix: for local runs, the JSON output contains the matrix directly. For AlphaFold Database entries, the PAE record accompanies each model on its entry page. Look for square blocks of low error along the diagonal. If two candidate domains show low error within themselves and high error between each other, treat them as independently positioned units and annotate them as separate domains. If the error between them stays low, they pack together, and splitting them would misrepresent the structure.
One caution on numbering: AlphaFold models number residues from the exact FASTA sequence you supplied. If your InterProScan input and your prediction input came from different transcripts, coordinates will not align. Standardize on one canonical protein per gene before Step 2 and reuse it everywhere.
A useful global check: the union of high-pLDDT segments should roughly account for the residues covered by InterProScan matches plus plausible linkers. A large, unannotated, high-confidence block is a candidate novel domain worth chasing with the structure search in Step 5.
Step 5. Confirm remote homologs with Foldseek
When InterProScan returns nothing for a high-confidence folded segment, structure search often finds the answer. Foldseek compares structures directly using a 3D interaction alphabet, which detects similarity that sequence profiles miss.
conda install -c bioconda foldseek
foldseek databases PDB pdb_db pdb_db_tmp
foldseek easy-search geneA_model.pdb pdb_db geneA_hits.m8 search_tmp \
-e 0.001 -format-output query,target,fident,alntmscore,qtms,ttms,evalue
Parameters that matter:
-e 0.001sets the e-value cutoff, loose enough to catch distant relatives, strict enough to keep noise down.-format-outputselects columns.alntmscoreis the TM-score of the alignment, a structural similarity measure that ranges near 0 for unrelated folds and approaches 1 for near-identical folds.qtmsandttmsare the query- and target-normalized variants.fidentis the fraction of identical residues in the alignment.
Example output:
geneA_model.pdb 3ign_A 0.34 0.87 0.89 0.85 2.1e-41
geneA_model.pdb 4kkl_A 0.21 0.54 0.58 0.51 4.7e-12
A common rule of thumb treats TM-scores above about 0.5 as evidence of the same fold. The top hit here is a strong structural match despite only 34 percent sequence identity in the aligned region, exactly the case where structure rescues annotation. Look up the hit's PDB entry and its linked UniProt record to propose a family name, then record the hit and its TM-score as supporting evidence rather than as a standalone functional claim.
Foldseek also ships prebuilt slices of the AlphaFold Database, for example a SwissProt-annotated subset, fetched the same way with foldseek databases Alphafold-Swissprot. Searching your models against other predicted models is useful when your protein family is poorly represented in the PDB.
Sanity check. A credible Foldseek hit should align to the same interval that looked folded in Step 4. If the alignment sprawls across a low-pLDDT linker, treat the TM-score with suspicion, because flexible-region superposition inflates structural similarity.
Step 6. Map domains back to the genome and audit gene models
If your proteins came from a genome annotation, the GFF3 output from InterProScan carries the domain features, and bedtools overlays them on your gene models:
bedtools intersect -a genes.gff3 -b ipscan.gff3 -wa -wb > gene_domain_overlaps.tsv
Here -a and -b name the two feature files, and -wa -wb prints every overlapping pair from both files rather than just the A-side records.
Audit patterns worth acting on:
- A single domain split across two distant scaffolds, or across exons with an impossible reading-frame jump, points to an assembly or gene model error.
- A high-pLDDT domain interrupted internally by a stretch of very low pLDDT suggests a mispredicted exon or an inserted repeat inside the match.
- Two overlapping InterPro hits that form a single PAE block in the structure describe one fused domain, so merge them rather than double-counting.
- A long, confident-looking helix bridging two otherwise unrelated folded regions is a classic frameshift signature, where the predictor stitches a broken sequence into something spurious.
This is the application the Nucleic Acids Research evaluation targeted directly. Structure-based scores sided with expert-corrected gene models in the large majority of curation decisions they examined [1], which is why the audit step belongs inside the annotation loop rather than after it.
Step 7. Record results in a reusable template
Free-text notes do not scale. Keep one row per domain call with all evidence streams attached:
protein_id,domain_start,domain_end,signature,interpro_accession,evidence,mean_pLDDT,foldseek_hit,alntmscore,notes
geneA_polypeptide,120,386,PF00069,IPR000719,InterProScan+structure,91.3,3ign_A,0.87,complete kinase domain, single exon pair
geneA_polypeptide,40,72,PF00096,IPR013087,InterProScan only,68.4,,,"boundary provisional, check PAE before merging with kinase lobe"
Columns to maintain: the protein identifier, the 1-based inclusive interval, the signature accession, the InterPro accession, which evidence streams agree, the mean pLDDT over the interval, the best structural hit with its TM-score, and a short note. This template doubles as the input for downstream functional pipelines and as the audit trail when someone revisits the annotation a year later.
Reading Combined Evidence: Decision Rules

With all three evidence streams in hand, apply these rules:
- InterProScan hit, high pLDDT, agreeing Foldseek hit. Annotate with the family name and record both supporting lines. This is the highest-confidence category.
- InterProScan hit, low mean pLDDT. Keep the sequence-based call, since profile models detect order in sequence that a floppy structure cannot show, but flag the boundaries as uncertain.
- No InterProScan hit, strong Foldseek hit. Propose a structural relationship, phrase it as similarity to the named PDB entry, and wait for sequence corroboration before transferring function.
- High-pLDDT segment with no annotation of any kind. Candidate novel domain. Compare it against additional structure databases and consider submitting the family for community curation.
- Discontinuous domain match with coherent PAE across the gap. Verify the splice pattern before declaring a frameshift, because some genuine domains are split in sequence and continuous in structure.
The quantitative backing for combining streams comes from the evaluation discussed throughout: scores from AlphaFold 3, Foldseek, and InterProScan discriminated good from poor gene models better in combination than any single tool, and the AlphaFold 3 plus Foldseek pair was the most informative combination [1].
Common Mistakes and Limitations
- Reading pLDDT as inter-domain accuracy. pLDDT describes each residue in isolation. Relative geometry between segments is PAE's job. A two-domain protein can have every residue above 90 pLDDT and still have meaningless domain placement if you ignore PAE.
- Forcing domains into very low pLDDT tails. Regions below 50 are frequently intrinsically disordered in real proteins. That is biology, not prediction failure, and InterProScan may still legitimately find short motifs such as low-complexity or coiled-coil signatures there.
- Treating AlphaFold output as a domain definition. The predictor returns coordinates and confidence. Boundaries are your inference from confidence structure, and two analysts can reasonably differ on marginal cases.
- Expecting one static model to cover all functional states. AlphaFold Database models represent one conformation, usually without ligands. Induced-fit movements, alternate oligomerization states, and membrane-embedded geometry need separate treatment. The AlphaFold Server can predict complexes with ligands and nucleic acids, but accuracy varies by case.
- Ignoring isoforms. Annotate the canonical sequence, then note which isoforms add or remove domains rather than rerunning everything silently.
- Mixing coordinate conventions. InterProScan intervals are 1-based and inclusive on the protein sequence. PDB residue numbering usually matches a clean AlphaFold model, but structures from other sources may carry offsets from signal peptides or missing residues. Always map through the FASTA you actually predicted from.
- Losing version provenance. Record the AlphaFold Database model version, the InterProScan release, and the Foldseek database snapshot date in the template. Silent version drift is the most common reproducibility failure in this workflow.
- Equating fold with function. Folds recur across unrelated functions. A structural match constrains the hypothesis space, it does not close the case.
- Overgeneralizing the evaluation. The published assessment covered three eukaryotic species, Fusarium graminearum, Toxoplasma gondii, and Aspergillus fumigatus, drawing on more than 1,000 prior manual curation events in the VEuPathDB resource [1]. Score behavior may differ for other taxa, especially prokaryotes or highly disordered proteomes, so calibrate on a small curated subset of your own organism before scaling up.
- License blind spots. Some InterProScan member databases require separate license acceptance, and AlphaFold 3 model parameters are distributed under their own research terms. Check both before building a pipeline others will run.
Frequently Asked Questions
Can InterProScan read AlphaFold structure files directly?
No. InterProScan operates on amino acid sequence and ignores coordinates entirely. Run it on the FASTA, then use the AlphaFold model separately to check how each matched interval folds and whether the boundaries make structural sense.
What pLDDT cutoff should I use when placing domain boundaries?
There is no single cutoff. The documented bands treat pLDDT above 90 as very high confidence, 70 to 90 as confident backbone, 50 to 70 as low, and below 50 as very low, and boundaries usually fall where confidence drops between two high-confidence segments, confirmed against the PAE matrix.
How do I get an AlphaFold model for a protein that is not in UniProt?
Predict it yourself. Use the AlphaFold Server for a handful of sequences, ColabFold or a local AlphaFold installation for batches, or Protenix when you need an open-source option at scale.
Is the AlphaFold Server suitable for a whole genome annotation project?
No. The Server enforces daily job allowances and is designed for interactive, small jobs, including complexes with ligands. For hundreds or thousands of proteins, run a local or notebook-based predictor instead.
How do I convert InterProScan TSV output to GFF3 or BED coordinates?
Ask InterProScan for GFF3 directly with -f GFF3. For BED, write the protein accession, start minus one, and end columns with awk, then lift protein coordinates to chromosome coordinates through your own CDS mapping before using bedtools.
Should I trust a Foldseek hit when InterProScan reports nothing?
Treat it as a lead, not an annotation. A TM-score above roughly 0.5 indicates the same fold, but transferring function needs sequence-level support, so record the result as structural similarity to a named PDB entry and revisit it when better sequence evidence arrives.
Why does my protein show one InterPro domain but two folded lobes in the AlphaFold model?
High PAE between two high-pLDDT segments means the predictor positions them independently. Either the domain is a genuine two-lobe fold with a flexible hinge, or the segment boundaries need revision. Check structural homologs of each lobe before deciding whether to merge or split the annotation.
Which AlphaFold version should I use for domain annotation?
AlphaFold 3 offers the newest accuracy and accepts complex inputs, AlphaFold 2 implementations such as ColabFold remain the practical choice for mature batch tooling, and Protenix-Mini is the option to evaluate when prediction speed at genome scale matters most.