63653eb7f4fcccfedec87fe115ed0a954012c3ad
max
  Thu Apr 30 05:46:04 2026 -0700
Adding new "m6A-Atlas v2 sites" track under rnaMod superTrack on hg38: 427760 high-confidence base-resolution m6A sites compiled by m6A-Atlas v2 (Liang 2024) from 12 detection technologies across 24 cell lines / tissues. Filters on region, technique, cell line, biotype, #techniques, #cell lines. Track lives in its own m6aAtlas.ra file, included alpha-only via trackDb.ra, refs #36613

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

diff --git src/hg/makeDb/doc/hg38/rnaMod.txt src/hg/makeDb/doc/hg38/rnaMod.txt
index 65ba5cdd5c1..52db49d9ad7 100644
--- src/hg/makeDb/doc/hg38/rnaMod.txt
+++ src/hg/makeDb/doc/hg38/rnaMod.txt
@@ -1,21 +1,22 @@
 # 2026-04-29 Claude / Max -- DRACH (m6A consensus) motif track on hg38
 
 # The "rnaMod" supertrack groups RNA-modification annotations on hg38.
 # Currently it contains:
 #   - fetalXiao2019  (built earlier, not documented here)
 #   - drach          (built below)
+#   - m6aAtlas       (built below; high-confidence m6A sites from m6A-Atlas v2)
 
 ###############################################################################
 # DRACH motif sites in MANE Select transcripts (Claude, 2026-04-29)
 ###############################################################################
 
 # All DRACH 5-mers (D=A/G/T, R=A/G, A, C, H=A/C/T) are extracted from MANE
 # Select v1.5 mature transcript fasta and lifted to hg38 genome coordinates
 # via pslMap. The result is a bigBed 12+5 with empty `name` and gene/motif
 # metadata in extra columns.
 
 mkdir -p /hive/data/genomes/hg38/bed/rnaMod/drach
 cd /hive/data/genomes/hg38/bed/rnaMod/drach
 
 # the build is fully driven by one shell script; see the directory for helpers
 ~/kent/src/hg/makeDb/scripts/rnaMod/makeDrach.sh
@@ -48,15 +49,48 @@
 #   Motifs mapped to genome (pslToBed):   1381109
 #   Final features in drach.bb:           1381109
 #   Multi-block (splice junction):           13174   (~0.95%)
 
 # Symlink into /gbdb (one-time):
 #   ln -sf /hive/data/genomes/hg38/bed/rnaMod/drach/drach.bb \
 #          /gbdb/hg38/rnaMod/drach.bb
 
 # trackDb stanza was added to ~/kent/src/hg/makeDb/trackDb/human/hg38/rnaMod.ra
 # under the existing `track rnaMod` supertrack. Filters were added for `motif`
 # and `region`, with no defaults.
 
 # Off-by-one verification (single-block + and -, multi-block + spanning a
 # splice junction) was performed against /hive/data/genomes/hg38/hg38.2bit and
 # all three sample motifs round-tripped correctly.
+
+###############################################################################
+# m6A-Atlas v2 high-confidence sites on hg38 (Claude, 2026-04-29)
+# PMID 37587690  Liang Z et al, NAR 2024;52(D1):D194-D202
+###############################################################################
+
+# m6A-Atlas v2.0 distributes a "high-confidence" base-resolution m6A site
+# list per species. We use the human (hg38) "Cell line / Technique" file,
+# which already aggregates per-site evidence across GEO studies.
+
+mkdir -p /hive/data/genomes/hg38/bed/rnaMod/m6aAtlas
+cd /hive/data/genomes/hg38/bed/rnaMod/m6aAtlas
+aria2c -x10 http://rnamd.org/m6a/download/high/hg38/hg38_CL_Tech.txt.gz
+
+# Convert to bed9+15 (1-based -> 0-based half-open, region color, score from
+# nTechniques/nCellLines, m6A-Atlas detail URL).
+python3 ~/kent/src/hg/makeDb/scripts/rnaMod/m6aAtlasToBed.py \
+    hg38_CL_Tech.txt.gz m6aAtlas.bed 2> m6aAtlas.convert.log
+
+sort -k1,1 -k2,2n m6aAtlas.bed > m6aAtlas.sorted.bed
+bedToBigBed -tab -type=bed9+15 \
+    -as=$HOME/kent/src/hg/makeDb/scripts/rnaMod/m6aAtlas.as \
+    -extraIndex=name,geneName,ensemblId \
+    m6aAtlas.sorted.bed /hive/data/genomes/hg38/chrom.sizes m6aAtlas.bb
+
+# Driver and helpers:
+#   ~/kent/src/hg/makeDb/scripts/rnaMod/m6aAtlasToBed.py
+#   ~/kent/src/hg/makeDb/scripts/rnaMod/m6aAtlas.as
+
+# Build summary (recorded after the run):
+#   Source rows (data lines in hg38_CL_Tech.txt.gz):  427760
+#   Output features in m6aAtlas.bb:                   427760
+#   Skipped (unknown chrom or out-of-bounds):              0