genome-spy-python 0.4.0__tar.gz → 0.6.0__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 (382) hide show
  1. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.github/workflows/ci.yml +1 -1
  2. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.gitignore +3 -0
  3. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/CHANGELOG.md +57 -0
  4. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/PKG-INFO +85 -28
  5. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/README.md +84 -27
  6. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/THIRD_PARTY_NOTICES.md +13 -0
  7. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_ext/genomespy_gallery.py +5 -0
  8. genome_spy_python-0.6.0/docs/_static/gallery/airway_ma_plot.png +0 -0
  9. genome_spy_python-0.6.0/docs/_static/gallery/airway_volcano_plot.png +0 -0
  10. genome_spy_python-0.6.0/docs/_static/gallery/multiple_sequence_alignment.png +0 -0
  11. genome_spy_python-0.6.0/docs/_static/gallery/pisa_interaction_matrix.png +0 -0
  12. genome_spy_python-0.6.0/docs/_static/gallery/pisa_squid.png +0 -0
  13. genome_spy_python-0.6.0/docs/_static/gallery/sequence_logo.png +0 -0
  14. genome_spy_python-0.6.0/docs/_static/readme-manhattan.webp +0 -0
  15. genome_spy_python-0.6.0/docs/_static/readme-sequence-logo.webp +0 -0
  16. genome_spy_python-0.6.0/docs/_static/snaketie.svg +1 -0
  17. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/workflows.css +6 -4
  18. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/api.md +5 -0
  19. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/datasets.md +1 -0
  20. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/airway_ma_plot.py +64 -51
  21. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/airway_volcano_plot.py +64 -51
  22. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/ascat_fitting.py +1 -1
  23. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/bam_read_alignments.py +1 -1
  24. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/bam_read_pileup.py +1 -1
  25. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/bigbed_ccre_track.py +1 -1
  26. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/composing_genome_browser.py +1 -1
  27. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/coverage_pileup.py +1 -1
  28. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/cytobands.py +1 -1
  29. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/diverging_bars.py +1 -1
  30. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/dynseq_adaptive_bqtl.py +1 -1
  31. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/dynseq_bqtl.py +1 -1
  32. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/genome_tracks.py +1 -1
  33. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/geometric_zoom.py +1 -1
  34. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/gff3_gene_annotations.py +1 -1
  35. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/hcc1954_sv_cnv.py +6 -1
  36. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/heatmap_with_text.py +1 -1
  37. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/independent_scales.py +1 -1
  38. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/indexed_fasta_sequence.py +1 -1
  39. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/layered_lollipop.py +1 -1
  40. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/link_mark.py +1 -1
  41. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/multiple_sequence_alignment.py +8 -8
  42. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/p53_sequence_comparison.py +1 -1
  43. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/penguin_brush.py +1 -1
  44. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/pik3ca_tcga_brca_lollipop.py +2 -1
  45. genome_spy_python-0.6.0/docs/examples/pisa_interaction_matrix.md +50 -0
  46. genome_spy_python-0.6.0/docs/examples/pisa_interaction_matrix.py +354 -0
  47. genome_spy_python-0.6.0/docs/examples/pisa_squid.md +52 -0
  48. genome_spy_python-0.6.0/docs/examples/pisa_squid.py +304 -0
  49. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/point_mark.py +1 -1
  50. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/point_styles.py +1 -1
  51. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/ranged_rule.py +1 -1
  52. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/rect_heatmap.py +1 -1
  53. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/refseq_scored_genes.py +1 -1
  54. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/rnf7_direct_rna.py +2 -2
  55. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/sashimi_plot.py +10 -2
  56. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/scrollable_viewport.py +1 -1
  57. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/sequence_logo.py +3 -4
  58. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/six_frame_translation.py +1 -1
  59. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/stacked_bar.py +1 -1
  60. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/stacked_genome_browser.py +1 -1
  61. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/tsne.py +1 -1
  62. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/vertical_concat.py +1 -1
  63. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/volcano_plot.py +1 -1
  64. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/getting-started.md +2 -4
  65. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/index.md +1 -1
  66. genome_spy_python-0.6.0/docs/integration/component.py +92 -0
  67. genome_spy_python-0.6.0/docs/integration/index.html +50 -0
  68. genome_spy_python-0.6.0/docs/integration/notebook.ipynb +101 -0
  69. genome_spy_python-0.6.0/docs/integration/server.py +103 -0
  70. genome_spy_python-0.6.0/docs/user-guide/connect-python.md +8 -0
  71. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/data.md +1 -1
  72. genome_spy_python-0.6.0/docs/user-guide/display-controls.md +8 -0
  73. genome_spy_python-0.6.0/docs/user-guide/embed-api.md +124 -0
  74. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/index.md +9 -29
  75. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/interaction.md +60 -15
  76. genome_spy_python-0.6.0/docs/user-guide/notebooks.md +146 -0
  77. genome_spy_python-0.6.0/docs/user-guide/serialization.md +114 -0
  78. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/transforms.md +27 -5
  79. genome_spy_python-0.6.0/docs/user-guide/using-charts.md +31 -0
  80. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/workflows/annotate-intervals.md +3 -0
  81. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/workflows/index.md +6 -0
  82. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/notebooks/edit_sequence.ipynb +7 -3
  83. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/notebooks/pick_genes.ipynb +3 -1
  84. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/notebooks/select_genes.ipynb +3 -1
  85. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/pyproject.toml +2 -2
  86. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/__init__.py +11 -1
  87. genome_spy_python-0.6.0/src/genome_spy/_conditions.py +131 -0
  88. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/api.py +10 -0
  89. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/__init__.py +1 -0
  90. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/_airway.py +35 -47
  91. genome_spy_python-0.6.0/src/genome_spy/datasets/data/airway_review.json.gz +0 -0
  92. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/schema/__init__.py +15 -1
  93. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/schema/_kwds.py +1 -0
  94. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/schema/_typing.py +1 -1
  95. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/schema/capabilities.json +13 -1
  96. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/schema/composition.py +43 -26
  97. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/schema/core.py +1195 -402
  98. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/schema/ergonomics.py +40 -3
  99. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/schema/expressions.py +12 -0
  100. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/schema/genome-spy-schema.json +576 -100
  101. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/schema/mixins.py +233 -103
  102. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/static/controls.js +1 -1
  103. genome_spy_python-0.6.0/src/genome_spy/static/genome-spy.js +1005 -0
  104. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/static/inspector.js +1 -1
  105. genome_spy_python-0.6.0/tests/browser/test_python_web_example.py +153 -0
  106. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_chart.py +31 -2
  107. genome_spy_python-0.6.0/tests/test_conditions.py +135 -0
  108. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_datasets.py +7 -13
  109. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_docs_gallery.py +74 -104
  110. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_docs_tutorial.py +53 -7
  111. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_generated_schema_package.py +26 -0
  112. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_licensing.py +1 -0
  113. genome_spy_python-0.6.0/tests/test_pisa_gallery.py +94 -0
  114. genome_spy_python-0.6.0/tests/test_python_connection_example.py +93 -0
  115. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_schema_codegen.py +29 -0
  116. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tools/docs_gallery.py +34 -15
  117. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tools/docs_workflows.py +15 -11
  118. genome_spy_python-0.6.0/tools/prepare_airway_review.py +55 -0
  119. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tools/schemapi/codegen.py +49 -10
  120. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tools/vendor_javascript.py +3 -3
  121. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/uv.lock +1 -1
  122. genome_spy_python-0.4.0/docs/_static/gallery/airway_ma_plot.png +0 -0
  123. genome_spy_python-0.4.0/docs/_static/gallery/airway_volcano_plot.png +0 -0
  124. genome_spy_python-0.4.0/docs/_static/gallery/multiple_sequence_alignment.png +0 -0
  125. genome_spy_python-0.4.0/docs/_static/gallery/sequence_logo.png +0 -0
  126. genome_spy_python-0.4.0/docs/_static/snaketie.svg +0 -74
  127. genome_spy_python-0.4.0/docs/user-guide/display-controls.md +0 -110
  128. genome_spy_python-0.4.0/docs/user-guide/embed-api.md +0 -42
  129. genome_spy_python-0.4.0/docs/user-guide/embed-integration.md +0 -101
  130. genome_spy_python-0.4.0/docs/user-guide/notebooks.md +0 -159
  131. genome_spy_python-0.4.0/docs/user-guide/serialization.md +0 -64
  132. genome_spy_python-0.4.0/src/genome_spy/_conditions.py +0 -72
  133. genome_spy_python-0.4.0/src/genome_spy/static/genome-spy.js +0 -1017
  134. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.agents/skills/commit/SKILL.md +0 -0
  135. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.agents/skills/proper-code-review/SKILL.md +0 -0
  136. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.agents/skills/proper-code-review/references/correctness.md +0 -0
  137. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.agents/skills/proper-code-review/references/design.md +0 -0
  138. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.agents/skills/proper-code-review/references/performance.md +0 -0
  139. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.claude/skills/commit/SKILL.md +0 -0
  140. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.claude/skills/proper-code-review/SKILL.md +0 -0
  141. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.claude/skills/proper-code-review/references/correctness.md +0 -0
  142. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.claude/skills/proper-code-review/references/design.md +0 -0
  143. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.claude/skills/proper-code-review/references/performance.md +0 -0
  144. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.gitattributes +0 -0
  145. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.github/workflows/docs.yml +0 -0
  146. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.github/workflows/release.yml +0 -0
  147. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.pre-commit-config.yaml +0 -0
  148. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/.python-version +0 -0
  149. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/AGENTS.md +0 -0
  150. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/CLAUDE.md +0 -0
  151. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/CONTRIBUTING.md +0 -0
  152. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/LICENSE +0 -0
  153. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/LICENSES/ALTAIR-BSD-3-Clause.txt +0 -0
  154. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/LICENSES/CC-BY-4.0.txt +0 -0
  155. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/LICENSES/CC-BY-NC-SA-4.0.txt +0 -0
  156. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/LICENSES/CC0-1.0.txt +0 -0
  157. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/LICENSES/DATA-SOURCE-REPOSITORIES-MIT.txt +0 -0
  158. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/LICENSES/GENOMESPY-MIT.txt +0 -0
  159. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/LICENSES/LATO-OFL-1.1.txt +0 -0
  160. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/LICENSES/VEGA-BSD-3-Clause.txt +0 -0
  161. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/LICENSES/VEGA-LITE-BSD-3-Clause.txt +0 -0
  162. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/data/README.md +0 -0
  163. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/data/airway_metadata.csv +0 -0
  164. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/data/airway_scaledcounts.csv +0 -0
  165. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/data/hapmap_gwas.csv +0 -0
  166. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/data/oncoprint_dataset3.json +0 -0
  167. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/data/pik3ca_mutations.json +0 -0
  168. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/external-links.js +0 -0
  169. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/ascat_copy_number.png +0 -0
  170. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/ascat_fitting.png +0 -0
  171. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/bam_read_alignments.png +0 -0
  172. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/bam_read_pileup.png +0 -0
  173. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/bigbed_ccre_track.png +0 -0
  174. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/brush_linked_genome_tracks.png +0 -0
  175. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/clinvar_variants.png +0 -0
  176. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/combined_laml_oncoplot.png +0 -0
  177. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/composing_genome_browser.png +0 -0
  178. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/copy_number.png +0 -0
  179. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/coverage_pileup.png +0 -0
  180. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/cytobands.png +0 -0
  181. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/diverging_bars.png +0 -0
  182. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/dynseq_adaptive_bqtl.png +0 -0
  183. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/dynseq_bqtl.png +0 -0
  184. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/genome_tracks.png +0 -0
  185. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/geometric_zoom.png +0 -0
  186. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/gff3_gene_annotations.png +0 -0
  187. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/hcc1954_sv_cnv.png +0 -0
  188. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/heatmap_with_text.png +0 -0
  189. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/independent_scales.png +0 -0
  190. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/indexed_fasta_sequence.png +0 -0
  191. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/layered_lollipop.png +0 -0
  192. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/link_mark.png +0 -0
  193. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/luad_oncoprint.png +0 -0
  194. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/manhattan_plot.png +0 -0
  195. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/needle_plot.png +0 -0
  196. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/oncoprint.png +0 -0
  197. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/p53_sequence_comparison.png +0 -0
  198. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/penguin_brush.png +0 -0
  199. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/pik3ca_tcga_brca_lollipop.png +0 -0
  200. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/point_mark.png +0 -0
  201. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/point_styles.png +0 -0
  202. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/rainfall_plot.png +0 -0
  203. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/ranged_rule.png +0 -0
  204. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/rect_heatmap.png +0 -0
  205. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/refseq_scored_genes.png +0 -0
  206. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/rnf7_direct_rna.png +0 -0
  207. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/sashimi_plot.png +0 -0
  208. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/scrollable_viewport.png +0 -0
  209. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/six_frame_translation.png +0 -0
  210. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/stacked_bar.png +0 -0
  211. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/stacked_genome_browser.png +0 -0
  212. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/tcga_ov_gistic.png +0 -0
  213. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/tsne.png +0 -0
  214. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/upset_mutations.png +0 -0
  215. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/vertical_concat.png +0 -0
  216. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/gallery/volcano_plot.png +0 -0
  217. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/genomespy.css +0 -0
  218. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/showcase.js +0 -0
  219. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_static/workflows.js +0 -0
  220. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_templates/autosummary/class.rst +0 -0
  221. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_templates/autosummary/class_own_members.rst +0 -0
  222. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_templates/base.html +0 -0
  223. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/_templates/components/view-this-page.html +0 -0
  224. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/about.md +0 -0
  225. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/conf.py +0 -0
  226. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/airway_ma_plot.md +0 -0
  227. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/airway_volcano_plot.md +0 -0
  228. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/ascat_copy_number.md +0 -0
  229. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/ascat_copy_number.py +0 -0
  230. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/ascat_fitting.md +0 -0
  231. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/bam_read_alignments.md +0 -0
  232. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/bam_read_pileup.md +0 -0
  233. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/brush_linked_genome_tracks.md +0 -0
  234. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/brush_linked_genome_tracks.py +0 -0
  235. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/clinvar_variants.md +0 -0
  236. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/clinvar_variants.py +0 -0
  237. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/combined_laml_oncoplot.md +0 -0
  238. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/combined_laml_oncoplot.py +0 -0
  239. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/composing_genome_browser.md +0 -0
  240. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/copy_number.py +0 -0
  241. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/coverage_pileup.md +0 -0
  242. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/cytobands.md +0 -0
  243. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/diverging_bars.md +0 -0
  244. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/dynseq_adaptive_bqtl.md +0 -0
  245. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/dynseq_bqtl.md +0 -0
  246. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/geometric_zoom.md +0 -0
  247. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/gff3_gene_annotations.md +0 -0
  248. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/hcc1954_sv_cnv.md +0 -0
  249. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/heatmap_with_text.md +0 -0
  250. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/independent_scales.md +0 -0
  251. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/layered_lollipop.md +0 -0
  252. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/luad_oncoprint.md +0 -0
  253. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/luad_oncoprint.py +0 -0
  254. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/manhattan_plot.md +0 -0
  255. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/manhattan_plot.py +0 -0
  256. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/multiple_sequence_alignment.md +0 -0
  257. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/needle_plot.py +0 -0
  258. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/oncoprint.md +0 -0
  259. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/oncoprint.py +0 -0
  260. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/p53_sequence_comparison.md +0 -0
  261. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/penguin_brush.md +0 -0
  262. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/pik3ca_tcga_brca_lollipop.md +0 -0
  263. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/point_styles.md +0 -0
  264. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/rainfall_plot.md +0 -0
  265. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/rainfall_plot.py +0 -0
  266. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/refseq_scored_genes.md +0 -0
  267. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/rnf7_direct_rna.md +0 -0
  268. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/sashimi_plot.md +0 -0
  269. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/six_frame_translation.md +0 -0
  270. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/stacked_bar.md +0 -0
  271. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/tcga_ov_gistic.md +0 -0
  272. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/tcga_ov_gistic.py +0 -0
  273. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/tsne.md +0 -0
  274. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/upset_mutations.md +0 -0
  275. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/upset_mutations.py +0 -0
  276. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/examples/volcano_plot.md +0 -0
  277. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/annotations.py +0 -0
  278. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/charts_and_marks.py +0 -0
  279. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/composition.py +0 -0
  280. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/configuration.py +0 -0
  281. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/data_inputs.py +0 -0
  282. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/display_controls.py +0 -0
  283. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/encoding_channels.py +0 -0
  284. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/genome_browser_layouts.py +0 -0
  285. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/genomic_coordinates.py +0 -0
  286. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/genomic_data.py +0 -0
  287. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/getting_started.py +0 -0
  288. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/importing_specifications.py +0 -0
  289. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/interaction.py +0 -0
  290. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/notebooks.py +0 -0
  291. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/scales_and_guides.py +0 -0
  292. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/serialization.py +0 -0
  293. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/tutorials/transforms.py +0 -0
  294. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/annotations.md +0 -0
  295. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/charts.md +0 -0
  296. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/composition.md +0 -0
  297. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/configuration.md +0 -0
  298. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/encodings.md +0 -0
  299. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/genome-browser-layouts.md +0 -0
  300. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/genomic-axes.md +0 -0
  301. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/genomic-data.md +0 -0
  302. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/importing-specifications.md +0 -0
  303. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/scales-axes-legends.md +0 -0
  304. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/workflows/edit-sequence.md +0 -0
  305. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/workflows/pick-genes.md +0 -0
  306. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/docs/user-guide/workflows/select-genes.md +0 -0
  307. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/notebooks/annotate_genomic_intervals.ipynb +0 -0
  308. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/notebooks/brush_linked_genome_tracks.ipynb +0 -0
  309. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/notebooks/embed_api.ipynb +0 -0
  310. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/_chart_authoring.py +0 -0
  311. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/_embed.py +0 -0
  312. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/_expressions.py +0 -0
  313. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/_parameters.py +0 -0
  314. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/_render.py +0 -0
  315. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/_utils.py +0 -0
  316. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/_widget.py +0 -0
  317. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/arrow.py +0 -0
  318. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/channels.py +0 -0
  319. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/chart.py +0 -0
  320. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/data.py +0 -0
  321. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/data_transformers.py +0 -0
  322. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/_annotations.py +0 -0
  323. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/_direct_rna.py +0 -0
  324. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/_gistic.py +0 -0
  325. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/_grammar.py +0 -0
  326. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/_hapmap.py +0 -0
  327. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/_mutation.py +0 -0
  328. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/_oncoprint.py +0 -0
  329. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/airway_metadata.csv +0 -0
  330. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/airway_scaledcounts.csv +0 -0
  331. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/brca.maf.gz +0 -0
  332. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/hapmap_gwas.csv +0 -0
  333. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/mutation_impact_reference.json +0 -0
  334. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/oncoprint_dataset3.json +0 -0
  335. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/p53_sequence_comparison_aligned.fasta.gz +0 -0
  336. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/pik3ca_mutations.json +0 -0
  337. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/pik3ca_tcga_brca_lollipop.json +0 -0
  338. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/refseq_gene_bodies.csv.gz +0 -0
  339. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/rnf7_direct_rna.json.gz +0 -0
  340. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/tal1_alphagenome_reference.json.gz +0 -0
  341. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/tcga.tsv +0 -0
  342. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/tcga_laml.maf.gz +0 -0
  343. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/tcga_laml_annot.tsv +0 -0
  344. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/tcga_laml_combined_oncoplot.json.gz +0 -0
  345. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/tcga_ov_gistic_lesions.tsv.gz +0 -0
  346. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/datasets/data/tcga_ov_gistic_scores.tsv.gz +0 -0
  347. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/embed.py +0 -0
  348. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/helpers.py +0 -0
  349. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/jupyter.py +0 -0
  350. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/py.typed +0 -0
  351. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/schema/channels.py +0 -0
  352. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/schema/lazy.py +0 -0
  353. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/schemapi.py +0 -0
  354. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/static/embed-bridge.js +0 -0
  355. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/src/genome_spy/static/widget.js +0 -0
  356. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/__init__.py +0 -0
  357. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/browser/test_docs_workflows.py +0 -0
  358. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/browser/test_embed_api.py +0 -0
  359. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/browser/test_offline_rendering.py +0 -0
  360. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/embed-bridge.test.mjs +0 -0
  361. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_arrow.py +0 -0
  362. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_combined_gallery_data.py +0 -0
  363. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_data_transformers.py +0 -0
  364. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_docs_api_reference.py +0 -0
  365. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_embed.py +0 -0
  366. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_embed_notebook.py +0 -0
  367. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_expressions.py +0 -0
  368. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_generated_transform_methods.py +0 -0
  369. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_javascript_assets.py +0 -0
  370. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_render_thumbnails.py +0 -0
  371. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_rnf7_direct_rna_example.py +0 -0
  372. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_widget.py +0 -0
  373. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/test_workflow_notebooks.py +0 -0
  374. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tests/widget.test.mjs +0 -0
  375. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tools/check_notebook_rendering.py +0 -0
  376. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tools/generate_api_docs.py +0 -0
  377. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tools/generate_schema_wrapper.py +0 -0
  378. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tools/prepare_combined_gallery_data.py +0 -0
  379. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tools/prepare_refseq_gene_annotations.py +0 -0
  380. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tools/render_thumbnails.py +0 -0
  381. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tools/schemapi/__init__.py +0 -0
  382. {genome_spy_python-0.4.0 → genome_spy_python-0.6.0}/tools/schemapi/expression_codegen.py +0 -0
