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.
Files changed (72) hide show
  1. {allelix-1.8.1 → allelix-1.8.2}/PKG-INFO +7 -4
  2. {allelix-1.8.1 → allelix-1.8.2}/README.md +3 -2
  3. {allelix-1.8.1 → allelix-1.8.2}/allelix/models.py +3 -1
  4. {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/html.py +24 -11
  5. {allelix-1.8.1 → allelix-1.8.2}/allelix.egg-info/PKG-INFO +7 -4
  6. {allelix-1.8.1 → allelix-1.8.2}/pyproject.toml +4 -2
  7. {allelix-1.8.1 → allelix-1.8.2}/LICENSE +0 -0
  8. {allelix-1.8.1 → allelix-1.8.2}/allelix/__init__.py +0 -0
  9. {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/__init__.py +0 -0
  10. {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/alphamissense.py +0 -0
  11. {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/base.py +0 -0
  12. {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/cadd.py +0 -0
  13. {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/clinvar.py +0 -0
  14. {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/gnomad.py +0 -0
  15. {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/gwas.py +0 -0
  16. {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/pharmgkb.py +0 -0
  17. {allelix-1.8.1 → allelix-1.8.2}/allelix/annotators/snpedia.py +0 -0
  18. {allelix-1.8.1 → allelix-1.8.2}/allelix/cli.py +0 -0
  19. {allelix-1.8.1 → allelix-1.8.2}/allelix/compare.py +0 -0
  20. {allelix-1.8.1 → allelix-1.8.2}/allelix/config.py +0 -0
  21. {allelix-1.8.1 → allelix-1.8.2}/allelix/data/__init__.py +0 -0
  22. {allelix-1.8.1 → allelix-1.8.2}/allelix/data/high_value_snps.yaml +0 -0
  23. {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/__init__.py +0 -0
  24. {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/_versions.py +0 -0
  25. {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/alphamissense_loader.py +0 -0
  26. {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/cadd_loader.py +0 -0
  27. {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/cpic_loader.py +0 -0
  28. {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/gnomad_loader.py +0 -0
  29. {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/gwas_loader.py +0 -0
  30. {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/loader_utils.py +0 -0
  31. {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/manager.py +0 -0
  32. {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/pharmgkb_loader.py +0 -0
  33. {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/schema.py +0 -0
  34. {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/snpedia_loader.py +0 -0
  35. {allelix-1.8.1 → allelix-1.8.2}/allelix/databases/snpedia_parser.py +0 -0
  36. {allelix-1.8.1 → allelix-1.8.2}/allelix/exporters/__init__.py +0 -0
  37. {allelix-1.8.1 → allelix-1.8.2}/allelix/exporters/plink.py +0 -0
  38. {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/__init__.py +0 -0
  39. {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/_helpers.py +0 -0
  40. {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/ancestrydna.py +0 -0
  41. {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/base.py +0 -0
  42. {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/ftdna.py +0 -0
  43. {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/livingdna.py +0 -0
  44. {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/myhappygenes.py +0 -0
  45. {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/myheritage.py +0 -0
  46. {allelix-1.8.1 → allelix-1.8.2}/allelix/parsers/twentythreeandme.py +0 -0
  47. {allelix-1.8.1 → allelix-1.8.2}/allelix/py.typed +0 -0
  48. {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/__init__.py +0 -0
  49. {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/_pipeline.py +0 -0
  50. {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/diff.py +0 -0
  51. {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/high_value.py +0 -0
  52. {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/json_report.py +0 -0
  53. {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/methylation.py +0 -0
  54. {allelix-1.8.1 → allelix-1.8.2}/allelix/reports/terminal.py +0 -0
  55. {allelix-1.8.1 → allelix-1.8.2}/allelix/utils/__init__.py +0 -0
  56. {allelix-1.8.1 → allelix-1.8.2}/allelix/utils/allele.py +0 -0
  57. {allelix-1.8.1 → allelix-1.8.2}/allelix/utils/build_detect.py +0 -0
  58. {allelix-1.8.1 → allelix-1.8.2}/allelix.egg-info/SOURCES.txt +0 -0
  59. {allelix-1.8.1 → allelix-1.8.2}/allelix.egg-info/dependency_links.txt +0 -0
  60. {allelix-1.8.1 → allelix-1.8.2}/allelix.egg-info/entry_points.txt +0 -0
  61. {allelix-1.8.1 → allelix-1.8.2}/allelix.egg-info/requires.txt +0 -0
  62. {allelix-1.8.1 → allelix-1.8.2}/allelix.egg-info/top_level.txt +0 -0
  63. {allelix-1.8.1 → allelix-1.8.2}/setup.cfg +0 -0
  64. {allelix-1.8.1 → allelix-1.8.2}/tests/test_cli.py +0 -0
  65. {allelix-1.8.1 → allelix-1.8.2}/tests/test_cli_helpers.py +0 -0
  66. {allelix-1.8.1 → allelix-1.8.2}/tests/test_compare.py +0 -0
  67. {allelix-1.8.1 → allelix-1.8.2}/tests/test_config.py +0 -0
  68. {allelix-1.8.1 → allelix-1.8.2}/tests/test_end_to_end.py +0 -0
  69. {allelix-1.8.1 → allelix-1.8.2}/tests/test_mock_data_invariants.py +0 -0
  70. {allelix-1.8.1 → allelix-1.8.2}/tests/test_models.py +0 -0
  71. {allelix-1.8.1 → allelix-1.8.2}/tests/test_registry.py +0 -0
  72. {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.1
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://github.com/dial481/allelix
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.7.0** — PLINK
46
- > export, magnitude scoring formalization (ADR-0034). Release notes:
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.7.0** — PLINK
14
- > export, magnitude scoring formalization (ADR-0034). Release notes:
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 (e.g., "T/T").
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
- 'Genotype<span class="sort-arrow"></span></th>'
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
- "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'>"
1094
- "<defs><linearGradient id='g' x1='0' y1='0' x2='1' y2='1'>"
1095
- "<stop offset='0%25' stop-color='%234f46e5'/>"
1096
- "<stop offset='100%25' stop-color='%2306b6d4'/>"
1097
- "</linearGradient></defs>"
1098
- "<path d='M16 2C9 2 8 8 8 8s2-3 8-3 8 3 8 3-1-6-8-6z"
1099
- "m0 6c-7 0-8 6-8 6s2-3 8-3 8 3 8 3-1-6-8-6z"
1100
- "m0 6c-7 0-8 6-8 6s2-3 8-3 8 3 8 3-1-6-8-6z"
1101
- "m0 6c-7 0-8 6-8 6s2-3 8-3 8 3 8 3-1-6-8-6z'"
1102
- " fill='url(%23g)' opacity='0.9'/></svg>\">"
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.1
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://github.com/dial481/allelix
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.7.0** — PLINK
46
- > export, magnitude scoring formalization (ADR-0034). Release notes:
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.1"
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://github.com/dial481/allelix"
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