Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
da951b3
Initialize AGENTS.md for CopraRNA Python 3 migration
Alexander-Mitrofanov Oct 21, 2026
27168cc
Add comprehensive regression test baseline and Bioconda-ready environ…
Alexander-Mitrofanov Oct 21, 2026
18ccf7a
Port genome, homology and statistical preprocessing with legacy parity
Alexander-Mitrofanov Oct 21, 2026
3433418
Match legacy FASTA whitespace and R numeric serialization
Alexander-Mitrofanov Oct 21, 2026
cdbd9b6
Port enrichment exports and bundle immutable legacy resources
Alexander-Mitrofanov Oct 21, 2026
9dafdf4
Add legacy-to-new script mapping documentation
Alexander-Mitrofanov Oct 21, 2026
85e11bf
Implement robust high-throughput CLI and add README.2.md
Alexander-Mitrofanov Oct 21, 2026
7ad5ba4
Validate pinned helper environment and isolated package builds
Alexander-Mitrofanov Oct 21, 2026
1ba0fe1
Preserve empty fixture inputs in clean checkouts
Alexander-Mitrofanov Oct 21, 2026
7a38242
Port GEV fitting and comparative p-value combination with exact legac…
Alexander-Mitrofanov Oct 21, 2026
b05f19a
Port conservation mapping, Jalview exports and scientific plots to Py…
Alexander-Mitrofanov Oct 21, 2026
086ecd3
Port NCBI, DAVID, webserver reports and organism maintenance adapters
Alexander-Mitrofanov Oct 21, 2026
ec64435
Complete native prediction workflow and independent high-throughput p…
Alexander-Mitrofanov Oct 21, 2026
ee9cab6
Document all 41 script mappings and validate the complete scientific …
Alexander-Mitrofanov Oct 21, 2026
9bd324f
Record complete 120-check validation and preserve the audited peak-bo…
Alexander-Mitrofanov Oct 21, 2026
d6438ed
Keep validated peak-boundary behavior after checking R logical semantics
Alexander-Mitrofanov Oct 21, 2026
b23b6e5
Fix cluster p-value column naming with explicit legacy regression mode
Alexander-Mitrofanov Oct 21, 2026
96b0f2e
Fix region extraction for multi-record GenBank inputs
Alexander-Mitrofanov Oct 21, 2026
005b32f
Fix reverse-strand flanks to complement all IUPAC symbols
Alexander-Mitrofanov Oct 21, 2026
240f63b
Fix organism-code lookup when GenBank inputs include directories
Alexander-Mitrofanov Oct 21, 2026
adbae9f
Fix suboptimal selection to retain the second-best interaction
Alexander-Mitrofanov Oct 21, 2026
025d6e4
Fix JSON escaping for enrichment feature and gene labels
Alexander-Mitrofanov Oct 21, 2026
738c153
Fix CopraRNA1 correlation scoring to use histogram density
Alexander-Mitrofanov Oct 21, 2026
1f6f022
Fix DomClust option ordering so native homology runs emit tables
Alexander-Mitrofanov Oct 21, 2026
b474797
Fix plotting for the supported lowercase cds region
Alexander-Mitrofanov Oct 21, 2026
296414c
Fix region plotting when fewer predictions than topcount are available
Alexander-Mitrofanov Oct 21, 2026
ddf9a27
Pin the validated BLAS reduction kernel for reproducible nonlinear fits
Alexander-Mitrofanov Oct 21, 2026
e79c680
Merge branch 'issue-1-python3-rewrite' into issue-1-python3-bugfixes
Alexander-Mitrofanov Oct 21, 2026
d4243fb
Fix obsolete DomClust table mode by converting supported membership o…
Alexander-Mitrofanov Oct 21, 2026
aa6bb20
Validate corrected self-clustering workflow, web exports and multipag…
Alexander-Mitrofanov Oct 21, 2026
b9c331d
Simplify CopraRNA2 predictions with IntaRNAsTar parameters and compre…
Alexander-Mitrofanov Oct 21, 2026
e190bb9
Render scientific reports and complete multipage exports as Python PD…
Alexander-Mitrofanov Oct 21, 2026
d2c554a
Cover review contracts with native gzip workflows and retained scient…
Alexander-Mitrofanov Oct 21, 2026
39383a9
Validate current scientific dependencies and BLAST+ integration
Alexander-Mitrofanov Oct 21, 2026
2ec1504
Document rewrite architecture, scientific APIs and release changes
Alexander-Mitrofanov Oct 21, 2026
e258622
Stream and atomically cache compressed genomes for shared prediction …
Alexander-Mitrofanov Oct 21, 2026
860ddef
Separate optional Perl and R oracle environments to resolve XML libra…
Alexander-Mitrofanov Oct 21, 2026
8b2f154
Apply the artificial-helix policy consistently to web prediction exports
Alexander-Mitrofanov Oct 21, 2026
c213942
Preserve native settings and nested input files during report cleanup
Alexander-Mitrofanov Oct 21, 2026
55f8abe
Prevent input and report-destination collisions before native workflo…
Alexander-Mitrofanov Oct 22, 2026
63f81d7
Enforce IntaRNA 3 for standalone helpers and hash the detected native…
Alexander-Mitrofanov Oct 22, 2026
a3977c8
Complete public API documentation and audit every requested review item
Alexander-Mitrofanov Oct 22, 2026
9e9e803
Replace static organism catalogs with cached NCBI assembly resolution
Alexander-Mitrofanov Oct 22, 2026
9f9431f
Refresh all 17 reference genomes with versioned NCBI provenance
Alexander-Mitrofanov Oct 22, 2026
f582c67
Document and package the Python-only CopraRNA 3.0.0 release
Alexander-Mitrofanov Oct 22, 2026
4118189
Preserve genomic context for target accessibility predictions
Alexander-Mitrofanov Oct 23, 2026
3adace6
Address report output and DAVID review
Alexander-Mitrofanov Oct 26, 2026
235dec7
Improve README clarity on DAVID service
martin-raden Oct 26, 2026
79164fa
Update ChangeLog with email and CSV import changes
martin-raden Oct 26, 2026
f4795f1
Merge pull request #7 from BackofenLab/codex/issue-6-accessibility-co…
martin-raden Oct 26, 2026
e13b6dd
Merge pull request #5 from BackofenLab/codex/issue-4-release-3
martin-raden Oct 26, 2026
3894a18
Merge pull request #3 from BackofenLab/issue-1-python3-bugfixes
martin-raden Oct 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
61 changes: 61 additions & 0 deletions .github/workflows/python.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: CopraRNA 3
on:
push:
pull_request:
workflow_dispatch:

