4eb8ce4c1204debcf7cf81f1de5af5a3dd9343d3
gperez2
  Fri May 22 17:27:25 2026 -0700
The author requested updating the per-tissue colors to gradients. Updated the mouseDevTimecourse legend HTML to match the new colors and documented the data file update in the mm10 and mm39 makedocs. refs #37001

diff --git src/hg/makeDb/doc/mm39/mouseDevTimecourse.txt src/hg/makeDb/doc/mm39/mouseDevTimecourse.txt
index ddc3f29f0e0..3af70f1ab91 100644
--- src/hg/makeDb/doc/mm39/mouseDevTimecourse.txt
+++ src/hg/makeDb/doc/mm39/mouseDevTimecourse.txt
@@ -1,91 +1,182 @@
 # Mouse Development Timecourse bulk RNA-seq (2026-04-10 Gerardo)
 # Converting track hub from Wold Lab (Caltech) into native tracks.
 # Hub URL: http://woldlab.caltech.edu/~diane/mouse_development_bulk/mouse_development.hub.txt
 # Publication: https://www.encodeproject.org/publications/e0d01543-9965-4edb-933c-778a40575cd9/
 # mm39 data are liftOver'd from mm10 GENCODE M21 alignments.
 # 17 tissues, up to 8 timepoints (e10.5-e16.5, P0), two replicates per condition.
 # bigBarChart tracks with FPKM and TPM from RSEM.
 
 # Download data files from hub to /hive/data/outside/
 mkdir -p /hive/data/outside/woldlab/mouseDevTimecourse/mm39
 cd /hive/data/outside/woldlab/mouseDevTimecourse/mm39
 
 for f in mouse_development_TPM_M21_mm39.bb mouse_development_FPKM_M21_mm39.bb \
     mouse_development_M21.categories mouse_development_M21.facets; do
     curl -o "$f" "http://woldlab.caltech.edu/~diane/mouse_development_bulk/$f"
 done
 
 # Create symlinks in /gbdb/mm39/
 mkdir -p /gbdb/mm39/mouseDevTimecourse
 cd /gbdb/mm39/mouseDevTimecourse
 for f in /hive/data/outside/woldlab/mouseDevTimecourse/mm39/*; do
     ln -s "$f" .
 done
 
 # Add trackDb entry
 cd ~/kent/src/hg/makeDb/trackDb/mouse/mm39
 # Created mouseDevTimecourse.ra (superTrack with 2 bigBarChart subtracks)
 # Created HTML description files:
 #   mouseDevTimecourse.html (supertrack)
 #   developmentTimecourseM21mm39TPM.html
 #   developmentTimecourseM21mm39FPKM.html
 # Added "include mouseDevTimecourse.ra" to trackDb.ra
 
 # Load trackDb
 cd ~/kent/src/hg/makeDb/trackDb
 make DBS=mm39
 
 # 2026-05-13 (Gerardo): Reorder tissue rows in .facets files per author
 # request. Redmine #36998 note-43. Peng (lead author) asked
 # for the tissues to be displayed in his biological order instead of the
 # alphabetical order from the hub. The reorder is made to the files in
 # /hive/data/outside/woldlab/mouseDevTimecourse/mm39/ only; the hub at
 # woldlab.caltech.edu still has the alphabetical order, so re-running the
 # curl above will overwrite the reorder and require re-running the snippet
 # below.
 
 cd /hive/data/outside/woldlab/mouseDevTimecourse/mm39
 
 python3 <<'EOF'
 TISSUE_ORDER = [
     "thymus",
     "spleen",
     "liver",
     "heart",
     "skeletal muscle tissue",
     "urinary bladder",
     "adrenal gland",
     "kidney",
     "lung",
     "stomach",
     "intestine",
     "limb",
     "embryonic facial prominence",
     "forebrain",
     "midbrain",
     "hindbrain",
     "neural tube",
 ]
 FILES = ["mouse_development_M21.facets"]
 
 for path in FILES:
     with open(path) as f:
         lines = f.readlines()
     header = lines[0]
     data = []
     for ln in lines[1:]:
         if ln.strip():
             data.append(ln)
     groups = {}
     for ln in data:
         cols = ln.rstrip("\n").split("\t")
         groups.setdefault(cols[2], []).append(ln)
     out = [header]
     for tissue in TISSUE_ORDER:
         for ln in groups[tissue]:
             out.append(ln)
     with open(path, "w") as f:
         f.writelines(out)
     print("reordered: " + path + "  (" + str(len(data)) + " rows)")
 EOF
+
+# 2026-05-21 (Gerardo): Update colors in .facets and .categories files per
+# author request via the Cell Browser team (Brittney Wick). Redmine #37001
+# note-23. Peng asked that the bar colors match the per-sample colors used in
+# the Cell Browser. Brittney provided a tab-separated file with the colors at
+# /hive/data/inside/cells/datasets/mouse-encode-rna/sample_colors.tsv (78 rows,
+# one color per (tissue, timepoint) pair, encoded as gradients within each
+# tissue from light at the earliest time point to dark at P0). The update is
+# made to the files in /hive/data/outside/woldlab/mouseDevTimecourse/mm39/
+# only; the hub at woldlab.caltech.edu still has the old per-tissue colors,
+# so re-running the curl above will overwrite the colors and require re-running
+# the snippet below.
+
+cd /hive/data/outside/woldlab/mouseDevTimecourse/mm39
+
+python3 <<'EOF'
+TISSUE_MAP = {
+    "adrenal": "adrenal gland",
+    "bladder": "urinary bladder",
+    "face": "embryonic facial prominence",
+    "forebrain": "forebrain",
+    "heart": "heart",
+    "hindbrain": "hindbrain",
+    "intestine": "intestine",
+    "kidney": "kidney",
+    "limbs": "limb",
+    "liver": "liver",
+    "lung": "lung",
+    "midbrain": "midbrain",
+    "muscle": "skeletal muscle tissue",
+    "neuraltube": "neural tube",
+    "spleen": "spleen",
+    "stomach": "stomach",
+    "thymus": "thymus",
+}
+
+# Build (tissue, timepoint) -> color from Brittney's TSV
+tsv = {}
+with open("/hive/data/inside/cells/datasets/mouse-encode-rna/sample_colors.tsv") as f:
+    f.readline()
+    for line in f:
+        line = line.rstrip("\n")
+        if not line:
+            continue
+        sample, color = line.split("\t")
+        tissue_part, _, tp = sample.rpartition("_")
+        our_tissue = TISSUE_MAP[tissue_part]
+        our_tp = "P0" if tp == "p0" else tp
+        tsv[(our_tissue, our_tp)] = color
+
+# Update .facets files (column 5 is the color)
+for facets in ["mouse_development_M21.facets"]:
+    with open(facets) as f:
+        lines = f.readlines()
+    out = [lines[0]]
+    for line in lines[1:]:
+        if not line.strip():
+            continue
+        cols = line.rstrip("\n").split("\t")
+        cols[4] = tsv[(cols[2], cols[3])]
+        out.append("\t".join(cols) + "\n")
+    with open(facets, "w") as f:
+        f.writelines(out)
+    print("updated .facets: " + facets)
+
+# Update .categories files (column 2 is the color). Look up each label's
+# color in the matching .facets file (column 5).
+for facets, cats in [("mouse_development_M21.facets",
+                      "mouse_development_M21.categories")]:
+    label_color = {}
+    with open(facets) as f:
+        f.readline()
+        for line in f:
+            if not line.strip():
+                continue
+            cols = line.rstrip("\n").split("\t")
+            label_color[cols[0]] = cols[4]
+    with open(cats) as f:
+        lines = f.readlines()
+    out = []
+    for line in lines:
+        if not line.strip():
+            out.append(line)
+            continue
+        cols = line.rstrip("\n").split("\t")
+        cols[1] = label_color[cols[0]]
+        out.append("\t".join(cols) + "\n")
+    with open(cats, "w") as f:
+        f.writelines(out)
+    print("updated .categories: " + cats)
+EOF
 ##############################################################################