# ChatCATH FunFam Annotation Pipeline — Protocol v2 (residue-level / functional-site)

**Author**: (student)
**Supervisor**: (advisor)
**Date**: July 2026
**Status**: proof-of-concept complete; one FunFam (`3.40.50.620/FF/145`) processed end-to-end with every intermediate retained.
**Supersedes**: nothing — v2 is a *complement* to [Protocol v1](PROTOCOL.md), not a replacement. v1 answers *"is this FunFam functionally pure?"* at the **member** level. v2 answers *"which residues do the job?"* at the **residue** level.

---

## 1. Objective

Given one CATH FunFam ID, produce a **residue-level functional-site hypothesis** for the domain, traceable end-to-end to public databases and named binaries:

> which positions of the domain are (a) conserved across the family **and** (b) inside a predicted ligand pocket **and** (c) consistent with what the experimental literature says the domain does?

v1's design goal — *explainable annotation, no hand-tuned constants* — carries over unchanged, plus one hard rule added after v1:

> **Every reported number must be re-derivable from a file kept on disk.** No intermediate is discarded once its summary has been extracted.

The v1 run violated this: it published FoldMason/P2Rank/scorecons numbers but kept only the JSON summaries, so no figure could be re-checked without a full re-run. §9 is the remedy.

---

## 2. Input / Output

| I/O | Content |
|---|---|
| **Input** | one CATH FunFam ID (superfamily + FF number) |
| **Intermediate (all retained)** | full AF models; chopped domain PDBs; FoldMason structural MSA (all + filtered); gap analysis; raw scorecons output; P2Rank predictions; literature records |
| **Output** | `<ff>_scorecons_real.json`, `<ff>_mapping_real.json`, `method_comparison.json`, `step6a_domain_finding.json`, HTML slides with a Mol\* residue map |

---

## 3. Pipeline

Six steps. Each names the exact tool, the exact parameter that matters, and the artifact it must leave behind.

### Step 1 — Domain structures from TED

- **Source**: TED API `https://ted.cathdb.info/api/v1/uniprot/summary/{AC}` → `ted_id`, `chopping`, `nres_domain`, `plddt`, `cath_label`.
- **Structure**: AlphaFold DB `https://alphafold.ebi.ac.uk/files/AF-{AC}-F1-model_v6.pdb`, then cut to the TED chopping (multi-segment `a-b_c-d` supported).
- ⚠️ **AFDB has migrated v4 → v6.** `model_v4` URLs now return **404**. TED IDs still carry the string `model_v4` (they are v4-derived domain definitions); residue numbering is UniProt-based and stable across model versions, so v6 coordinates are used with v4 choppings. **Any pipeline written before ~2026 will silently fail here.**
- **Validation gate**: extracted residue count **must equal** `ted_nres`. A mismatch means the chopping and the model disagree — stop, do not align.
- **Artifact**: `01_af_full/`, `02_domains/`, `fetch_manifest.json`.

### Step 2 — Structural MSA with FoldMason

```
foldmason easy-msa 02_domains/*.pdb <out> <tmp> --report-mode 2 --threads 8
```

- `--report-mode 2` emits a JSON carrying `statistics.msaLDDT` — the alignment-quality number the next step gates on.
- **Artifacts**: `*_aa.fa`, `*_3di.fa`, `*.json` (per-column LDDT + tree), `*.nw`.

### Step 3 — Alignment quality → outlier removal → re-align

Two filters, in this order:

1. **Column filter (diagnostic)**: a column is *mostly-gap* if `gap_fraction > 0.75`.
2. **Member filter (actioning)**: count each member's **unique insertions** = positions where that member has a residue inside a mostly-gap column. **Remove members with > 5.**

Then **re-align the survivors from scratch** (not: delete rows from the old alignment). Re-alignment is what recovers the quality; row-deletion does not.

- **Gate**: `msaLDDT` must rise materially. If it does not, the outliers were not the problem.
- **Artifacts**: `gap_analysis.json`, `02_domains_filtered/`, filtered FoldMason outputs.

### Step 4 — Conservation with the canonical scorecons

**Run the real binary. Do not substitute an entropy measure.** (v1 did, and §6.1 shows what it cost.)

