679876d6a512dd86f698530e6f2ff17506a21988
kate
  Mon Oct 21 10:56:45 2019 -0700
Add make doc for multiBed file. refs #23693

diff --git src/hg/makeDb/doc/encode3/mouse.txt src/hg/makeDb/doc/encode3/mouse.txt
index c71b3ea..25870c4 100644
--- src/hg/makeDb/doc/encode3/mouse.txt
+++ src/hg/makeDb/doc/encode3/mouse.txt
@@ -1,279 +1,310 @@
 #########################
 # mm10 histone ChIP-seq from Ren lab
 # contact:  David Gorkin
 #
 # (2019-07-03 kate)
 #
 # Expecting 3 tracks:
 #       1. Large composite of ChIP-seq peaks and signal from various marks in various tissues at
 #               different embryonic stages, along with chromHMM for each mark/tissue/stage
 #               (chromHMM may be better as separate track)
 #
 #       2. ATAC-seq (open chromatin) for tissues/stages
 #
 #       3. Possible:  enhancer/gene interactions in interact format
 
 # RM #23693
 
 # Their hub: http://renlab.sdsc.edu/yanxiao/encode_trackhub/hub.txt
 
 # Download files listed in track hub
 
 wget http://renlab.sdsc.edu/yanxiao/encode_trackhub/mm10/trackDb.txt
 
 # winnow to just merged files:
 
 raToLines trackDb.txt stdout | grep Merge > trackDb.merge.lines
 wc -l trackDb.merge.lines
 # 1128
 
 linesToRa trackDb.merge.lines trackDb.merge.ra
 grep bigDataUrl trackDb.merge.ra | sed -e 's/bigDataUrl/wget/' -e 's/.proxy=true//' > wget.csh
 
 mkdir data
 cd data
 csh ../wget.csh >&! ../wget.log &
 
 ls *.bigBed | wc -l
 # 563
 # These are narrowPeak files, however they are configured in hub as bigBed 6 +
 # This config shows track colors (e.g. red for repressive, green for promoter), but
 # doesn't allow filtering on pValue, etc.
 
 # Use files as is from portal, we are not changing so no need to rename
 
 ln -s `pwd` /gbdb/mm10/encode3/histones
 
