828e18dedab727a70100512daa1c13ecb3a243a2 braney Wed Jul 8 09:09:16 2026 -0700 moved pngToLolly out of the kent tree diff --git src/utils/pngToLolly/README.md src/utils/pngToLolly/README.md deleted file mode 100644 index 8c4b2de9f72..00000000000 --- src/utils/pngToLolly/README.md +++ /dev/null @@ -1,95 +0,0 @@ -# pngToLolly - -Render a PNG image as a UCSC Genome Browser "stemless lolly" bigLolly track: -the picture becomes a mosaic of colored dots, one dot per opaque pixel of the -downscaled image. Each dot's column maps to a genomic position, its row to the -lolly value (vertical position), and its color to itemRgb. Local image detail -("busyness") varies the dot size. - -## Build - -``` -cd kent/src/utils/pngToLolly -make -``` - -The binary installs to `~/bin/$MACHTYPE/pngToLolly`. - -## Run - -``` -pngToLolly in.png outDir -cd outDir && ./makeHub.sh -# move outDir under ~/public_html, then load the printed hubUrl -``` - -`makeHub.sh` runs `faToTwoBit`/`fetchChromSizes` and `bedToBigBed` to turn the -emitted text files into the `2bit`/`bigBed` the hub serves. - -### Two output modes - -* **Synthetic assembly (default).** Emits a self-contained assembly hub on a - blank one-chromosome genome (`chrImg` / `lollyImg`). The image fills the whole - synthetic chromosome. - -* **Track hub on an existing assembly** (`-db` + `-pos`). Lays the mosaic across - a real genomic window, e.g. over a gene: - - ``` - pngToLolly -db=hg38 -pos=chr19:11087000-11136000 monaLisa.png outDir - ``` - - `makeHub.sh` then fetches the real `chrom.sizes` for the assembly. - -### Viewing URL - -The tool prints a ready-to-edit `hgTracks` URL. To show only the mosaic plus, -say, the MANE track and hide everything else: - -``` -https://genome.ucsc.edu/cgi-bin/hgTracks?db=hg38&hubUrl=<pub>/outDir/hub.txt&position=chr19:11087000-11136000&pix=500&hideTracks=1&mane=pack&lollyImg=squish -``` - -Add `&udcTimeout=1` to defeat the browser's UDC cache while iterating (otherwise -a rebuilt `img.bb` at the same URL keeps serving the old data). - -## Options - -``` --maxDim=N longest side of the image after downscaling (default 64). More - dots -> finer spatial detail. --dotSize=N on-screen dot diameter in pixels (default 8); also sets the track - height, and therefore the on-screen aspect ratio (see below). --sizeVar=N neighborhood radius for measuring local variation (default 1). - 0 turns size variation off. --sizeLo=F smallest dot radius as a fraction of the tiling radius (default - 0.65); used for ordinarily-busy areas. --sizeBusy=F extra-small radius fraction for the very busiest areas (default - 0.4); set equal to sizeLo to disable. --sizeHi=F largest dot radius fraction (default 2.3); used for flat areas. --invertSize make busy areas big and flat areas small (default is the reverse). --jitter=F random horizontal nudge per dot, in fractions of a column - (default 0.3); 0 turns it off. --alpha=N skip pixels whose alpha is below N (0-255, default 128). --name=string short label for the track (default derived from outDir). --db=database emit a track hub for this existing assembly instead of a synthetic - one (requires -pos). --pos=chr:s-e genomic window the mosaic spans, when -db is set. -``` - -## Sizing notes (important) - -The browser renders a lolly's radius as `lollySize * trackHeight / 100`, rounded -to a whole pixel, and `trackHeight` is fixed by the canvas width needed to keep -the picture's proportions. Two consequences: - -* **The smallest possible dot radius is about `pix / 67`.** At `pix=1000` that - is ~15 px; at `pix=500`, ~7.5 px; at `pix=240`, ~4 px. To get small, crisp - dots, use a smaller canvas (`pix`). The bp width of the window does **not** - affect dot size (dots are sized in pixels); only `pix` does. - -* **Size variation is quantized** to steps of `trackHeight / 100` (~`pix/67` px). - A large canvas gives few distinct dot sizes; a small canvas gives finer - variation. Generate with a `dotSize` matched to the `pix` you intend to view - at (the printed URL uses `pix = maxDim_width * dotSize`); viewing at a very - different `pix` distorts the proportions.