- **Host**: `ganon`. **Binary**: `cathpy/core/tools/linux-x86_64/scorecons` (Valdar 2001 trident, C implementation by Ollie Redfern). **Matrix**: `cathpy/core/tools/data/PET91mod.mat2`.
- This cathpy build takes a **FASTA alignment directly**:
  ```
  scorecons -a <aln.fasta> -m PET91mod.mat2 -o <out.scorecons>
  ```
- **Normalisation** (cathpy convention, apply before running): lowercase → gap, `.` → `-`.
- **Output**: one line per column, `<score>  #  <column residues>`; **DOPS printed to stdout only** — capture it, it is not in the file.
- **Artifacts**: normalised FASTA + raw `.scorecons` + the stdout log.

### Step 5 — Representative structure + functional-site mapping

1. **Representative**: highest-pLDDT reviewed member if one exists, else highest-pLDDT. Map alignment columns → representative residue numbers by walking its row and counting non-gaps from `chopping_start`.
2. **Known sites (5a)**: M-CSA (by EC), UniProt `features` of type binding/active site, PDB literature.
3. **Predicted sites (5b)**: P2Rank pocket residues.
   ```
   prank predict -f <domain.pdb> -o <out>          # P2Rank 2.5.1, needs Java 17+
   ```
   Run on the **chopped domain**, not the full model — the FunFam is the domain. Keep `predictions.csv` (pocket-level: rank/score/probability/residue_ids) and `residues.csv` (per-residue). **Record the P2Rank version**: pocket boundaries are model-dependent, so a version-less pocket list is not reproducible. *(META-PPI and Darren's model deferred by instruction — see §8.)*
4. **Result**: `conserved(≥0.7) ∩ pocket` = the functional-site candidate set.
5. **Mandatory sensitivity analysis** (new in v2, see §6.2): recompute the intersection under ≥2 independent conservation variants. Report only the **intersection across variants** as the core; report method-dependent positions separately as borderline.

### Step 6 — Whole-protein function + domain-level literature (6a)

- **Domain architecture first**: query TED for *all* domains of the representative, and read UniProt `features` of type `Domain`. A FunFam covers **one** domain; the protein usually has more.
- **Literature pools**: (1) every PMID cited by any member's UniProt `references`; (2) EuropePMC keyword search on family/enzyme/gene synonyms. Merge, dedupe, fetch `resultType=core` abstracts.
- **Classify** (rule-based): `functional` (family term + ≥2 experimental keywords) / `annotation` / `tangential`.
- **6a proper**: for every *functional* paper, ask whether it assigns function to **each domain separately** — and verify **whose** domain is being discussed. A paper saying "C-terminal domain" about a *different* protein in the pathway is not evidence about this one. This check must be done by reading the matched sentence, not by keyword count.

---

## 4. Applied case — `3.40.50.620/FF/145`, diphthine—ammonia ligase (EC 6.3.1.14)

Family: DPH6 / ATPBD4 / YLR143W — catalyses the final **amidation** step of diphthamide biosynthesis on translation elongation factor eEF2.

| Step | Result |
|---|---|
| 1 | 47 members → **46 domains** fetched. `A8HQR0` dropped: AFDB 404, UniProt entry inactive. **0 nres mismatches vs TED.** |
| 2 | FoldMason **46 × 281**, `msaLDDT` **0.503841** |
| 3 | 141/281 columns mostly-gap; **5 members** > 5 unique insertions removed (D0A5F8 = 138, Q387L5 = 136, Q54Y82 = 124, F6H602 = 105, M7WSX9 = 90; all others ≤ 4 — the split is unambiguous). Re-align **41 × 145**, `msaLDDT` **0.831072** (+0.327) |
| 4 | scorecons Valdar01/PET91mod on ganon → **DOPS 94.371**, mean 0.5261, **38 columns ≥ 0.7** |
| 5 | Representative **Q966L4** (*C. elegans* dph-6, pLDDT 95.6354, chopping 3–139, 137 res) |
| 5a | **M-CSA: no entry for EC 6.3.1.14.** UniProt binding-site features for Q966L4: **empty**. No PDB. |
| 5b | P2Rank **2.5.1** on the chopped domain: 2 clusters → 1 after filtering. Pocket 1: rank 1, score **8.10**, probability **0.431**, **17 residues**, 46 surface atoms, 63 SAS points |
| 6 | 47 per-member descriptions |
| 6a | **115 PMIDs pooled** (22 UniProt-cited + 93 EuropePMC, **overlap = 0**); 26 functional / 21 annotation / 68 tangential |

### 4.1 Headline result — the functional-site core

**11 residues of Q966L4 are conserved under every conservation variant tested AND inside P2Rank pocket 1:**

| Residue | AA | Shannon(41) | scorecons(41) | scorecons(29, dedup) |
|---|---|---|---|---|
| 6 | L | 1.000 | 1.000 | 1.000 |
| 8 | S | 0.962 | 0.967 | 0.955 |
| 12 | D | 1.000 | 1.000 | 1.000 |
| 13 | S | 1.000 | 1.000 | 1.000 |
| 48 | M | 0.962 | 0.959 | 0.943 |
| 49 | Y | 0.786 | 0.843 | 0.849 |
| 50 | Q | 0.791 | 0.789 | 0.768 |
| 95 | L | 0.876 | 0.897 | 0.870 |
| 115 | G | 1.000 | 1.000 | 1.000 |
| 116 | A | 1.000 | 1.000 | 1.000 |
| 122 | Q | 1.000 | 1.000 | 1.000 |

Six of the eleven score **exactly 1.000 under all three variants**. This is the v2 deliverable: the first residue-level functional hypothesis for a family that M-CSA does not cover and UniProt does not annotate.

**Literature corroboration (independent of the computation)**: PMID **23468660** (Uthman *et al.* 2013, *PLoS Genetics*, cited 54) states —

> "Consistent with an expected requirement for ATP in diphthine amidation, **Dph6 contains an essential adenine nucleotide hydrolase domain** and binds to eEF2."

That essential ATP-hydrolase domain **is** FF145 (N-terminal, 3.40.50.620). P2Rank independently placed pocket 1 on the ATP-binding cleft of the Rossmann fold. Conservation, pocket prediction, and experimental genetics agree.

### 4.2 Step 6a — null result, stated precisely

**Question**: do papers address the functional difference between DPH6's two domains?

| Domain | TED | CATH | UniProt feature | In FF145? |
|---|---|---|---|---|
| N-terminal | `AF-Q966L4-F1-model_v4_TED01` | 3.40.50.620 | Diphthamide synthase N-terminal (1–135) | **yes** |
| C-terminal | `AF-Q966L4-F1-model_v4_TED02` | 3.90.1490.10 | Diphthamide synthase C-terminal (149–230) | no |

44 of 47 members are two-domain proteins.

**Answer: no.** Four functional papers use domain language; on reading the matched sentences, **none is about DPH6**:

| PMID | Whose domain |
|---|---|
| 23645155 | **Dph1** N/C-terminal domains, via DPH1 truncations |
| 28245596 | **DPH1 / DPH5** variants |
| 33374361 | **Cholix toxin / PEA** receptor + ADP-ribosyltransferase domains |
| 39281955 | **Dph4** J-domain + C-terminal zinc finger |

The two core DPH6 papers (23468660, 23169644) establish the enzyme's *reaction* and the N-terminal domain's *essentiality*, but **neither assigns any function to the C-terminal domain, and neither compares the two**.

> **Finding**: FF145 (N-terminal) is literature-confirmed essential and ATP-dependent. The C-terminal domain 3.90.1490.10 is a **functional orphan** — no paper found gives it a role.

---

## 5. Side findings — CATH FunFam membership is stale at scale

v1's side finding was one EC number drifting on one member. v2 finds the same class of problem an order of magnitude larger.

### 5.1 36% of FF145's members point at dead UniProt entries

| entryType | n |
|---|---|
| UniProtKB unreviewed (TrEMBL) | 29 |
| **Inactive** (deleted/merged) | **17** |
| UniProtKB reviewed (Swiss-Prot) | **1** |

The single reviewed member is **Q57990** — *"Uncharacterized protein MJ0570"* (*M. jannaschii*). The family's only Swiss-Prot entry does not even carry the enzyme name.

### 5.2 47 "members" are only 35 unique sequences

The inactive entries are not random. Grouped by UniParc ID (identical sequence):

| UniParc | n | composition |
|---|---|---|
| UPI0000085F20 | **6** | 5 Inactive + 1 live (Q8I5J0) |
| UPI000049A2A6 | 4 | 3 Inactive + 1 live (C4LZL5) |
| UPI0000064A87 | 3 | 2 Inactive + 1 live (Q7LXN2) |
| UPI0007A8154A | 2 | 1 Inactive + 1 live (A0A151LGC5) |
| UPI00061585FA | 2 | 2 Inactive, **no survivor** |

**Mechanism**: UniProt deduplicated redundant proteomes and merged these accessions; CATH's Stockholm snapshot still lists every pre-merge accession. Same structural cause as v1's EC drift — a snapshot that was never re-synchronised — but here it inflates the family size by **34%** (47 → 35) and puts **12 duplicate rows into a 41-sequence alignment (29%)**.

### 5.3 UniProt-cited and EuropePMC literature pools do not intersect **at all**

22 UniProt-cited PMIDs, 93 EuropePMC PMIDs, **overlap = 0**. The members' UniProt references are genome/proteome papers (e.g. the *C. elegans* genome paper for Q966L4); the enzyme's actual functional literature is cited by **none** of them. For under-characterised families, the UniProt-cited pool is not merely sparse — it is **disjoint** from the relevant science. v1's literature step, run on FF145 alone, would have found nothing.

---

## 6. Method audit — what v1's substitution cost, and what the threshold hides

### 6.1 Shannon entropy vs the real scorecons

v1 substituted Shannon entropy + a linear gap penalty for scorecons, and disclosed it. With the same alignment and the same pocket, only the conservation method changed:

| | Shannon + gap penalty | scorecons Valdar01 / PET91mod |
|---|---|---|
| DOPS | 95.366 | **94.371** |
| mean | 0.5705 | **0.5261** |
| columns ≥ 0.7 | 38 | **38** |
| Spearman ρ (per column) | — | **0.9608** |
| conserved ∩ pocket | 11 | **12** |

v1's claim — *"column rank order agrees but absolute values differ"* — **is confirmed**. But equal counts hid a **three-column swap**:

| Residue | Column composition | Shannon | scorecons | Chemistry |
|---|---|---|---|---|
| 27 (I) | V/I/L | 0.699 | **0.749** | aliphatic — conservative |
| 33 (L) | L28 M6 I4 V2 A1 | 0.664 | **0.726** | aliphatic — conservative |
| 45 (D) | D/N/E | 0.687 | **0.709** | acidic/amide — conservative |
| 130 (C) | C/A | **0.746** | 0.625 | dissimilar |
| 132 (R) | R/S/E | **0.710** | 0.625 | dissimilar |
| 134 (D) | N/K/D/G | **0.704** | 0.669 | dissimilar |

**Shannon systematically under-scores conservative substitutions and over-scores heterogeneous-but-concentrated columns** — exactly the failure a stereochemistry matrix exists to prevent. Residue 33 sits in the pocket, so the substitution changed the published answer (11 → 12). *An entropy proxy is not a scorecons stand-in for residue-level claims.*

### 6.2 The 0.7 cutoff is doing arbitrary work at the boundary

Three variants, three answers — all "12 or fewer", none the same 12:

| Variant | conserved ∩ pocket |
|---|---|
| Shannon (41 seqs) | 11 — core only |
| scorecons (41 seqs, 29% duplicates) | 12 — core + **33** |
| scorecons (29 seqs, deduplicated) | 12 — core + **126** |

The two swing residues both hug the threshold, and both sit in **all-aliphatic columns**:

- **33 (L)** — `L28 M6 I4 V2 A1` — 0.664 / 0.726 / 0.682
- **126 (V)** — `V20 L15 I6` — 0.666 / 0.690 / 0.739

> **Conclusion**: the defensible result is **11 core residues**, not 11 or 12. Positions 33 and 126 are **threshold artifacts** whose classification depends on method and on redundancy, not on biology. Any single-variant run reports a number that looks precise and is not.

This is why §3 Step 5.5 makes the sensitivity analysis mandatory.

### 6.3 Valdar weighting mitigates redundancy but does not neutralise it

scorecons weights sequences by distance, so the 12 duplicate rows should count little. Testing this directly (same 145 columns, duplicate rows dropped):

- DOPS **94.371 → 94.371** (identical — coincidence, not proof)
- per-column scores identical in only **16/145** columns; max Δ **0.194**; Spearman **0.9881**
- conserved set 38 → 39, and the pocket intersection **swapped 33 → 126**

**Weighting is not a licence to skip deduplication.** Report redundancy explicitly (§5.2) and run the deduplicated variant as one of the sensitivity arms.

---

## 7. Provenance — what is on disk

Everything in `_source/ff145_run/`:

```
fetch_and_chop.py            fetch_manifest.json      (46 domains, 0 nres mismatches)
01_af_full/                  47 full AF v6 models
02_domains/                  46 chopped TED domains
02_domains_filtered/         41 after outlier removal
03_foldmason/                ff145_all46_{aa,3di}.fa, .json (msaLDDT), .nw
                             ff145_filt41_{aa,3di}.fa, .json, .nw
04_scorecons/                ff145_filt41_norm.fasta   -> ff145_filt41.scorecons   (raw)
                             ff145_dedup29_norm.fasta  -> ff145_dedup29.scorecons  (raw)
                             real_mapping.json, dedup_comparison.json, dedup_manifest.json
05_p2rank/                   *_predictions.csv, *_residues.csv, params.txt, run.log (raw)
                             p2rank_verified.json      (version + provenance + v1 agreement)
make_real_scorecons_json.py  method_comparison.json    (real vs Shannon, per-column)
literature.py                lit_uniprot_pool.json, lit_records.json (115 records)
                             step6a_domain_finding.json
logs/                        01_fetch, 02/03_foldmason, 04_scorecons_json, 05_literature
```

**Tooling notes for re-running** (both cost real time to discover):
- **AFDB is on `model_v6`**; `model_v4` URLs return 404 (§3 Step 1).
- **P2Rank 2.5.1 needs Java 17**; a host with only Java 8/11 fails with `UnsupportedClassVersionError` (class file 61.0 vs 55.0). A portable Temurin JDK unpacked into `$HOME` is sufficient — no root needed.

Regenerated report inputs: `../ff145_scorecons_real.json`, `../ff145_mapping_real.json` — drop-in replacements for the v1-schema files, so the slide builder switches method with no code change.

**Reproduction check performed.** Steps 1–3 and 5b were re-run from scratch and reproduce the v1 run exactly:

| Re-run | v1 | this run |
|---|---|---|
| FoldMason, all members | 46 × 281, LDDT 0.504 | **46 × 281, 0.503841** |
| mostly-gap columns | 141 | **141** |
| unique-insertion counts | — | **identical for 46/46 members** |
| outliers removed | 5 (D0A5F8, Q387L5, F6H602, Q54Y82, M7WSX9) | **identical list** |
| FoldMason, filtered | 41 × 145, LDDT 0.831 | **41 × 145, 0.831072** |
| P2Rank pocket 1 | rank 1, 8.10, p=0.431, 17 residues | **identical, same residue order** |

**The v1 numbers were real.** Only the step-4 conservation substitution changed the science (§6.1).

---

## 8. Limitations

1. **META-PPI and Darren's model not run** (deferred by instruction). Functional-site prediction rests on **P2Rank alone** — a single predictor at probability 0.431. The 11-residue core is *conservation ∩ one predictor*, not a consensus of predictors.
2. **Single FunFam.** v2 has been run on FF145 only. FF152/FF153/FF16 remain v1-only. FF16 (n = 499) will stress FoldMason.
3. ~~P2Rank pocket residues were reused from the v1 run.~~ **Resolved.** Re-run from scratch with **P2Rank 2.5.1** (Java 17 / Temurin 17.0.19, ganon) on the chopped domain; raw `predictions.csv`, `residues.csv`, `params.txt` and `run.log` retained in `05_p2rank/`. The fresh run **reproduces the v1 pocket exactly** — rank 1, score 8.10, probability 0.431, and the same 17 residues in the same order. *Residual caveat*: v1 recorded no P2Rank version, so the agreement shows the numbers are right, not that v1 used 2.5.1. Version is now recorded in `p2rank_verified.json`.
4. **`>5 unique insertions` and `gap > 0.75` are hand-set.** They are unambiguous on FF145 (5 members at 90–138, everyone else ≤ 4) but have not been tested on a family with a continuum.
5. **`k`/threshold sensitivity is reported, not resolved.** §6.2 shows 0.7 is arbitrary at the margin; the principled fix is a score distribution + null model, not a fixed cutoff.
6. **Rule-based literature classification is shallow — and demonstrably missed the key sentence.** The decisive phrase *"adenine nucleotide hydrolase domain"* was absent from `DOMAIN_KW`, so PMID 23468660 registered **zero** domain hits despite containing the one statement that matters. The 6a conclusion here is correct only because the abstracts were read by hand. This must be an LM classifier before it can be trusted unattended.
7. **`conserved ∩ pocket` is a hypothesis, not a result.** No wet-lab validation. D12/S13 and G115/A116 are P-loop-adjacent in a Rossmann fold and would be the obvious mutagenesis starting points.

---

## 9. What changed from v1 — process, not just tools

| | v1 | v2 |
|---|---|---|
| Unit of claim | member | **residue** |
| Structure alignment | Foldseek pairwise all-vs-all | **FoldMason multi-structure MSA** |
| Sequence layer | CATH Stockholm MSA identity | **structural MSA columns** |
| Conservation | — | **scorecons Valdar01 (real binary, on ganon)** |
| Functional sites | not addressed | M-CSA + UniProt features + **P2Rank** |
| Literature | family-level, per-sub-group | **domain-level (6a)** |
| Intermediates | discarded after summarising | **all retained (§7)** |
| Single-method numbers | published as-is | **sensitivity analysis mandatory (§6.2)** |

The three rules v2 adds, each bought with a concrete failure:

1. **Run the real binary.** An entropy proxy changed the published answer (§6.1).
2. **Keep every intermediate.** v1's numbers were honest, but nothing could be checked without a full re-run (§7).
3. **Never report a threshold-crossing set from one method.** Report the cross-variant core and name the borderline (§6.2).

---

## References (methods)

Every entry below was verified against EuropePMC during this run; PMIDs are given so the check is repeatable.

- CATH v4.4.0 — Sillitoe *et al.* (2021) *Nucleic Acids Res* 49:D266–D273.
- TED (The Encyclopedia of Domains) — Lau AM, Bordin N, Kandathil SM, Sillitoe I, Waman VP, *et al.* (2024) "Exploring structural diversity across the protein universe with The Encyclopedia of Domains." *Science* 386:eadq4946. PMID **39480926**.
- AlphaFold DB — Varadi *et al.* (2022) *Nucleic Acids Res* 50:D439–D444.
- FoldMason — Gilchrist CLM, Mirdita M, Steinegger M. (2026) "Multiple protein structure alignment at scale with FoldMason." *Science* 391:485–488. PMID **41610233**. *(The widely-cited 2024 bioRxiv preprint is superseded — cite the Science paper.)*
- scorecons / trident conservation score — Valdar WS. (2002) "Scoring residue conservation." *Proteins* 48:227–241. PMID **12112692**.
- **DOPS** — reported by the scorecons binary as an alignment-diversity summary (0–100) alongside the per-column scores. Used here as the tool emits it; no separate primary citation is claimed, as none could be verified during this run. Treat as CATH tooling output, not as an independently published metric.
- P2Rank — Krivák R, Hoksza D. (2018) "P2Rank: machine learning based tool for rapid and accurate prediction of ligand binding sites from protein structure." *J Cheminform* 10:39. PMID **30109435**.
- M-CSA — Ribeiro AJM, Holliday GL, Furnham N, Tyzack JD, *et al.* (2018) "Mechanism and Catalytic Site Atlas (M-CSA): a database of enzyme reaction mechanisms and active sites." *Nucleic Acids Res* 46:D618–D623. PMID **29106569**.
- EuropePMC — Levchenko *et al.* (2018) *Nucleic Acids Res* 46:D1279–D1284.
- UniParc / UniProt — UniProt Consortium (2023) *Nucleic Acids Res* 51:D523–D531.

## References (biology of the applied case)

- Uthman S, *et al.* (2013) "The amidation step of diphthamide biosynthesis in yeast requires DPH6, a gene identified through mining the DPH1-DPH5 interaction network." *PLoS Genet* 9:e1003334. PMID **23468660** (cited 54). — *Dph6 contains an essential adenine nucleotide hydrolase domain and binds to eEF2.* The key evidence in §4.1/§4.2.
- Su X, *et al.* (2012) "Chemogenomic approach identified yeast YLR143W as diphthamide synthetase." *PNAS* 109:19983–19987. PMID **23169644** (cited 28). — Establishes the reaction (ammonium + ATP); human ATPBD4 is the ortholog.
- Abdel-Fattah W, Scheidt V, Uthman S, Stark MJH, Schaffrath R. (2013) "Insights into diphthamide, key diphtheria toxin effector." *Toxins (Basel)* 5:958–968. PMID **23645155** (cited 22). — Dissects **Dph1** N/C-terminal domains. Cited here as evidence of what is *not* known about Dph6 (§4.2).

---

*End of Protocol v2.*