+#######################
+# Create multiBed file for hideEmptySubtracks feature
+
+# Create file mapping tracks to files
+raToTab $HOME/kent/src/hg/makeDb/trackDb/mouse/mm10/encode3.histone.ra \
+        -cols=track,bigDataUrl stdout | grep bigBed > encode3RenHistonePeaks.tracks.txt
+wc -l encode3RenHistonePeaks.tracks.txt
+# 563 encode3RenHistonePeaks.tracks.txt
+
+# Assign id 1-N to each subtrack
+awk '{print NR, "\t", $1}' < encode3RenHistonePeaks.tracks.txt > \
+                                encode3RenHistonePeaks.multiBedSources.tab
+
+# Create multibed file
+
+cut -f 2 encode3RenHistonePeaks.tracks.txt |  \
+                sed -e 's^.*/^^' -e 's/bigBed/bed/' > encode3RenHistonePeaks.files.txt
+cd data/peakBeds
+bedtools multiinter -i `cat ../../encode3RenHistonePeaks.files.txt` | \
+                                cut -f 1-5 > \
+                                         ../../encode3RenHistonePeaks.multiBed.bed
+
+cd ../..
+bedToBigBed -as=$HOME/kent/src/hg/lib/bed3Sources.as -type=bed3+2 \
+            encode3RenHistonePeaks.multiBed.bed /hive/data/genomes/mm10/chrom.sizes \
+                encode3RenHistonePeaks.multiBed.bb
+# 12 mins elapsed
+
+ln -s `pwd`/encode3RenHistonePeaks.multiBed.bb /gbdb/mm10/encode3/histones/multiBed.bb
+ln -s `pwd`/encode3RenHistonePeaks.multiBedSources.tab /gbdb/mm10/encode3/histones/multiBedSources.tab
+
 ###################
 # chromHMM data
 
 cd ..
 mkdir chromHmm
 cd chromHmm
 wget http://enhancer.sdsc.edu/enhancer_export/ENCODE/chromHMM/readme
 
 mkdir pooled
 cd pooled
 csh ../wget.csh >&! wget.log &
 
 ls *.bb | perl rename.pl > rename.txt
 cp rename.txt rename.csh
 # edit rename.csh to symlink files to /gbdb/mm10/encode3/chromHmm
 
 #################################################
 # ATAC-seq from Ren lab
 # (kate)
 
 # Download signals (.bw) and pooled peaks from Ren lab
 
 wget -r -A bw,pooled_peaks.narrowPeak http://renlab.sdsc.edu/yanxiao/encode_trackhub/mm10/atacseq
 
 mkdir lab
 # move files to lab dir
 
 # Reuse hub config
 #  http://renlab.sdsc.edu/yanxiao/encode_trackhub/
 
 wget http://renlab.sdsc.edu/yanxiao/encode_trackhub/mm10/trackDb.txt
 
 cp /hive/data/outside/encode3/mouse/chromHmm/tracks/rename.pl .
 
 # edit for this track.  Script will take file list and generate a trackDb and file rename/link script
 
 cd lab
 ls *.bw *.narrowPeak | perl ../rename.pl > ../rename.csh
 
 # oops, need to biggify the narrowPeaks (and zero out scores, some of which exceed 1000)
 
 set sizes = /hive/data/genomes/mm10/chrom.sizes
 foreach f (*.narrowPeak)
     set d = $f:r
     mv $f $d.narrowPeak.bad
     awk 'OFS="\t" {$5 = 0; print}' < $d.narrowPeak.bad > $d.narrowPeak
     bedToBigBed -type=bed6+4 -as=$HOME/kent/src/hg/lib/bigNarrowPeak.as $d.narrowPeak $sizes $d.bb
 end
 linesToRa trackDb.atac.lines trackDb.atac.ra
 
 cd ..
 mkdir /gbdb/mm10/encode3/atac
 csh rename.csh
 
 mv trackDb.atac.ra ~/kent/src/hg/makeDb/trackDb/mouse/mm10
 
 # edit for indents, add views
 
 #################################################
 # Update peak files, from Dave Gorkin at Ren Lab
 # Overlapping peaks merged, score field set
 # 09-09-2019
 
 mkdir lab2; cd lab2
 wget -A bed -r -nd http://enhancer.sdsc.edu/enhancer_export/ENCODE/for_ucsc/atac_pooled_peaks/
 
 # oops, they have decimal points in score.  Strip these.
 
 // biggify
 set sizes = /hive/data/genomes/mm10/chrom.sizes
 foreach f (*.bed)
     set d = $f:r
     sed 's/\..*//' < $d.bed > $d.fixed.bed
     bedToBigBed -type=bed5 $d.fixed.bed $sizes $d.bb
 end
 
 # link to /gbdb
 rm /hive/data/gbdb/mm10/encode3/atac/*.bb
 csh rename2.bb.csh
 
 
 ######################################################################################
 # Interact tracks from Ren Lab enhancer/gene map, with EPDnew promoters (JK rec)
 
 # (kate July 2019)
 
 #################
 # Download spreadsheet from Dropbox copy provided by Dave Gorkin
 # https://www.dropbox.com/s/ksxt9k2dh46k2ya/Gorkin_Ren_tableS5-11.xlsx?dl=0
 
 # Gorkin_Ren_EnhancerGene_Rep1.txt
 
 dos2unix Gorkin_Ren_EnhancerGene_Rep1.txt
 tr '\r' '\n' < Gorkin* > enhancerGene.rep1.txt
 
 # edit out title line
 head -1 enhancerGene.rep1.txt
 # chrom   start   end     ensembl symbol  SCC     Z       p-value (z)     p-value (empirical)
 # chr1    4426300 4428300 ENSMUSG00000025902.9    Sox17   6.16E-01        2.07E+00        0.018999025     0.016378526
 
 # The SCC field will be basis of score.  It ranges from .25 to 1.0
 
 # strip trailing empty lines (from bad XLS export)
 
 #################
 # Download promoters from EPDnew (rec from JK)
 # https://epd.epfl.ch/EPDnew_database.php
 
 wget ftp://ccg.epfl.ch/epdnew/README
 wget ftp://ccg.epfl.ch/epdnew/M_musculus/003/cross_references.txt .
 
 # corrupted file ?  First line:
 
 wget ftp://ccg.epfl.ch/epdnew/M_musculus/current/Mm_EPDnew.bed
 
 # This is version 3, file dated 6/4/18
 
 # NOTE: file contains 1 or more promoters per gene.
 # Based on conversations with provider (Philip Bucher), we will merge into a single promoter region
 
 wc -l Mmn_EPDnew.bed
 # 25111
 
 sed 's/_.*900 / 900 /' MM_EPDnew.bed > promoters.temp.bed
 bedtools groupby -g 1,4,5,6 -c 2,3 -o min,max < promoters.temp.bed | \
         awk '{OFS="\t"; print $1, $5, $6, $2, $3, $4}' | \
                 bedSort stdin promoters.bed
 
 wc -l promoters.bed
 # 20549
 # Reduced by 5000
 
 #################
 # Create interact file from interactions and promoters files
 
 perl makeInteract.pl enhancerGene.rep1.txt MM_EPDnew.bed cross_references.txt >&! errors.txt
 
 # strip first two lines from enhancerGene file to make map.rep1.txt
 #perl makeInteract.pl map.rep1.txt promoters.bed cross_references.txt > enhancerGeneInteract.bed
 #Found 30793 interactions with promoters, 1171 with missing promoters
 
 # NOTE: Missing 374 promoters (will need to get these from GB annotation)
 
 # NOTE: Problem with cross-references file. At least one instance of error 
 # Here the ENSG 65324 should be Eno1, not Eno1b (acc to GENCODE V20)
 ENSMUSG00000059040      Eno1b   NM_001025388    Mus musculus enolase 1B, retrotransposed (Eno1b), mRNA.
 ENSMUSG00000063524      Eno1b   NM_023119       Mus musculus enolase 1B, retrotransposed (Eno1b), mRNA.
 
 # NOTE: Problem with duplicated interactions in enhancerGene file -- 2 ENSG's mapped to two
 # gene names (so interactions appear twice):
 
 chr17   13666000        13671200        ENSMUSG00000038347.10   Tcte2   8.69E-01        1.85E+00        0.03221258      0.002229654
 chr17   13666000        13671200        ENSMUSG00000038347.10   2700054A10Rik   8.69E-01        1.85E+00        0.03221258      0.002229654
 
 chr12     57514900        57516900        ENSMUSG00000046782.10   4921506M07Rik   4.82E-01        1.75E+00        0.039890209     0.04302926
 chr12     57514900        57516900        ENSMUSG00000046782.10   Ttc6    4.82E-01        1.75E+00        0.039890209     0.04302926
 
 
 bedSort enhancerGene.rep1.txt.out encode3EnhancerPromoterInteract.bed
 
 # Biggify interactions
 mkdir gbdb
 set sizes = /hive/data/genomes/mm10/chrom.sizes
 bedToBigBed -type=bed5+13 -as=enhancerPromoterInteract.as encode3EnhancerPromoterInteract.bed \
                   $sizes gbdb/encode3EnhancerPromoterInteract.bb
 cd /gbdb
 ln -s `pwd`/encode3EnhancerPromoterInteract.bb /gbdb/mm10/bbi
 cd ..
 
 # Biggify promoters file
 bedSort MM_EPDnew.bed.out epdPromoters3.bed
 
 # TODO: add more fields ?
 bedToBigBed -type=bed9 epdPromoters3.bed \
                 $sizes gbdb/epdProomoters3.bb
 cd gbdb
 ln -s `pwd`/epdPromoters3.bb /gbdb/mm10/bbi
 cd ..
 
 
 # old
 #hgLoadBed mm10 -noSort -noBin -type=bed5+13 \
         #-sqlTable=/cluster/home/kate/kent/src/hg/lib/interact.sql -renameSqlTable \
             #encode3EnhancerPromoter enhancerGeneInteract.bed
             #encode3RenEnhancerGeneInteract enhancerGeneInteract.bed
 
 
 # merge replicates, stripping extra columns, adding a column for count.  
 
 # export from spreadsheet.  Trim empty lines.  dos2unix.  tr \m's to \n's.
 wc -l map.*
   31964 map.rep1.txt
   33301 map.rep2.txt
   21142 map.replicated.txt
 
 perl mergeReps.pl map.rep1.txt map.rep2.txt | bedSort stdin map.merged.txt
 
 mkdir out
 perl makeInteract.pl map.merged.txt MM_EPDnew.bed cross_references.txt out/ >&! makeInteract.log
 bedSort out/enhancers.all.bed out/enhancers.all.sorted.bed
 bedSort out/enhancers.rep.bed out/enhancers.rep.sorted.bed
 
 # why needed ???
 bedSort out/interactions.all.bed out/interactions.all.sorted.bed
 bedSort out/interactions.rep.bed out/interactions.rep.sorted.bed
 
 # biggify
 set sizes = /hive/data/genomes/mm10/chrom.sizes
 bedToBigBed -type=bed5+14 -as=enhancerPromoterInteract.as out/interactions.all.sorted.bed \
                   $sizes gbdb/encode3EnhancerPromoterInteractAll.bb
 bedToBigBed -type=bed5+14 -as=enhancerPromoterInteract.as out/interactions.rep.sorted.bed \
                   $sizes gbdb/encode3EnhancerPromoterInteractRep.bb
 
 # TODO: add more fields
 bedToBigBed -type=bed9 out/promoters.all.bed \
                 $sizes gbdb/epdPromoterAll.bb
 bedToBigBed -type=bed9 out/promoters.rep.bed \
                 $sizes gbdb/epdPromoterRep.bb
 
 bedToBigBed -type=bed4 out/enhancers.all.sorted.bed \
                 $sizes gbdb/encode3EnhancerAll.bb
 bedToBigBed -type=bed4 out/enhancers.rep.sorted.bed \
                 $sizes gbdb/encode3EnhancerRep.bb
 cd gbdb
 foreach f (epdPromoterAll epdPromoterRep encode3EnhancerAll encode3EnhancerRep encode3EnhancerPromoterInteractAll encode3EnhancerPromoterInteractRep)
     ln -s `pwd`/$f.bb /gbdb/mm10/bbi
 end
 
 cd gbdb
 ln -s `pwd`/epdPromoters3.bb /gbdb/mm10/bbi
 
 # NOTE: Renamed .bb files to prefix w/ encode3Ren/encode3RenInteract