7aa59c8f6afbda4c2157d3990b2bbc48a39cac63
max
  Fri Sep 25 02:48:31 2026 -0700
varFreqs: add SFARI SPARK 45k WGS subtracks. sfariSparkWgs45k is built from the release's AF table (AN estimated, singletons dropped); sfariSparkWgs45kAsd is built from the genotype pVCFs with ASD/non-ASD counts, for now only the DSCAM locus while the genome-wide parasol run finishes, refs #38424

diff --git src/hg/makeDb/scripts/varFreqs/sparkWgs45kPvcfJobs.sh src/hg/makeDb/scripts/varFreqs/sparkWgs45kPvcfJobs.sh
new file mode 100755
index 00000000000..2fff97d0129
--- /dev/null
+++ src/hg/makeDb/scripts/varFreqs/sparkWgs45kPvcfJobs.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+# Write a parasol jobList for the SPARK WGS 2026_08 pVCFs: every 2.5 Mb chunk
+# is split into pieces of <pieceSize> bp, and each piece is one job that runs
+# sparkWgs45kPvcfToSites.sh on it.
+# Usage: sparkWgs45kPvcfJobs.sh <pvcfDir> <groups.txt> <outDir> [pieceSize] > jobList
+#   pvcfDir: holds <chrom>/SPARK.WGS.2026_08.gatk.<chrom>_<start>_<end>.vcf.gz
+#   outDir:  gets <chrom>/<chrom>_<pieceStart>.bcf (+ .csi, .norm.log)
+set -euo pipefail
+
+pvcfDir=$(readlink -f "$1")
+groups=$(readlink -f "$2")
+outDir=$(readlink -f "$3")
+pieceSize=${4:-500000}
+scriptDir=$(dirname "$(readlink -f "$0")")
+
+for f in "$pvcfDir"/chr*/*.vcf.gz; do
+    base=$(basename "$f" .vcf.gz)
+    region=${base##*.}                       # e.g. chr21_40000001_42500000
+    chrom=${region%%_*}
+    rest=${region#*_}
+    start=${rest%_*}
+    end=${rest#*_}
+    mkdir -p "$outDir/$chrom"
+    for ((s = start; s <= end; s += pieceSize)); do
+        e=$(( s + pieceSize < end + 1 ? s + pieceSize : end + 1 ))
+        out=$outDir/$chrom/${chrom}_$(printf '%09d' $s).bcf
+        echo "$scriptDir/sparkWgs45kPvcfToSites.sh $f $groups $out $s $e {check out exists $out}"
+    done
+done