cellbrowser 1.2.15.post0.dev8__tar.gz → 1.2.17__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.15.post0.dev8/src/cbPyLib/cellbrowser.egg-info → cellbrowser-1.2.17}/PKG-INFO +1 -1
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/README.rst +31 -14
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/R/cellbrowser.R +38 -6
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/_version.py +3 -3
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/css/cellBrowser.css +12 -14
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/js/cbData.js +39 -17
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/js/cellBrowser.js +207 -71
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/js/maxPlot.js +1 -1
- cellbrowser-1.2.17/src/cbPyLib/cellbrowser/cbWeb/js/violinWorker.js +134 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cellbrowser.py +287 -191
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/convert.py +8 -2
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/geneinfo.py +16 -1
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/genes.py +26 -17
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/hubmaker.py +2 -4
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17/src/cbPyLib/cellbrowser.egg-info}/PKG-INFO +1 -1
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser.egg-info/SOURCES.txt +1 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/LICENSE +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/MANIFEST.in +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/setup.cfg +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/setup.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/RangeHTTPServer/__init__.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/RangeHTTPServer/__main__.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/__init__.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/bw_genes.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.eot +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.ttf +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.woff +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.woff2 +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/Chart.bundle.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/FastBitSet.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/FileSaver.1.1.20151003.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/OverlayScrollbars.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap-dropmenu.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap-submenu.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap-submenu.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap.3.3.7.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/chartjs-chart-box-and-violin-plot.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen-sprite.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen-sprite@2x.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen.1.8.2.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen.jquery.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/drawImage-clipper.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/font-awesome.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/googleMaterialIcons.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/hamster.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_444444_256x240.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_555555_256x240.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_777620_256x240.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_777777_256x240.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_cc0000_256x240.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_ffffff_256x240.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/intro.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/introjs.2.4.0.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery-ui-1.12.1.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery-ui.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.3.1.1.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.contextMenu.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.contextMenu.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.event.drag-2.3.0.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.overlayScrollbars.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.sparkline.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tablesorter.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tablesorter.widgets.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tipsy.1.0.3.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tipsy.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.ui.position.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/jsurl2.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/lz-string.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/materialIcons.woff +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/minified.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/mousetrap.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/normalizeWheel.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/pako_inflate.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/palette.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/papaparse.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/reorder.v1.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/scaleColorPerceptual.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/science.v1.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/select2.4.0.4.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/select2.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/selectize.bootstrap3.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/selectize.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.cellrangedecorator.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.cellrangeselector.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.cellselectionmodel.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.core.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.editors.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.examples.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.formatters.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.grid.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.grid.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/spectrum-1.8.0.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/spectrum.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/split.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/tablesort.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/tablesort.number.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/.npmignore +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/LICENSE +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/Makefile +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/README.md +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/browser.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/build.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/example/d3-random-matrix.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/example/example.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/example/gradients.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/example/package.json +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/hex/inferno.json +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/hex/magma.json +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/hex/plasma.json +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/hex/viridis.json +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/inferno.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/magma.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/package.json +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/plasma.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/rgb/inferno.json +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/rgb/magma.json +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/rgb/plasma.json +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/rgb/viridis.json +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/utils/hex2rgb.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/utils/interpolate.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/utils/rgb2hex.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/viridis.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/theme.bootstrap_3.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/ext/tiny-queue.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/genes/files.json +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/genes/hg19.gc34.tsv +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/genes/hg19.json.gz +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/genes/hg38.gc34.tsv +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/genes/hg38.json.gz +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/genes/log.txt +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/genes/makeGenes.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/genes/mm10.json.gz +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/genes/mm10.vm25.tsv +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/README.md +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/center.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/README.txt +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/gtk-justify-left.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/gtk-save.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/log.txt +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-center-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-center-24.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-controller-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-controller-24.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-edit-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-gravity-west-24.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-info-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-info-24.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-merge-down-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-scale-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-free-select-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-free-select-22.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-move-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-move-22.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-rect-select-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-rect-select-22.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-zoom-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-zoom-22.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/icons8-help-32.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/info.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/lasso.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/marker.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/move.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/select.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/img/zoom.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/js/maxHeat.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/download.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/sampleConfig/cellbrowser.conf +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/sampleConfig/desc.conf +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/sampleConfig/hub.conf +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/sampleConfig/scanpy.conf +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/sampleConfig/seurat.conf +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/sampleConfig/summary.html +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/seurat.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser.egg-info/dependency_links.txt +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser.egg-info/entry_points.txt +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser.egg-info/not-zip-safe +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser.egg-info/top_level.txt +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/versioneer.py +0 -0
{cellbrowser-1.2.15.post0.dev8/src/cbPyLib/cellbrowser.egg-info → cellbrowser-1.2.17}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cellbrowser
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.17
|
|
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
|
|
@@ -12,21 +12,38 @@ spatial gene/ATAC, multi-modal combinations of these and trajectory lines.
|
|
|
12
12
|
It comes with one-line data exporters for all common analysis formats: Seurat, Scanpy, Cellranger, Monocle and
|
|
13
13
|
you can always use tsv/csv files to import your data. The exporters are part of Seurat 3/4 and Scanpy.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
Here are a few datasets that demonstrate these features:
|
|
16
|
+
|
|
17
|
+
- A simple gene expression dataset: https://cortex-dev.cells.ucsc.edu
|
|
18
|
+
- ATAC support https://cortex-atac.cells.ucsc.edu
|
|
19
|
+
- Spatial transcriptomics support https://ms-subcortical-lesions.cells.ucsc.edu
|
|
20
|
+
- Split screen mode to display both the spatial and snRNA-seq data side by side https://cells.ucsc.edu/?ds=dup15q-cortex-organoids+spatial+control
|
|
21
|
+
- Pseudotime cell trajectories from Monocle3 https://cells-test.gi.ucsc.edu/?ds=pre-postnatal-cortex+ex-neu+rna
|
|
22
|
+
- Tree-like cell trajectories from URD https://cells.ucsc.edu/?ds=cardiac-differentiation+trajectory+cm-combined-trajectory
|
|
23
|
+
- Clone lineage tracing support: color by the field CellTag, select tags in the legend, then click "recolor checked": https://cells.ucsc.edu/?ds=gbm-nvp+nvp-celltag
|
|
24
|
+
- Brain lipidomics https://cells.ucsc.edu/?ds=brain-lipids
|
|
25
|
+
|
|
26
|
+
To show all our > 300 single cell datasets, see http://cells.ucsc.edu
|
|
27
|
+
|
|
28
|
+
To upload datasets for the cells.ucsc.edu website, use https://cells-submit.gi.ucsc.edu. Or email us at cells@ucsc.edu. We reply usually on the same day.
|
|
29
|
+
|
|
30
|
+
Most users prefer uploading their datasets to us rather than hosting them on their own webserver.
|
|
31
|
+
Our webserver is reliable, fast and we take care
|
|
32
|
+
of adding new features and keeping the data online.
|
|
33
|
+
But, if you really want to make your own website, to setup your own cell
|
|
34
|
+
browser, on your own web server, from Cellranger, Seurat, Scanpy or text files
|
|
18
35
|
(tsv/csv), or just a single cell expression matrix, read the documentation
|
|
19
|
-
at http://cellbrowser.rtfd.io.
|
|
36
|
+
at http://cellbrowser.rtfd.io.
|
|
37
|
+
|
|
38
|
+
If you use the UCSC Cell Browser in your research, please cite
|
|
20
39
|
`our Bioinformatics paper <https://dx.doi.org/10.1093/bioinformatics/btab503>`_.
|
|
21
40
|
If you are also using data from a specific dataset we host, please also cite
|
|
22
41
|
the original authors of that dataset (visible under 'Info & Download' while viewing that dataset).
|
|
23
42
|
|
|
24
|
-
If you want us to add a single cell dataset to the website http://cells.ucsc.edu,
|
|
25
|
-
please contact us at cells@ucsc.edu. We are happy to add any dataset.
|
|
26
|
-
|
|
27
43
|
This is a viewer for a static, precomputed layout. If you're looking for an interative layout, where you can
|
|
28
44
|
move the cells around and run some algorithms interactively, try Chan-Zuckerberg's own cellxgene or Spring.
|
|
29
|
-
|
|
45
|
+
Another website with both datasets and some analysis is `Scope <http://scope.aertslab.org/>`_. There are many other
|
|
46
|
+
similar websites now, usually with a few dozen datasets.
|
|
30
47
|
|
|
31
48
|
Many labs host their data at cells.ucsc.edu by sending it to us, but some groups have setup their own cell browsers:
|
|
32
49
|
|
|
@@ -48,8 +65,7 @@ Many labs host their data at cells.ucsc.edu by sending it to us, but some groups
|
|
|
48
65
|
* Paul Gontarz, WUSTL, http://regmedsrv1.wustl.edu/Public_SPACE/pgontarz/Public_html/cellbrower/Exp1/
|
|
49
66
|
* Dylan Farnsworth, U Oregon, https://pages.uoregon.edu/drf/browser/lens_230620/
|
|
50
67
|
|
|
51
|
-
|
|
52
|
-
These papers have cell browsers made at UCSC:
|
|
68
|
+
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:
|
|
53
69
|
|
|
54
70
|
* organoidatlas: https://www.sciencedirect.com/science/article/pii/S221112472030053X
|
|
55
71
|
* dros-brain: https://elifesciences.org/articles/50354
|
|
@@ -59,8 +75,9 @@ These papers have cell browsers made at UCSC:
|
|
|
59
75
|
|
|
60
76
|
Before judging this project by the number of issue tickets or PRs, note that at UCSC we use an internal
|
|
61
77
|
ticket system with more features and that a lot of communication with wetlab users is by email at cells@ucsc.edu, as we
|
|
62
|
-
do not require a Github account for feedback
|
|
63
|
-
account and also use Github for source control
|
|
78
|
+
do not require a Github account for feedback, as our submitters are biologists, not computer scientists.
|
|
79
|
+
But we do reply to issues here, as you can see from the Github account and also use Github for source control, and
|
|
80
|
+
we get emails every day. The project is much more active than the Github issues suggest.
|
|
64
81
|
|
|
65
82
|
Install and use
|
|
66
83
|
---------------
|
|
@@ -72,9 +89,9 @@ Install and use
|
|
|
72
89
|
* Galaxy: there is a Galaxy tool for UCSC CellBrowser, which can be installed on any Galaxy instance via its `Galaxy Toolshed entry <https://toolshed.g2.bx.psu.edu/view/ebi-gxa/ucsc_cell_browser>`_ or it can be directly used by users at the `Human Cell Atlas Galaxy instance <https://humancellatlas.usegalaxy.eu/root?tool_id=toolshed.g2.bx.psu.edu/repos/ebi-gxa/ucsc_cell_browser/ucsc_cell_browser>`_ or as part of the example workflows, such as the `Human Cell Atlas / Scanpy CellBrowser workflow <https://humancellatlas.usegalaxy.eu/u/pmoreno/w/humancellatlas-scanpy-cellbrowser>`_ or the `EBI Single Cell Expression Atlas / Scanpy / CellBrowser workflow <https://humancellatlas.usegalaxy.eu/u/pmoreno/w/atlas-scanpy-cellbrowser-imported-from-uploaded-file>`_
|
|
73
90
|
|
|
74
91
|
This project was funded by the California Institute of Regenerative Medicine and the
|
|
75
|
-
Chan-Zuckerberg Initiative https://www.chanzuckerberg.com/. In 2020, it was funded through a supplement to the NHGRI Genome Browser grant. Since 2023, it is funded by a grant from NIMH BRAIN.
|
|
92
|
+
Chan-Zuckerberg Initiative https://www.chanzuckerberg.com/. In 2020, it was funded through a supplement to the NHGRI Genome Browser grant. Since 2023, it is funded by a grant from NIMH BRAIN and a DISC0 from CIRM.
|
|
76
93
|
|
|
77
|
-
This is early research software.
|
|
94
|
+
This is early research software. It may contain bugs. Please open a Github
|
|
78
95
|
ticket or email us at cells@ucsc.edu, we can usually fix them quickly.
|
|
79
96
|
|
|
80
97
|
Citation
|
{cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/R/cellbrowser.R
RENAMED
|
@@ -87,6 +87,28 @@ exportImages <- function(obj, outDir, embeddings.conf) {
|
|
|
87
87
|
require(png)
|
|
88
88
|
for (name in names(obj@images)) {
|
|
89
89
|
message(name);
|
|
90
|
+
# SlideSeq-class SpatialImage objects do not contain a bitmap image
|
|
91
|
+
# They only contain a coordinates df, so test if this image is a SlideSeq
|
|
92
|
+
# And process using this code block (instead of usual steps further below)
|
|
93
|
+
if ("SlideSeq" %in% class(obj@images$image)[1]) {
|
|
94
|
+
coordsPath <- file.path(outDir, paste0(name, ".coords.tsv"))
|
|
95
|
+
message("Writing coords for image to ", coordsPath)
|
|
96
|
+
coords <- GetTissueCoordinates(object = obj[[name]])
|
|
97
|
+
# One of the columns I want to delete is currently named 'NA' for
|
|
98
|
+
# a missing value
|
|
99
|
+
colnames(coords)[3] <- "missing"
|
|
100
|
+
# Delete columns 3 and 4 by name, keeping columns 1 and 2 for printing out
|
|
101
|
+
coords = subset(coords, select = -c(missing, cells))
|
|
102
|
+
|
|
103
|
+
write.table(coords, coordsPath, sep="\t", row.names=T, quote=F, col.names=NA)
|
|
104
|
+
conf <- sprintf(
|
|
105
|
+
' {\n "file": "%s",\n "shortLabel": "Spatial %s",\n }',
|
|
106
|
+
coordsPath,
|
|
107
|
+
name
|
|
108
|
+
)
|
|
109
|
+
embeddings.conf <- c(conf, embeddings.conf)
|
|
110
|
+
return(embeddings.conf)
|
|
111
|
+
}
|
|
90
112
|
img = GetImage(obj, mode="raw", image=name);
|
|
91
113
|
if (is.null(img)) {
|
|
92
114
|
message("The image is not a bitmap image, cannot export yet.")
|
|
@@ -100,11 +122,18 @@ exportImages <- function(obj, outDir, embeddings.conf) {
|
|
|
100
122
|
xMax = dim(img)[2]; # there is a difference of 3 pixels on height when comparing "identify file.jpeg" with this. NO IDEA WHY!
|
|
101
123
|
coordsPath <- file.path(outDir, paste0(name, ".coords.tsv"))
|
|
102
124
|
message("Writing coords for image to ", coordsPath)
|
|
103
|
-
#coords <- GetTissueCoordinates(object = obj[[img]])
|
|
104
|
-
|
|
105
125
|
coords <- GetTissueCoordinates(object = obj[[name]])
|
|
106
|
-
|
|
107
|
-
|
|
126
|
+
|
|
127
|
+
if (all(c("imagecol", "imagerow") %in% colnames(coords))) {
|
|
128
|
+
# Seurat-style naming: reverse order
|
|
129
|
+
coordsRev <- coords[, c("imagecol", "imagerow")]
|
|
130
|
+
colnames(coordsRev) <- c("x", "y")
|
|
131
|
+
} else if (all(c("x", "y") %in% colnames(coords))) {
|
|
132
|
+
# Already in standard x/y format
|
|
133
|
+
coordsRev <- coords[, c("y", "x")]
|
|
134
|
+
} else {
|
|
135
|
+
stop("Error: coordinates must have either (imagecol, imagerow) or (x, y) columns.")
|
|
136
|
+
}
|
|
108
137
|
|
|
109
138
|
write.table(coordsRev, coordsPath, sep="\t", row.names=T, quote=F, col.names=NA)
|
|
110
139
|
conf <- sprintf(
|
|
@@ -415,9 +444,12 @@ ExportToCellbrowser <- function(
|
|
|
415
444
|
markers <- object@misc["markers"]$markers
|
|
416
445
|
} else {
|
|
417
446
|
message("Running FindAllMarkers(), using wilcox test, min logfc diff 0.25")
|
|
418
|
-
if
|
|
447
|
+
# Only run this block if the Active assay is SCT
|
|
448
|
+
if ("SCT" %in% DefaultAssay(object = object)) {
|
|
419
449
|
message("Looks like an SCT object, so running PrepSCTFindMarkers()")
|
|
420
|
-
|
|
450
|
+
# The results from this command need to be written back to the object prior to
|
|
451
|
+
# running FindAllMarkers
|
|
452
|
+
object <- PrepSCTFindMarkers(object = object)
|
|
421
453
|
}
|
|
422
454
|
markers <- FindAllMarkers(
|
|
423
455
|
object,
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "
|
|
11
|
+
"date": "2026-04-22T13:09:32-0700",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.2.
|
|
14
|
+
"full-revisionid": "73100b2c3973b545756150bc92f27113edf0f592",
|
|
15
|
+
"version": "1.2.17"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -69,16 +69,6 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
|
|
|
69
69
|
height:100%;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
#tpLegendColorChecked,
|
|
73
|
-
#tpLegendAll,
|
|
74
|
-
#tpLegendNone,
|
|
75
|
-
#tpLegendInvert,
|
|
76
|
-
#tpLegendNotNull {
|
|
77
|
-
font-size: 13px;
|
|
78
|
-
margin-right: 2px;
|
|
79
|
-
margin-bottom: 2px;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
72
|
.tpDatasetPane {
|
|
83
73
|
padding: 5px !important;
|
|
84
74
|
padding-left: 10px !important;
|
|
@@ -117,12 +107,12 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
|
|
|
117
107
|
|
|
118
108
|
.tpLegend { font-size:13px; /* border: 2px solid transparent; */ cursor:default; word-wrap: break-word; clear:both}
|
|
119
109
|
.tpLegendHl { background-color: #ccc; color: black; }
|
|
120
|
-
.tpHint { font-weight:normal; line-height:1.4; font-size: 80
|
|
121
|
-
#tpLegendHeader { background-color:#eee; color: #777 }
|
|
110
|
+
.tpHint { font-weight:normal; line-height:1.4; font-size: 80%; margin-top:4px}
|
|
111
|
+
#tpLegendHeader { background-color:#eee; color: #777; margin-top: 2px}
|
|
122
112
|
#tpLegendTitle { font-weight: bold }
|
|
123
113
|
#tpLegendSubTitle { font-size: 80%; font-style: italic }
|
|
124
|
-
#tpLegendCol1 { padding-left: 1px}
|
|
125
|
-
#tpLegendCol2 { float: right; padding-right: 2px}
|
|
114
|
+
#tpLegendCol1 { padding-left: 1px; vertical-align: middle}
|
|
115
|
+
#tpLegendCol2 { float: right; padding-right: 2px; padding-top:2px}
|
|
126
116
|
.tpLegendSelect { outline: 2px solid black }
|
|
127
117
|
.tpLegendLabel { display:inline; user-select: none; }
|
|
128
118
|
/*.tpLegendCount { display:inline-block; position: absolute; right: 4px; color: #888} */
|
|
@@ -130,6 +120,14 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
|
|
|
130
120
|
.tpLegend .tpLegendCheckbox { margin-right: 2px; margin-top: 2px}
|
|
131
121
|
.tpGrey { color: #bbb }
|
|
132
122
|
|
|
123
|
+
#tpLegendColorChecked,
|
|
124
|
+
#tpLegendAll,
|
|
125
|
+
#tpLegendNone,
|
|
126
|
+
#tpLegendInvert,
|
|
127
|
+
#tpLegendNotNull {
|
|
128
|
+
font-size: 14px;
|
|
129
|
+
margin: 1px 1px;
|
|
130
|
+
}
|
|
133
131
|
|
|
134
132
|
.ui-helper-reset { font-size: 12px}
|
|
135
133
|
.ui-tabs { padding: 0 }
|
{cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.17}/src/cbPyLib/cellbrowser/cbWeb/js/cbData.js
RENAMED
|
@@ -106,13 +106,14 @@ var cbUtil = (function () {
|
|
|
106
106
|
onSuccess(data);
|
|
107
107
|
},
|
|
108
108
|
error : function() {
|
|
109
|
-
if (!silent)
|
|
109
|
+
if (!silent) {
|
|
110
110
|
if (url.search("dataset.json")>-1)
|
|
111
111
|
alert("Could not find a dataset at "+url+". If you are sure that the link is correct, please "+
|
|
112
112
|
"contact the administrator of this server, "+
|
|
113
113
|
"or cells@ucsc.edu if this is running at UCSC. ");
|
|
114
114
|
else
|
|
115
115
|
alert("Could not load "+url);
|
|
116
|
+
}
|
|
116
117
|
onSuccess(null);
|
|
117
118
|
}
|
|
118
119
|
});
|
|
@@ -440,6 +441,11 @@ function CbDbFile(url) {
|
|
|
440
441
|
}
|
|
441
442
|
}
|
|
442
443
|
|
|
444
|
+
function gotMatrix(data) {
|
|
445
|
+
matrixIndex = data;
|
|
446
|
+
gotOneFile();
|
|
447
|
+
}
|
|
448
|
+
|
|
443
449
|
// load config and call onDone
|
|
444
450
|
var dsUrl = cbUtil.joinPaths([this.url, "dataset.json"]);
|
|
445
451
|
// deactivate the cache - this is a small file that users typically change often
|
|
@@ -452,7 +458,7 @@ function CbDbFile(url) {
|
|
|
452
458
|
if (self.name!='') {
|
|
453
459
|
// start loading gene offsets in the background now, because this takes a while
|
|
454
460
|
var osUrl = cbUtil.joinPaths([this.url, "exprMatrix.json"]);
|
|
455
|
-
cbUtil.loadJson(osUrl,
|
|
461
|
+
cbUtil.loadJson(osUrl, gotMatrix, true);
|
|
456
462
|
} else {
|
|
457
463
|
gotOneFile();
|
|
458
464
|
}
|
|
@@ -765,29 +771,34 @@ function CbDbFile(url) {
|
|
|
765
771
|
/* supports NaN special values */
|
|
766
772
|
var breaks = [];
|
|
767
773
|
|
|
774
|
+
// remove the Nan values - XX REVISIT
|
|
775
|
+
for (let i = 0; i < arr.length; i++) {
|
|
776
|
+
if (Number.isNaN(arr[i])) {
|
|
777
|
+
arr[i] = -Infinity;
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
|
|
768
781
|
// sort expression values into a new array
|
|
769
782
|
var arrSorted = arr.slice(); // slice() = "make copy"
|
|
770
783
|
arrSorted.sort();
|
|
771
784
|
|
|
772
|
-
var
|
|
773
|
-
if (arrSorted[0] == bin0Val) { // skip
|
|
774
|
-
var zeros = 0;
|
|
785
|
+
var minPos = 0;
|
|
786
|
+
if (arrSorted[0] == bin0Val) { // do we have any values in bin0? -> skip them and keep their position
|
|
775
787
|
for (var i = 0, I = arrSorted.length; i < I; i++) {
|
|
776
788
|
if (arrSorted[i] > bin0Val) {
|
|
777
|
-
|
|
789
|
+
minPos = i;
|
|
778
790
|
break;
|
|
779
791
|
}
|
|
780
|
-
zeros += 1;
|
|
781
792
|
}
|
|
782
793
|
}
|
|
783
|
-
var minVal = arrSorted[
|
|
794
|
+
var minVal = arrSorted[minPos];
|
|
784
795
|
// calculate optimal bin size in numbers of cells
|
|
785
|
-
var desiredBinSize = Math.floor((arrSorted.length -
|
|
796
|
+
var desiredBinSize = Math.floor((arrSorted.length - minPos) / (maxBinCount - breaks.length));
|
|
786
797
|
var currentCount = 0;
|
|
787
|
-
var binMin = arrSorted[
|
|
798
|
+
var binMin = arrSorted[minPos];
|
|
788
799
|
var binMax;
|
|
789
800
|
var lastValue;
|
|
790
|
-
for (var i =
|
|
801
|
+
for (var i = minPos, I = arrSorted.length; i < I; i++) {
|
|
791
802
|
// determine if current value can be used as a break
|
|
792
803
|
// i.e. it is different from the previous
|
|
793
804
|
var isBreak = false;
|
|
@@ -816,16 +827,19 @@ function CbDbFile(url) {
|
|
|
816
827
|
|
|
817
828
|
var binInfo = [];
|
|
818
829
|
|
|
819
|
-
var bin0MinMax = "Unknown";
|
|
830
|
+
var bin0MinMax = "Unknown"; // meta data often has empty string = "Unknown"
|
|
820
831
|
if (bin0Val === 0) {
|
|
821
832
|
bin0MinMax = 0;
|
|
822
833
|
}
|
|
834
|
+
if (bin0Val === FLOATNAN) { // this can only happen for expression matrices with "NAN" values in them
|
|
835
|
+
bin0MinMax = "NaN";
|
|
836
|
+
}
|
|
823
837
|
binInfo.push([bin0MinMax, bin0MinMax, binCounts[0]]);
|
|
824
838
|
|
|
825
839
|
var idx = binCounts[0];
|
|
826
840
|
for (let i=0; i < breaks.length; i++) {
|
|
827
841
|
// use sorted array of expression values
|
|
828
|
-
// to get
|
|
842
|
+
// to get the exact break values
|
|
829
843
|
var binMin = arrSorted[idx];
|
|
830
844
|
var binCount = binCounts[i+1];
|
|
831
845
|
idx += binCount - 1;
|
|
@@ -1008,11 +1022,13 @@ function CbDbFile(url) {
|
|
|
1008
1022
|
else
|
|
1009
1023
|
geneDesc = geneDescs.join("; ");
|
|
1010
1024
|
|
|
1011
|
-
// specVal is the value for
|
|
1025
|
+
// specVal is the value for the first bin, usually 0. But can also be -Infinity
|
|
1012
1026
|
var specVal = 0;
|
|
1013
1027
|
var matrixMin = self.getMatrixMin();
|
|
1014
1028
|
if (matrixMin < 0)
|
|
1015
|
-
specVal = null;
|
|
1029
|
+
specVal = null; // null = no special bin handling at all
|
|
1030
|
+
if (matrixMin === FLOATNAN)
|
|
1031
|
+
specVal = FLOATNAN;
|
|
1016
1032
|
|
|
1017
1033
|
let newArr = [];
|
|
1018
1034
|
if (updateOp) {
|
|
@@ -1023,8 +1039,12 @@ function CbDbFile(url) {
|
|
|
1023
1039
|
newArr = cbUtil.arrAddMult(self.currExprArr, arrs);
|
|
1024
1040
|
else
|
|
1025
1041
|
newArr = cbUtil.arrSubMult(self.currExprArr, arrs);
|
|
1026
|
-
} else
|
|
1027
|
-
|
|
1042
|
+
} else {
|
|
1043
|
+
if (arrs.length===1)
|
|
1044
|
+
newArr = arrs[0];
|
|
1045
|
+
else
|
|
1046
|
+
newArr = sumAllArrs(ArrType, arrs);
|
|
1047
|
+
}
|
|
1028
1048
|
|
|
1029
1049
|
var discFunc = null;
|
|
1030
1050
|
if (strategy==="range")
|
|
@@ -1682,6 +1702,8 @@ function CbDbFile(url) {
|
|
|
1682
1702
|
var matrixMin = 0;
|
|
1683
1703
|
if ("_range" in validNames)
|
|
1684
1704
|
matrixMin = validNames["_range"][0];
|
|
1705
|
+
if (matrixMin === null)
|
|
1706
|
+
matrixMin = FLOATNAN;
|
|
1685
1707
|
return matrixMin;
|
|
1686
1708
|
}
|
|
1687
1709
|
|