fe0627da07b9f989bc642d824af381968163d9a8
lrnassar
  Wed Jul 8 13:40:04 2026 -0700
varFreqs: move ALFA to Global reference panels; add shared-sample bias caveat to description pages. refs #36642

Per Max's post-release feedback on the ticket: ALFA is not a European
cohort, it is an NCBI aggregator of dbGaP studies from many sources.
Moved from Europe to Global reference panels in the newsarch entry.

Also adds a shared-sample bias caveat to the Pooled allele frequency
section of both varFreqsAffected.html and varFreqsBackground.html. The
background page cites the concrete overlaps (1000 Genomes in both gnomAD
HGDP+1kG and HRC; HGDP/SGDP; AllOfUs/TOPMed; ALFA aggregating dbGaP
studies used elsewhere). The affected page cites the SPARK WGS cohort
being a subset of SPARK WES. Both explain that pooled AN is inflated and
pooled AF is skewed toward the frequency in the shared subset, and point
users to the per-cohort AC/AF/AN fields for unbiased single-cohort
numbers.

diff --git src/hg/makeDb/trackDb/human/varFreqsAffected.html src/hg/makeDb/trackDb/human/varFreqsAffected.html
index bb67d401445..c5510bd7279 100644
--- src/hg/makeDb/trackDb/human/varFreqsAffected.html
+++ src/hg/makeDb/trackDb/human/varFreqsAffected.html
@@ -48,30 +48,39 @@
 <h3>Pooled allele frequency</h3>
 <p>
 <b>Affected AF</b> is the pooled rate across contributing affected arms:
 <code>affectedAF = sum(AC) / sum(AN)</code>, where <b>affectedAC</b> sums the allele counts
 and <b>affectedAN</b> sums the allele numbers across each cohort/arm that provides both AC and
 AF (the per-arm AN is derived as <code>round(AC / AF)</code>). Cohorts that publish only AF
 (with no AC or AN of their own) are still pooled by assigning them an assumed allele number,
 set as a <code>default_an</code> in the build configuration; their per-arm AC is then derived
 as <code>round(AF &times; default_an)</code>. Cohorts
 that publish only AC and have no <code>default_an</code> set (currently GREGoR's per-arm
 AC_AFFECTED/UNAFFECTED/UNKNOWN) are listed in <b>affectedCohorts</b> but do not contribute
 to the pool numerator or denominator; their carriers are visible in the per-database AC
 column instead. The pooled rate is preferred over a max-across-cohorts statistic so a
 small cohort with a high local AF cannot dominate the displayed frequency.
 </p>
+<p>
+The pooled rate also inherits a <b>shared-sample bias</b>: the SFARI SPARK WGS cohort
+(~12k probands) is a subset of the larger SFARI SPARK WES cohort (~155k probands), so
+probands sequenced in both contribute their AC and AN twice to the affected pool. Where
+this happens, pooled AN is inflated and pooled AF is skewed toward the frequency in the
+shared subset. Treat the pooled rate as a cross-cohort summary rather than an unbiased
+population estimate; the per-cohort AC/AF/AN fields on each variant give the
+single-cohort numbers.
+</p>
 
 <h3>Top affected sources by AF</h3>
 <p>
 Alongside the pooled rate, the mouseover lists the top 3 contributing
 affected arms ranked by their own per-source AF, formatted as
 <code>Source (AF)</code>. This surfaces case cohorts where the variant is
 specifically enriched, even when the pooled rate across all arms is small.
 For disease cohorts that ship a phenotype split (SPARK, SFARI WGS, SCHEMA,
 GREGoR), the displayed AF is the affected-arm AF and the label includes the
 arm (for example <code>SPARK ASD</code>, <code>SCHEMA case</code>); for
 cohorts with no split (GA4K) the label is just the cohort name and the AF
 is the whole-cohort AF. Arms that ship only AC and no AF (currently GREGoR
 per-arm) are not included in this ranking because no AF is available;
 they still appear in <b>affectedCohorts</b>.
 </p>