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.
Files changed (185) hide show
  1. {cellbrowser-1.2.17.2/src/cbPyLib/cellbrowser.egg-info → cellbrowser-1.2.18}/PKG-INFO +1 -1
  2. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/README.rst +1 -0
  3. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/R/cellbrowser.R +110 -1
  4. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/_version.py +4 -4
  5. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/css/cellBrowser.css +142 -29
  6. cellbrowser-1.2.18/src/cbPyLib/cellbrowser/cbWeb/css/darkMode-claude.css +793 -0
  7. cellbrowser-1.2.18/src/cbPyLib/cellbrowser/cbWeb/css/darkMode.css +1568 -0
  8. cellbrowser-1.2.18/src/cbPyLib/cellbrowser/cbWeb/ext/minisearch.min.js +8 -0
  9. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/js/cbData.js +88 -38
  10. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/js/cellBrowser.js +2898 -686
  11. cellbrowser-1.2.18/src/cbPyLib/cellbrowser/cbWeb/js/maxHeat.js +1066 -0
  12. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/js/maxPlot.js +1885 -436
  13. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cellbrowser.py +327 -42
  14. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/convert.py +12 -1
  15. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/geneinfo.py +145 -32
  16. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/seurat.py +28 -3
  17. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18/src/cbPyLib/cellbrowser.egg-info}/PKG-INFO +1 -1
  18. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser.egg-info/SOURCES.txt +3 -0
  19. cellbrowser-1.2.17.2/src/cbPyLib/cellbrowser/cbWeb/js/maxHeat.js +0 -492
  20. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/LICENSE +0 -0
  21. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/MANIFEST.in +0 -0
  22. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/setup.cfg +0 -0
  23. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/setup.py +0 -0
  24. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/RangeHTTPServer/__init__.py +0 -0
  25. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/RangeHTTPServer/__main__.py +0 -0
  26. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/__init__.py +0 -0
  27. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/bw_genes.py +0 -0
  28. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.eot +0 -0
  29. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.ttf +0 -0
  30. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.woff +0 -0
  31. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.woff2 +0 -0
  32. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/Chart.bundle.min.js +0 -0
  33. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/FastBitSet.js +0 -0
  34. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/FileSaver.1.1.20151003.min.js +0 -0
  35. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/OverlayScrollbars.min.css +0 -0
  36. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap-dropmenu.min.css +0 -0
  37. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap-submenu.js +0 -0
  38. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap-submenu.min.css +0 -0
  39. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap.3.3.7.min.css +0 -0
  40. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap.min.css +0 -0
  41. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap.min.js +0 -0
  42. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/chartjs-chart-box-and-violin-plot.js +0 -0
  43. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen-sprite.png +0 -0
  44. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen-sprite@2x.png +0 -0
  45. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen.1.8.2.min.css +0 -0
  46. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen.jquery.min.js +0 -0
  47. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/drawImage-clipper.js +0 -0
  48. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/font-awesome.css +0 -0
  49. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/googleMaterialIcons.css +0 -0
  50. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/hamster.js +0 -0
  51. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  52. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_444444_256x240.png +0 -0
  53. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_555555_256x240.png +0 -0
  54. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_777620_256x240.png +0 -0
  55. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_777777_256x240.png +0 -0
  56. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_cc0000_256x240.png +0 -0
  57. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_ffffff_256x240.png +0 -0
  58. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/intro.min.js +0 -0
  59. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/introjs.2.4.0.min.css +0 -0
  60. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery-ui-1.12.1.css +0 -0
  61. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery-ui.min.js +0 -0
  62. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.3.1.1.min.js +0 -0
  63. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.contextMenu.css +0 -0
  64. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.contextMenu.js +0 -0
  65. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.event.drag-2.3.0.js +0 -0
  66. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.overlayScrollbars.min.js +0 -0
  67. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.sparkline.min.js +0 -0
  68. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tablesorter.js +0 -0
  69. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tablesorter.widgets.js +0 -0
  70. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tipsy.1.0.3.min.css +0 -0
  71. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tipsy.min.js +0 -0
  72. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.ui.position.min.js +0 -0
  73. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/jsurl2.js +0 -0
  74. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/lz-string.js +0 -0
  75. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/materialIcons.woff +0 -0
  76. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/minified.js +0 -0
  77. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/mousetrap.min.js +0 -0
  78. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/normalizeWheel.js +0 -0
  79. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/pako_inflate.min.js +0 -0
  80. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/palette.js +0 -0
  81. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/papaparse.min.js +0 -0
  82. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/reorder.v1.js +0 -0
  83. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/scaleColorPerceptual.js +0 -0
  84. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/science.v1.js +0 -0
  85. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/select2.4.0.4.min.css +0 -0
  86. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/select2.min.js +0 -0
  87. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/selectize.bootstrap3.css +0 -0
  88. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/selectize.js +0 -0
  89. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.cellrangedecorator.js +0 -0
  90. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.cellrangeselector.js +0 -0
  91. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.cellselectionmodel.js +0 -0
  92. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.core.js +0 -0
  93. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.editors.js +0 -0
  94. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.examples.css +0 -0
  95. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.formatters.js +0 -0
  96. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.grid.css +0 -0
  97. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.grid.js +0 -0
  98. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/spectrum-1.8.0.css +0 -0
  99. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/spectrum.min.js +0 -0
  100. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/split.js +0 -0
  101. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/tablesort.js +0 -0
  102. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/tablesort.number.min.js +0 -0
  103. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/.npmignore +0 -0
  104. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/LICENSE +0 -0
  105. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/Makefile +0 -0
  106. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/README.md +0 -0
  107. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/browser.js +0 -0
  108. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/build.js +0 -0
  109. {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
  110. {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
  111. {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
  112. {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
  113. {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
  114. {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
  115. {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
  116. {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
  117. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/inferno.js +0 -0
  118. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/magma.js +0 -0
  119. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/package.json +0 -0
  120. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/plasma.js +0 -0
  121. {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
  122. {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
  123. {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
  124. {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
  125. {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
  126. {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
  127. {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
  128. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/viridis.js +0 -0
  129. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/theme.bootstrap_3.css +0 -0
  130. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/ext/tiny-queue.js +0 -0
  131. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/files.json +0 -0
  132. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/hg19.gc34.tsv +0 -0
  133. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/hg19.json.gz +0 -0
  134. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/hg38.gc34.tsv +0 -0
  135. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/hg38.json.gz +0 -0
  136. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/log.txt +0 -0
  137. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/makeGenes.py +0 -0
  138. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/mm10.json.gz +0 -0
  139. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/genes/mm10.vm25.tsv +0 -0
  140. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/README.md +0 -0
  141. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/center.png +0 -0
  142. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/README.txt +0 -0
  143. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/gtk-justify-left.png +0 -0
  144. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/gtk-save.png +0 -0
  145. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/log.txt +0 -0
  146. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-center-16.png +0 -0
  147. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-center-24.png +0 -0
  148. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-controller-16.png +0 -0
  149. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-controller-24.png +0 -0
  150. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-edit-16.png +0 -0
  151. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-gravity-west-24.png +0 -0
  152. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-info-16.png +0 -0
  153. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-info-24.png +0 -0
  154. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-merge-down-16.png +0 -0
  155. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-scale-16.png +0 -0
  156. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-free-select-16.png +0 -0
  157. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-free-select-22.png +0 -0
  158. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-move-16.png +0 -0
  159. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-move-22.png +0 -0
  160. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-rect-select-16.png +0 -0
  161. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-rect-select-22.png +0 -0
  162. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-zoom-16.png +0 -0
  163. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-zoom-22.png +0 -0
  164. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/icons8-help-32.png +0 -0
  165. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/info.png +0 -0
  166. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/lasso.png +0 -0
  167. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/marker.png +0 -0
  168. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/move.png +0 -0
  169. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/select.png +0 -0
  170. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/img/zoom.png +0 -0
  171. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/cbWeb/js/violinWorker.js +0 -0
  172. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/download.py +0 -0
  173. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/genes.py +0 -0
  174. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/hubmaker.py +0 -0
  175. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/sampleConfig/cellbrowser.conf +0 -0
  176. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/sampleConfig/desc.conf +0 -0
  177. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/sampleConfig/hub.conf +0 -0
  178. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/sampleConfig/scanpy.conf +0 -0
  179. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/sampleConfig/seurat.conf +0 -0
  180. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser/sampleConfig/summary.html +0 -0
  181. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser.egg-info/dependency_links.txt +0 -0
  182. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser.egg-info/entry_points.txt +0 -0
  183. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser.egg-info/not-zip-safe +0 -0
  184. {cellbrowser-1.2.17.2 → cellbrowser-1.2.18}/src/cbPyLib/cellbrowser.egg-info/top_level.txt +0 -0
  185. {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.17.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
- mat <- GetAssayData(object = object, slot = slotName)
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-05-01T08:30:24-0700",
12
- "dirty": false,
11
+ "date": "2026-06-04T08:52:42-0700",
12
+ "dirty": true,
13
13
  "error": null,
14
- "full-revisionid": "1a6a9ab68b092f7e8817e346ddb0bef41da4dfbf",
15
- "version": "1.2.17.2"
14
+ "full-revisionid": "c09cf26bfbea561975af659004344a386b68819f",
15
+ "version": "1.2.18"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -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; overflow:hidden; line-height:1.0}
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 #000,
89
- -1px -1px 0 #000,
90
- 1px -1px 0 #000,
91
- -1px 1px 0 #000,
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 : absolute;
99
+ position: absolute;
97
100
  display: grid;
98
- grid-template-columns: 45px 120px 15px;
99
- background: rgba(255,255,255,0.5);
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; word-wrap: break-word; clear:both}
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 { display:inline; user-select: none; }
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 { display:inline-block; float: right; color: #888}
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; top: 1px; margin-right: 8px; border-radius: 4px; padding-top: 4px }
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: #F6;
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 { font-weight: bold; padding-left: 4px; font-size: 16px; padding-top: 4px; height: 25px; background-color: white; text-align: center}
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 { border-radius: 0; font-size: 15px; display: inline-block; background-color: #f6f6f6; border: 1px solid #c5c5c5; margin: 1px 3px 1px 1px; padding: 1px 3px 1px 3px; cursor:default; vertical-align: middle; user-select: none; }
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 { background-color: #EEE; user-select: none; color:#AAA; cursor:default}
464
+ .tpButtonInactive {
465
+ background-color: #EEE;
466
+ user-select: none;
467
+ color:#AAA;
468
+ cursor:default;
469
+ }
376
470
 
377
- .tpMenu { z-index: 999; background: white; display:none; position:absolute}
471
+ .tpMenu {
472
+ z-index: 999;
473
+ background: white;
474
+ display:none;
475
+ position:absolute;
476
+ }
378
477
 
379
- .sp-replacer { height: 17px; width: 18px; border: none; padding: 0px; margin-right: 5px; background-color: white; vertical-align: top }
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 2 0 2}
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 : black;
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; }