@@ -103,7 +103,7 @@ jobs:
103
103
  uv venv --seed --python 3.11 "$RUNNER_TEMP/notebook-env"
104
104
  for wheel in "$GITHUB_WORKSPACE"/dist/*.whl; do
105
105
  uv pip install --python "$RUNNER_TEMP/notebook-env/bin/python" \
106
- "$wheel[arrow]" "anywidget==0.11.0" jupyterlab pandas numpy scipy statsmodels playwright pillow pytest
106
+ "$wheel[arrow]" "anywidget==0.11.0" jupyterlab pandas numpy scipy statsmodels playwright pillow pytest aiohttp
107
107
  done
108
108
  "$RUNNER_TEMP/notebook-env/bin/python" -m playwright install --with-deps chromium
109
109
  - name: Verify offline HTML from the installed wheel
@@ -248,3 +248,6 @@ tools/__pycache__/
248
248
  scripts/*alphagenome*.py
249
249
  scripts/fetch_*_reference.py
250
250
  scripts/_fetch_reference.py
251
+
252
+ # Local recording demos and working files
253
+ /demos/
@@ -5,6 +5,62 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.6.0] - 2026-10-01
9
+
10
+ ### Added
11
+
12
+ - Add the prepared `airway_review` dataset for gene-review examples.
13
+
14
+ ### Changed
15
+
16
+ - Upgrade GenomeSpy Core, controls, and Inspector to 1.0.0 and regenerate
17
+ the Python schema API, including configurable `displace2d` animation half-life.
18
+ - Extend the sequence-editing notebook to support multi-base edits across the
19
+ displayed locus.
20
+ - Improve interaction and PISA documentation, gallery expressions, and README
21
+ animations.
22
+
23
+ ### Fixed
24
+
25
+ - Expose selection predicate classes through `gs` and support typed endpoint
26
+ projection setters, avoiding raw dictionaries in composed conditions.
27
+ - Restrict sequence-logo and alignment-logo zoom to the position axis and share
28
+ one bottom alignment axis.
29
+ - Render the ASCAT fitting example title as literal text.
30
+
31
+ ## [0.5.0] - 2026-09-25
32
+
33
+ ### Added
34
+
35
+ - Compose selection conditions in `gs.when()` with `and`, `or`, and `not`,
36
+ endpoint projections, and named predicate references. Nested selection
37
+ handles retain their empty-selection behavior.
38
+ - Add PISA squid and interaction-matrix gallery examples adapted from the
39
+ official GenomeSpy specifications, with endpoint brushing, conditional link
40
+ highlighting, and zoom-dependent cell labels.
41
+
42
+ ### Changed
43
+
44
+ - Use browser-side `displace2d` label placement in the airway volcano and MA
45
+ gallery plots, with denser gene annotations and adaptive leader lines.
46
+
47
+ - Reorganize the gallery into 13 categories, separating regulatory model
48
+ interpretation, read alignments and RNA splicing, sequences and alignments,
49
+ and interaction examples from the broader browser, annotation, and basic groups.
50
+ - Upgrade GenomeSpy Core, controls, and Inspector from 0.88.1 to 0.89.0.
51
+ Regenerate support for 2D displacement, bidirectional arrows, debounced
52
+ expression parameters and transforms, composed selection predicates, and
53
+ `tickStep` expressions.
54
+ - Upstream interval brushes now use half-open boundaries. View-level scale
55
+ declarations require explicit `axes` settings to create axes when no
56
+ positional encoding supplies them.
57
+
58
+ ### Fixed
59
+
60
+ - Preserve explicitly wrapped `ExprParameter` declarations after upstream
61
+ split expression parameters into plain, transitioned, and debounced variants.
62
+ - Refresh the bundled runtime build for the relocated upstream font license.
63
+
8
64
  ## [0.4.0] - 2026-09-18
9
65
 
10
66
  ### Added
@@ -96,6 +152,7 @@ First public alpha release, targeting GenomeSpy Core 0.87.0.
96
152
  - Packaged example datasets, documentation, tutorials, and an interactive
97
153
  visualization gallery.
98
154
 
155
+ [0.5.0]: https://github.com/genome-spy/genome-spy-python/compare/v0.4.0...v0.5.0
99
156
  [0.4.0]: https://github.com/genome-spy/genome-spy-python/compare/v0.3.0...v0.4.0
100
157
  [0.3.0]: https://github.com/genome-spy/genome-spy-python/compare/v0.2.0...v0.3.0
101
158
  [0.2.0]: https://github.com/genome-spy/genome-spy-python/compare/v0.1.0...v0.2.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: genome-spy-python
3
- Version: 0.4.0
3
+ Version: 0.6.0
4
4
  Summary: genome-spy-python is a declarative genomics visualization library for Python, built on top of the genome-spy JSON specification.
5
5
  Project-URL: Homepage, https://github.com/genome-spy/genome-spy-python
6
6
  Project-URL: Documentation, https://genomespy.app/genome-spy-python/
@@ -102,59 +102,113 @@ See the [getting-started guide](docs/getting-started.md) for the first example.
102
102
 
103
103
  ## Examples
104
104
 
105
+ A zoomable Manhattan plot using the bundled HapMap data (requires `pandas`):
106
+
105
107
  ```python
106
108
  import genome_spy as gs
109
+ from genome_spy.datasets import load_dataset
107
110
 
108
111
  chart = (
109
- gs.Chart(
110
- [
111
- {"x": 1, "y": 4, "group": "A"},
112
- {"x": 2, "y": 3, "group": "B"},
113
- {"x": 3, "y": 5, "group": "A"},
114
- ]
115
- )
116
- .mark_point(size=80)
112
+ # Load data.
113
+ gs.Chart(load_dataset("hapmap_gwas"))
114
+ # Format chromosome names.
115
+ .transform_formula(expr="datum.CHR == 23 ? 'chrX' : 'chr' + datum.CHR", as_="chrom")
116
+ # Calculate −log10 p.
117
+ .transform_formula(expr="-log(datum.P) / log(10)", as_="neglogp")
118
+ # Draw variants.
119
+ .mark_point(size=12)
120
+ # Set positions and colors.
117
121
  .encode(
118
- x="x:Q",
119
- y="y:Q",
120
- color="group:N",
122
+ x=gs.Locus("chrom", "BP").scale(assembly="hg18"),
123
+ y=gs.Y("neglogp:Q").title("−log10 p"),
124
+ color=gs.Color("CHR:N").scale(range=["#5b8fd6", "#8f98a3"]).legend(None),
121
125
  )
122
126
  )
123
-
124
127
  chart
125
128
  ```
126
129
 
127
- GenomeSpy also has locus-scaled axes for genomic coordinates. This small
128
- example renders intervals along a region of chromosome 1:
130
+ ![Manhattan plot zooming from the whole genome into an association peak](https://raw.githubusercontent.com/genome-spy/genome-spy-python/a6c724f48d94f86d8d0a8c3200549d7560a88a3c/docs/_static/readme-manhattan.webp)
131
+
132
+ [Explore the full example and data provenance](https://genomespy.app/genome-spy-python/gallery/manhattan_plot.html).
133
+
134
+ A sequence logo and aligned sequences with shared horizontal zoom:
129
135
 
130
136
  ```python
131
137
  import genome_spy as gs
132
138
 
133
- intervals = [
134
- {"chrom": "chr1", "start": 100, "end": 220, "name": "gene A"},
135
- {"chrom": "chr1", "start": 280, "end": 420, "name": "gene B"},
136
- ]
137
-
139
+ logo = (
140
+ gs.Chart()
141
+ # Count bases at each position.
142
+ .transform_aggregate(groupby=["pos", "sequence"])
143
+ # Handle gaps.
144
+ .transform_formula(expr="datum.sequence == '-' ? null : datum.sequence", as_="base")
145
+ # Stack bases by information content.
146
+ .transform_stack(
147
+ field="count",
148
+ groupby=["pos"],
149
+ offset="information",
150
+ baseField="base",
151
+ as_=["y0", "y1"],
152
+ )
153
+ # Draw logo letters.
154
+ .mark_text(logoLetters=True, fitToBand=True, fontWeight="bold")
155
+ # Set stack bounds.
156
+ .encode(
157
+ y=gs.Y("y0:Q").scale(domain=[0, 2], zoom=False).title("Bits"),
158
+ y2="y1:Q",
159
+ text="base:N",
160
+ )
161
+ .properties(height=100)
162
+ )
163
+ # Create sequence rows.
164
+ rows = gs.Chart().encode(y=gs.Y("identifier:N").scale(zoom=False).axis(None))
165
+ # Add base labels.
166
+ letters = rows.mark_text(size=11, fitToBand=True, opacity=0.7).encode(
167
+ text="sequence:N", color=gs.value("black")
168
+ )
169
+ # Layer tiles and labels.
170
+ sequences = (rows.mark_rect() + letters).properties(
171
+ height=gs.step(16), viewportHeight=160
172
+ )
138
173
  chart = (
139
- gs.Chart(intervals)
140
- .mark_rect()
174
+ # Combine panels.
175
+ (logo & sequences)
176
+ # Load data.
177
+ .properties(
178
+ data=gs.Data(
179
+ url="https://data.genomespy.app/sample-data/16SRNA_Deino_87seq.aln",
180
+ format=gs.data_format(type="fasta"),
181
+ )
182
+ )
183
+ # Split sequences into bases.
184
+ .transform_flatten_sequence()
185
+ # Set positions and colors.
141
186
  .encode(
142
- x=gs.Locus("chrom", "start"),
143
- x2="end:Q",
144
- y="name:N",
145
- color="name:N",
187
+ x=gs.X("pos:I").scale(domain=[190, 310], zoom=True).title(None),
188
+ color=gs.Color("sequence:N")
189
+ .scale(
190
+ domain=list("ACTGN-"),
191
+ range=["#4FBF45", "#4D96E8", "#E85F78", "#E8B322", "#BDBDBD", "#f5f5f5"],
192
+ )
193
+ .legend(None),
146
194
  )
195
+ # Share zoom and colors.
196
+ .resolve_scale(x="shared", color="shared")
197
+ .resolve_axis(x="shared")
147
198
  )
148
-
149
199
  chart
150
200
  ```
151
201
 
202
+ ![Sequence logo and aligned sequences zooming across multiple regions](https://raw.githubusercontent.com/genome-spy/genome-spy-python/main/docs/_static/readme-sequence-logo.webp?v=4cd9f86a0d31)
203
+
152
204
  Charts can be serialized to a portable GenomeSpy specification or standalone
153
205
  HTML:
154
206
 
155
207
  ```python
208
+ # Export JSON.
156
209
  chart.to_json()
157
- chart.save("intervals.html")
210
+ # Save HTML.
211
+ chart.save("chart.html")
158
212
  ```
159
213
 
160
214
  ### Update data without recreating the chart
@@ -165,12 +219,15 @@ existing GenomeSpy instance, so view state such as zoom is preserved.
165
219
 
166
220
  ```python
167
221
  chart = (
222
+ # Create an empty chart.
168
223
  gs.Chart(data={"name": "table"}, datasets={"table": []})
169
224
  .mark_point()
170
225
  .encode(x="x:Q", y="y:Q")
171
226
  )
227
+ # Show widget.
172
228
  view = chart.widget()
173
229
 
230
+ # Update data.
174
231
  view.set_dataset("table", updated_dataframe)
175
232
  ```
176
233
 
@@ -63,59 +63,113 @@ See the [getting-started guide](docs/getting-started.md) for the first example.
63
63
 
64
64
  ## Examples
65
65
 
66
+ A zoomable Manhattan plot using the bundled HapMap data (requires `pandas`):
67
+
66
68
  ```python
67
69
  import genome_spy as gs
70
+ from genome_spy.datasets import load_dataset
68
71
 
69
72
  chart = (
70
- gs.Chart(
71
- [
72
- {"x": 1, "y": 4, "group": "A"},
73
- {"x": 2, "y": 3, "group": "B"},
74
- {"x": 3, "y": 5, "group": "A"},
75
- ]
76
- )
77
- .mark_point(size=80)
73
+ # Load data.
74
+ gs.Chart(load_dataset("hapmap_gwas"))
75
+ # Format chromosome names.
76
+ .transform_formula(expr="datum.CHR == 23 ? 'chrX' : 'chr' + datum.CHR", as_="chrom")
77
+ # Calculate −log10 p.
78
+ .transform_formula(expr="-log(datum.P) / log(10)", as_="neglogp")
79
+ # Draw variants.
80
+ .mark_point(size=12)
81
+ # Set positions and colors.
78
82
  .encode(
79
- x="x:Q",
80
- y="y:Q",
81
- color="group:N",
83
+ x=gs.Locus("chrom", "BP").scale(assembly="hg18"),
84
+ y=gs.Y("neglogp:Q").title("−log10 p"),
85
+ color=gs.Color("CHR:N").scale(range=["#5b8fd6", "#8f98a3"]).legend(None),
82
86
  )
83
87
  )
84
-
85
88
  chart
86
89
  ```
87
90
 
88
- GenomeSpy also has locus-scaled axes for genomic coordinates. This small
89
- example renders intervals along a region of chromosome 1:
91
+ ![Manhattan plot zooming from the whole genome into an association peak](https://raw.githubusercontent.com/genome-spy/genome-spy-python/a6c724f48d94f86d8d0a8c3200549d7560a88a3c/docs/_static/readme-manhattan.webp)
92
+
93
+ [Explore the full example and data provenance](https://genomespy.app/genome-spy-python/gallery/manhattan_plot.html).
94
+
95
+ A sequence logo and aligned sequences with shared horizontal zoom:
90
96
 
91
97
  ```python
92
98
  import genome_spy as gs
93
99
 
94
- intervals = [
95
- {"chrom": "chr1", "start": 100, "end": 220, "name": "gene A"},
96
- {"chrom": "chr1", "start": 280, "end": 420, "name": "gene B"},
97
- ]
98
-
100
+ logo = (
101
+ gs.Chart()
102
+ # Count bases at each position.
103
+ .transform_aggregate(groupby=["pos", "sequence"])
104
+ # Handle gaps.
105
+ .transform_formula(expr="datum.sequence == '-' ? null : datum.sequence", as_="base")
106
+ # Stack bases by information content.
107
+ .transform_stack(
108
+ field="count",
109
+ groupby=["pos"],
110
+ offset="information",
111
+ baseField="base",
112
+ as_=["y0", "y1"],
113
+ )
114
+ # Draw logo letters.
115
+ .mark_text(logoLetters=True, fitToBand=True, fontWeight="bold")
116
+ # Set stack bounds.
117
+ .encode(
118
+ y=gs.Y("y0:Q").scale(domain=[0, 2], zoom=False).title("Bits"),
119
+ y2="y1:Q",
120
+ text="base:N",
121
+ )
122
+ .properties(height=100)
123
+ )
124
+ # Create sequence rows.
125
+ rows = gs.Chart().encode(y=gs.Y("identifier:N").scale(zoom=False).axis(None))
126
+ # Add base labels.
127
+ letters = rows.mark_text(size=11, fitToBand=True, opacity=0.7).encode(
128
+ text="sequence:N", color=gs.value("black")
129
+ )
130
+ # Layer tiles and labels.
131
+ sequences = (rows.mark_rect() + letters).properties(
132
+ height=gs.step(16), viewportHeight=160
133
+ )
99
134
  chart = (
100
- gs.Chart(intervals)
101
- .mark_rect()
135
+ # Combine panels.
136
+ (logo & sequences)
137
+ # Load data.
138
+ .properties(
139
+ data=gs.Data(
140
+ url="https://data.genomespy.app/sample-data/16SRNA_Deino_87seq.aln",
141
+ format=gs.data_format(type="fasta"),
142
+ )
143
+ )
144
+ # Split sequences into bases.
145
+ .transform_flatten_sequence()
146
+ # Set positions and colors.
102
147
  .encode(
103
- x=gs.Locus("chrom", "start"),
104
- x2="end:Q",
105
- y="name:N",
106
- color="name:N",
148
+ x=gs.X("pos:I").scale(domain=[190, 310], zoom=True).title(None),
149
+ color=gs.Color("sequence:N")
150
+ .scale(
151
+ domain=list("ACTGN-"),
152
+ range=["#4FBF45", "#4D96E8", "#E85F78", "#E8B322", "#BDBDBD", "#f5f5f5"],
153
+ )
154
+ .legend(None),
107
155
  )
156
+ # Share zoom and colors.
157
+ .resolve_scale(x="shared", color="shared")
158
+ .resolve_axis(x="shared")
108
159
  )
109
-
110
160
  chart
111
161
  ```
112
162
 
163
+ ![Sequence logo and aligned sequences zooming across multiple regions](https://raw.githubusercontent.com/genome-spy/genome-spy-python/main/docs/_static/readme-sequence-logo.webp?v=4cd9f86a0d31)
164
+
113
165
  Charts can be serialized to a portable GenomeSpy specification or standalone
114
166
  HTML:
115
167
 
116
168
  ```python
169
+ # Export JSON.
117
170
  chart.to_json()
118
- chart.save("intervals.html")
171
+ # Save HTML.
172
+ chart.save("chart.html")
119
173
  ```
120
174
 
121
175
  ### Update data without recreating the chart
@@ -126,12 +180,15 @@ existing GenomeSpy instance, so view state such as zoom is preserved.
126
180
 
127
181
  ```python
128
182
  chart = (
183
+ # Create an empty chart.
129
184
  gs.Chart(data={"name": "table"}, datasets={"table": []})
130
185
  .mark_point()
131
186
  .encode(x="x:Q", y="y:Q")
132
187
  )
188
+ # Show widget.
133
189
  view = chart.widget()
134
190
 
191
+ # Update data.
135
192
  view.set_dataset("table", updated_dataframe)
136
193
  ```
137
194
 
@@ -14,6 +14,10 @@ browser files are generated from the pinned `@genome-spy/core` and
14
14
  `@genome-spy/inspector` npm releases and include their bundled open-source
15
15
  runtime dependencies.
16
16
 
17
+ The workflow menu and dialog styles in `docs/_static/workflows.css` adapt
18
+ GenomeSpy App's `_generic.scss`, `baseDialog.js`, and `componentStyles.js`
19
+ under the same MIT license.
20
+
17
21
  The Core browser bundle embeds the Lato font bitmap and metrics, copyright
18
22
  2010–2014 tyPoland Lukasz Dziedzic, with Reserved Font Name "Lato", under the
19
23
  SIL Open Font License 1.1. Its full upstream notice is retained in
@@ -169,3 +173,12 @@ The adapted areas are:
169
173
  `tools/generate_schema_wrapper.py`;
170
174
  - the multifeature penguins and cars strip-plot cases in `tests/test_chart.py`,
171
175
  adapted from Altair's example suite and mark documentation.
176
+
177
+ ## Prepared airway review table
178
+
179
+ `airway_review.json.gz` uses the same Bioconnector workshop tables and paired
180
+ log-count t-tests as the gallery volcano example. Source attribution and
181
+ CC BY-NC-SA 4.0 terms are listed under Airway data above. Added fields contain
182
+ gallery statistics, display values, sample counts, and host aliases;
183
+ `tools/prepare_airway_review.py` reproduces the transformation. Source checksums
184
+ are retained in the bundle. No PyDESeq2 analysis is used.
@@ -158,6 +158,11 @@ GALLERY_CARD_LABELS = {
158
158
  "Zoom-adaptive allele contributions",
159
159
  "SPI1 binding-QTL data",
160
160
  ),
161
+ "pisa_squid": ("PISA squid plot", "Drosophila sog enhancer · dm6"),
162
+ "pisa_interaction_matrix": (
163
+ "PISA interaction matrix",
164
+ "Drosophila sog enhancer · dm6",
165
+ ),
161
166
  "cytobands": ("Chromosome ideogram", "Human cytobands · hg38"),
162
167
  "copy_number": (
163
168
  "Allele-specific copy-number profile",
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 650 497" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;"><g><path d="M89.04,354.223c0,0 8.235,46.873 26.95,73.014c18.715,26.141 76.485,66.864 76.485,66.864c0,0 71.387,-53.269 132.868,-174.003c0,0 18.387,2.122 37.318,-9.43c18.93,-11.552 17.227,-6.777 23.076,-23.338c0,0 57.472,10.176 133.729,-0.832c43.096,-6.222 87.538,-20.416 127.457,-50.325c0,0 -23.608,-34.551 -52.116,-105.406c-10.848,-26.959 -40.294,-37.125 -94.4,-94.654l-167.7,177.164l-243.668,140.945Z" style="fill-opacity:0.11;"/></g><g><path d="M251.063,229.621c0,0 -81.99,-37.202 -245.98,55.639c0,0 20.763,74.975 49.947,106.825c29.185,31.848 47.202,74.525 94.583,96.096c0,0 96.143,-61.477 141.731,-189.885l62.887,-40.211c0,0 95.533,57.541 256.482,-32.247c0,0 -12.007,-68.269 -61.168,-124.472c-52.15,-59.618 -77.935,-96.782 -77.935,-96.782c0,0 -83.958,47.979 -153.04,192.581l-67.507,32.457Z" style="fill:#7fbbdd;"/><clipPath id="_clip1"><path d="M251.063,229.621c0,0 -81.99,-37.202 -245.98,55.639c0,0 20.763,74.975 49.947,106.825c29.185,31.848 47.202,74.525 94.583,96.096c0,0 96.143,-61.477 141.731,-189.885l62.887,-40.211c0,0 95.533,57.541 256.482,-32.247c0,0 -12.007,-68.269 -61.168,-124.472c-52.15,-59.618 -77.935,-96.782 -77.935,-96.782c0,0 -83.958,47.979 -153.04,192.581l-67.507,32.457Z"/></clipPath><g clip-path="url(#_clip1)"><path d="M56,444.5c0,0 26.361,-47.811 96.486,-67c102.441,-28.032 107.921,-41.489 143.514,-82c57.943,-65.949 119.036,-13.987 191,-83c52.116,-49.978 96.483,-67.007 104.713,-76c22.96,-25.088 49.253,112.734 47.287,115.474l-292.12,73.526l-181.88,192l-109,-73Z" style="fill:#63a3c7;"/></g><g><clipPath id="_clip2"><path d="M251.063,229.621c0,0 -81.99,-37.202 -245.98,55.639c0,0 20.763,74.975 49.947,106.825c29.185,31.848 47.202,74.525 94.583,96.096c0,0 96.143,-61.477 141.731,-189.885l62.887,-40.211c0,0 95.533,57.541 256.482,-32.247c0,0 -12.007,-68.269 -61.168,-124.472c-52.15,-59.618 -77.935,-96.782 -77.935,-96.782c0,0 -83.958,47.979 -153.04,192.581l-67.507,32.457Z"/></clipPath><g clip-path="url(#_clip2)"><g><path d="M271.179,279.61c3.32,15.643 -17.832,37.052 -41.341,54.277c-15.19,11.13 -56.864,19.863 -74.141,41.355c-20.149,25.065 2.186,34.54 20.104,19.615c38.597,-32.148 66.785,-56.314 72.118,-48.359c9.854,14.698 -39.76,72.778 -74.531,99.203c-17.153,13.036 -53.262,14.43 -74.227,-11.546c-7.628,-9.452 -11.882,-26.281 -9.327,-35.694c4.72,-17.397 10.997,-37.853 40.708,-61.853c38.934,-31.45 91.489,-35.185 83.193,-49.459c-9.928,-17.082 -52.072,2.157 -77.166,22.647c-31.759,25.932 -20.02,26.777 -49.078,46.409c-17.818,12.039 -36.933,5.914 -46.661,-0.38c-7.791,-5.041 -11.517,-37.951 -0.453,-58.394c15.111,-27.92 70.762,-54.533 117.743,-60.174c105.963,-12.723 108.277,19.826 113.057,42.353Zm-208.179,18.89c-5.519,0 -10,4.481 -10,10c0,5.519 4.481,10 10,10c5.519,0 10,-4.481 10,-10c-0,-5.519 -4.481,-10 -10,-10Z" style="fill:#fff;fill-opacity:0.45;"/><path d="M377.914,238.729c11.76,8.108 34.86,7.082 55.315,-8.672c24.313,-18.726 31.269,-38.485 71.603,-45.658c27.972,-4.975 30.585,18.52 12.343,28.207c-39.294,20.867 -91.316,29.349 -82.698,44.288c7.924,13.736 92.007,-9.177 125.32,-28.845c16.434,-9.702 29.604,-39.059 15.22,-65.29c-5.234,-9.544 -17.659,-18.83 -26.252,-19.947c-15.881,-2.066 -54.579,-10.062 -84.212,6.257c-38.832,21.384 -59.278,55.661 -68.256,43.911c-10.744,-14.061 20.076,-40.334 45.285,-54.041c31.904,-17.348 26.796,-13.228 52.619,-30.504c15.835,-10.594 17.163,-28.488 15.225,-38.684c-1.552,-8.166 -27.379,-22.53 -47.878,-20.399c-27.996,2.911 -68.416,39.766 -88.7,76.651c-45.749,83.189 -11.873,101.054 5.064,112.728Zm86.086,-176.229c5.519,0 10,4.481 10,10c0,5.519 -4.481,10 -10,10c-5.519,0 -10,-4.481 -10,-10c-0,-5.519 4.481,-10 10,-10Z" style="fill:#fff;fill-opacity:0.45;"/></g><g><path d="M268.179,276.61c3.32,15.643 -17.832,37.052 -41.341,54.277c-15.19,11.13 -56.864,19.863 -74.141,41.355c-20.149,25.065 2.186,34.54 20.104,19.615c38.597,-32.148 66.785,-56.314 72.118,-48.359c9.854,14.698 -39.76,72.778 -74.531,99.203c-17.153,13.036 -53.262,14.43 -74.227,-11.546c-7.628,-9.452 -11.882,-26.281 -9.327,-35.694c4.72,-17.397 10.997,-37.853 40.708,-61.853c38.934,-31.45 91.489,-35.185 83.193,-49.459c-9.928,-17.082 -52.072,2.157 -77.166,22.647c-31.759,25.932 -20.02,26.777 -49.078,46.409c-17.818,12.039 -36.933,5.914 -46.661,-0.38c-7.791,-5.041 -11.517,-37.951 -0.453,-58.394c15.111,-27.92 70.762,-54.533 117.743,-60.174c105.963,-12.723 108.277,19.826 113.057,42.353Zm-208.179,18.89c-5.519,0 -10,4.481 -10,10c0,5.519 4.481,10 10,10c5.519,0 10,-4.481 10,-10c-0,-5.519 -4.481,-10 -10,-10Z" style="fill:#fff;"/><path d="M374.914,235.729c11.76,8.108 34.86,7.082 55.315,-8.672c24.313,-18.726 31.269,-38.485 71.603,-45.658c27.972,-4.975 30.585,18.52 12.343,28.207c-39.294,20.867 -91.316,29.349 -82.698,44.288c7.924,13.736 92.007,-9.177 125.32,-28.845c16.434,-9.702 29.604,-39.059 15.22,-65.29c-5.234,-9.544 -17.659,-18.83 -26.252,-19.947c-15.881,-2.066 -54.579,-10.062 -84.212,6.257c-38.832,21.384 -59.278,55.661 -68.256,43.911c-10.744,-14.061 20.076,-40.334 45.285,-54.041c31.904,-17.348 26.796,-13.228 52.619,-30.504c15.835,-10.594 17.163,-28.488 15.225,-38.684c-1.552,-8.166 -27.379,-22.53 -47.878,-20.399c-27.996,2.911 -68.416,39.766 -88.7,76.651c-45.749,83.189 -11.873,101.054 5.064,112.728Zm86.086,-176.229c5.519,0 10,4.481 10,10c0,5.519 -4.481,10 -10,10c-5.519,0 -10,-4.481 -10,-10c-0,-5.519 4.481,-10 10,-10Z" style="fill:#fff;"/></g></g></g><path d="M251.063,229.621c0,0 -81.99,-37.202 -245.98,55.639c0,0 20.763,74.975 49.947,106.825c29.185,31.848 47.202,74.525 94.583,96.096c0,0 96.143,-61.477 141.731,-189.885l62.887,-40.211c0,0 95.533,57.541 256.482,-32.247c0,0 -12.007,-68.269 -61.168,-124.472c-52.15,-59.618 -77.935,-96.782 -77.935,-96.782c0,0 -83.958,47.979 -153.04,192.581l-67.507,32.457Z" style="fill:none;stroke:#000;stroke-width:4.17px;"/></g><g><path d="M249.178,229.174c0,0 42.973,-40.866 62.33,-40.064c21.784,0.902 44.598,54.518 45.544,71.163c0.947,16.644 -43.785,48.806 -64.408,46.693c0,0 1.205,-24.266 -14.29,-51.994c-15.496,-27.729 -29.177,-25.798 -29.177,-25.798Z" style="fill:#7fbbdd;"/><g><clipPath id="_clip3"><path d="M249.178,229.174c0,0 42.973,-40.866 62.33,-40.064c21.784,0.902 44.598,54.518 45.544,71.163c0.947,16.644 -43.785,48.806 -64.408,46.693c0,0 1.205,-24.266 -14.29,-51.994c-15.496,-27.729 -29.177,-25.798 -29.177,-25.798Z"/></clipPath><g clip-path="url(#_clip3)"><path d="M278.736,244.277c18.831,17.544 13.365,44.867 31.522,41.231c21.468,-4.298 29.675,-18.015 29.137,-34.975c-0.538,-16.96 -2.503,-19.359 -9.928,-37.452c-7.425,-18.092 -19.874,-21.741 -44.548,-14.902c-20.522,5.686 -17.531,4.339 -23.302,11.797c-5.771,7.459 -12.47,26.945 -12.47,26.945c0,0 7.443,-13.274 29.589,7.356Z" style="fill:#fff;"/></g></g><path d="M249.178,229.174c0,0 42.973,-40.866 62.33,-40.064c21.784,0.902 44.598,54.518 45.544,71.163c0.947,16.644 -43.785,48.806 -64.408,46.693c0,0 1.205,-24.266 -14.29,-51.994c-15.496,-27.729 -29.177,-25.798 -29.177,-25.798Z" style="fill:none;stroke:#000;stroke-width:3.96px;"/></g></svg>
@@ -11,18 +11,20 @@
11
11
  .gs-workflow input, .gs-workflow button {
12
12
  font: inherit;
13
13
  padding: 0.45rem 0.65rem;
14
- border: 1px solid var(--color-foreground-border);
14
+ border: 1px solid var(--color-foreground-border, #d6dce5);
15
15
  border-radius: 4px;
16
- color: var(--color-foreground-primary);
17
- background: var(--color-background-secondary);
16
+ color: var(--color-foreground-primary, #172637);
17
+ background: var(--color-background-secondary, #ffffff);
18
18
  }
19
19
  .gs-workflow button:not(:disabled) { cursor: pointer; }
20
20
  .gs-workflow button:disabled { opacity: 0.5; }
21
+ .gs-workflow [data-draft] { flex-basis: 100%; margin: 0; }
22
+ .gs-workflow-table button { margin: 0.15rem; }
21
23
  .gs-workflow-table { overflow: auto; max-height: 18rem; }
22
24
  .gs-workflow-table table { width: 100%; font-size: 0.85rem; border-collapse: collapse; }
23
25
  .gs-workflow-table th, .gs-workflow-table td {
24
26
  padding: 0.4rem 0.5rem;
25
- border-bottom: 1px solid var(--color-foreground-border);
27
+ border-bottom: 1px solid var(--color-foreground-border, #d6dce5);
26
28
  text-align: left;
27
29
  overflow-wrap: anywhere;
28
30
  }
@@ -144,12 +144,17 @@ Schema-backed configuration objects accepted by charts, channels, and helpers.
144
144
  GenomeAxis
145
145
  HandledTooltip
146
146
  Legend
147
+ NamedSelectionPredicateRef
147
148
  Paddings
148
149
  Parameter
150
+ ParameterPredicate
149
151
  Parse
150
152
  RulerMarkConfig
151
153
  Scale
152
154
  SelectionDomainRef
155
+ SelectionPredicateDefinition
156
+ SelectionPredicateOperand
157
+ SelectionUnionTest
153
158
  SizeDef
154
159
  Step
155
160
  Title
@@ -27,6 +27,7 @@ for JSON files. Pass `as_format="text"` to get the raw file contents instead.
27
27
 
28
28
  | Dataset | Contents |
29
29
  | --- | --- |
30
+ | `airway_review` | Gallery airway statistics and sample counts for downstream gene review |
30
31
  | `airway_metadata` | Sample table for the airway RNA-seq experiment |
31
32
  | `airway_scaledcounts` | Rounded, length-scaled gene counts for the same eight samples |
32
33
  | `hapmap_gwas` | HapMap coordinates with simulated p-values and effect sizes |