allelix 1.8.1__tar.gz → 1.8.2__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.
- {allelix-1.8.1 → allelix-1.8.2}/PKG-INFO +7 -4
- {allelix-1.8.1 → allelix-1.8.2}/README.md +3 -2
- {allelix-1.8.1 → allelix-1.8.2}/allelix/models.py +3 -1
- {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/html.py +24 -11
- {allelix-1.8.1 → allelix-1.8.2}/allelix.egg-info/PKG-INFO +7 -4
- {allelix-1.8.1 → allelix-1.8.2}/pyproject.toml +4 -2
- {allelix-1.8.1 → allelix-1.8.2}/LICENSE +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/__init__.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/__init__.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/alphamissense.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/base.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/cadd.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/clinvar.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/gnomad.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/gwas.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/pharmgkb.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/snpedia.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/cli.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/compare.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/config.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/data/__init__.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/data/high_value_snps.yaml +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/__init__.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/_versions.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/alphamissense_loader.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/cadd_loader.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/cpic_loader.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/gnomad_loader.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/gwas_loader.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/loader_utils.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/manager.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/pharmgkb_loader.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/schema.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/snpedia_loader.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/snpedia_parser.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/exporters/__init__.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/exporters/plink.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/__init__.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/_helpers.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/ancestrydna.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/base.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/ftdna.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/livingdna.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/myhappygenes.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/myheritage.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/twentythreeandme.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/py.typed +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/__init__.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/_pipeline.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/diff.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/high_value.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/json_report.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/methylation.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/terminal.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/utils/__init__.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/utils/allele.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix/utils/build_detect.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix.egg-info/SOURCES.txt +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix.egg-info/dependency_links.txt +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix.egg-info/entry_points.txt +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix.egg-info/requires.txt +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/allelix.egg-info/top_level.txt +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/setup.cfg +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/tests/test_cli.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/tests/test_cli_helpers.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/tests/test_compare.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/tests/test_config.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/tests/test_end_to_end.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/tests/test_mock_data_invariants.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/tests/test_models.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/tests/test_registry.py +0 -0
- {allelix-1.8.1 → allelix-1.8.2}/tests/test_version.py +0 -0
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: allelix
|
|
3
|
-
Version: 1.8.
|
|
3
|
+
Version: 1.8.2
|
|
4
4
|
Summary: Open-source genotype analysis toolkit. Format-agnostic ingestion, database-agnostic annotation, offline-first.
|
|
5
5
|
Author-email: dial481 <dial481@users.noreply.github.com>
|
|
6
6
|
License-Expression: AGPL-3.0-or-later
|
|
7
|
-
Project-URL: Homepage, https://
|
|
7
|
+
Project-URL: Homepage, https://allelix.io
|
|
8
|
+
Project-URL: Source, https://github.com/dial481/allelix
|
|
8
9
|
Project-URL: Issues, https://github.com/dial481/allelix/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/dial481/allelix/blob/main/CHANGELOG.md
|
|
9
11
|
Keywords: genomics,genotype,snp,bioinformatics,dna
|
|
10
12
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
13
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -42,8 +44,9 @@ Open-source command-line toolkit for analyzing raw genotype files from consumer
|
|
|
42
44
|
> HTML/JSON/terminal reports, methylation + pharmacogenomics focused
|
|
43
45
|
> commands, report diffing, persistent config with commercial-mode
|
|
44
46
|
> safety switch. Build auto-detection from position data (ADR-0021).
|
|
45
|
-
> No regex on prose anywhere in production. **Latest: v1.
|
|
46
|
-
>
|
|
47
|
+
> No regex on prose anywhere in production. **Latest: v1.8.2** — HTML
|
|
48
|
+
> report redesign with dark mode, PLINK export, and automated PyPI
|
|
49
|
+
> publishing. Release notes:
|
|
47
50
|
> [`CHANGELOG.md`](CHANGELOG.md).
|
|
48
51
|
|
|
49
52
|
## Quickstart
|
|
@@ -10,8 +10,9 @@ Open-source command-line toolkit for analyzing raw genotype files from consumer
|
|
|
10
10
|
> HTML/JSON/terminal reports, methylation + pharmacogenomics focused
|
|
11
11
|
> commands, report diffing, persistent config with commercial-mode
|
|
12
12
|
> safety switch. Build auto-detection from position data (ADR-0021).
|
|
13
|
-
> No regex on prose anywhere in production. **Latest: v1.
|
|
14
|
-
>
|
|
13
|
+
> No regex on prose anywhere in production. **Latest: v1.8.2** — HTML
|
|
14
|
+
> report redesign with dark mode, PLINK export, and automated PyPI
|
|
15
|
+
> publishing. Release notes:
|
|
15
16
|
> [`CHANGELOG.md`](CHANGELOG.md).
|
|
16
17
|
|
|
17
18
|
## Quickstart
|
|
@@ -79,7 +79,9 @@ class Annotation:
|
|
|
79
79
|
magnitude: 0-10 importance score (SNPedia-style).
|
|
80
80
|
description: Human-readable explanation.
|
|
81
81
|
attribution: Display name of the source ("ClinVar", "PharmGKB", ...).
|
|
82
|
-
genotype_match: Which genotype triggers this annotation
|
|
82
|
+
genotype_match: Which genotype triggers this annotation. For SNVs this
|
|
83
|
+
is a concatenated, sorted allele pair (e.g., "AG", "TT"); the slash
|
|
84
|
+
form (e.g., "AT/A") appears only for indels.
|
|
83
85
|
references: PubMed IDs or URLs supporting the claim.
|
|
84
86
|
condition: Disease or condition name, if applicable.
|
|
85
87
|
gene: Gene symbol, if known.
|
|
@@ -101,6 +101,7 @@ _CSS = """\
|
|
|
101
101
|
--notice-border: #f9a825;
|
|
102
102
|
--notice-warn-bg: #fff3e0;
|
|
103
103
|
--notice-warn-border: #e65100;
|
|
104
|
+
--link: #1976d2;
|
|
104
105
|
}
|
|
105
106
|
@media (prefers-color-scheme: dark) {
|
|
106
107
|
:root:not([data-theme="light"]) {
|
|
@@ -119,6 +120,7 @@ _CSS = """\
|
|
|
119
120
|
--notice-border: #f9a825;
|
|
120
121
|
--notice-warn-bg: #331a00;
|
|
121
122
|
--notice-warn-border: #e65100;
|
|
123
|
+
--link: #93c5fd;
|
|
122
124
|
}
|
|
123
125
|
}
|
|
124
126
|
[data-theme="dark"] {
|
|
@@ -137,6 +139,7 @@ _CSS = """\
|
|
|
137
139
|
--notice-border: #f9a825;
|
|
138
140
|
--notice-warn-bg: #331a00;
|
|
139
141
|
--notice-warn-border: #e65100;
|
|
142
|
+
--link: #93c5fd;
|
|
140
143
|
}
|
|
141
144
|
|
|
142
145
|
*, *::before, *::after { box-sizing: border-box; }
|
|
@@ -152,6 +155,7 @@ body {
|
|
|
152
155
|
}
|
|
153
156
|
h1 { margin-bottom: .25rem; }
|
|
154
157
|
.subtitle { color: var(--text-muted); margin-top: 0; }
|
|
158
|
+
a { color: var(--link); }
|
|
155
159
|
|
|
156
160
|
.notice {
|
|
157
161
|
background: var(--notice-bg, #fff8e1); border-left: 4px solid var(--notice-border, #f9a825);
|
|
@@ -1024,7 +1028,7 @@ def render_html(
|
|
|
1024
1028
|
'<th data-sort="gene" class="sortable">'
|
|
1025
1029
|
'Gene<span class="sort-arrow"></span></th>'
|
|
1026
1030
|
'<th data-sort="genotype" class="sortable">'
|
|
1027
|
-
'
|
|
1031
|
+
'GT<span class="sort-arrow"></span></th>'
|
|
1028
1032
|
'<th data-sort="repute" class="sortable">'
|
|
1029
1033
|
'Repute<span class="sort-arrow"></span></th>'
|
|
1030
1034
|
"<th>Summary</th>"
|
|
@@ -1090,16 +1094,25 @@ def render_html(
|
|
|
1090
1094
|
"<html lang='en'><head><meta charset='utf-8'>"
|
|
1091
1095
|
'<meta name="viewport" content="width=device-width, initial-scale=1">'
|
|
1092
1096
|
'<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,'
|
|
1093
|
-
"
|
|
1094
|
-
"
|
|
1095
|
-
"
|
|
1096
|
-
"
|
|
1097
|
-
"
|
|
1098
|
-
"
|
|
1099
|
-
"
|
|
1100
|
-
"
|
|
1101
|
-
"
|
|
1102
|
-
" fill='
|
|
1097
|
+
"%3Csvg viewBox='0 0 32 32' fill='none'"
|
|
1098
|
+
" xmlns='http://www.w3.org/2000/svg'%3E"
|
|
1099
|
+
"%3Ccircle cx='16' cy='16' r='14' stroke='%236366f1'"
|
|
1100
|
+
" stroke-width='1.5' opacity='0.3'/%3E"
|
|
1101
|
+
"%3Cpath d='M10 6C10 6 22 12 22 16C22 20 10 26 10 26'"
|
|
1102
|
+
" stroke='%236366f1' stroke-width='2'"
|
|
1103
|
+
" stroke-linecap='round' fill='none'/%3E"
|
|
1104
|
+
"%3Cpath d='M22 6C22 6 10 12 10 16C10 20 22 26 22 26'"
|
|
1105
|
+
" stroke='%236366f1' stroke-width='2'"
|
|
1106
|
+
" stroke-linecap='round' fill='none' opacity='0.4'/%3E"
|
|
1107
|
+
"%3Ccircle cx='10' cy='10' r='2' fill='%236366f1'/%3E"
|
|
1108
|
+
"%3Ccircle cx='22' cy='10' r='2' fill='%236366f1'"
|
|
1109
|
+
" opacity='0.4'/%3E"
|
|
1110
|
+
"%3Ccircle cx='16' cy='16' r='2' fill='%236366f1'"
|
|
1111
|
+
" opacity='0.7'/%3E"
|
|
1112
|
+
"%3Ccircle cx='22' cy='22' r='2' fill='%236366f1'/%3E"
|
|
1113
|
+
"%3Ccircle cx='10' cy='22' r='2' fill='%236366f1'"
|
|
1114
|
+
" opacity='0.4'/%3E"
|
|
1115
|
+
'%3C/svg%3E">'
|
|
1103
1116
|
f"<title>{_escape(title)}</title>"
|
|
1104
1117
|
f"<style>{_CSS}</style>"
|
|
1105
1118
|
"</head><body>"
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: allelix
|
|
3
|
-
Version: 1.8.
|
|
3
|
+
Version: 1.8.2
|
|
4
4
|
Summary: Open-source genotype analysis toolkit. Format-agnostic ingestion, database-agnostic annotation, offline-first.
|
|
5
5
|
Author-email: dial481 <dial481@users.noreply.github.com>
|
|
6
6
|
License-Expression: AGPL-3.0-or-later
|
|
7
|
-
Project-URL: Homepage, https://
|
|
7
|
+
Project-URL: Homepage, https://allelix.io
|
|
8
|
+
Project-URL: Source, https://github.com/dial481/allelix
|
|
8
9
|
Project-URL: Issues, https://github.com/dial481/allelix/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/dial481/allelix/blob/main/CHANGELOG.md
|
|
9
11
|
Keywords: genomics,genotype,snp,bioinformatics,dna
|
|
10
12
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
13
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -42,8 +44,9 @@ Open-source command-line toolkit for analyzing raw genotype files from consumer
|
|
|
42
44
|
> HTML/JSON/terminal reports, methylation + pharmacogenomics focused
|
|
43
45
|
> commands, report diffing, persistent config with commercial-mode
|
|
44
46
|
> safety switch. Build auto-detection from position data (ADR-0021).
|
|
45
|
-
> No regex on prose anywhere in production. **Latest: v1.
|
|
46
|
-
>
|
|
47
|
+
> No regex on prose anywhere in production. **Latest: v1.8.2** — HTML
|
|
48
|
+
> report redesign with dark mode, PLINK export, and automated PyPI
|
|
49
|
+
> publishing. Release notes:
|
|
47
50
|
> [`CHANGELOG.md`](CHANGELOG.md).
|
|
48
51
|
|
|
49
52
|
## Quickstart
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "allelix"
|
|
7
|
-
version = "1.8.
|
|
7
|
+
version = "1.8.2"
|
|
8
8
|
description = "Open-source genotype analysis toolkit. Format-agnostic ingestion, database-agnostic annotation, offline-first."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -42,8 +42,10 @@ dev = [
|
|
|
42
42
|
allelix = "allelix.cli:main"
|
|
43
43
|
|
|
44
44
|
[project.urls]
|
|
45
|
-
Homepage = "https://
|
|
45
|
+
Homepage = "https://allelix.io"
|
|
46
|
+
Source = "https://github.com/dial481/allelix"
|
|
46
47
|
Issues = "https://github.com/dial481/allelix/issues"
|
|
48
|
+
Changelog = "https://github.com/dial481/allelix/blob/main/CHANGELOG.md"
|
|
47
49
|
|
|
48
50
|
[tool.setuptools.packages.find]
|
|
49
51
|
include = ["allelix*"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|