env:
OPENBLAS_CORETYPE: Haswell

jobs:
python:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- python: '3.11'
biopython: '1.84'
- python: '3.12'
biopython: '1.88'
- python: '3.13'
biopython: '1.88'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- run: python -m pip install '.[test,build]' 'biopython==${{ matrix.biopython }}'
- run: python -m pytest -q
- run: python -m build
- name: Check installed wheel outside the source directory
shell: bash
run: |
python -m venv --system-site-packages /tmp/coprarna-wheel
/tmp/coprarna-wheel/bin/python -m pip install --force-reinstall --no-deps dist/*.whl
cd /tmp
/tmp/coprarna-wheel/bin/coprarna --version
/tmp/coprarna-wheel/bin/coprarna helpers
/tmp/coprarna-wheel/bin/coprarna helper archive-readme

scientific:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: mamba-org/setup-micromamba@v2
with:
environment-file: environment.yml
cache-environment: true
- name: Install Python package and browser
shell: bash -el {0}
run: |
python -m pip install --no-deps .
python -m pip install ".[web]"
python -m playwright install chromium --only-shell
- name: Native scientific workflow and browser integration
shell: bash -el {0}
env:
COPRARNA_PIPELINE_TESTS: '1'
COPRARNA_BROWSER_TESTS: '1'
COPRARNA_REFERENCE_TESTS: '1'
run: python -m pytest -q
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
/.project

__pycache__/
*.py[cod]
.pytest_cache/
build/
dist/
*.egg-info/
core_genome_archive/metadata/*.lock
67 changes: 67 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# CopraRNA 3 architecture and release policy

[Issue #4](https://github.com/BackofenLab/CopraRNA/issues/4) prepares version 3.0.0
from `issue-1-python3-bugfixes`. Its explicit removal of the 2.1 code base supersedes
the earlier instruction to retain original source files. Historical sources remain
in Git history; production and tests must never invoke them. Keep substantial
review changes in separate commits.

## Architecture

- `pipeline.py`, `cli.py`: configuration, isolated batches, cleanup and genome CLI.
- `organisms.py`: on-demand NCBI assembly resolution, versioned metadata, cache
validation and duplicate-assembly rejection; no static organism allow-list.
- `homology.py`, `genome.py`, `ncbi.py`, `annotation.py`: shared compressed genomes,
streaming GenBank parsing, short job-local native species codes and clustering.
- `intarna.py`, `parameters.py`: IntaRNA >=3 / IntaRNAsTar, native parameter files,
gzipped interactions and removal of near-full-length perfect helices.
- `energy.py`, `combination.py`, `numerics.py`, `statistics.py`: validated GEV and
comparative statistics; preserve the validated NumPy/SciPy and BLAS kernel pins.
- `conservation.py`, `alignments.py`: consensus matrices and Jalview exports.
- `plots.py`, `phylogeny.py`: PDF/SVG scientific figures and tree rendering.
- `david.py`, `enrichment.py`, `webserver.py`: optional service and web exports.
- `io.py`: shared compressed/plain I/O and protected input/output namespaces.
- `helpers.py`: active Python helper contracts; no original-script aliases or
defect-emulation mode. `resources.py` provides current report resources only.

## Documentation

Document each new/changed public function with its purpose, input/output contract,
file side effects and failure behavior where relevant. For scientific algorithms,
explain coordinate systems, matrix dimensions, statistical conventions and retained
oracle differences. Comment non-obvious numerical choices, native interfaces and
cache publication/lifetime rules. Record release-facing changes and rationale in
`ChangeLog.md`; keep `README.md` consistent with CLI and packaging.

## Validation

Retain exact independently captured scientific fixtures for unchanged behavior.
Their provenance and checksums live in `tests/fixtures`; do not regenerate expected
numbers from the Python implementation. Compare R-data objects semantically.
Test changed behavior against explicit contracts and real native integrations.
No legacy source/interpreter environments or generated availability catalogs belong
in the release. The current source version, package metadata and option-file
version must agree.

Native integration uses `COPRARNA_PIPELINE_TESTS=1`; reference-genome extraction
uses `COPRARNA_REFERENCE_TESTS=1`; optional browser integration uses
`COPRARNA_BROWSER_TESTS=1`. CI checks Python 3.11–3.13, builds and installed wheels.
Refresh the 17 NCBI reference records with `python -m tools.refresh_core_genomes`;
verify exact identities, checksums and annotation dates in the archive manifest.
Live external-service availability is not certified by offline request tests.
Check new dependency/UI releases before changing pins.

## Invariants

Preserve the user's original FASTA and native parameter file, including inputs
named `input_sRNA.fa`. When adding outputs, update `io._JOB_OUTPUTS`; preserve
cleanup destinations that resolve to original inputs. Every independent native
entry point retains its version check and detected-version cache signature.

Keep genomes compressed and reuse shared paths directly. Cache metadata pins exact
assembly/sequence versions until explicitly refreshed. Publish only completed
validated downloads/resolutions, under accession locks; failed refreshes preserve
prior entries. A chromosome and plasmid from the same assembly must never count
as independent comparative organisms. Scientific report labels are unversioned;
job metadata and cache paths preserve exact versions. SVG/PDF remain primary
figure formats; no PostScript/Ghostscript dependency is permitted.
Loading
Loading