Ligands in signaling pathways

IN_PROGRESS PIPELINE

Species: human, DANRE, DROME, SCHPO

Genes: NTN1 NTN3 DCC VEGFA KITLG kitlga EFNB1 MIF IL34 IL21 IL22 FASLG CXCL8 C5 C3 TSHB CGA GRP NMB COL1A1 DDR1 Ddr NT1 spz5 Toll-6 kek6 EDN1 EDN3 GAL GALP PENK PDYN

Ligands in signaling pathways

Status: incomplete, handed off mid-way. See Handoff for what is done, what is
next, and how to rerun everything.

Bottom line: GO treats a protein ligand as part of the signaling pathway it starts, and
human and fly curators annotate it that way. That gives a simple completeness test: every
receptor-initiated pathway an organism annotates should contain at least one gene with
receptor ligand activity. Run on seven GO Consortium GAFs, the test fails for a third or more
of the pathway terms in every organism. Most failures have no protein ligand to find (small
molecules, light, microbial products, antigens). The rest are real gaps: ligands missing from
their pathway, ligands placed only on a neighbouring term, and ligands that carry a
receptor-specific binding term (such as "Roundabout binding") instead of a ligand-activity term.

Knowing that some ligand is missing needs only GOA. Knowing which ligand is missing is
curated knowledge, and the curated module is the place to keep it with its evidence. We
therefore started curating pan-species signaling modules whose first step is the ligand, so
that generic pathway hole-filling can report the gaps. Three new two-step modules are done
(netrin, Slit-Robo, and MIF-CD74/CD44) and two existing modules with open ligand gaps were upgraded
to family-level ligand steps (Kit signaling and Ephrin-Eph signaling).

1. Are ligands part of the pathway in GO?

Yes, in standard annotation and in the ontology.

2. Ligand activity versus receptor binding terms

A background research pass (go-ontology issues, GO docs, QuickGO term history) found that
annotating ligands only with "X receptor binding" terms is history, not policy:

Decisions taken (C. Mungall, this session):

  1. A module's ligand step uses receptor ligand activity or a fitting child (for example
    chemorepellent activity), not the receptor-specific binding term.
  2. Keep the PANTHER family and PAINT ancestral node on the ligand step with the correct term,
    and record in the family review that the PAINT node's binding term should be the
    ligand-activity term.
  3. Modules are pan-species; species proteins are representative examples only.
  4. Receptor-specific binding terms in gene reviews should generally be MODIFY. The replacement
    depends on the protein: ligands go to receptor ligand activity or a child; non-ligands that
    bind a receptor need their real activity (adaptor, enzyme, and so on). Adaptor terms that GO
    places under signaling receptor binding (such as transmembrane receptor protein tyrosine
    kinase adaptor activity
    ) are already activities and are excluded.

3. The ligand gap check

Rule. For each organism, every pathway term P under cell surface receptor signaling
pathway
(GO:0007166) or G protein-coupled receptor signaling pathway (GO:0007186) that the
organism's GAF uses directly must contain a gene that is involved_in P (or a subterm) and
enables receptor ligand activity (or a subterm). GPCR pathways are added separately because
they are not under cell surface receptor signaling. The check uses only GOA and the ontology:
no modules, no hand-picked lists.

Full output: results/RESULTS.md (generated). Summary
for the GAFs dated 2026-05-21 and GO release 2026-07-26:

Organism Pathway terms used No ligand gene
human 237 78
mouse 234 86
rat 231 79
zebrafish 145 91
fly 74 39
budding yeast 6 6
fission yeast 4 4

Triage. scripts/triage.py sorts each failure.
Where a term passes in another species of the same lineage, that species' ligands are looked up
by gene symbol in the failing species. Where no species passes, an expected-ligand list is used.
Both curated inputs are explicit files, so the prior knowledge is visible and reviewable:

Category human mouse rat zebrafish fly
A: ligand counterpart not on the pathway 11 10 13 29 5
B: ligand only on a related pathway term 8 9 9 7 1
C: ligand on the pathway but no ligand-activity MF 4 4 4 8 2
X/Y: no host protein ligand expected 48 51 45 39 21
O: suspect over-annotation 0 0 0 0 6
Other (N, U, G) 7 12 8 8 4

Examples (human unless noted). A: KITLG, IL21, IL22, CXCL8, C5, MIF, FASLG and the netrins are
not on their pathways. B: VEGFA/VEGFB/PGF are on VEGF receptor signaling but not the VEGFR-1
subterm; the FGFs are on FGF receptor signaling but not its "involved in X" subterms; fly spz5
and NT1 are only on Toll signaling, not neurotrophin signaling. C: IL34 and the collagens are in
their pathways without a ligand MF; fly Ephrin and sli likewise. O (fly; from background
knowledge, not checked): NGF, neurotrophin TRK, G-CSF, adiponectin, TLR4 and LPS-mediated
signaling terms in a genome without those ligands or receptors.

Before the triage was automated, 28 human and fly failures were sorted by hand into A, B or C.
The automatic lookup agrees on 21. The differences: three FGF "involved in X" subterms have no
donor (U); the FGF receptor apoptotic signaling term comes out C because FGFR3 itself carries a
ligand-activity MF in another species; and three fly cases that are really B (egr, Ilps,
spz5/NT1 sit on a sibling pathway) come out A because the sibling shares only generic ancestors.
(X, Y, O and G agree by construction, since the hand labels are the curated inputs.)

