cellbrowser 1.2.2__tar.gz → 1.2.4__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 (179) hide show
  1. {cellbrowser-1.2.2/src/cbPyLib/cellbrowser.egg-info → cellbrowser-1.2.4}/PKG-INFO +1 -1
  2. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/README.rst +9 -5
  3. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/R/cellbrowser.R +67 -7
  4. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/_version.py +3 -3
  5. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/css/cellBrowser.css +110 -9
  6. cellbrowser-1.2.4/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tablesorter.js +2914 -0
  7. cellbrowser-1.2.4/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tablesorter.widgets.js +3184 -0
  8. cellbrowser-1.2.4/src/cbPyLib/cellbrowser/cbWeb/ext/theme.bootstrap_3.css +190 -0
  9. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/js/cbData.js +32 -19
  10. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/js/cellBrowser.js +1188 -273
  11. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/js/maxHeat.js +5 -4
  12. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/js/maxPlot.js +608 -84
  13. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cellbrowser.py +430 -160
  14. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/convert.py +21 -8
  15. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/genes.py +118 -25
  16. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/sampleConfig/cellbrowser.conf +29 -6
  17. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/sampleConfig/desc.conf +1 -1
  18. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/seurat.py +11 -13
  19. {cellbrowser-1.2.2 → cellbrowser-1.2.4/src/cbPyLib/cellbrowser.egg-info}/PKG-INFO +1 -1
  20. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser.egg-info/SOURCES.txt +3 -0
  21. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/LICENSE +0 -0
  22. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/MANIFEST.in +0 -0
  23. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/setup.cfg +0 -0
  24. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/setup.py +0 -0
  25. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/RangeHTTPServer/__init__.py +0 -0
  26. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/RangeHTTPServer/__main__.py +0 -0
  27. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/__init__.py +0 -0
  28. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.eot +0 -0
  29. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.ttf +0 -0
  30. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.woff +0 -0
  31. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/css/MaterialIcons-Regular.woff2 +0 -0
  32. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/Chart.bundle.min.js +0 -0
  33. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/FastBitSet.js +0 -0
  34. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/FileSaver.1.1.20151003.min.js +0 -0
  35. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/OverlayScrollbars.min.css +0 -0
  36. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap-dropmenu.min.css +0 -0
  37. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap-submenu.js +0 -0
  38. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap-submenu.min.css +0 -0
  39. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap.3.3.7.min.css +0 -0
  40. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap.min.css +0 -0
  41. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/bootstrap.min.js +0 -0
  42. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/chartjs-chart-box-and-violin-plot.js +0 -0
  43. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen-sprite.png +0 -0
  44. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen-sprite@2x.png +0 -0
  45. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen.1.8.2.min.css +0 -0
  46. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/chosen.jquery.min.js +0 -0
  47. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/drawImage-clipper.js +0 -0
  48. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/font-awesome.css +0 -0
  49. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/googleMaterialIcons.css +0 -0
  50. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/hamster.js +0 -0
  51. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  52. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_444444_256x240.png +0 -0
  53. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_555555_256x240.png +0 -0
  54. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_777620_256x240.png +0 -0
  55. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_777777_256x240.png +0 -0
  56. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_cc0000_256x240.png +0 -0
  57. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/images/ui-icons_ffffff_256x240.png +0 -0
  58. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/intro.min.js +0 -0
  59. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/introjs.2.4.0.min.css +0 -0
  60. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery-ui-1.12.1.css +0 -0
  61. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery-ui.min.js +0 -0
  62. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.3.1.1.min.js +0 -0
  63. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.contextMenu.css +0 -0
  64. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.contextMenu.js +0 -0
  65. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.event.drag-2.3.0.js +0 -0
  66. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.overlayScrollbars.min.js +0 -0
  67. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.sparkline.min.js +0 -0
  68. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tipsy.1.0.3.min.css +0 -0
  69. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.tipsy.min.js +0 -0
  70. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/jquery.ui.position.min.js +0 -0
  71. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/jsurl2.js +0 -0
  72. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/lz-string.js +0 -0
  73. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/materialIcons.woff +0 -0
  74. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/minified.js +0 -0
  75. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/mousetrap.min.js +0 -0
  76. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/normalizeWheel.js +0 -0
  77. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/pako_inflate.min.js +0 -0
  78. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/palette.js +0 -0
  79. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/papaparse.min.js +0 -0
  80. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/reorder.v1.js +0 -0
  81. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/scaleColorPerceptual.js +0 -0
  82. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/science.v1.js +0 -0
  83. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/select2.4.0.4.min.css +0 -0
  84. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/select2.min.js +0 -0
  85. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/selectize.bootstrap3.css +0 -0
  86. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/selectize.js +0 -0
  87. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.cellrangedecorator.js +0 -0
  88. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.cellrangeselector.js +0 -0
  89. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.cellselectionmodel.js +0 -0
  90. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.core.js +0 -0
  91. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.editors.js +0 -0
  92. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.examples.css +0 -0
  93. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.formatters.js +0 -0
  94. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.grid.css +0 -0
  95. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/slick.grid.js +0 -0
  96. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/spectrum-1.8.0.css +0 -0
  97. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/spectrum.min.js +0 -0
  98. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/split.js +0 -0
  99. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/tablesort.js +0 -0
  100. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/tablesort.number.min.js +0 -0
  101. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/.npmignore +0 -0
  102. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/LICENSE +0 -0
  103. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/Makefile +0 -0
  104. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/README.md +0 -0
  105. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/browser.js +0 -0
  106. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/build.js +0 -0
  107. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/example/d3-random-matrix.js +0 -0
  108. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/example/example.png +0 -0
  109. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/example/gradients.js +0 -0
  110. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/example/package.json +0 -0
  111. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/hex/inferno.json +0 -0
  112. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/hex/magma.json +0 -0
  113. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/hex/plasma.json +0 -0
  114. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/hex/viridis.json +0 -0
  115. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/inferno.js +0 -0
  116. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/magma.js +0 -0
  117. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/package.json +0 -0
  118. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/plasma.js +0 -0
  119. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/rgb/inferno.json +0 -0
  120. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/rgb/magma.json +0 -0
  121. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/rgb/plasma.json +0 -0
  122. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/rgb/viridis.json +0 -0
  123. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/utils/hex2rgb.js +0 -0
  124. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/utils/interpolate.js +0 -0
  125. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/utils/rgb2hex.js +0 -0
  126. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/temp/node_modules/scale-color-perceptual/viridis.js +0 -0
  127. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/ext/tiny-queue.js +0 -0
  128. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/genes/files.json +0 -0
  129. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/genes/hg19.gc34.tsv +0 -0
  130. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/genes/hg19.json.gz +0 -0
  131. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/genes/hg38.gc34.tsv +0 -0
  132. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/genes/hg38.json.gz +0 -0
  133. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/genes/log.txt +0 -0
  134. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/genes/makeGenes.py +0 -0
  135. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/genes/mm10.json.gz +0 -0
  136. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/genes/mm10.vm25.tsv +0 -0
  137. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/README.md +0 -0
  138. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/center.png +0 -0
  139. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/README.txt +0 -0
  140. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/gtk-justify-left.png +0 -0
  141. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/gtk-save.png +0 -0
  142. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/log.txt +0 -0
  143. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-center-16.png +0 -0
  144. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-center-24.png +0 -0
  145. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-controller-16.png +0 -0
  146. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-controller-24.png +0 -0
  147. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-edit-16.png +0 -0
  148. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-gravity-west-24.png +0 -0
  149. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-info-16.png +0 -0
  150. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-info-24.png +0 -0
  151. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-merge-down-16.png +0 -0
  152. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-scale-16.png +0 -0
  153. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-free-select-16.png +0 -0
  154. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-free-select-22.png +0 -0
  155. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-move-16.png +0 -0
  156. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-move-22.png +0 -0
  157. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-rect-select-16.png +0 -0
  158. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-rect-select-22.png +0 -0
  159. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-zoom-16.png +0 -0
  160. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/gimpFlat/stock-tool-zoom-22.png +0 -0
  161. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/icons8-help-32.png +0 -0
  162. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/info.png +0 -0
  163. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/lasso.png +0 -0
  164. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/marker.png +0 -0
  165. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/move.png +0 -0
  166. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/select.png +0 -0
  167. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/cbWeb/img/zoom.png +0 -0
  168. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/download.py +0 -0
  169. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/geneinfo.py +0 -0
  170. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/hubmaker.py +0 -0
  171. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/sampleConfig/hub.conf +0 -0
  172. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/sampleConfig/scanpy.conf +0 -0
  173. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/sampleConfig/seurat.conf +0 -0
  174. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser/sampleConfig/summary.html +0 -0
  175. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser.egg-info/dependency_links.txt +0 -0
  176. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser.egg-info/entry_points.txt +0 -0
  177. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser.egg-info/not-zip-safe +0 -0
  178. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/src/cbPyLib/cellbrowser.egg-info/top_level.txt +0 -0
  179. {cellbrowser-1.2.2 → cellbrowser-1.2.4}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cellbrowser
