encode-toolkit 0.3.1__tar.gz → 0.3.3__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 (35) hide show
  1. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/.gitignore +10 -3
  2. encode_toolkit-0.3.3/CHANGELOG.md +159 -0
  3. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/CITATION.cff +1 -1
  4. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/PKG-INFO +2 -2
  5. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/README.md +1 -1
  6. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/pyproject.toml +1 -1
  7. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/src/encode_connector/client/constants.py +1 -1
  8. encode_toolkit-0.3.1/CHANGELOG.md +0 -69
  9. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/LICENSE +0 -0
  10. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/PRIVACY.md +0 -0
  11. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/SECURITY.md +0 -0
  12. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/conftest.py +0 -0
  13. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/src/encode_connector/__init__.py +0 -0
  14. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/src/encode_connector/__main__.py +0 -0
  15. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/src/encode_connector/client/__init__.py +0 -0
  16. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/src/encode_connector/client/auth.py +0 -0
  17. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/src/encode_connector/client/downloader.py +0 -0
  18. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/src/encode_connector/client/encode_client.py +0 -0
  19. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/src/encode_connector/client/models.py +0 -0
  20. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/src/encode_connector/client/tracker.py +0 -0
  21. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/src/encode_connector/client/validation.py +0 -0
  22. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/src/encode_connector/server/__init__.py +0 -0
  23. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/src/encode_connector/server/__main__.py +0 -0
  24. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/src/encode_connector/server/main.py +0 -0
  25. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/tests/__init__.py +0 -0
  26. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/tests/test_auth.py +0 -0
  27. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/tests/test_bioinformatics_audit.py +0 -0
  28. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/tests/test_client.py +0 -0
  29. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/tests/test_downloader.py +0 -0
  30. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/tests/test_models.py +0 -0
  31. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/tests/test_packaging.py +0 -0
  32. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/tests/test_server.py +0 -0
  33. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/tests/test_tool_responses.py +0 -0
  34. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/tests/test_tracker.py +0 -0
  35. {encode_toolkit-0.3.1 → encode_toolkit-0.3.3}/tests/test_validation.py +0 -0
@@ -37,9 +37,16 @@ node_modules/
37
37
  *.swp
38
38
  *.swo
39
39
 
