genome-spy-python 0.1.0__py3-none-any.whl
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.
- genome_spy/__init__.py +199 -0
- genome_spy/_chart_authoring.py +231 -0
- genome_spy/_conditions.py +72 -0
- genome_spy/_embed.py +87 -0
- genome_spy/_expressions.py +271 -0
- genome_spy/_parameters.py +267 -0
- genome_spy/_render.py +207 -0
- genome_spy/_utils.py +75 -0
- genome_spy/_widget.py +262 -0
- genome_spy/api.py +198 -0
- genome_spy/arrow.py +155 -0
- genome_spy/channels.py +193 -0
- genome_spy/chart.py +1240 -0
- genome_spy/data.py +56 -0
- genome_spy/data_transformers.py +267 -0
- genome_spy/datasets/__init__.py +189 -0
- genome_spy/datasets/_airway.py +219 -0
- genome_spy/datasets/_annotations.py +37 -0
- genome_spy/datasets/_gistic.py +43 -0
- genome_spy/datasets/_grammar.py +66 -0
- genome_spy/datasets/_hapmap.py +180 -0
- genome_spy/datasets/_mutation.py +289 -0
- genome_spy/datasets/_oncoprint.py +523 -0
- genome_spy/datasets/data/airway_metadata.csv +9 -0
- genome_spy/datasets/data/airway_scaledcounts.csv +38695 -0
- genome_spy/datasets/data/brca.maf.gz +0 -0
- genome_spy/datasets/data/hapmap_gwas.csv +14413 -0
- genome_spy/datasets/data/mutation_impact_reference.json +27 -0
- genome_spy/datasets/data/oncoprint_dataset3.json +266 -0
- genome_spy/datasets/data/p53_sequence_comparison.json.gz +0 -0
- genome_spy/datasets/data/pik3ca_mutations.json +1 -0
- genome_spy/datasets/data/pik3ca_tcga_brca_lollipop.json +38 -0
- genome_spy/datasets/data/refseq_gene_bodies.csv.gz +0 -0
- genome_spy/datasets/data/tal1_alphagenome_reference.json.gz +0 -0
- genome_spy/datasets/data/tcga.tsv +146 -0
- genome_spy/datasets/data/tcga_laml.maf.gz +0 -0
- genome_spy/datasets/data/tcga_laml_annot.tsv +201 -0
- genome_spy/datasets/data/tcga_laml_combined_oncoplot.json.gz +0 -0
- genome_spy/datasets/data/tcga_ov_gistic_lesions.tsv.gz +0 -0
- genome_spy/datasets/data/tcga_ov_gistic_scores.tsv.gz +0 -0
- genome_spy/helpers.py +185 -0
- genome_spy/jupyter.py +5 -0
- genome_spy/py.typed +0 -0
- genome_spy/schema/__init__.py +784 -0
- genome_spy/schema/_kwds.py +1394 -0
- genome_spy/schema/_typing.py +186 -0
- genome_spy/schema/capabilities.json +593 -0
- genome_spy/schema/channels.py +8943 -0
- genome_spy/schema/composition.py +1064 -0
- genome_spy/schema/core.py +51821 -0
- genome_spy/schema/ergonomics.py +2056 -0
- genome_spy/schema/expressions.py +476 -0
- genome_spy/schema/genome-spy-schema.json +33657 -0
- genome_spy/schema/lazy.py +326 -0
- genome_spy/schema/mixins.py +11684 -0
- genome_spy/schemapi.py +264 -0
- genome_spy/static/widget.js +345 -0
- genome_spy_python-0.1.0.dist-info/METADATA +185 -0
- genome_spy_python-0.1.0.dist-info/RECORD +64 -0
- genome_spy_python-0.1.0.dist-info/WHEEL +4 -0
- genome_spy_python-0.1.0.dist-info/licenses/LICENSE +21 -0
- genome_spy_python-0.1.0.dist-info/licenses/LICENSES/ALTAIR-BSD-3-Clause.txt +27 -0
- genome_spy_python-0.1.0.dist-info/licenses/LICENSES/GALLERY-DATA-MIT.txt +22 -0
- genome_spy_python-0.1.0.dist-info/licenses/THIRD_PARTY_NOTICES.md +42 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: genome-spy-python
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: genome-spy-python is a declarative genomics visualization library for Python, built on top of the genome-spy JSON specification.
|
|
5
|
+
Project-URL: Homepage, https://github.com/genome-spy/genome-spy-python
|
|
6
|
+
Project-URL: Documentation, https://genomespy.app/genome-spy-python/
|
|
7
|
+
Project-URL: Repository, https://github.com/genome-spy/genome-spy-python
|
|
8
|
+
Project-URL: Issues, https://github.com/genome-spy/genome-spy-python/issues
|
|
9
|
+
Author-email: Oskari Lehtonen <oskarilehtonen4@gmail.com>
|
|
10
|
+
License-Expression: MIT AND BSD-3-Clause
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
License-File: LICENSES/ALTAIR-BSD-3-Clause.txt
|
|
13
|
+
License-File: LICENSES/GALLERY-DATA-MIT.txt
|
|
14
|
+
License-File: THIRD_PARTY_NOTICES.md
|
|
15
|
+
Keywords: anywidget,genome-spy,genomics,jupyter,visualization
|
|
16
|
+
Classifier: Development Status :: 3 - Alpha
|
|
17
|
+
Classifier: Framework :: Jupyter
|
|
18
|
+
Classifier: Intended Audience :: Science/Research
|
|
19
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
24
|
+
Classifier: Topic :: Scientific/Engineering :: Visualization
|
|
25
|
+
Requires-Python: >=3.11
|
|
26
|
+
Requires-Dist: anywidget>=0.9.18
|
|
27
|
+
Requires-Dist: jsonschema>=4.26.0
|
|
28
|
+
Requires-Dist: traitlets>=5.14.3
|
|
29
|
+
Provides-Extra: arrow
|
|
30
|
+
Requires-Dist: pyarrow>=18.0.0; extra == 'arrow'
|
|
31
|
+
Description-Content-Type: text/markdown
|
|
32
|
+
|
|
33
|
+
<p align="center">
|
|
34
|
+
<img src="docs/_static/snaketie.svg" width="180" alt="GenomeSpy for Python logo">
|
|
35
|
+
</p>
|
|
36
|
+
|
|
37
|
+
<h1 align="center">genome-spy-python</h1>
|
|
38
|
+
|
|
39
|
+
`genome-spy-python` is a Python interface for
|
|
40
|
+
<a href="https://genomespy.app/" target="_blank" rel="noopener noreferrer">GenomeSpy</a>,
|
|
41
|
+
a grammar for interactive and scalable genomic visualization. It lets Python
|
|
42
|
+
users build GenomeSpy specifications with a declarative, fluent API, serialize
|
|
43
|
+
them to JSON, and display them in Jupyter or Marimo notebooks.
|
|
44
|
+
|
|
45
|
+
Read the [documentation](https://genomespy.app/genome-spy-python/) for the
|
|
46
|
+
getting-started guide, user guide, examples, and API reference.
|
|
47
|
+
|
|
48
|
+
<a href="https://altair-viz.github.io/" target="_blank" rel="noopener noreferrer">Altair</a>
|
|
49
|
+
is the project's main source of inspiration. This codebase follows Altair's
|
|
50
|
+
approach of combining schema-backed specification objects with a small
|
|
51
|
+
handwritten Python API for marks, encodings, composition, and rendering. It
|
|
52
|
+
adapts that model to GenomeSpy's genomics-native grammar: locus scales, genomic
|
|
53
|
+
data sources, and coordinated genomic views.
|
|
54
|
+
|
|
55
|
+
The project is under active development. The current focus is the reusable
|
|
56
|
+
GenomeSpy Core grammar and notebook rendering; GenomeSpy App-specific features
|
|
57
|
+
will come later.
|
|
58
|
+
|
|
59
|
+
## Installation
|
|
60
|
+
|
|
61
|
+
The package requires Python 3.11 or newer.
|
|
62
|
+
|
|
63
|
+
From PyPI:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
pip install genome-spy-python
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
From source:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
pip install uv
|
|
73
|
+
git clone https://github.com/genome-spy/genome-spy-python.git
|
|
74
|
+
cd genome-spy-python
|
|
75
|
+
uv sync
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
For notebook use, install with Arrow support. This includes PyArrow for
|
|
79
|
+
dataframe transport:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
pip install "genome-spy-python[arrow]"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
See [creating and updating charts in notebooks](docs/user-guide/notebooks.md)
|
|
86
|
+
for supported tables and live updates.
|
|
87
|
+
|
|
88
|
+
See the [getting-started guide](docs/getting-started.md) for the first example.
|
|
89
|
+
|
|
90
|
+
## Examples
|
|
91
|
+
|
|
92
|
+
```python
|
|
93
|
+
import genome_spy as gs
|
|
94
|
+
|
|
95
|
+
chart = (
|
|
96
|
+
gs.Chart(
|
|
97
|
+
[
|
|
98
|
+
{"x": 1, "y": 4, "group": "A"},
|
|
99
|
+
{"x": 2, "y": 3, "group": "B"},
|
|
100
|
+
{"x": 3, "y": 5, "group": "A"},
|
|
101
|
+
]
|
|
102
|
+
)
|
|
103
|
+
.mark_point(size=80)
|
|
104
|
+
.encode(
|
|
105
|
+
x="x:Q",
|
|
106
|
+
y="y:Q",
|
|
107
|
+
color="group:N",
|
|
108
|
+
)
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
chart
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
GenomeSpy also has locus-scaled axes for genomic coordinates. This small
|
|
115
|
+
example renders intervals along a region of chromosome 1:
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
import genome_spy as gs
|
|
119
|
+
|
|
120
|
+
intervals = [
|
|
121
|
+
{"chrom": "chr1", "start": 100, "end": 220, "name": "gene A"},
|
|
122
|
+
{"chrom": "chr1", "start": 280, "end": 420, "name": "gene B"},
|
|
123
|
+
]
|
|
124
|
+
|
|
125
|
+
chart = (
|
|
126
|
+
gs.Chart(intervals)
|
|
127
|
+
.mark_rect()
|
|
128
|
+
.encode(
|
|
129
|
+
x=gs.Locus("chrom", "start"),
|
|
130
|
+
x2="end:Q",
|
|
131
|
+
y="name:N",
|
|
132
|
+
color="name:N",
|
|
133
|
+
)
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
chart
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Charts can be serialized to a portable GenomeSpy specification or standalone
|
|
140
|
+
HTML:
|
|
141
|
+
|
|
142
|
+
```python
|
|
143
|
+
chart.to_json()
|
|
144
|
+
chart.save("intervals.html")
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Update data without recreating the chart
|
|
148
|
+
|
|
149
|
+
For reactive Jupyter or Marimo notebooks, create a widget with an explicitly
|
|
150
|
+
named dataset and replace that dataset as inputs change. The browser keeps the
|
|
151
|
+
existing GenomeSpy instance, so view state such as zoom is preserved.
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
chart = (
|
|
155
|
+
gs.Chart(data={"name": "table"}, datasets={"table": []})
|
|
156
|
+
.mark_point()
|
|
157
|
+
.encode(x="x:Q", y="y:Q")
|
|
158
|
+
)
|
|
159
|
+
view = chart.widget()
|
|
160
|
+
|
|
161
|
+
view.set_dataset("table", updated_dataframe)
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
See [creating and updating charts in notebooks](docs/user-guide/notebooks.md)
|
|
165
|
+
for the Marimo pattern.
|
|
166
|
+
|
|
167
|
+
## Contributing
|
|
168
|
+
|
|
169
|
+
Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for development
|
|
170
|
+
setup, testing, code generation, documentation, gallery, and pull-request
|
|
171
|
+
guidelines.
|
|
172
|
+
|
|
173
|
+
## References
|
|
174
|
+
|
|
175
|
+
- <a href="https://genomespy.app/" target="_blank" rel="noopener noreferrer">GenomeSpy</a>
|
|
176
|
+
— the upstream visualization grammar and JavaScript renderer.
|
|
177
|
+
- <a href="https://altair-viz.github.io/" target="_blank" rel="noopener noreferrer">Altair</a>
|
|
178
|
+
— a schema-wrapper design reference.
|
|
179
|
+
- <a href="https://gosling-lang.org/" target="_blank" rel="noopener noreferrer">Gos</a>
|
|
180
|
+
— a related grammar and Python-wrapper design reference for
|
|
181
|
+
genomics visualization.
|
|
182
|
+
|
|
183
|
+
Portions of the schema-wrapper implementation and selected tests are adapted
|
|
184
|
+
from Altair under its BSD-3-Clause license. See
|
|
185
|
+
[Third-party notices](THIRD_PARTY_NOTICES.md) for the exact sources and license.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
genome_spy/__init__.py,sha256=Uo8ZuBpB5SykUtvpVJvG3nvEkh2vUOwo8zFlUHG6Gf4,3138
|
|
2
|
+
genome_spy/_chart_authoring.py,sha256=LJZxoNtab5Kt3hvPzlL9h-B3rAUkUg-ZatECHjAHciI,7335
|
|
3
|
+
genome_spy/_conditions.py,sha256=SPB482xOQCDXDqtTRb9dQlvqrBieAoC9d9D4XDjH-SM,2263
|
|
4
|
+
genome_spy/_embed.py,sha256=b4OZ6V9--MzNdVLQPRB1CkaSBSC5ORVQZEUNycP4dkQ,2876
|
|
5
|
+
genome_spy/_expressions.py,sha256=E3k8ddv2KxRK7yTqIiroIbLGg_cwdGH4ASyXg1aOhMU,8237
|
|
6
|
+
genome_spy/_parameters.py,sha256=qfClD9IIbaMEQd_ECca6ssN6HwoH5sXTjI3JALlbgkg,8964
|
|
7
|
+
genome_spy/_render.py,sha256=1iY4BpBZOB--zzAKNmv0m6KExrVfXksqHRlkhu518q4,7068
|
|
8
|
+
genome_spy/_utils.py,sha256=cW4zwPWeKXalA6ieFbZPH5D-Oj-_qNwx3neUJndD6n4,2087
|
|
9
|
+
genome_spy/_widget.py,sha256=YMebtpxD6cTPsMWfwzPhxT4s3rrJFlA-pMbdTJ1yVHM,9925
|
|
10
|
+
genome_spy/api.py,sha256=t_egryopu5nFwZOtshxpM_H6uaaQWqHxDFZoCTFfvR4,3313
|
|
11
|
+
genome_spy/arrow.py,sha256=poy8v4348fPDXlUi3Lt5927WPJ31mtBqEL8P1Gatddg,5316
|
|
12
|
+
genome_spy/channels.py,sha256=cemNP4o0G64AvT_EmvFOpZrpiVXq8N0YiNFiFUg1muo,5981
|
|
13
|
+
genome_spy/chart.py,sha256=fcP2yEdaCHErp4X_qLCxvBVYOAvPo8QBgY9we5ZgPx8,45274
|
|
14
|
+
genome_spy/data.py,sha256=uJ69JDAac-4Cq06nXkt2JSHGDv6LXmzLDKzM0YJnUTE,1878
|
|
15
|
+
genome_spy/data_transformers.py,sha256=DuAwsrf38cGR63uivQCkjlMu0vs8qgO55TsojyxlpTg,10060
|
|
16
|
+
genome_spy/helpers.py,sha256=5V13-ghuZGroxDe8Qi6obHrPDeUcs3hMwEt17AzFLX0,4961
|
|
17
|
+
genome_spy/jupyter.py,sha256=WB5wNtRkStSe21rPD8ZcnjwOkybGFV7qjtEyoBWaulY,129
|
|
18
|
+
genome_spy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
|
+
genome_spy/schemapi.py,sha256=9APJ-y-ygVTYkwp3FUn8Qn0qoVa_P2cq8v8H9mM7LKk,8818
|
|
20
|
+
genome_spy/datasets/__init__.py,sha256=ObuUwqG72VlOaBUvFSoysDYV5y13jiYc-6zODeYvzmw,6057
|
|
21
|
+
genome_spy/datasets/_airway.py,sha256=YQHB9LJO6AIhZ3vn1PZCb7nYpHCY-foAITCTekIC1NU,7902
|
|
22
|
+
genome_spy/datasets/_annotations.py,sha256=QxpUrMHPB3N_ohc-hYsDY5Xe_RTkiXEK-PKy5J8bWSU,1145
|
|
23
|
+
genome_spy/datasets/_gistic.py,sha256=rJFwzF4E_zIF2cewC69XjwzMo00-qW2evZw4L6Bk63I,1328
|
|
24
|
+
genome_spy/datasets/_grammar.py,sha256=sK7vyA3me4pfWhbBnNZCCE7VfS3VV_bpvHkxKeJMaW4,1918
|
|
25
|
+
genome_spy/datasets/_hapmap.py,sha256=YEicK7SNYvdskZB67eF3d3xDQwma2q4si_Q73jIClvA,5734
|
|
26
|
+
genome_spy/datasets/_mutation.py,sha256=MyITlOiczSbH0SfjYSJ3sxsAbnknSPE7d1GBhADh0Y8,9916
|
|
27
|
+
genome_spy/datasets/_oncoprint.py,sha256=H9NgFK1qMWhB-68r364P1E1m8lLDAfNIpA4nOYJs_Nw,19101
|
|
28
|
+
genome_spy/datasets/data/airway_metadata.csv,sha256=Bb1-eKDKWyovYOxxUpY4HKGfMajFpR5wyfYFg_qfz5c,325
|
|
29
|
+
genome_spy/datasets/data/airway_scaledcounts.csv,sha256=TTTfFa_6IvpdVTmHThSDeOoY2xydcx0XXvG59zy8KSc,2102792
|
|
30
|
+
genome_spy/datasets/data/brca.maf.gz,sha256=YdU1XpYL1IC-xPJFuPCW4jM0CGWc7Q0ZbkKw443j1yQ,24011
|
|
31
|
+
genome_spy/datasets/data/hapmap_gwas.csv,sha256=IOtmjaZ0MWea_B-YFqBR8DfCCbmQJ7y7bDMBnwBsZUc,939280
|
|
32
|
+
genome_spy/datasets/data/mutation_impact_reference.json,sha256=geHUu1gD44Io6A29rsj_RQzMz53Bxcocl2RtzSaI8Eg,1180
|
|
33
|
+
genome_spy/datasets/data/oncoprint_dataset3.json,sha256=4Hqmrpz09fOp8zHZl5hVzPM7xH7Ruy9Lhxk5tHwqCe8,5622
|
|
34
|
+
genome_spy/datasets/data/p53_sequence_comparison.json.gz,sha256=2gsrFrmzZNL1BM-Z2zFM6_exJk-wWwyzzFkg7RI-C7Y,57687
|
|
35
|
+
genome_spy/datasets/data/pik3ca_mutations.json,sha256=TzbfmtlgwUKYJ1IrvU_ODLR1INFKXGQqvopVlp8Xeuw,5770
|
|
36
|
+
genome_spy/datasets/data/pik3ca_tcga_brca_lollipop.json,sha256=PRMpETS0vTr4AYSKi-OEsIk2-5nSNxs0--Sd8A5C5oU,4027
|
|
37
|
+
genome_spy/datasets/data/refseq_gene_bodies.csv.gz,sha256=bsuPEtEgzBBySoFtTcb4699eRo9yWVCAneUIL42xd4U,1297641
|
|
38
|
+
genome_spy/datasets/data/tal1_alphagenome_reference.json.gz,sha256=EHAuqu5j0qT2AL8j6k-skT23IKulbTOGiw8yWQ_Ht34,36438
|
|
39
|
+
genome_spy/datasets/data/tcga.tsv,sha256=OakPwfUOvNETw3_QOJT7QbF9yk1gFPfvzw4_I0yVd0I,149070
|
|
40
|
+
genome_spy/datasets/data/tcga_laml.maf.gz,sha256=0QKwcaBSJltviteUe60dWNPjA2_RfWsnT36gmjds1qA,64020
|
|
41
|
+
genome_spy/datasets/data/tcga_laml_annot.tsv,sha256=cDMDDVKGjpoPNf_Xj0Wp16Emwu3vkM-edOT114mQpxA,4478
|
|
42
|
+
genome_spy/datasets/data/tcga_laml_combined_oncoplot.json.gz,sha256=jhzUnqji-PezC0nYO3aqa9dKaixNm2zJXwSVW4kW74o,14749
|
|
43
|
+
genome_spy/datasets/data/tcga_ov_gistic_lesions.tsv.gz,sha256=rCptRFpPCFQZmHYp5_1j93u-36y55QyfDAa0PsUP1uI,159542
|
|
44
|
+
genome_spy/datasets/data/tcga_ov_gistic_scores.tsv.gz,sha256=Y2FjiikhyuSr0TlWzXEANesx9cwL_VVP4VX2Hyp4g74,1709045
|
|
45
|
+
genome_spy/schema/__init__.py,sha256=6T-Vavy47aeJ252C1m2rTjAjdwVg70uaNqcIf45nsIU,17461
|
|
46
|
+
genome_spy/schema/_kwds.py,sha256=OTIUu9Mzk0S26kTyGaub1XIR5jDmvOpwRhs1cZCs47A,41469
|
|
47
|
+
genome_spy/schema/_typing.py,sha256=y4dE2qaitJvYMZdiyreRJOD1EtERqx47PnJVKzXor2s,5490
|
|
48
|
+
genome_spy/schema/capabilities.json,sha256=daZ75m_f2g_4vpcTSYcqt94Tl4XwrS88dWvuzw7NsGM,13376
|
|
49
|
+
genome_spy/schema/channels.py,sha256=Ku5yF0Gs8vGuOZtTNrEkQyldwc6FZBAY4IN1LNozFz0,647255
|
|
50
|
+
genome_spy/schema/composition.py,sha256=hYW6kbWbmb-dxb2Fur2yDOrZj8qc2tiaBpqtbN2VbOg,69894
|
|
51
|
+
genome_spy/schema/core.py,sha256=BbtjNofCgb33DTn-wWZziMXZMSryOD7vQFSSlXn3lz0,2668215
|
|
52
|
+
genome_spy/schema/ergonomics.py,sha256=E-peikSwjOTiXSKTUttXb6Pt-mbkO9ocqf9ZWljcRo0,135198
|
|
53
|
+
genome_spy/schema/expressions.py,sha256=hoDyt-TnV5kLF2fbmhWg9PD40u8lwW32JwbXhJibI_M,16969
|
|
54
|
+
genome_spy/schema/genome-spy-schema.json,sha256=elqwiUGlNSeKydS7F_md1vn8tD7KuctyLH5RRjuh6DI,1527228
|
|
55
|
+
genome_spy/schema/lazy.py,sha256=DHEBoqLLA7b95gTfs9KMwrlAznWZvsoItI4ma3pqXow,20468
|
|
56
|
+
genome_spy/schema/mixins.py,sha256=2skDgP7aW2dJ3rE3-z1-Pa5-qOpT6anMLSJ79I2rvAU,831812
|
|
57
|
+
genome_spy/static/widget.js,sha256=h7AbXoybl7zGqyE5I4pMUme5_Yj1uf3Ht-u7MiVKLpg,10432
|
|
58
|
+
genome_spy_python-0.1.0.dist-info/METADATA,sha256=KrnqyGBJHP5xah32mgyR-KMVmDkPZRed6v1Cut5tKnw,5805
|
|
59
|
+
genome_spy_python-0.1.0.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
|
|
60
|
+
genome_spy_python-0.1.0.dist-info/licenses/LICENSE,sha256=-sg2zehCHmFRJF1OlSWWt6qC5KKcmYhNRj3erFJ3l-o,1072
|
|
61
|
+
genome_spy_python-0.1.0.dist-info/licenses/LICENSES/ALTAIR-BSD-3-Clause.txt,sha256=Gly1VgeIhY1HjM6BECJkyiihOFP5KPUjeSp2AKYRCww,1496
|
|
62
|
+
genome_spy_python-0.1.0.dist-info/licenses/LICENSES/GALLERY-DATA-MIT.txt,sha256=4gWWXgkU6YDuSbuQZIHPmf9lYhQlATFJe1Tz3tzTmzA,1148
|
|
63
|
+
genome_spy_python-0.1.0.dist-info/licenses/THIRD_PARTY_NOTICES.md,sha256=7iw5OZxTDSKBjYffxPaVttrwEChS2fSox-BczrLZfds,1938
|
|
64
|
+
genome_spy_python-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Oskari Lehtonen
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Copyright (c) 2015-2025, Vega-Altair Developers
|
|
2
|
+
All rights reserved.
|
|
3
|
+
|
|
4
|
+
Redistribution and use in source and binary forms, with or without
|
|
5
|
+
modification, are permitted provided that the following conditions are met:
|
|
6
|
+
|
|
7
|
+
* Redistributions of source code must retain the above copyright notice, this
|
|
8
|
+
list of conditions and the following disclaimer.
|
|
9
|
+
|
|
10
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
11
|
+
this list of conditions and the following disclaimer in the documentation
|
|
12
|
+
and/or other materials provided with the distribution.
|
|
13
|
+
|
|
14
|
+
* Neither the name of vega-altair nor the names of its
|
|
15
|
+
contributors may be used to endorse or promote products derived from
|
|
16
|
+
this software without specific prior written permission.
|
|
17
|
+
|
|
18
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
19
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
20
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
22
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
23
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
24
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
25
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
26
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
27
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
maftools: Copyright (c) 2018 Anand Mayakonda
|
|
2
|
+
Plotly datasets: Copyright (c) 2019-2024 Plotly Technologies Inc.
|
|
3
|
+
|
|
4
|
+
MIT License
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
## Gallery data from maftools and Plotly
|
|
4
|
+
|
|
5
|
+
`tcga_laml_combined_oncoplot.json.gz` contains prepared TCGA LAML tables from
|
|
6
|
+
maftools revision `015a4cf8c69ba89a55a3fdcea911421509e9a198` (Anand Mayakonda,
|
|
7
|
+
MIT). `p53_sequence_comparison.json.gz` contains p53 sequences and derived
|
|
8
|
+
display tables from Plotly's datasets revision
|
|
9
|
+
`0c447c47b757ad74edecab31f0d72f849d2e67c2` (Plotly Technologies Inc., MIT).
|
|
10
|
+
Source file hashes are retained in the packaged data. The corresponding gallery
|
|
11
|
+
pages describe processing. Copyright notices and terms are included in
|
|
12
|
+
`LICENSES/GALLERY-DATA-MIT.txt`.
|
|
13
|
+
|
|
14
|
+
## Code adapted from Vega-Altair
|
|
15
|
+
|
|
16
|
+
Parts of this project are adapted from
|
|
17
|
+
[Vega-Altair](https://github.com/vega/altair), copyright 2015–2025 the
|
|
18
|
+
Vega-Altair Developers, under the BSD-3-Clause license. The complete license
|
|
19
|
+
is in [`LICENSES/ALTAIR-BSD-3-Clause.txt`](LICENSES/ALTAIR-BSD-3-Clause.txt).
|
|
20
|
+
|
|
21
|
+
The adapted areas are:
|
|
22
|
+
|
|
23
|
+
- `src/genome_spy/schemapi.py`, a reduced schema-wrapper runtime based on
|
|
24
|
+
`altair/utils/schemapi.py`;
|
|
25
|
+
- `tools/schemapi/codegen.py`, whose schema-wrapper generation architecture is
|
|
26
|
+
adapted from Altair's `tools/schemapi/` package and
|
|
27
|
+
`tools/generate_schema_wrapper.py`;
|
|
28
|
+
- the multifeature penguins and cars strip-plot cases in `tests/test_chart.py`,
|
|
29
|
+
adapted from Altair's example suite and mark documentation.
|
|
30
|
+
|
|
31
|
+
Each adapted source location identifies its corresponding upstream source.
|
|
32
|
+
|
|
33
|
+
## Design references
|
|
34
|
+
|
|
35
|
+
Altair also informed the separation between generated schema bindings and the
|
|
36
|
+
handwritten chart API, composition operators, channel shorthand, and API
|
|
37
|
+
reference organization. Those areas use project-specific implementations and
|
|
38
|
+
are acknowledged as design references rather than adapted Altair code.
|
|
39
|
+
|
|
40
|
+
MutGlyph informed the generic scored gene-annotation track used by the
|
|
41
|
+
rainfall and GISTIC examples. The implementation and UCSC-derived data are
|
|
42
|
+
maintained independently in this repository.
|