3
- Version: 1.2.2
3
+ Version: 1.2.4
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
@@ -5,8 +5,12 @@ UCSC Single Cell Browser
5
5
  ========================
6
6
 
7
7
  The UCSC Cell Browser is a viewer for single cell data. You can click on and
8
- hover over cells to get meta information, search for genes to color on and
9
- click clusters to show cluster-specific marker genes.
8
+ hover over cells to get meta information, select cells to get annotation histograms,
9
+ make expression violin plots and heatmaps, search for genes to color on and
10
+ click clusters to show cluster-specific marker genes. It supports the usual gene expression plots, ATAC,
11
+ spatial gene/ATAC, multi-modal combinations of these and trajectory lines.
12
+ It comes with one-line data exporters for all common analysis formats: Seurat, Scanpy, Cellranger, Monocle and
13
+ you can always use tsv/csv files to import your data. The exporters are part of Seurat 3/4 and Scanpy.
10
14
 
11
15
  To look at a list of selected single cell datasets, see http://cells.ucsc.edu
12
16
 
@@ -57,8 +61,8 @@ ticket system with more features and that a lot of communication with wetlab use
57
61
  do not require a Github account for feedback. But we do reply to issues here, as you can see from the Github
58
62
  account and also use Github for source control.
59
63
 
