cellbrowser 1.2.15.post0.dev8__tar.gz → 1.2.16__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.16}/PKG-INFO +1 -1
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/README.rst +11 -1
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/R/cellbrowser.R +38 -6
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/_version.py +3 -3
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/css/cellBrowser.css +12 -14
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/js/cbData.js +39 -17
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/js/cellBrowser.js +202 -68
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/js/maxPlot.js +1 -1
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cellbrowser.py +287 -191
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/convert.py +8 -2
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/geneinfo.py +16 -1
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/genes.py +26 -17
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/hubmaker.py +2 -4
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16/src/cbPyLib/cellbrowser.egg-info}/PKG-INFO +1 -1
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/LICENSE +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/MANIFEST.in +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/setup.cfg +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/setup.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/RangeHTTPServer/__init__.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/RangeHTTPServer/__main__.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/__init__.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/bw_genes.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.eot +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.ttf +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.woff +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.woff2 +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/Chart.bundle.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/FastBitSet.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/FileSaver.1.1.20151003.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/OverlayScrollbars.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap-dropmenu.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap-submenu.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap-submenu.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap.3.3.7.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/chartjs-chart-box-and-violin-plot.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen-sprite.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen-sprite@2x.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen.1.8.2.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen.jquery.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/drawImage-clipper.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/font-awesome.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/googleMaterialIcons.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/hamster.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_444444_256x240.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_555555_256x240.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_777620_256x240.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_777777_256x240.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_cc0000_256x240.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_ffffff_256x240.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/intro.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/introjs.2.4.0.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery-ui-1.12.1.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery-ui.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.3.1.1.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.contextMenu.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.contextMenu.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.event.drag-2.3.0.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.overlayScrollbars.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.sparkline.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tablesorter.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tablesorter.widgets.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tipsy.1.0.3.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tipsy.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.ui.position.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/jsurl2.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/lz-string.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/materialIcons.woff +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/minified.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/mousetrap.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/normalizeWheel.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/pako_inflate.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/palette.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/papaparse.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/reorder.v1.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/scaleColorPerceptual.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/science.v1.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/select2.4.0.4.min.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/select2.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/selectize.bootstrap3.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/selectize.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.cellrangedecorator.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.cellrangeselector.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.cellselectionmodel.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.core.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.editors.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.examples.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.formatters.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.grid.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.grid.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/spectrum-1.8.0.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/spectrum.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/split.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/tablesort.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/tablesort.number.min.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/.npmignore +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/LICENSE +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/Makefile +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/README.md +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/browser.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/build.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/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.16}/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.16}/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.16}/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.16}/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.16}/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.16}/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.16}/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.16}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/inferno.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/magma.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/package.json +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/plasma.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/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.16}/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.16}/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.16}/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.16}/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.16}/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.16}/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.16}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/viridis.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/theme.bootstrap_3.css +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/ext/tiny-queue.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/genes/files.json +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/genes/hg19.gc34.tsv +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/genes/hg19.json.gz +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/genes/hg38.gc34.tsv +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/genes/hg38.json.gz +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/genes/log.txt +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/genes/makeGenes.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/genes/mm10.json.gz +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/genes/mm10.vm25.tsv +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/README.md +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/center.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/README.txt +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/gtk-justify-left.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/gtk-save.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/log.txt +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-center-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-center-24.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-controller-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-controller-24.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-edit-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-gravity-west-24.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-info-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-info-24.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-merge-down-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-scale-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-free-select-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-free-select-22.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-move-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-move-22.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-rect-select-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-rect-select-22.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-zoom-16.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-zoom-22.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/icons8-help-32.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/info.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/lasso.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/marker.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/move.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/select.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/img/zoom.png +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/cbWeb/js/maxHeat.js +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/download.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/sampleConfig/cellbrowser.conf +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/sampleConfig/desc.conf +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/sampleConfig/hub.conf +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/sampleConfig/scanpy.conf +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/sampleConfig/seurat.conf +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/sampleConfig/summary.html +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser/seurat.py +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser.egg-info/SOURCES.txt +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser.egg-info/dependency_links.txt +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser.egg-info/entry_points.txt +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser.egg-info/not-zip-safe +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/src/cbPyLib/cellbrowser.egg-info/top_level.txt +0 -0
- {cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/versioneer.py +0 -0
{cellbrowser-1.2.15.post0.dev8/src/cbPyLib/cellbrowser.egg-info → cellbrowser-1.2.16}/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.16
|
|
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,7 +12,17 @@ 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
|
-
|
|
15
|
+
Here are a few datasets that demonstrate these features:
|
|
16
|
+
|
|
17
|
+
- A simple gene expression dataset: https://cells.ucsc.edu/?ds=cortex-dev
|
|
18
|
+
- Spatial transcriptomics support https://ms-subcortical-lesions.cells.ucsc.edu
|
|
19
|
+
- 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
|
|
20
|
+
- Cell trajectories from monocle https://cells-test.gi.ucsc.edu/?ds=pre-postnatal-cortex+ex-neu+rna
|
|
21
|
+
- Cell trajectories from URD https://cells.ucsc.edu/?ds=cardiac-differentiation+trajectory+cm-combined-trajectory
|
|
22
|
+
- 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
|
|
23
|
+
- Brain lipidomics https://cells.ucsc.edu/?ds=brain-lipids
|
|
24
|
+
|
|
25
|
+
To show all our > 200 single cell datasets, see http://cells.ucsc.edu
|
|
16
26
|
|
|
17
27
|
To setup your own cell browser, from Cellranger, Seurat, Scanpy or text files
|
|
18
28
|
(tsv/csv), or just a single cell expression matrix, read the documentation
|
{cellbrowser-1.2.15.post0.dev8 → cellbrowser-1.2.16}/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": "2025-
|
|
11
|
+
"date": "2025-11-12T13:17:35-0800",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.2.
|
|
14
|
+
"full-revisionid": "9d80bedf1b39a0e74cf2e6f9f1481d6b6a66c9cc",
|
|
15
|
+
"version": "1.2.16"
|
|
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.16}/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
|
|