40
- # Claude Code local files
41
- .claude/settings.local.json
42
- .claude/*.local.md
40
+ # AI assistant configuration and notes (never commit)
41
+ .claude/
42
+ CLAUDE.md
43
+ CLAUDE.local.md
44
+ AGENTS.md
45
+ GEMINI.md
46
+ .mcp.json
47
+ !plugin/.mcp.json
48
+ .cursorrules
49
+ .aider*
43
50
 
44
51
  # Runtime data
45
52
  *.db
@@ -0,0 +1,159 @@
1
+ # Changelog
2
+
3
+ All notable changes to the ENCODE Toolkit will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.3.3] - 2026-09-20
9
+
10
+ Pipeline skills release. The Python package (MCP server) is functionally identical to 0.3.2.
11
+
12
+ ### Fixed
13
+
14
+ - **All seven Nextflow pipelines now run on current Nextflow (validated on 26.04.6).** The
15
+ workflows mixed top-level statements with process definitions and four configs defined a
16
+ function, both of which the strict parser rejects. Validation and channel setup moved into the
17
+ `workflow` block, and `check_max` was replaced by `process.resourceLimits`.
18
+ - **ChIP-seq**: the workflow called each process twice (samples, then controls), which Nextflow
19
+ does not allow, so it could not start. Controls now go through the same calls and are split
20
+ off before peak calling, where they are pooled. `--control` is optional. Signal tracks now
21
+ receive the sample ID they were missing.
22
+ - **CUT&RUN**: SEACR was given the control BAM instead of a control bedGraph; spike-in scale
23
+ factors were computed but never applied to the signal track; `--seacr_mode` was ignored;
24
+ MACS2 peak calling always failed on a no-op `mv`; fragments were extracted from a
25
+ coordinate-sorted BAM, which drops most read pairs; `--control` and chromosome sizes were
26
+ not staged into tasks.
27
+ - **DNase-seq**: Hotspot2 was called with options it does not have and without its mandatory
28
+ center-sites file; the image pinned a Hotspot2 tag that does not exist and lacked `modwt`
29
+ and `bc`. Footprinting could pair a BAM with another sample's peaks. `--hotspot_index` is
30
+ replaced by `--hotspot_center_sites` and `--hotspot_mappable`.
31
+ HINT footprinting needs an RGT data directory that the container's unprivileged user could
32
+ never find; it is now an explicit input, `--rgt_data`, checked before the run starts.
33
+ - **WGBS**: the bedMethyl conversion divided by zero on MethylDackel's header line, so
34
+ extraction always failed; only CpG was converted although CHG and CHH were promised;
35
+ `--no_overlap` toggled `--mergeContext`, which is unrelated to mate overlap (renamed
36
+ `--merge_context`). bedMethyl score and strand now follow the ENCODE format.
37
+ - **RNA-seq**: the RSEM reference is a file prefix but was required to be a directory.
38
+ - **ATAC-seq**: the BAM index was not passed to the Tn5 shift step, which `alignmentSieve`
39
+ requires; the mitochondrial fraction used `bc`, which the image lacked, and silently wrote an
40
+ empty value; duplication metrics were never published. The workflow now states that it needs
41
+ paired-end reads instead of filtering every single-end read away.
42
+ - **Hi-C**: `pairtools sort` was given a temporary directory that was never created. HiCCUPS
43
+ now runs its CPU mode by default, because the image has no CUDA runtime (`--hiccups_gpu`).
44
+ - **IDR** (ChIP-seq, ATAC-seq) picked two peak files in arbitrary order and crashed with a
45
+ single replicate. The pair is now sorted, and IDR is skipped below two replicates.
46
+ - **Pipeline images had never been built.** Beyond missing `build-essential`, `unzip`, `bc`, and
47
+ Boost: `idr`, `trim-galore`, and `phantompeakqualtools` are not PyPI packages; `deeptools
48
+ 3.5.4` was never published; BWA 0.7.17 does not link with current GCC (now 0.7.18); Picard 3
49
+ needs Java 17; MethylDackel needs libBigWig; SEACR could not find its R script through a
50
+ symlink; RGT 0.13.2 and pairtools 1.0.3 no longer install (now 1.0.2 and 1.1.2). Index
51
+ prefixes are resolved from staged files, so cloud executors work.
52
+ - **Conda environment files** pinned packages that do not exist (`hotspot2`, `hint`, `f-seq2`)
53
+ or cannot be installed together. All seven now solve, and the Anaconda `defaults` channel is
54
+ no longer used.
55
+ - Pipelines referenced container images that do not exist. Each config now uses an image built
56
+ from the skill's own Dockerfile, with a fixed tag and a `--container` override.
57
+ - `gcp` profiles used the retired `google-lifesciences` executor; they now use `google-batch`.
58
+ - QC references: `samtools view` needs `-L` for a BED file; the WGBS coverage one-liner never
59
+ counted bases at 5x or more.
60
+
61
+ ### Changed
62
+
63
+ - **Removed parameters that had no effect**: `--aligner` and `--lambda_genome` (WGBS),
64
+ `--motif_db` (DNase-seq), `--restriction_site` (Hi-C), `--gtf` (RNA-seq). The skills now
65
+ describe what the workflows actually do.
66
+ - `install-nextflow.sh` installs a pinned Nextflow release and verifies its SHA-256 before use,
67
+ instead of piping a remote script into a shell. It no longer fails when the install
68
+ directory is not on the `PATH`.
69
+ - `install-python-packages.sh` installs against `constraints.txt`, a lock file with exact
70
+ versions for Python 3.10+, generated from `requirements.in`.
71
+ - The pipeline guide now separates the official ENCODE WDL pipelines from this toolkit's own
72
+ Nextflow implementations, and no longer cites repositories or images that do not exist.
73
+ Pipeline images are no longer labelled as maintained by the ENCODE DCC.
74
+
75
+ ### Added
76
+
77
+ - `Pipelines` CI workflow: `nextflow lint`, `nextflow run -preview` across parameter
78
+ combinations, profile resolution, a Docker build of every pipeline image with checks that
79
+ the tools each workflow calls are present and actually start, a dry-run solve of every conda
80
+ environment, shellcheck, and a `skills/` vs `plugin/skills/` identity check.
81
+
82
+ ## [0.3.2] - 2026-09-20
83
+
84
+ Maintenance release. The Python package is functionally identical to 0.3.1.
85
+
86
+ ### Fixed
87
+
88
+ - `bioinformatics-installer` skill: the ChIP-seq walkthrough pointed at `scripts/chipseq-env.yml`
89
+ (the file lives in `environments/`) and at an `annotation-env.yml` that did not exist. The first
90
+ path is corrected and the second is replaced with an explicit `conda create` command.
91
+
92
+ ### Changed
93
+
94
+ - Removed local tooling configuration files from the repository and ignored them going forward.
95
+ - `CONTRIBUTING.md` and `docs/SHOWCASE.md` now use the ENCODE Toolkit name and the current skill
96
+ count (47).
97
+
98
+ ## [0.3.1] - 2026-09-20
99
+
100
+ ### Fixed
101
+
102
+ - **Server failed to start on fresh installs.** The `mcp` dependency had no upper bound, so new
103
+ environments resolved `mcp` 2.x, which removed `mcp.server.fastmcp`. Startup then crashed with
104
+ `ModuleNotFoundError: No module named 'mcp.server.fastmcp'`. The dependency is now capped at
105
+ `mcp[cli]>=1.0,<2`. Existing installs that already had `mcp` 1.x were not affected.
106
+
107
+ If you hit this error, uv may have cached the broken environment. Refresh it once with
108
+ `uvx --refresh encode-toolkit` (or `uv cache clean encode-toolkit`); pip users can run
109
+ `pip install --upgrade encode-toolkit`.
110
+
111
+ ### Security
112
+
113
+ - The ChIP-seq, ATAC-seq, and RNA-seq pipeline Dockerfiles now download the UCSC
114
+ `bedGraphToBigWig` executable over HTTPS instead of plain HTTP.
115
+
116
+ ### Changed
117
+
118
+ - The source distribution now contains only the Python package, tests, and project documents.
119
+ It previously bundled the whole repository, including editor configuration and a duplicate
120
+ copy of the plugin tree (1.6 MB down to 118 KB). The wheel is unchanged.
121
+ - Updated dead GREAT links in the `peak-annotation` and `multi-omics-integration` skills.
122
+
123
+ ### Added
124
+
125
+ - Packaging regression test that fails if the `mcp` dependency loses its upper bound.
126
+
127
+ ## [0.3.0-beta.1] - 2026-03-08
128
+
129
+ Initial public beta release.
130
+
131
+ ### Features
132
+
133
+ - **20 MCP tools** for searching, downloading, and tracking ENCODE data
134
+ - Search experiments and files with comprehensive filters and pagination
135
+ - Download files with MD5 verification, concurrent downloads, and directory organization
136
+ - Local experiment tracking with SQLite (publications, pipelines, quality metrics)
137
+ - Cross-reference with PubMed, bioRxiv, ClinicalTrials.gov, GEO
138
+ - Citation export (BibTeX, RIS) for reference managers
139
+ - Data provenance chain for derived files
140
+ - Batch download with dry-run preview
141
+
142
+ - **47 skills** across 10 categories
143
+ - Core: setup, search, download, track, cross-reference
144
+ - Analysis: quality assessment, integrative analysis, regulatory elements, epigenome profiling, compare biosamples, visualization, motif analysis, peak annotation, batch analysis
145
+ - Functional genomics: CRISPR/MPRA/STARR-seq screen analysis
146
+ - Data aggregation: histone, accessibility, Hi-C, methylation
147
+ - External databases: UCSC, GEO, gnomAD, Ensembl, GTEx, ClinVar, CELLxGENE, GWAS Catalog, JASPAR
148
+ - Workflows: provenance, citations, variant annotation, pipelines, single-cell, disease research, publication trust, bioinformatics installer, scientific writing, liftover coordinates
149
+ - Pipeline execution: ChIP-seq, ATAC-seq, RNA-seq, WGBS, Hi-C, DNase-seq, CUT&RUN (Nextflow + Docker)
150
+ - Meta-analysis: scRNA-seq meta-analysis, multi-omics integration
151
+
152
+ - **Async ENCODE API client** with retry logic, 1-hour TTL cache, and rate limiting
153
+ - **OS keyring credential management** with Fernet-encrypted file fallback
154
+ - **Thread-safe SQLite tracker** with full transaction safety
155
+ - **Streaming downloads** with 64KB chunks and SSRF-safe redirect validation
156
+ - **568 tests** with 98% code coverage
157
+ - **34 literature reference documents** (~320 papers cataloged with DOI, PMID, key findings)
158
+ - **9 scientist-facing vignettes** with real ENCODE API output
159
+ - **GitHub Actions CI/CD** (pytest across Python 3.10–3.13, ruff lint, plugin validation)
@@ -8,7 +8,7 @@ authors:
8
8
  given-names: Alex M.
9
9
  orcid: "https://orcid.org/0000-0003-0907-464X"
10
10
  affiliation: "Independent Researcher"
11
- version: 0.3.1
11
+ version: 0.3.3
12
12
  date-released: "2026-09-20"
13
13
  license: AGPL-3.0-only
14
14
  repository-code: "https://github.com/ammawla/encode-toolkit"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: encode-toolkit
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: MCP server for querying and downloading ENCODE Project genomics data directly from Claude
5
5
  Project-URL: Homepage, https://github.com/ammawla/encode-toolkit
6
6
  Project-URL: Repository, https://github.com/ammawla/encode-toolkit
@@ -37,7 +37,7 @@ Description-Content-Type: text/markdown
37
37
 
38
38
  [![License: AGPL-3.0](https://img.shields.io/badge/license-AGPL--3.0-green.svg)](LICENSE)
39
39
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
40
- [![Version](https://img.shields.io/badge/version-0.3.1-green)](CHANGELOG.md)
40
+ [![Version](https://img.shields.io/badge/version-0.3.3-green)](CHANGELOG.md)
41
41
  [![Status](https://img.shields.io/badge/status-beta-yellow)]()
42
42
  [![Skills](https://img.shields.io/badge/skills-47-orange)](docs/skill-vignettes/)
43
43
  [![Tools](https://img.shields.io/badge/MCP_tools-20-purple)](src/encode_connector/server/main.py)
@@ -4,7 +4,7 @@
4
4
 
5
5
  [![License: AGPL-3.0](https://img.shields.io/badge/license-AGPL--3.0-green.svg)](LICENSE)
6
6
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
7
- [![Version](https://img.shields.io/badge/version-0.3.1-green)](CHANGELOG.md)
7
+ [![Version](https://img.shields.io/badge/version-0.3.3-green)](CHANGELOG.md)
8
8
  [![Status](https://img.shields.io/badge/status-beta-yellow)]()
9
9
  [![Skills](https://img.shields.io/badge/skills-47-orange)](docs/skill-vignettes/)
10
10
  [![Tools](https://img.shields.io/badge/MCP_tools-20-purple)](src/encode_connector/server/main.py)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "encode-toolkit"
7
- version = "0.3.1"
7
+ version = "0.3.3"
8
8
  description = "MCP server for querying and downloading ENCODE Project genomics data directly from Claude"
9
9
  readme = "README.md"
10
10
  license = "AGPL-3.0-only"
@@ -17,7 +17,7 @@ try:
17
17
 
18
18
  _version = importlib.metadata.version("encode-toolkit")
19
19
  except importlib.metadata.PackageNotFoundError:
20
- _version = "0.3.1"
20
+ _version = "0.3.3"
21
21
  USER_AGENT = f"encode-toolkit/{_version} (MCP; +https://github.com/ammawla/encode-toolkit)"
22
22
 
23
23
  # Keyring service name for credential storage
@@ -1,69 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to the ENCODE Toolkit will be documented in this file.
4
-
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
-
8
- ## [0.3.1] - 2026-09-20
9
-
10
- ### Fixed
11
-
12
- - **Server failed to start on fresh installs.** The `mcp` dependency had no upper bound, so new
13
- environments resolved `mcp` 2.x, which removed `mcp.server.fastmcp`. Startup then crashed with
14
- `ModuleNotFoundError: No module named 'mcp.server.fastmcp'`. The dependency is now capped at
15
- `mcp[cli]>=1.0,<2`. Existing installs that already had `mcp` 1.x were not affected.
16
-
17
- If you hit this error, uv may have cached the broken environment. Refresh it once with
18
- `uvx --refresh encode-toolkit` (or `uv cache clean encode-toolkit`); pip users can run
19
- `pip install --upgrade encode-toolkit`.
20
-
21
- ### Security
22
-
23
- - The ChIP-seq, ATAC-seq, and RNA-seq pipeline Dockerfiles now download the UCSC
24
- `bedGraphToBigWig` executable over HTTPS instead of plain HTTP.
25
-
26
- ### Changed
27
-
28
- - The source distribution now contains only the Python package, tests, and project documents.
29
- It previously bundled the whole repository, including editor configuration and a duplicate
30
- copy of the plugin tree (1.6 MB down to 118 KB). The wheel is unchanged.
31
- - Updated dead GREAT links in the `peak-annotation` and `multi-omics-integration` skills.
32
-
33
- ### Added
34
-
35
- - Packaging regression test that fails if the `mcp` dependency loses its upper bound.
36
-
37
- ## [0.3.0-beta.1] - 2026-03-08
38
-
39
- Initial public beta release.
40
-
41
- ### Features
42
-
43
- - **20 MCP tools** for searching, downloading, and tracking ENCODE data
44
- - Search experiments and files with comprehensive filters and pagination
45
- - Download files with MD5 verification, concurrent downloads, and directory organization
46
- - Local experiment tracking with SQLite (publications, pipelines, quality metrics)
47
- - Cross-reference with PubMed, bioRxiv, ClinicalTrials.gov, GEO
48
- - Citation export (BibTeX, RIS) for reference managers
49
- - Data provenance chain for derived files
50
- - Batch download with dry-run preview
51
-
52
- - **47 skills** across 10 categories
53
- - Core: setup, search, download, track, cross-reference
54
- - Analysis: quality assessment, integrative analysis, regulatory elements, epigenome profiling, compare biosamples, visualization, motif analysis, peak annotation, batch analysis
55
- - Functional genomics: CRISPR/MPRA/STARR-seq screen analysis
56
- - Data aggregation: histone, accessibility, Hi-C, methylation
57
- - External databases: UCSC, GEO, gnomAD, Ensembl, GTEx, ClinVar, CELLxGENE, GWAS Catalog, JASPAR
58
- - Workflows: provenance, citations, variant annotation, pipelines, single-cell, disease research, publication trust, bioinformatics installer, scientific writing, liftover coordinates
59
- - Pipeline execution: ChIP-seq, ATAC-seq, RNA-seq, WGBS, Hi-C, DNase-seq, CUT&RUN (Nextflow + Docker)
60
- - Meta-analysis: scRNA-seq meta-analysis, multi-omics integration
61
-
62
- - **Async ENCODE API client** with retry logic, 1-hour TTL cache, and rate limiting
63
- - **OS keyring credential management** with Fernet-encrypted file fallback
64
- - **Thread-safe SQLite tracker** with full transaction safety
65
- - **Streaming downloads** with 64KB chunks and SSRF-safe redirect validation
66
- - **568 tests** with 98% code coverage
67
- - **34 literature reference documents** (~320 papers cataloged with DOI, PMID, key findings)
68
- - **9 scientist-facing vignettes** with real ENCODE API output
69
- - **GitHub Actions CI/CD** (pytest across Python 3.10–3.13, ruff lint, plugin validation)
File without changes