Reverse check. Ligand-activity genes in no signaling pathway: 22 of 571 in human (mostly
chemokines such as CCL17, CCL27, CCL28, CXCL2, CXCL3, CXCL16, PPBP, PF4V1, and beta-defensins;
ALKBH1 and DPP4 look like MF over-annotation), 1 in fly (orion), none in either yeast. In
budding yeast the receptors STE2/STE3 are in the pheromone pathway but the pheromones are not.

Relaxing the rule does not work. Counting genes with a signaling receptor binding MF plus
an extracellular CC annotation as ligands makes 31 more human terms and 3 more fly terms pass,
almost all falsely: G-protein alphas, LYN and IRAK4 qualify through exosome or extracellular
annotations, and netrin signaling "passes" on DSCAM and tubulin. Only IL34 (human) and sli
(fly) are real. The ligand step has to come from curated modules.

Caveats: symbol matching stands in for orthology; budding yeast and fission yeast have no
same-lineage donor in the seven-species panel (so unflagged yeast terms fall into U);
go-basic omits MF-to-BP part_of links, which is harmless here because only BP annotations
place genes in pathways.

4. Curated modules

All eighteen modules have family-grounded pan-species ligand steps and pass the schema and module
validators.

5. Other curator work in this branch

Handoff

Done

Next steps

  1. More modules, pan-species, ligand step first, using the decisions in section 2. All receptor
    and ligand members of the collagen-DDR and fly Toll-6/7 neurotrophin modules now have gene
    reviews (DDR1, fly Ddr, NT1, spz5, Toll-6 and kek6 were added after the modules). The NT1 and
    spz5 reviews move the ligands onto neurotrophin signaling pathway, and the Toll-6 review removes
    the Roundabout-binding IBA from the Slit PAINT node. The fly Ddr review predicts a pseudokinase
    and gives Ddr's core role as wrapping-glia axon ensheathment, so fly Ddr was dropped as a module
    representative; human COL1A1 now carries a receptor-ligand-activity core function for DDR
    signaling, while the other collagen reviews (COL1A2, COL2A1, COL3A1, COL4A1, COL10A1) do not yet.
    Remaining GPCR/hormone queue: angiotensin signaling (AGT), CCL19 signaling, APOA1 signaling (plus
    remaining ligand paralogs EDN2, PNOC, and POMC for the endothelin and opioid modules).
    Several human gaps (VEGFR-1/3, FGFR, Fas, CXCL8) already have modules with the
    ligand; they need the hole-filling run, not new modules.
  2. Module-driven hole filling. Replace curated/expected_ligands.yaml with the modules: an
    annotation oracle for src/ai_gene_review/module_logic.py that resolves each ligand annoton's
    family to members per species (PANTHER membership, as in
    projects/PATHWAY_SATISFIABILITY/taxon_absent_component/) and asks GOA whether they carry the
    module's pathway term. Unfilled ligand steps are the gaps.
  3. Binding-term MODIFY batch over the 820 rows and 162 core functions: propose a replacement
    per row (ligand → receptor ligand activity or child; non-ligand → its actual activity; skip
    adaptor terms), for curator review. Consider adding the rule to CLAUDE.md.
  4. GO issues to draft for C. Mungall: the outdated comment on signaling receptor binding;
    ligands annotated only with receptor-specific binding terms; PomBase's pheromone convention
    (ligand and receptor as regulators of the MAPK cascade) and budding yeast pheromones missing
    from the pathway; optionally Hedgehog/Patched on #14275.
  5. VEGFA review inconsistency, unresolved: it REMOVEs cellular response to vascular
    endothelial growth factor stimulus
    ("VEGFA is the ligand, not the responder") while ACCEPTing
    vascular endothelial growth factor signaling pathway, which is part_of that response.
    Decide alongside #15477; no edit was made.
  6. Check the fly over-annotation (O) calls against data before acting on them.

How to rerun

# data (GAFs + go-basic.obo) into the git-ignored .cache/ligands_in_signaling
projects/LIGANDS_IN_SIGNALING/scripts/fetch_data.sh
# gap check for all seven organisms, then the relaxed-rule variant for human and fly
uv run python projects/LIGANDS_IN_SIGNALING/scripts/ligand_gap_check.py --out projects/LIGANDS_IN_SIGNALING/results
uv run python projects/LIGANDS_IN_SIGNALING/scripts/ligand_gap_check.py --out projects/LIGANDS_IN_SIGNALING/results --orgs human fly --or-receptor-binding
# triage; writes results/triage.json and results/RESULTS.md
uv run python projects/LIGANDS_IN_SIGNALING/scripts/triage.py --results projects/LIGANDS_IN_SIGNALING/results
# QuickGO survey of textbook ligands (network; a few minutes)
uv run python projects/LIGANDS_IN_SIGNALING/scripts/survey/ligand_pathway_survey.py --out projects/LIGANDS_IN_SIGNALING/results/ligand_survey.json

Known issues