60
- Additional availability
61
- -----------------------
64
+ Install and use
65
+ ---------------
62
66
 
63
67
  * The preferred installation is via pip https://pypi.org/project/cellbrowser/, for documentation see https://cellbrowser.readthedocs.io
64
68
  * Bioconda: this tool is available to install via `bioconda <https://bioconda.github.io/recipes/ucsc-cell-browser/README.html>`_. Note that the conda release is usually a bit outdated relative to the pip release, so use pip if possible. If you cannot use pip, please contact us.
@@ -67,7 +71,7 @@ Additional availability
67
71
  * 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>`_
68
72
 
69
73
  This project was funded by the California Institute of Regenerative Medicine and the
70
- Chan-Zuckerberg Initiative https://www.chanzuckerberg.com/. In 2020, it is funded through a supplement to the NHGRI Genome Browser grant.
74
+ 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.
71
75
 
72
76
  This is early research software. You are likely to find bugs. Please open a Github
73
77
  ticket or email us at cells@ucsc.edu, we can usually fix them quickly.
@@ -46,15 +46,18 @@ saveMatrix <- function(counts, dir, prefix, use.mtx) {
46
46
  genesPath <- file.path(dir, paste(prefix, "features.tsv", sep=""))
47
47
  barcodesPath <- file.path(dir, paste(prefix, "barcodes.tsv", sep=""))
48
48
  message("Writing expression matrix to ", matrixPath)
49
+ if (class(counts)[1]=="matrix") {
50
+ counts <- as(counts, "sparseMatrix")
51
+ }
49
52
  writeMM(counts, matrixPath)
50
53
  # easier to load if the genes file has at least two columns. Even though seurat objects
51
54
  # don't have yet explicit geneIds/geneSyms data, we just duplicate whatever the matrix has now
52
55
  write.table(as.data.frame(cbind(rownames(counts), rownames(counts))), file=genesPath, sep="\t", row.names=F, col.names=F, quote=F)
53
56
  write(colnames(counts), file = barcodesPath)
54
57
  message("Gzipping expression matrix")
55
- gzip(matrixPath)
56
- gzip(genesPath)
57
- gzip(barcodesPath)
58
+ gzip(matrixPath, overwrite=TRUE)
59
+ gzip(genesPath, overwrite=TRUE)
60
+ gzip(barcodesPath, overwrite=TRUE)
58
61
  } else {
59
62
  # we can write the matrix as a tsv file
60
63
  gzPath <- file.path(dir, paste(prefix, "exprMatrix.tsv.gz", sep=""))
@@ -69,6 +72,50 @@ saveMatrix <- function(counts, dir, prefix, use.mtx) {
69
72
  }
70
73
  }
71
74
 
75
+ exportImages <- function(obj, outDir, embeddings.conf) {
76
+ #' used by ExportToCellbrowser:
77
+ #' Write spatial images to outDir
78
+ #'
79
+ #' @param obj The Seurat4 object
80
+ #' @param outDir output directory
81
+ #' @param an array of strings to write into the coords object into the cellbrowser config file
82
+ #'
83
+ if (length(obj@images)==0)
84
+ return(embeddings.conf)
85
+
86
+ message("Exporting spatial images")
87
+ require(png)
88
+ for (name in names(obj@images)) {
89
+ message(name);
90
+ img = GetImage(obj, mode="raw", image=name);
91
+ imgPath <- file.path(outDir, paste0(name, ".jpg"))
92
+ message("Writing image ", imgPath)
93
+ #writePNG(img, imgPath); # JPEG seems like a better choice here, 4x smaller at default quality settings.
94
+ writeJPEG(img, target=imgPath, quality=0.95);
95
+ yMax = dim(img)[1];
96
+ xMax = dim(img)[2]; # there is a difference of 3 pixels on height when comparing "identify file.jpeg" with this. NO IDEA WHY!
97
+ coordsPath <- file.path(outDir, paste0(name, ".coords.tsv"))
98
+ message("Writing coords for image to ", coordsPath)
99
+ #coords <- GetTissueCoordinates(object = obj[[img]])
100
+
101
+ coords <- GetTissueCoordinates(object = obj[[name]])
102
+ coordsRev <- coords[, c("imagecol", "imagerow")] # Grrrr... Seurat stores coordinates as (y,x) in this particular case. reverse the order now.
103
+ colnames(coordsRev) <- c("x", "y")
104
+
105
+ write.table(coordsRev, coordsPath, sep="\t", row.names=T, quote=F, col.names=NA)
106
+ conf <- sprintf(
107
+ ' {\n "file": "%s",\n "shortLabel": "Spatial %s",\n "flipY":True,\n "images" : [{"file":"%s"}],\n "minX":0, "minY":0, "maxX":%d, "maxY":%d\n }',
108
+ coordsPath,
109
+ name,
110
+ imgPath,
111
+ xMax,
112
+ yMax
113
+ )
114
+ embeddings.conf <- c(conf, embeddings.conf)
115
+ }
116
+ return(embeddings.conf)
117
+ }
118
+
72
119
  #' Export \code{Seurat} objects for UCSC cell browser and stop open cell browser
73
120
  #' instances from R
74
121
  #'
@@ -119,6 +166,7 @@ saveMatrix <- function(counts, dir, prefix, use.mtx) {
119
166
  #' @importFrom reticulate py_module_available import
120
167
  #' @importFrom Seurat Project Idents GetAssayData Embeddings FetchData
121
168
  #' @importFrom Matrix writeMM
169
+ #' @importFrom jpeg writeJPEG
122
170
  #'
123
171
  #' @export
124
172
  #'
@@ -195,6 +243,16 @@ ExportToCellbrowser <- function(
195
243
  break
196
244
  }
197
245
  }
246
+ if (is.null(x = cluster.field)) {
247
+ message("There is no meta field identical to idents(): using the value of Idents() as a new field 'Cluster'")
248
+ # create a new meta data field named "Cluster"
249
+ newDf <- cbind(object@meta.data, Idents(object))
250
+ # default name is "Idents(object)", not good, let's rename that to "Cluster"
251
+ names(newDf)[length(newDf)] <- "Cluster"
252
+ object@meta.data <- newDf
253
+ cluster.field <- "Cluster"
254
+ }
255
+
198
256
  } else {
199
257
  message("A custom cluster field was specified: ", cluster.field)
200
258
  Idents(object) <- object[[cluster.field]]
@@ -206,7 +264,7 @@ ExportToCellbrowser <- function(
206
264
 
207
265
  if (is.null(x = meta.fields)) {
208
266
  meta.fields <- colnames(x = meta)
209
- if (length(x = levels(x = idents)) > 1) {
267
+ if (length(x = levels(x = Idents(object))) > 1) {
210
268
  meta.fields <- c(meta.fields, ".ident")
211
269
  }
212
270
  }
@@ -278,7 +336,7 @@ ExportToCellbrowser <- function(
278
336
  embeddings.conf <- c()
279
337
  for (embedName in foundEmbedNames) {
280
338
  conf <- sprintf(
281
- '{"file": "%s.coords.tsv", "shortLabel": "Seurat %1$s"}',
339
+ ' {"file": "%s.coords.tsv", "shortLabel": "Seurat %1$s"}',
282
340
  embedName
283
341
  )
284
342
  embeddings.conf <- c(embeddings.conf, conf)
@@ -287,7 +345,7 @@ ExportToCellbrowser <- function(
287
345
  df <- data.frame(row.names = cellOrder, check.names = FALSE)
288
346
  for (field in meta.fields) {
289
347
  if (field == ".ident") {
290
- df$Cluster <- idents
348
+ df$Cluster <- Idents(object)
291
349
  enum.fields <- c(enum.fields, "Cluster")
292
350
  } else {
293
351
  name <- meta.fields.names[[field]]
@@ -321,7 +379,7 @@ ExportToCellbrowser <- function(
321
379
  file <- NULL
322
380
  }
323
381
  if (is.null(markers.file) && !skip.markers) {
324
- if (length(levels(idents)) > 1) {
382
+ if (length(levels(Idents(object))) > 1) {
325
383
  markers.helper <- function(x) {
326
384
  partition <- markers[x,]
327
385
 
@@ -391,6 +449,8 @@ ExportToCellbrowser <- function(
391
449
  matrixOutPath <- sprintf("%s%smatrix.mtx.gz", firstPrefix, matSep)
392
450
  }
393
451
 
452
+ embeddings.conf <- exportImages(object, dir, embeddings.conf)
453
+
394
454
  config <- '# This is a bare-bones cellbrowser config file auto-generated by the command-line tool cbImportSeurat
395
455
  # or directly from R with SeuratWrappers::ExportToCellbrowser().
396
456
  # Look at https://github.com/maximilianh/cellBrowser/blob/master/src/cbPyLib/cellbrowser/sampleConfig/cellbrowser.conf
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2023-01-23T13:13:53-0800",
11
+ "date": "2024-01-26T10:33:46-0800",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "835fecfcc43d06b6c3f62de6bea38a6b9b1c1124",
15
- "version": "v1.2.2"
14
+ "full-revisionid": "79b1a8dc88b82ca35ec995490618ad73697c354f",
15
+ "version": "v1.2.4"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -8,22 +8,56 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
8
8
 
9
9
  #tpExprViewTitle {
10
10
  background-color: #eee;
11
- padding: 3px;
11
+ padding: 5px;
12
+ height: 25px;
12
13
  /*border-bottom: 1px solid black; */
13
14
  }
14
15
 
15
16
  #tpExprView {
16
17
  position: absolute;
17
18
  z-index: 100;
18
- top: 1%;
19
- left: 1%;
20
19
  display: block;
21
20
  background-color: white;
22
- height: 98%;
23
- width: 98%;
21
+ top: 1%;
22
+ left: 1%;
23
+ height: 99%;
24
+ width: 99%;
24
25
  border: 1px solid grey;
25
26
  }
26
27
 
28
+ #tpGeneExprMetaLabel {
29
+ margin-left: 6px;
30
+ margin-right: 6px;
31
+ }
32
+
33
+ #tpExprViewPlot {
34
+ display:flex;
35
+ flex-direction: row;
36
+ flex-flow: wrap;
37
+ height:100%;
38
+ padding-top:10px;
39
+ overflow: scroll;
40
+ }
41
+
42
+ #tpExprViewContent {
43
+ padding: 6px;
44
+ height: 100%;
45
+ }
46
+
47
+ #tpGeneExprLabel {
48
+ margin-right: 6px;
49
+ }
50
+
51
+ .tpGeneExprCombo {
52
+ margin-left: 6px;
53
+ margin-right: 6px;
54
+ }
55
+
56
+ /* selectize dropdown triangle is black by default, make light grey like chosen's triangle */
57
+ .selectize-control.single .selectize-input:after {
58
+ border-color: #888 transparent transparent transparent;
59
+ }
60
+
27
61
  #tpLegendBar {
28
62
  cursor:default;
29
63
  padding-left: 2px;
@@ -54,7 +88,20 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
54
88
  1px 1px 0 #000;
55
89
  }
56
90
 
91
+ .sliderContainer {
92
+ position : absolute;
93
+ display: grid;
94
+ grid-template-columns: 45px 120px 15px;
95
+ }
96
+
97
+ .sliderLabel {
98
+ font-size: 11px;
99
+ z-index: 10;
100
+ font-weight: bold;
101
+ }
102
+
57
103
  .tpLegend { font-size:13px; /* border: 2px solid transparent; */ cursor:default; word-wrap: break-word; clear:both}
104
+ .tpLegendHl { background-color: #ccc; color: black; }
58
105
  .tpHint { font-weight:normal; line-height:1.4; font-size: 80%}
59
106
  #tpLegendHeader { background-color:#eee; color: #777 }
60
107
  #tpLegendTitle { font-weight: bold }
@@ -68,6 +115,7 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
68
115
  .tpLegend .tpLegendCheckbox { margin-right: 2px; margin-top: 2px}
69
116
  .tpGrey { color: #bbb }
70
117
 
118
+
71
119
  .ui-helper-reset { font-size: 12px}
72
120
  .ui-tabs { padding: 0 }
73
121
  .ui-tabs { padding: 0 }
@@ -85,7 +133,28 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
85
133
  #tpButtonInfo { height: 24px; top: 1px; margin-right: 8px; width: 120px; border-radius: 4px }
86
134
  .tpDialogInput { margin-left: 12px; margin-top: 5px; margin-bottom: 12px; }
87
135
 
88
- .tpIconButton { padding: 1px 2px 1px 2px; border-radius: 0; height:28px; width: 28px; cursor: default}
136
+ .tpIconButton {
137
+ padding: 1px 2px 1px 2px;
138
+ border-radius: 0;
139
+ height:28px;
140
+ width: 28px;
141
+ cursor: default
142
+ }
143
+
144
+ .tpRibbonButton {
145
+ padding: 1px 2px 1px 2px;
146
+ border-radius: 4px;
147
+ height: 24px;
148
+ border: 1px solid #c5c5c5;
149
+ vertical-align: top;
150
+ text-align: center;
151
+ margin-right: 8px;
152
+ top: 3px;
153
+ position: relative;
154
+ padding-left: 4px;
155
+ padding-right: 4px;
156
+ }
157
+
89
158
  .tpClicked { background-color: #AAA }
90
159
  .tpClicked:hover { background-color: #AAA }
91
160
  .btn-primary.load-dataset {float: right; margin-left: 10px; color: white; font-size: 12px; margin-top: -4px;}
@@ -109,7 +178,7 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
109
178
  }
110
179
 
111
180
  /* modify bootstrap tooltip defaults */
112
- .tooltip-inner { min-width: 220px; border-radius: 0}
181
+ .tooltip-inner { min-width: 220px; border-radius: 0; background-opacity: 50%}
113
182
 
114
183
  .ui-widget-header { background: white}
115
184
  .ui-state-active { background: green }
@@ -124,6 +193,19 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
124
193
  font-weight: bold;
125
194
  }
126
195
 
196
+ /* expression progress bar only */
197
+ .ui-progressbar {
198
+ position: relative;
199
+ }
200
+ .progress-label {
201
+ position: absolute;
202
+ left: 50%;
203
+ top: 4px;
204
+ font-weight: bold;
205
+ /*text-shadow: 1px 1px 0 #fff;*/
206
+ }
207
+
208
+
127
209
  .context-menu-item {
128
210
  font-size: 13px;
129
211
  padding: 3px
@@ -183,7 +265,7 @@ section { font-weight: bold; padding-top: 5px; padding-bottom: 5px }
183
265
  }
184
266
 
185
267
  input[type=checkbox], input[type=radio] {
186
- vertical-align : -2px; // https://stackoverflow.com/a/2806786/233871
268
+ vertical-align : -2px; /* https://stackoverflow.com/a/2806786/233871 */
187
269
  }
188
270
 
189
271
 
@@ -223,7 +305,7 @@ input[type=checkbox], input[type=radio] {
223
305
  height: 100%;
224
306
  }
225
307
 
226
- #tpGeneTab, #tpAnnotTab {
308
+ #tpGeneTab, #tpAnnotTab, #tpLayoutTab {
227
309
  border-top: 1px solid #AAA;
228
310
  padding:0;
229
311
  padding-top: 5px;
@@ -292,6 +374,25 @@ button { line-height: 12px }
292
374
  .tpToolBarItem { display:inline-block; white-space: nowrap }
293
375
  .tpToolBarItem > label { margin-right: 7px; display: inline}
294
376
 
377
+ .tpLeftSideItem {
378
+ display:inline-block;
379
+ white-space: nowrap;
380
+ width:100%
381
+ }
382
+ .tpLeftSideItem > label {
383
+ margin-right: 7px;
384
+ display: inline;
385
+ display:block;
386
+ margin-bottom:8px;
387
+ padding-top: 8px;
388
+ padding-left:4px
389
+ }
390
+ #tpLayoutCombo_chosen {
391
+ width:100%;
392
+ padding-left:4px;
393
+ padding-right:2px;
394
+ }
395
+
295
396
  .tpCombo { display: inline-block}
296
397
 
297
398