Human arylacetamide deacetylase-like 2, HGNC:24427, chromosome 3, 401 aa, PE 1: Evidence at
protein level, Pharos Tdark. Reviewed 2026-07-25 for the PAINT + affinage campaign.
Seven GOA rows, no experimental evidence of any kind: 2 IBA (PANTHER) and 5 IEA
(InterPro ×2, ARBA ×2, UniProt SubCell ×1). Three rows are activities at three levels of
generality; three are locations, two of which are incompatible readings of the same
N-terminal helix.
| term | evidence | source |
|---|---|---|
| GO:0016787 hydrolase activity | IBA | PANTHER PTN009058710 (+16 protein sources) |
GO:0016020 membrane (is_active_in) |
IBA | PANTHER PTN009058713, AADAC, mouse Aadac, mouse Nceh1 |
| GO:0003824 catalytic activity | IEA | ARBA:ARBA00027533 |
| GO:0005576 extracellular region | IEA | UniProtKB-SubCell:SL-0243 |
GO:0016020 membrane (located_in) |
IEA | ARBA:ARBA00028763, InterPro:IPR017157 |
| GO:0016787 hydrolase activity | IEA | InterPro:IPR013094 (Alpha/beta hydrolase fold-3) |
| GO:0052689 carboxylic ester hydrolase activity | IEA | InterPro:IPR017157 (Arylacetamide deacetylase) |
PubMed returns 6 hits for AADACL2; none characterises the protein. The affinage record came
back empty (n_discoveries: 0, citation_count: 0, no self_evaluation_pairwise score), and
in this case
the emptiness is corroborated rather than taken on trust — the only literature statement
about AADACL2's function is that there isn't one:
The three UniProt RN references are all large-scale sequencing (PMID:17974005 German cDNA
consortium, which supplied isoform 2; PMID:16641997 chromosome 3; PMID:15489334 MGC, which
supplied the Ser-186 variant). None assays the protein. Note the campaign rule: PE 1 means
the protein is detected, so the honest statement is that there are no
functional/biochemical data, not that there are no data.
Two genetic associations exist and neither supports a GO annotation:
The stroke signal is explicitly near the gene, not in it. A skin-expressed gene surfacing
in a psoriasis screen is at least tissue-coherent; a locus association is not a function.
AADAC is the characterised member: a liver/intestine enzyme that hydrolyses both amide bonds
of arylacetamide xenobiotics and ester bonds of diglycerides, and it is
PMID:35736449.
AADACL1/NCEH1/KIAA1363 is the other characterised member and is likewise membrane-anchored:
PMID:35736449-long
hydrophobic stretch. The review also notes
PMID:35736449
(hormone-sensitive lipase) — the GDXG / HSL-like α/β-hydrolase clan that AADACL2 belongs to
per [file:human/AADACL2/AADACL2-uniprot.txt "Belongs to the 'GDXG' lipolytic enzyme family."].
Expression: HPA reports AADACL2 as skin-restricted (Tissue enriched (skin),
"detected in single", 10.1 nTPM in skin) — the most tissue-restricted member of the family
after AADACL4. AADACL3 is also skin/placenta-expressed, so the paralogous cluster looks like a
skin-associated expansion of the AADAC family.
The campaign's standing warning is that a domain's name becomes an activity in GO. The
mirror-image error is to dismiss such a call without checking the residues. Here the residues
are present:
[file:human/AADACL2/AADACL2-uniprot.txt "FT ACT_SITE 189"], 341 and 371 (Ser-Asp-His),
an oxyanion-hole motif at
[file:human/AADACL2/AADACL2-uniprot.txt "FT MOTIF 111..113"], a GDSSG nucleophile
elbow at 187-191, a conserved 116-338 disulfide, and a PROSITE PS01174 GDXG-lipase-serine
match. The reciprocal alignment test in
[file:human/AADACL2/AADACL2-bioinformatics/RESULTS.md "Eight of the fifteen sources with annotated active sites map all three residues onto"]
AADACL2's own annotated triad. Those eight are the seven closest sources plus M. tuberculosis
LipN at 26.1% identity, and every source that fails lies at 26.5% identity or below, where the
global alignment loses register in the C-terminal half. They include three independently
characterised M. tuberculosis carboxylesterases and the 51.6%-identical human paralog AADAC.
That licenses GO:0017171 serine hydrolase activity, whose definition is exactly a serine
nucleophile activated by an acid/base proton relay. GOA currently gives AADACL2 only
GO:0016787 hydrolase activity and GO:0003824 catalytic activity from the mechanism side,
which is a strictly weaker statement than the protein's own feature table supports.
From RESULTS.md section 5: GO:0017171 sits only at the ortholog-specific nodes
PTN002745055 (AADAC) and PTN002745068 (NCEH1), so AADACL2/3/4 inherit no mechanism term.
What they do inherit at the shared family node PTN009058713 is GO:0016020 membrane.
This is backwards with respect to what transfers safely: the catalytic triad is conserved in
all five human members; the N-terminal anchor is not (12 of the 14 reviewed IPR017157
entries carry a TRANSMEM, 11 of them an explicit type-II signal anchor, and AADACL2 is the
only one whose equivalent segment is annotated as a cleaved signal peptide instead). Moving GO:0017171 down to
PTN009058713 and dropping GO:0016020 from it would correct AADACL2, AADACL3 and AADACL4
in one edit.
My first read was "membrane is a paralog artefact; secreted is right". Measurement did not
support that, and this is recorded here so the reasoning is auditable:
TP.PDN.EE.W motif. Hydropathy cannot tell aSo both GO:0005576 and GO:0016020 are unsupported computational readings of the same
segment, and neither can be accepted or removed on present evidence. Actions: UNDECIDED for
all three location rows, with the experiment that would settle it recorded in
suggested_experiments. Recording the contradiction is the deliverable here; picking a
winner would have been a guess dressed as a finding.
Isoform 2 (Q6P093-3) replaces residues 47-53 and deletes 54-401, and UniProt flags it as
likely NMD-degraded:
[file:human/AADACL2/AADACL2-uniprot.txt "premature stop codon in the mRNA, leading to nonsense-mediated mRNA"]
decay. It cannot be catalytically active (it stops before Ser189), so no annotation should be
attributed to it. All annotations here concern isoform 1 (Q6P093-1), the MANE-Select product.
The UniProt record carries two DrugBank cross-references, DB07814 Gibberellic acid and
DB07815 Gibberellin A4. The plant gibberellin receptor GID1 is a derivative of this same
GDXG/HSL-like carboxylesterase clan, so these are almost certainly structure-similarity
mappings rather than any claim about human ligands. Not used for anything in the review.
All five were taken:
results.json already had theRESULTS.md section 1, computed by the script (per_target_active_site), andGO:0017171 MODIFY reason.GO:0052689 ACCEPT reason called that term "the best available statement of the corecore_functions uses GO:0017171. Reconciled: GO:0052689 is the mostGO:0005576 and GO:0016020 are notGO:0016787 MODIFY now says where the fix lands — thePMID:16641997 (chromosome 3 sequencing, UniProt RN[2]) to references: so theItems 2 and 4 above are superseded by the cross-gene adjudication section at the end of
this file. The reconciliation in item 2 was the wrong way round —GO:0052689is now the
recorded core function — and the "protein-level annotation on AADACL2" framing in item 4
proposed a term (GO:0017171) that one of the row's own donors refutes.
| term | evidence | action |
|---|---|---|
| GO:0016787 hydrolase activity | IBA | MODIFY → GO:0052689 carboxylic ester hydrolase activity |
GO:0016020 membrane (is_active_in) |
IBA | UNDECIDED |
| GO:0003824 catalytic activity | IEA | MODIFY → GO:0052689 carboxylic ester hydrolase activity |
| GO:0005576 extracellular region | IEA | UNDECIDED |
GO:0016020 membrane (located_in) |
IEA | UNDECIDED |
| GO:0016787 hydrolase activity | IEA | MODIFY → GO:0052689 carboxylic ester hydrolase activity |
| GO:0052689 carboxylic ester hydrolase activity | IEA | ACCEPT |
(The three MODIFY rows originally proposed GO:0017171 serine hydrolase activity; see the
cross-gene adjudication below for why they now all collapse onto GO:0052689 instead.)
GO:0016787 row (AADACL2 / AADACL3 / AADACL4)The defect. AADACL2, AADACL3 and AADACL4 each carry one GO:0016787 hydrolase activity
IBA row from GO_REF:0000033, transferred from PANTHER node PTN009058710, and the
WITH/FROM fields are byte-identical across the three records — the same 17 tokens. Three
separate reviews nevertheless reached three different verdicts on that one row:
| gene | PR | verdict as merged |
|---|---|---|
| AADACL2 | #2266 | MODIFY → GO:0017171, TERM_SCOPING_PROBLEM + GRANULARITY_MISMATCH |
| AADACL4 | #2263 | MODIFY → GO:0052689, TERM_SCOPING_PROBLEM + GRANULARITY_MISMATCH |
| AADACL3 | #2264 (open) | keep GO:0016787 as the genuine LCA; replace only as redundant, EVIDENCE_CIRCULAR_OR_REDUNDANT |
How it was settled. By measurement, not by preference. The shared node audit
AADACL2-bioinformatics/audit_node_PTN009058710.py resolves all 17 tokens (16 proteins plus
the tree node itself) and reads each donor's chemistry off its own EC numbers and its own
curated GO annotations classified by fetched ontology ancestry, and its nucleophile off its own
ACT_SITE features. Results in NODE_PTN009058710.md:
GO:0016787 hydrolase activity: TRUE 16, FALSE 0, UNDETERMINED 0
GO:0052689 carboxylic ester hydrolase activity: TRUE 14, FALSE 2, UNDETERMINED 0
GO:0017171 serine hydrolase activity: TRUE 15, FALSE 1, UNDETERMINED 0
Neither refinement is true of the whole node, and the two refutations lie on different
axes, so neither can be rescued by choosing the other:
Q8K4H1,GO:0004061 by IMP) and yeast BNA7 (Q04066, GO:0004061 by IDA), both EC 3.5.1.9. TheirGO:0016810 (C–N bonds), a sibling of the ester branch.Q5NUF3), whose nucleophile-elbow residue isGO:0017171's definition demanding "a catalytic triad consisting of aBecause GO:0016788 and GO:0016810 are siblings whose only common ancestor below
GO:0003824 is GO:0016787, the term PAINT chose is the exact LCA of its donor set.
So AADACL3's reading was the correct one, and all three genes are now harmonised to it:
MODIFY → GO:0052689 on redundancy grounds only, root_cause:
EVIDENCE_CIRCULAR_OR_REDUNDANT, and no failure_modes. GRANULARITY_MISMATCH is dropped
because it presupposes donors that agree with a term still sitting above them; here the donors
disagree and the parent is their LCA, so there is no granularity defect at all.
Two premises that were wrong and mattered.
GO:0016787. It is bifunctional: GO:0033987 dehydrataseGO:0106435 carboxylesterase activity by IDA, EC 4.2.1.105 and ECRESULTS.md was corrected.xref:sgd-S000002836 → Q04066, ACT_SITE 110 labelledWhere the mechanism term does belong. GO:0017171 is not wrong about this family, it is
attached to the wrong node. At the family node PTN009058713 — whose WITH/FROM names only
human AADAC, mouse Aadac and mouse Nceh1 — the term is true of every donor PAINT cites there
and held by IDA in all three of them, and all three are IPR017157 members. All three blockers at the deep
node lie outside IPR017157. So the PAINT recommendation is a node move
(PTN002745055/PTN002745068 → PTN009058713), not a term change on the row, and it is now
stated that way in knowledge_gaps and suggested_questions in AADACL2 and in
suggested_questions in AADACL4.
Knock-on change to core_functions. AADACL2's core molecular function moves from
GO:0017171 to GO:0052689, matching AADACL4 and AADACL3, which have identical catalytic
registers and the same subfamily signature. GO:0017171 remains true of AADACL2 on its own
residues and is stated as such in the core_functions description, but no existing row carries
it and it is pursued as the node move above rather than asserted as a second activity. The
GO:0003824 ARBA row's replacement was moved to GO:0052689 for the same reason: all three
general molecular-function rows on this record now collapse onto the one specific term the
record actually has.
Five factual/rhetorical items, all conceded after checking:
genes/human/AADACL3/ isgenes_sharing_the_row: ["AADACL2","AADACL4"] while the prose claimed all three. Fixed byWITH/FROM set per{"present": False}, which is what its own docstring had promised.IBA,IDA,IEA),IBA,IDA,IEA,ISO) and mouse Nceh1 (IBA,IDA) all hold GO:0017171family_node.mechanism_term_support), soACT_SITE 164 as "Proton acceptor" (ECO:0000305), not as a nucleophile —GDSAG ×12, GQSAG, GHSAG, GHSVG) while HIDH alone reads GETSG;GO:0017171 untrue of every donor, and downgrading every positionally-inferredcore_functions.core_functions rationale leaned on cross-gene consistency. It now leads with theGO:0052689 — IPR017157 is a family-specific signature overOne item held, with the reasoning recorded. The reviewer notes that dropping
GRANULARITY_MISMATCH goes beyond the enum's literal definition ("parent term is true but
uninformative"), which would fit this row. Held, because failure_modes is documented as the
biological shape of a propagation issue and this propagation has none: the parent is
uninformative because the donors are heterogeneous, not because the transfer could have been more
specific. That is the rule this campaign already adopted ("ask whether the term is the LCA of its
donors; GRANULARITY_MISMATCH is only apt when the donors agree and the term still sits above
them"). The reasoning is now stated inline in both hydrolase rows rather than left implicit, and
the schema's enum description is flagged as worth clarifying so the two readings stop being
interchangeable.
All five taken; none changed a conclusion.
GRANULARITY_MISMATCH argument was stated twice in the same reason field — the round-1IPR013094 IEA row now cross-references the argument on the IBA row instead of repeating theRESULTS.md still carried the self-contradicting sentence the YAML had already fixed ("placessupporting_text that quotes itWITH/FROM of the GO:0016020 row, and PTN009058713's membership ismembership_enumerated: false recorded in the audit JSON.IPR017157 split, which is per donor.uncovered guard could not fire (from_quickgo is built fromPARALOG_ACCESSIONS, which covers all three genes), so it is now an assertion documenting theGENES without an accession; andfamily_mechanism silently skipped an unresolvable family-row token, which now dies, matchingquery_for already refuses to do.supporting_text entries quoted the same file with one a strict prefix of the other, theThe reviewer found that AADACL2-bioinformatics/RESULTS.md still carried "true of every donor at
PTN009058713 and IDA-supported by two of them" — a sentence this PR itself added, left
un-updated when round 2 changed "two" to "three" in six other places and round 3 changed "every
donor at" to "every donor PAINT cites at". So both conceded items were unapplied in one
sentence, in the very file whose stale-quote problem was item 9. Patching named line numbers is
what let it survive twice.
Fixed by sweeping instead of patching: a single script now greps all seven changed files for
every IDA … two of them variant and every unqualified every donor at the family node, applies
the corrections idempotently, and then re-greps and hard-fails if any occurrence survives.
That found four more instances beyond the one reported — the round-1 sentence in both notes
files, the "Not two of three: every donor at the family node" line in NODE_PTN009058710.md, and
two places in the AADACL4 review that round 3's line-targeted edit had missed. Lesson for the
campaign log: when a phrase is corrected, grep the whole changed file set for the phrase, not for
the line.
Also from the same review: the uncovered guard is now an explicit if … die() rather than an
assert, since python -O strips assertions and the guard is the mechanism by which the
"no gene drops out of the equality test" promise is kept.
Extending the harmonisation to AADACL3 invalidated every statement in the three reviews that
described them as disagreeing — and the round-4 sweep grepped for the two of them phrasings but
not for those, which is how they survived a round.
suggested_questions said the merged AADACL2 review resolves the same row asMODIFY → GO:0017171 with TERM_SCOPING_PROBLEM + GRANULARITY_MISMATCH, that "both cannot beTERM_SCOPING_PROBLEMAADACL3-notes.md) is rewritten in the past tenseAADACL3-ai-review.yaml, the analysis review_notes), not onlypropagation_review comment and a reference entry elsewhere in the file.Five items on this PR (9, 13, 17, 18, 22) were the same defect: a claim corrected in one place and
left standing in another, twice in a file that recorded the lesson. Round 5's own bullet asserted
two of these fixes that the tree did not contain. Being more careful demonstrably does not work, so
the checks are now a committed script:
genes/human/AADACL2/AADACL2-bioinformatics/check_paralog_agreement.py
It enforces two things across AADACL2, AADACL3 and AADACL4 — the reviews, the notes files and
the audit prose:
GO:0016787 rows: MODIFY →GO:0052689, root_cause: EVIDENCE_CIRCULAR_OR_REDUNDANT, no GRANULARITY_MISMATCH,supporting_entities equal to that gene's own GOA WITH/FROM column, one shared 17-token setcore_functions molecular function GO:0052689, and the shared auditTERM_SCOPING_PROBLEM, "both cannot be right", "needs aIDA … two of them, unqualified "every donor at the family node", "13 of 14"All eleven guards were verified by deliberately breaking them: --self-test copies the
tree to a temporary directory, applies one mutation at a time, and requires each to be caught. That
paid for itself immediately — the first run reported superseding pointer removed from a count:
NOT caught, and the cause was the mutation, which only reworded a lead-in and left the pointer
inside the search window, so nothing was actually broken and the guard was right to stay silent.
Reading the guard would not have found that; only trying to break it did. The mutation now deletes
the whole clause and raises if its target text has moved, so the self-test cannot silently pass
later.
Two design points worth recording. Curator-facing text (reviews, the audit prose, RESULTS.md) is
grepped wholesale, but notes files are journals — a journal recording "X was wrong, now fixed"
necessarily contains X, so a blanket grep is unusable there. They are scanned paragraph by
paragraph and a stale phrase is allowed only where the paragraph, or a marker at the top of its
section, marks the passage retrospective; an unqualified stale sentence in running prose fails,
which is exactly the shape of the AADACL3 section that survived four rounds. And the section-level
exemption requires a strong marker (superseded, historical, since resolved …) rather than any
past tense, so appending a new live claim to an old section is not laundered by its header — there
is a self-test mutation for precisely that.
Integration with just is out of scope for a gene PR, so it runs as
uv run --no-project --with pyyaml python check_paralog_agreement.py and is documented in the
audit file.
Generalisable lesson, and the reason this is a script rather than a resolution: when a change
makes a claim false, grep for the claim, not for the sentence you remember writing — and when the
change is "these two now agree", the claims to hunt are the ones asserting that they do not.