cellbrowser 1.2.17.2__tar.gz → 1.2.18__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cellbrowser-1.2.17.2/src/cbPyLib/cellbrowser.egg-info → cellbrowser-1.2.18}/PKG-INFO +1 -1
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/README.rst +1 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/R/cellbrowser.R +110 -1
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/_version.py +4 -4
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/css/cellBrowser.css +142 -29
- cellbrowser-1.2.18/src/cbPyLib/cellbrowser/cbWeb/css/darkMode-claude.css +793 -0
- cellbrowser-1.2.18/src/cbPyLib/cellbrowser/cbWeb/css/darkMode.css +1568 -0
- cellbrowser-1.2.18/src/cbPyLib/cellbrowser/cbWeb/ext/minisearch.min.js +8 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/js/cbData.js +88 -38
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/js/cellBrowser.js +2898 -686
- cellbrowser-1.2.18/src/cbPyLib/cellbrowser/cbWeb/js/maxHeat.js +1066 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/js/maxPlot.js +1885 -436
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cellbrowser.py +327 -42
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/convert.py +12 -1
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/geneinfo.py +145 -32
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/seurat.py +28 -3
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18/src/cbPyLib/cellbrowser.egg-info}/PKG-INFO +1 -1
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser.egg-info/SOURCES.txt +3 -0
- cellbrowser-1.2.17.2/src/cbPyLib/cellbrowser/cbWeb/js/maxHeat.js +0 -492
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/LICENSE +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/MANIFEST.in +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/setup.cfg +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/setup.py +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/RangeHTTPServer/__init__.py +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/RangeHTTPServer/__main__.py +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/__init__.py +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/bw_genes.py +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.eot +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.ttf +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.woff +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.woff2 +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/Chart.bundle.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/FastBitSet.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/FileSaver.1.1.20151003.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/OverlayScrollbars.min.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap-dropmenu.min.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap-submenu.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap-submenu.min.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap.3.3.7.min.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap.min.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/chartjs-chart-box-and-violin-plot.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen-sprite.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen-sprite@2x.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen.1.8.2.min.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen.jquery.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/drawImage-clipper.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/font-awesome.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/googleMaterialIcons.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/hamster.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_444444_256x240.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_555555_256x240.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_777620_256x240.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_777777_256x240.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_cc0000_256x240.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_ffffff_256x240.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/intro.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/introjs.2.4.0.min.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery-ui-1.12.1.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery-ui.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.3.1.1.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.contextMenu.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.contextMenu.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.event.drag-2.3.0.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.overlayScrollbars.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.sparkline.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tablesorter.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tablesorter.widgets.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tipsy.1.0.3.min.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tipsy.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.ui.position.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jsurl2.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/lz-string.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/materialIcons.woff +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/minified.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/mousetrap.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/normalizeWheel.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/pako_inflate.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/palette.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/papaparse.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/reorder.v1.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/scaleColorPerceptual.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/science.v1.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/select2.4.0.4.min.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/select2.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/selectize.bootstrap3.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/selectize.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.cellrangedecorator.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.cellrangeselector.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.cellselectionmodel.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.core.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.editors.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.examples.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.formatters.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.grid.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.grid.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/spectrum-1.8.0.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/spectrum.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/split.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/tablesort.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/tablesort.number.min.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/.npmignore +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/LICENSE +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/Makefile +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/README.md +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/browser.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/build.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/example/d3-random-matrix.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/example/example.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/example/gradients.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/example/package.json +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/hex/inferno.json +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/hex/magma.json +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/hex/plasma.json +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/hex/viridis.json +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/inferno.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/magma.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/package.json +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/plasma.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/rgb/inferno.json +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/rgb/magma.json +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/rgb/plasma.json +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/rgb/viridis.json +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/utils/hex2rgb.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/utils/interpolate.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/utils/rgb2hex.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/viridis.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/theme.bootstrap_3.css +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/tiny-queue.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/files.json +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/hg19.gc34.tsv +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/hg19.json.gz +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/hg38.gc34.tsv +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/hg38.json.gz +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/log.txt +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/makeGenes.py +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/mm10.json.gz +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/mm10.vm25.tsv +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/README.md +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/center.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/README.txt +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/gtk-justify-left.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/gtk-save.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/log.txt +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-center-16.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-center-24.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-controller-16.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-controller-24.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-edit-16.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-gravity-west-24.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-info-16.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-info-24.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-merge-down-16.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-scale-16.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-free-select-16.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-free-select-22.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-move-16.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-move-22.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-rect-select-16.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-rect-select-22.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-zoom-16.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-zoom-22.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/icons8-help-32.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/info.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/lasso.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/marker.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/move.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/select.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/zoom.png +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/js/violinWorker.js +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/download.py +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/genes.py +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/hubmaker.py +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/sampleConfig/cellbrowser.conf +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/sampleConfig/desc.conf +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/sampleConfig/hub.conf +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/sampleConfig/scanpy.conf +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/sampleConfig/seurat.conf +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/sampleConfig/summary.html +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser.egg-info/dependency_links.txt +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser.egg-info/entry_points.txt +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser.egg-info/not-zip-safe +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser.egg-info/top_level.txt +0 -0
- {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/versioneer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cellbrowser
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.18
|
|
4
4
|
Summary: UCSC Cellbrowser, an interactive browser for single cell data. Includes converters and basic pipelines for text files, Seurat, Scanpy and Cellranger.
|
|
5
5
|
Home-page: https://github.com/maximilianh/cellBrowser
|
|
6
6
|
Author: Maximilian Haeussler
|
|
@@ -64,6 +64,7 @@ Many labs host their data at cells.ucsc.edu by sending it to us, but some groups
|
|
|
64
64
|
* RNA Bioscience Initiative: https://www.pneuroonccellatlas.org/ and https://github.com/rnabioco/lung-scrna
|
|
65
65
|
* Paul Gontarz, WUSTL, http://regmedsrv1.wustl.edu/Public_SPACE/pgontarz/Public_html/cellbrower/Exp1/
|
|
66
66
|
* Dylan Farnsworth, U Oregon, https://pages.uoregon.edu/drf/browser/lens_230620/
|
|
67
|
+
* Alex Lemonade Stand Foundation, only requires email, https://scpca.alexslemonade.org/visualize
|
|
67
68
|
|
|
68
69
|
These are some papers that reference cell browsers made at UCSC but there are many more, search for "cells.ucsc.edu" in Google Scholar to find more:
|
|
69
70
|
|
|
@@ -1,6 +1,110 @@
|
|
|
1
1
|
# Build a UCSC cell browser website from a \code{Seurat} object
|
|
2
2
|
#
|
|
3
3
|
NULL
|
|
4
|
+
|
|
5
|
+
#' Convert a \code{SpatialExperiment} object to a \code{Seurat} object
|
|
6
|
+
#'
|
|
7
|
+
#' Detects whether the object is a Visium or Xenium experiment based on the
|
|
8
|
+
#' spatial coordinate column names, then dispatches to the appropriate helper.
|
|
9
|
+
#' Spatial coordinates are stored as a dimensionality reduction named "spatial"
|
|
10
|
+
#' so that \code{ExportToCellbrowser} exports them as a layout.
|
|
11
|
+
#'
|
|
12
|
+
#' @param spe A \code{SpatialExperiment} object
|
|
13
|
+
#' @return A \code{Seurat} object
|
|
14
|
+
#'
|
|
15
|
+
SpatialExperimentToSeurat <- function(spe) {
|
|
16
|
+
if (!requireNamespace("SpatialExperiment", quietly = TRUE)) {
|
|
17
|
+
stop("Package 'SpatialExperiment' is required to convert SpatialExperiment objects. ",
|
|
18
|
+
"Install with: BiocManager::install('SpatialExperiment')")
|
|
19
|
+
}
|
|
20
|
+
coord_cols <- colnames(SpatialExperiment::spatialCoords(spe))
|
|
21
|
+
if (all(c("x_centroid", "y_centroid") %in% coord_cols)) {
|
|
22
|
+
message("Detected Xenium SpatialExperiment")
|
|
23
|
+
return(.xeniumSpeToSeurat(spe))
|
|
24
|
+
} else {
|
|
25
|
+
message("Detected Visium SpatialExperiment")
|
|
26
|
+
return(.visiumSpeToSeurat(spe))
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.xeniumSpeToSeurat <- function(spe) {
|
|
31
|
+
counts_mat <- SummarizedExperiment::assay(spe, "counts")
|
|
32
|
+
metadata <- SummarizedExperiment::colData(spe)
|
|
33
|
+
coords <- SpatialExperiment::spatialCoords(spe)
|
|
34
|
+
|
|
35
|
+
# Xenium cell IDs contain special characters; sanitize with make.names()
|
|
36
|
+
colnames(counts_mat) <- make.names(colnames(counts_mat))
|
|
37
|
+
metadata_df <- as.data.frame(metadata)
|
|
38
|
+
rownames(metadata_df) <- make.names(rownames(metadata_df))
|
|
39
|
+
# SPE Xenium coords have no rownames; assign from original cell names
|
|
40
|
+
coords_df <- as.data.frame(coords)
|
|
41
|
+
rownames(coords_df) <- make.names(colnames(spe))
|
|
42
|
+
|
|
43
|
+
seurat_obj <- CreateSeuratObject(counts = counts_mat)
|
|
44
|
+
seurat_obj@meta.data <- cbind(
|
|
45
|
+
seurat_obj@meta.data,
|
|
46
|
+
metadata_df[rownames(seurat_obj@meta.data), ]
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
seurat_obj@meta.data$x_centroid <- coords_df[rownames(seurat_obj@meta.data), "x_centroid"]
|
|
50
|
+
seurat_obj@meta.data$y_centroid <- coords_df[rownames(seurat_obj@meta.data), "y_centroid"]
|
|
51
|
+
|
|
52
|
+
spatial_mat <- as.matrix(seurat_obj@meta.data[, c("x_centroid", "y_centroid")])
|
|
53
|
+
colnames(spatial_mat) <- c("spatial_1", "spatial_2")
|
|
54
|
+
seurat_obj[["spatial"]] <- CreateDimReducObject(
|
|
55
|
+
embeddings = spatial_mat, key = "spatial_", assay = "RNA"
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
seurat_obj <- NormalizeData(seurat_obj)
|
|
59
|
+
seurat_obj <- FindVariableFeatures(seurat_obj)
|
|
60
|
+
seurat_obj <- ScaleData(seurat_obj)
|
|
61
|
+
seurat_obj <- RunPCA(seurat_obj)
|
|
62
|
+
|
|
63
|
+
message("Xenium conversion complete: ", ncol(seurat_obj), " cells, ", nrow(seurat_obj), " genes")
|
|
64
|
+
return(seurat_obj)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.visiumSpeToSeurat <- function(spe) {
|
|
68
|
+
counts_mat <- SummarizedExperiment::assay(spe, "counts")
|
|
69
|
+
coords <- SpatialExperiment::spatialCoords(spe)
|
|
70
|
+
metadata <- SummarizedExperiment::colData(spe)
|
|
71
|
+
|
|
72
|
+
seurat_obj <- CreateSeuratObject(
|
|
73
|
+
counts = counts_mat,
|
|
74
|
+
meta.data = as.data.frame(metadata)
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
# Try direct barcode matching first; fall back to stripping sample suffixes
|
|
78
|
+
# (e.g. "ACGTACGT_sample1" in the Seurat object vs "ACGTACGT" in the SPE)
|
|
79
|
+
coords_df <- as.data.frame(coords)
|
|
80
|
+
if (all(rownames(seurat_obj@meta.data) %in% rownames(coords_df))) {
|
|
81
|
+
matched_coords <- coords_df[rownames(seurat_obj@meta.data), ]
|
|
82
|
+
} else {
|
|
83
|
+
message("Direct barcode matching failed; retrying with suffix stripping")
|
|
84
|
+
cell_prefixes <- sub("_.*", "", rownames(seurat_obj@meta.data))
|
|
85
|
+
matched_coords <- coords_df[cell_prefixes, ]
|
|
86
|
+
if (anyNA(matched_coords[, 1]))
|
|
87
|
+
warning("Some spatial coordinates could not be matched to cell barcodes")
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
seurat_obj@meta.data$imagerow <- matched_coords[, 1]
|
|
91
|
+
seurat_obj@meta.data$imagecol <- matched_coords[, 2]
|
|
92
|
+
|
|
93
|
+
spatial_mat <- as.matrix(seurat_obj@meta.data[, c("imagecol", "imagerow")])
|
|
94
|
+
colnames(spatial_mat) <- c("spatial_1", "spatial_2")
|
|
95
|
+
seurat_obj[["spatial"]] <- CreateDimReducObject(
|
|
96
|
+
embeddings = spatial_mat, key = "spatial_", assay = "RNA"
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
seurat_obj <- NormalizeData(seurat_obj)
|
|
100
|
+
seurat_obj <- FindVariableFeatures(seurat_obj)
|
|
101
|
+
seurat_obj <- ScaleData(seurat_obj)
|
|
102
|
+
seurat_obj <- RunPCA(seurat_obj)
|
|
103
|
+
|
|
104
|
+
message("Visium conversion complete: ", ncol(seurat_obj), " cells, ", nrow(seurat_obj), " genes")
|
|
105
|
+
return(seurat_obj)
|
|
106
|
+
}
|
|
107
|
+
|
|
4
108
|
#' used by ExportToCellbrowser:
|
|
5
109
|
#' Return a matrix object from a Seurat object or show an error message
|
|
6
110
|
#'
|
|
@@ -12,7 +116,12 @@ findMatrices = function(object, slotNames ) {
|
|
|
12
116
|
slotMatrices = list()
|
|
13
117
|
slots <- list()
|
|
14
118
|
for (slotName in slotNames) {
|
|
15
|
-
|
|
119
|
+
# work around the pointless deprecation warning which triggers errors in Seurat5/R4.1 installs
|
|
120
|
+
if (packageVersion("Seurat") >= "5.0.0") {
|
|
121
|
+
mat <- LayerData(object = object, layer = slotName)
|
|
122
|
+
} else {
|
|
123
|
+
mat <- GetAssayData(object = object, slot = slotName)
|
|
124
|
+
}
|
|
16
125
|
if (slotName == "scale.data")
|
|
17
126
|
slotName <- "scale" # dots in filenames are not good
|
|
18
127
|
# do not use any prefixes if we export just a single matrix (stay compatible with old code)
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2026-
|
|
12
|
-
"dirty":
|
|
11
|
+
"date": "2026-06-04T08:52:42-0700",
|
|
12
|
+
"dirty": true,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.2.
|
|
14
|
+
"full-revisionid": "c09cf26bfbea561975af659004344a386b68819f",
|
|
15
|
+
"version": "1.2.18"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
{cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/css/cellBrowser.css
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* tsneViewer.js class definitions */
|
|
2
2
|
/* * {padding: 0; margin: 0} */ /* important, otherwise precise placement is impossible */
|
|
3
3
|
/* body { font-family: Roboto, sans-serif } */
|
|
4
|
-
body { font-family: Arial,Helvetica,sans-serif;
|
|
4
|
+
body { font-family: Arial,Helvetica,sans-serif; line-height:1.0; overflow:hidden }
|
|
5
5
|
canvas { user-select: none }
|
|
6
6
|
|
|
7
7
|
section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
|
|
@@ -49,7 +49,10 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
.tpTitle {
|
|
52
|
+
position: absolute;
|
|
52
53
|
z-index: 100;
|
|
54
|
+
border-radius: 3px;
|
|
55
|
+
padding: 2px 4px;
|
|
53
56
|
}
|
|
54
57
|
|
|
55
58
|
.tpGeneExprCombo {
|
|
@@ -83,29 +86,32 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
|
|
|
83
86
|
display : block;
|
|
84
87
|
position : absolute;
|
|
85
88
|
font-size : 16px;
|
|
89
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
86
90
|
color: white;
|
|
87
91
|
text-shadow:
|
|
88
|
-
1px 1px 0
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
-1px
|
|
92
|
-
1px 1px 0 #000;
|
|
92
|
+
1px 1px 2px rgba(0,0,0,0.8),
|
|
93
|
+
-1px -1px 2px rgba(0,0,0,0.8),
|
|
94
|
+
1px -1px 2px rgba(0,0,0,0.8),
|
|
95
|
+
-1px 1px 2px rgba(0,0,0,0.8);
|
|
93
96
|
}
|
|
94
97
|
|
|
95
98
|
.sliderContainer {
|
|
96
|
-
position
|
|
99
|
+
position: absolute;
|
|
97
100
|
display: grid;
|
|
98
|
-
grid-template-columns: 45px 120px
|
|
99
|
-
|
|
101
|
+
grid-template-columns: 45px 120px 20px;
|
|
102
|
+
}
|
|
103
|
+
#mpSliderDiv {
|
|
104
|
+
padding: 2px 6px 0px 6px;
|
|
100
105
|
}
|
|
101
106
|
|
|
102
107
|
.sliderLabel {
|
|
103
108
|
font-size: 11px;
|
|
104
109
|
z-index: 10;
|
|
105
110
|
font-weight: bold;
|
|
111
|
+
background: transparent;
|
|
106
112
|
}
|
|
107
113
|
|
|
108
|
-
.tpLegend { font-size:13px; /* border: 2px solid transparent; */ cursor:default;
|
|
114
|
+
.tpLegend { font-size:13px; /* border: 2px solid transparent; */ cursor:default; clear:both; display:grid; grid-template-columns:auto auto 1fr auto; column-gap:2px; }
|
|
109
115
|
.tpLegendHl { background-color: #ccc; color: black; }
|
|
110
116
|
.tpHint { font-weight:normal; line-height:1.4; font-size: 80%; margin-top:4px}
|
|
111
117
|
#tpLegendHeader { background-color:#eee; color: #777; margin-top: 2px}
|
|
@@ -114,10 +120,10 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
|
|
|
114
120
|
#tpLegendCol1 { padding-left: 1px; vertical-align: middle}
|
|
115
121
|
#tpLegendCol2 { float: right; padding-right: 2px; padding-top:2px}
|
|
116
122
|
.tpLegendSelect { outline: 2px solid black }
|
|
117
|
-
.tpLegendLabel {
|
|
123
|
+
.tpLegendLabel { user-select: none; overflow-wrap: break-word; min-width: 0; }
|
|
118
124
|
/*.tpLegendCount { display:inline-block; position: absolute; right: 4px; color: #888} */
|
|
119
|
-
.tpLegendCount {
|
|
120
|
-
.tpLegend .tpLegendCheckbox { margin-right: 2px; margin-top: 2px}
|
|
125
|
+
.tpLegendCount { color: #888; white-space: nowrap; align-self: end; padding-left: 4px; }
|
|
126
|
+
.tpLegend .tpLegendCheckbox { margin-right: 2px; margin-top: 2px; align-self: start; }
|
|
121
127
|
.tpGrey { color: #bbb }
|
|
122
128
|
|
|
123
129
|
#tpLegendColorChecked,
|
|
@@ -129,6 +135,21 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
|
|
|
129
135
|
margin: 1px 1px;
|
|
130
136
|
}
|
|
131
137
|
|
|
138
|
+
.mpFlipbookLabel {
|
|
139
|
+
font-weight:bold;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
#mpFlipbookCont {
|
|
143
|
+
background: rgba(255,255,255,0.65);
|
|
144
|
+
padding: 6px 12px 12px;
|
|
145
|
+
border-radius: 4px;
|
|
146
|
+
width: auto !important;
|
|
147
|
+
right: 12px;
|
|
148
|
+
}
|
|
149
|
+
#mpFlipbookCont #mpFlipbook {
|
|
150
|
+
width: 100% !important;
|
|
151
|
+
}
|
|
152
|
+
|
|
132
153
|
.ui-helper-reset { font-size: 12px}
|
|
133
154
|
.ui-tabs { padding: 0 }
|
|
134
155
|
.ui-tabs { padding: 0 }
|
|
@@ -143,9 +164,9 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
|
|
|
143
164
|
.ui-menu-item { font-size:13px }
|
|
144
165
|
.ui-menu .ui-menu-item-wrapper { padding: 1px 1em 1px .4em; }
|
|
145
166
|
.ui-tooltip { font-size: 13px }
|
|
146
|
-
#tpButtonInfo { height: 24px;
|
|
167
|
+
#tpButtonInfo { height: 24px; border-radius: 4px; padding-top: 3px }
|
|
147
168
|
.tpDialogInput { margin-left: 12px; margin-top: 5px; margin-bottom: 12px; }
|
|
148
|
-
#tpDialog { z-index: 1001; }
|
|
169
|
+
#tpDialog { z-index: 1001; }
|
|
149
170
|
|
|
150
171
|
.tpIconButton {
|
|
151
172
|
padding: 1px 2px 1px 2px;
|
|
@@ -157,6 +178,7 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
|
|
|
157
178
|
|
|
158
179
|
.tpRibbonButton {
|
|
159
180
|
background-color: #ccc;
|
|
181
|
+
color: #333;
|
|
160
182
|
padding: 1px 2px 1px 2px;
|
|
161
183
|
border-radius: 4px;
|
|
162
184
|
height: 24px;
|
|
@@ -203,7 +225,6 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
|
|
|
203
225
|
.tooltip .tooltip-inner {
|
|
204
226
|
min-width: 220px;
|
|
205
227
|
border-radius: 0;
|
|
206
|
-
background-opacity: 50%;
|
|
207
228
|
text-align: left
|
|
208
229
|
}
|
|
209
230
|
|
|
@@ -256,13 +277,58 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
|
|
|
256
277
|
padding-left:1px;
|
|
257
278
|
padding-right:1px;
|
|
258
279
|
border: 1px solid #AAA;
|
|
259
|
-
background: #
|
|
280
|
+
background: #f6f6f6;
|
|
260
281
|
/*color:#AAAAAA; */
|
|
261
282
|
display: inline-block;
|
|
262
283
|
}
|
|
263
284
|
|
|
264
|
-
.tpGeneBarCellSelected {
|
|
265
|
-
outline: 1px solid black
|
|
285
|
+
.tpGeneBarCellSelected {
|
|
286
|
+
outline: 1px solid black
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.tpMarkerCellTypeItem {
|
|
290
|
+
cursor: pointer;
|
|
291
|
+
padding: 2px 4px;
|
|
292
|
+
font-size: 12px;
|
|
293
|
+
border-bottom: 1px solid #eee;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.tpMarkerCellTypeItem:hover {
|
|
297
|
+
background-color: #e8f0fe;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
.tpMarkerBrowseTissue {
|
|
301
|
+
margin-bottom: 2px;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
.tpMarkerBrowseTissueSummary {
|
|
305
|
+
cursor: pointer;
|
|
306
|
+
font-size: 12px;
|
|
307
|
+
font-weight: bold;
|
|
308
|
+
padding: 3px 4px;
|
|
309
|
+
background-color: #f0f0f0;
|
|
310
|
+
border-radius: 2px;
|
|
311
|
+
user-select: none;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
.tpMarkerBrowseTissueSummary:hover {
|
|
315
|
+
background-color: #e0e0e0;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
.tpMarkerBrowseCt {
|
|
319
|
+
cursor: pointer;
|
|
320
|
+
padding: 2px 4px 2px 12px;
|
|
321
|
+
font-size: 12px;
|
|
322
|
+
border-bottom: 1px solid #f0f0f0;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.tpMarkerBrowseCt:hover {
|
|
326
|
+
background-color: #e8f0fe;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
.tpMarkerBrowseCtSelected {
|
|
330
|
+
background-color: #d0e4fc;
|
|
331
|
+
font-weight: bold;
|
|
266
332
|
}
|
|
267
333
|
|
|
268
334
|
#tpPeakListTitle {
|
|
@@ -296,7 +362,15 @@ input[type=checkbox], input[type=radio] {
|
|
|
296
362
|
}
|
|
297
363
|
|
|
298
364
|
|
|
299
|
-
.tpSidebarHeader {
|
|
365
|
+
.tpSidebarHeader {
|
|
366
|
+
font-weight: bold;
|
|
367
|
+
padding-left: 4px;
|
|
368
|
+
font-size: 16px;
|
|
369
|
+
padding-top: 4px;
|
|
370
|
+
height: 25px;
|
|
371
|
+
background-color: white;
|
|
372
|
+
text-align: center
|
|
373
|
+
}
|
|
300
374
|
|
|
301
375
|
#tpLeftSidebar {
|
|
302
376
|
border-right: 1px solid #D7D7D7;
|
|
@@ -327,10 +401,13 @@ input[type=checkbox], input[type=radio] {
|
|
|
327
401
|
overflow-y: scroll;
|
|
328
402
|
}
|
|
329
403
|
|
|
330
|
-
#tpLeftTabs {
|
|
331
|
-
border: 0;
|
|
404
|
+
#tpLeftTabs {
|
|
405
|
+
border: 0;
|
|
332
406
|
height: 100%;
|
|
333
407
|
}
|
|
408
|
+
#tpLeftTabs .ui-tabs-nav li {
|
|
409
|
+
margin: 0 2px 0 0;
|
|
410
|
+
}
|
|
334
411
|
|
|
335
412
|
#tpGeneTab, #tpAnnotTab, #tpLayoutTab {
|
|
336
413
|
border-top: 1px solid #AAA;
|
|
@@ -351,6 +428,7 @@ input[type=checkbox], input[type=radio] {
|
|
|
351
428
|
.tpMetaHistLabel { text-decoration: underline; color: blue }
|
|
352
429
|
.tpMetaValue { height: 1.3em; padding-left: 3px; background-color:#EEE; }
|
|
353
430
|
.tpMetaSelect { outline: 2px solid black; background-color: #DEDEDE }
|
|
431
|
+
.tpMetaLabelSelect { outline: 2px solid black; background-color: #DEDEDE }
|
|
354
432
|
.tpMetaValueSelect { background-color: #CCC}
|
|
355
433
|
.tpMetaPerc { color:grey; float:right }
|
|
356
434
|
.tpMetaSpark { float:right }
|
|
@@ -367,16 +445,45 @@ button { line-height: 12px }
|
|
|
367
445
|
.btn-default { background: linear-gradient(#fff 20%, #f7f7f7 60%, #f5f5f5 100%) }
|
|
368
446
|
|
|
369
447
|
#tpButtonBar {display: block; }
|
|
370
|
-
.tpButton {
|
|
448
|
+
.tpButton {
|
|
449
|
+
border-radius: 0;
|
|
450
|
+
font-size: 15px;
|
|
451
|
+
display: inline-block;
|
|
452
|
+
background-color: #f6f6f6;
|
|
453
|
+
border: 1px solid #c5c5c5;
|
|
454
|
+
margin: 1px 3px 1px 1px;
|
|
455
|
+
padding: 1px 3px 1px 3px;
|
|
456
|
+
cursor:default;
|
|
457
|
+
vertical-align: middle;
|
|
458
|
+
user-select: none;
|
|
459
|
+
}
|
|
371
460
|
.tpButton:active { background-color: #888; }
|
|
372
461
|
.tpButton active { background-color: #888; }
|
|
373
462
|
.tpButton:hover { background-color: #eee }
|
|
374
463
|
|
|
375
|
-
.tpButtonInactive {
|
|
464
|
+
.tpButtonInactive {
|
|
465
|
+
background-color: #EEE;
|
|
466
|
+
user-select: none;
|
|
467
|
+
color:#AAA;
|
|
468
|
+
cursor:default;
|
|
469
|
+
}
|
|
376
470
|
|
|
377
|
-
.tpMenu {
|
|
471
|
+
.tpMenu {
|
|
472
|
+
z-index: 999;
|
|
473
|
+
background: white;
|
|
474
|
+
display:none;
|
|
475
|
+
position:absolute;
|
|
476
|
+
}
|
|
378
477
|
|
|
379
|
-
.sp-replacer {
|
|
478
|
+
.sp-replacer {
|
|
479
|
+
height: 17px;
|
|
480
|
+
width: 18px;
|
|
481
|
+
border: none;
|
|
482
|
+
padding: 0px;
|
|
483
|
+
margin-right: 5px;
|
|
484
|
+
background-color: white;
|
|
485
|
+
vertical-align: top;
|
|
486
|
+
}
|
|
380
487
|
.sp-preview { height: 17px; width: 18px; border: none }
|
|
381
488
|
.sp-dd { line-height: 11px; display:none }
|
|
382
489
|
|
|
@@ -387,7 +494,7 @@ button { line-height: 12px }
|
|
|
387
494
|
/* bootstraps badges are too dark */
|
|
388
495
|
.list-group-item.active>.badge { background-color: darkgrey; color:white }
|
|
389
496
|
/* bootstrap's small buttons have a lot of padding, for the toolbar, that's too much */
|
|
390
|
-
.noPad {padding:0
|
|
497
|
+
.noPad {padding:0 2px 0 2px}
|
|
391
498
|
|
|
392
499
|
/* make the navbar dividers smaller */
|
|
393
500
|
.half-rule {
|
|
@@ -397,7 +504,10 @@ button { line-height: 12px }
|
|
|
397
504
|
margin-bottom: 0;
|
|
398
505
|
}
|
|
399
506
|
|
|
400
|
-
#tpToolBar { margin-left: 5px; margin-top: 1px}
|
|
507
|
+
#tpToolBar { margin-left: 5px; margin-top: 1px; display: flex; align-items: center; }
|
|
508
|
+
#tpToolBar button, #tpToolBar a.ui-button { margin-right: 0; vertical-align: middle; }
|
|
509
|
+
#tpClusterMarkersBtn { padding-left: 8px; padding-right: 22px; position: relative; }
|
|
510
|
+
#tpClusterMarkersBtn::after { content: "\25BE"; position: absolute; right: 7px; top: 50%; transform: translateY(-50%); line-height: 1; }
|
|
401
511
|
|
|
402
512
|
#tpCanvas { }
|
|
403
513
|
|
|
@@ -459,7 +569,7 @@ button { line-height: 12px }
|
|
|
459
569
|
.nav-tabs > li.active > a {
|
|
460
570
|
background-color: transparent;
|
|
461
571
|
border:0;
|
|
462
|
-
color
|
|
572
|
+
color: black;
|
|
463
573
|
}
|
|
464
574
|
|
|
465
575
|
.gradientBackground { background-color: #f6f6f6 }
|
|
@@ -596,3 +706,6 @@ th[role=columnheader]:not(.no-sort):hover:after {
|
|
|
596
706
|
/* Support for IE. */
|
|
597
707
|
font-feature-settings: 'liga';
|
|
598
708
|
}
|
|
709
|
+
/* dataset search result highlighting */
|
|
710
|
+
.tpDatasetLabel mark { background: #fff176; color: inherit; padding: 0 1px; border-radius: 2px; }
|
|
711
|
+
.list-group-item.active .tpDatasetLabel mark { background: #ffe57f; }
|