Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
f092626
🧹 chore: update .gitignore to include new configuration files
cauliyang Nov 2, 2025
304546f
✨ feat: enhance DeepBioP with new features and improvements
cauliyang Nov 3, 2025
817ef9d
✨ feat(cli): add human-readable base formatting for total bases in st…
cauliyang Nov 3, 2025
94faa15
✨ feat: implement comprehensive biological data preprocessing library…
cauliyang Nov 3, 2025
5c1ca95
🧪 test(docs): fix all doctest examples and remove dead code
cauliyang Nov 3, 2025
2d742cb
📚 docs: add comprehensive CONTRIBUTING.md and fix rustdoc warnings
cauliyang Nov 3, 2025
b6963d8
⚡️ perf(python): release GIL for parallel batch operations
cauliyang Nov 3, 2025
a409772
🔇 chore: suppress false-positive PyO3 deprecation warnings
cauliyang Nov 3, 2025
d835afd
Revert "🔇 chore: suppress false-positive PyO3 deprecation warnings"
cauliyang Nov 3, 2025
d5a4dc6
✨ refactor(python): migrate from allow_threads to detach API
cauliyang Nov 3, 2025
aa9392c
📝 spec: PyTorch-Style Python API for Deep Learning
cauliyang Nov 4, 2025
d636b4b
📝 docs(spec): complete clarification phase with 5 anti-duplication de…
cauliyang Nov 4, 2025
72fe1d0
📋 docs(plan): complete implementation planning for PyTorch-style Pyth…
cauliyang Nov 4, 2025
dcd30df
📋 docs(tasks): generate implementation tasks for PyTorch-style Python…
cauliyang Nov 4, 2025
cbca75e
✨ feat: add PyTorch-style Python API for deep learning workflows
cauliyang Nov 4, 2025
cd07899
🐛 fix: remove armv7 builds to resolve CI cross-compilation error
cauliyang Nov 4, 2025
2cbbb12
🐛 fix: disable musllinux builds to resolve cargo metadata error
cauliyang Nov 4, 2025
dd6c24b
🐛 fix: update macOS CI runner from macos-13 to macos-14
cauliyang Nov 4, 2025
8f70f8e
🐛 fix: skip GTF tests on Windows due to illegal instruction error
cauliyang Nov 4, 2025
78d836f
🧹 refactor: fix Rust warnings in PyTorch API implementation
cauliyang Nov 4, 2025
4358ac1
🔧 feat: migrate CI to use uv for Python package management
cauliyang Nov 4, 2025
1d9e03d
🐛 fix: ensure all dependencies are installed in CI before pytest
cauliyang Nov 4, 2025
30cd508
dev: add uv.lock
cauliyang Nov 4, 2025
be01488
dev: make pre-commit happy
cauliyang Nov 4, 2025
094f52c
🐛 fix: install pre-built wheel instead of rebuilding from source in CI
cauliyang Nov 4, 2025
6c285fa
🐛 fix: avoid uv run triggering package rebuild in CI tests
cauliyang Nov 4, 2025
8fac17a
🐛 fix: revert to pip and skip VCF tests on Windows
cauliyang Nov 4, 2025
b08ede0
🐛 fix: upgrade pip and disable cache for wheel installation
cauliyang Nov 4, 2025
c661299
🐛 fix: install numpy separately and use --no-deps for wheel
cauliyang Nov 4, 2025
da2245e
🐛 fix: remove --no-deps flag to allow proper wheel installation
cauliyang Nov 4, 2025
e5729ba
🐛 fix: restore --no-deps and remove --no-index for wheel installation
cauliyang Nov 4, 2025
7676c93
🐛 fix: run pytest from project root to use installed package
cauliyang Nov 5, 2025
8c39b67
🐛 fix: temporarily move source directory during tests
cauliyang Nov 5, 2025
0e23b7a
🐛 fix: skip macOS x86_64 tests on ARM64 runner
cauliyang Nov 5, 2025
b34aa8a
🐛 fix: use macos-13 runner for x86_64 builds
cauliyang Nov 5, 2025
94f259b
fix(ci): replace Unicode characters with ASCII in Windows tests
cauliyang Nov 5, 2025
9036278
docs: add comprehensive API documentation and PyTorch stubs
cauliyang Nov 5, 2025
112137e
refactor: address PR review comments for code quality and safety
cauliyang Nov 7, 2025
8331a58
Merge branch 'main' into 001-biodata-dl-lib
cauliyang Nov 7, 2025
1b70faf
dev: format by cargo fmt
cauliyang Nov 7, 2025
17d823a
🐛 fix: make PyO3 optional and fix Python bindings for all crates
cauliyang Nov 7, 2025
3f6c75a
🐛 fix(ci): exclude py-deepbiop from cargo test in CI
cauliyang Nov 7, 2025
697b8f0
🐛 fix: disable stub_gen binary due to extension-module linking issues
cauliyang Nov 7, 2025
c980c62
docs: document stub generation limitation with extension-module
cauliyang Nov 7, 2025
2359ffd
feat: add stub_gen binary for automatic stub generation
cauliyang Nov 7, 2025
c3c320a
✨ feat: add Python deep learning API with PyTorch and Lightning integ…
cauliyang Nov 8, 2025
2a7b568
✅ test: enable all ignored tests and remove placeholder test files
cauliyang Nov 8, 2025
0da48b7
feat(ci): implement comprehensive Python testing workflow
cauliyang Nov 8, 2025
928c942
🔧 chore: improve Python CI workflow and add pytest-cov dependency
cauliyang Nov 8, 2025
dbdf3af
🔧 chore: update pre-commit config and remove Rust hooks
cauliyang Nov 8, 2025
a5deaa1
🔧 chore: clean up GitHub Actions workflow triggers
cauliyang Nov 8, 2025
f303b00
dev: fix ci-error cased by cache version
cauliyang Nov 8, 2025
5705322
dev: fix ci-error by reducing cpu count
cauliyang Nov 8, 2025
854e461
🐛 fix(tests): fix Windows CI failure in GIL release test
cauliyang Nov 8, 2025
9da2876
📝 docs(stubs): update Python type stubs for complete API coverage
cauliyang Nov 8, 2025
4d6e846
🎨 style: apply ruff formatting to type stubs and pre-commit config
cauliyang Nov 8, 2025
c71de0c
dev: reduce coverage limit
cauliyang Nov 8, 2025
2045ed4
test: increase test.fastq size and fix Windows timer issues
cauliyang Nov 8, 2025
2f3f0bc
fix(tests): update test expectations for larger test.fastq dataset
cauliyang Nov 8, 2025
d3ebcab
dev: fix fialing python tests
cauliyang Nov 8, 2025
47057fa
⚡️ perf(tests): increase summary performance test timeout to 120s
cauliyang Nov 8, 2025
99f1630
⚡️ perf(tests): increase summary performance test timeout to 150s
cauliyang Nov 8, 2025
56516eb
dev: remove dup code
cauliyang Nov 20, 2025
6787c4d
dev: add ignores
cauliyang Nov 20, 2025
9596856
✨ feat(python): add supervised learning API with target extraction
cauliyang Nov 20, 2025
da2116d
feat: complete Phase 5 (large-scale batch processing) and Phase 6 (Li…
cauliyang Nov 20, 2025
f62d132
feat: partial Phase 7 implementation - filters and test stubs
cauliyang Nov 20, 2025
4d3be27
feat(datasets): implement FASTA dataset support with comprehensive tests
cauliyang Nov 20, 2025
39bb86b
feat: implement BAM dataset support with multithreaded decompression …
cauliyang Nov 20, 2025
acf1b67
fix: use raw string for targets.py module docstring
cauliyang Nov 20, 2025
41d9d95
feat: add performance benchmark tests for FASTA and BAM datasets (T078)
cauliyang Nov 20, 2025
ac5fbee
docs: add FastaDataset and BamDataset documentation (T079-T080)
cauliyang Nov 20, 2025
23eff2f
fix(bam): implement proper record counting for PyTorch DataLoader com…
cauliyang Nov 21, 2025
ac06e61
test: update transform tests to use callable interface
cauliyang Nov 21, 2025
8c39ee1
docs: address PR #90 review comments with comprehensive improvements
cauliyang Nov 21, 2025
47d6920
fix: resolve all cargo clippy warnings
cauliyang Nov 21, 2025
9fd1efa
📝 docs: convert all docstrings from Numpy to Google style
cauliyang Nov 21, 2025
bb08403
🔧 chore(deps): migrate to PyO3 0.27 and numpy 0.27 with pickling fixes
cauliyang Nov 21, 2025
ad226f0
🎨 style: improve code formatting for multi-line attributes
cauliyang Nov 21, 2025
8c5f914
fix: resolve PR #90 review comments
cauliyang Nov 21, 2025
7966855
dev: do not install lib
cauliyang Nov 21, 2025
271d5e4
dev: add ignores
cauliyang Nov 21, 2025
3ef5fb0
feat(modern): add modern Python API with shape-safe encoders
cauliyang Nov 21, 2025
d35a5a3
feat: expose VCF and GTF modules to Python API and fix targets syntax
cauliyang Nov 21, 2025
4ab2e43
feat: add multi-label learning and streaming dataset support
cauliyang Nov 21, 2025
27496eb
fix: resolve Python bindings compilation issues for streaming dataset
cauliyang Nov 21, 2025
88714b7
test: fix parameter name in multilabel streaming tests
cauliyang Nov 21, 2025
1331cf7
dev: cargo format
cauliyang Nov 21, 2025
98e41fb
review: revised the changes
cauliyang Dec 18, 2025
824060c
dev: fix and update pre-commit
cauliyang Dec 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 7 additions & 109 deletions .github/workflows/release-python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@ on:
push:
branches:
- main
- master
tags:
- "*"
pull_request:
branches:
- main

workflow_dispatch:

permissions:
Expand All @@ -30,8 +32,8 @@ jobs:
target: x86
- runner: ubuntu-latest
target: aarch64
- runner: ubuntu-latest
target: armv7
# armv7 removed due to cross-compilation issues with PyO3/maturin
# Most modern ARM devices use aarch64 (ARM64) instead
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
Expand All @@ -49,92 +51,6 @@ jobs:
with:
name: wheels-linux-${{ matrix.platform.target }}
path: dist
- name: pytest
if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
shell: bash
run: |
set -e
python3 -m venv .venv
source .venv/bin/activate
pip install deepbiop --find-links dist --force-reinstall
pip install pytest
cd py-deepbiop && pytest -vls
- name: pytest
if: ${{ !startsWith(matrix.platform.target, 'x86') && matrix.platform.target != 'ppc64' }}
uses: uraimo/run-on-arch-action@v2
with:
arch: ${{ matrix.platform.target }}
distro: ubuntu22.04
githubToken: ${{ github.token }}
install: |
apt-get update
apt-get install -y --no-install-recommends python3 python3-pip
pip3 install -U pip pytest
run: |
set -e
pip3 install deepbiop --find-links dist --force-reinstall
cd py-deepbiop && pytest -vls

musllinux:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: ubuntu-latest
target: x86_64
- runner: ubuntu-latest
target: x86
- runner: ubuntu-latest
target: aarch64
- runner: ubuntu-latest
target: armv7
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: 3.x
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --manifest-path py-deepbiop/Cargo.toml
sccache: "true"
manylinux: musllinux_1_2
- name: Upload wheels
uses: actions/upload-artifact@v5
with:
name: wheels-musllinux-${{ matrix.platform.target }}
path: dist
- name: pytest
if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
uses: addnab/docker-run-action@v3
with:
image: alpine:latest
options: -v ${{ github.workspace }}:/io -w /io
run: |
set -e
apk add py3-pip py3-virtualenv
python3 -m virtualenv .venv
source .venv/bin/activate
pip install deepbiop --no-index --find-links dist --force-reinstall
pip install pytest
cd py-deepbiop && pytest -vls
- name: pytest
if: ${{ !startsWith(matrix.platform.target, 'x86') }}
uses: uraimo/run-on-arch-action@v2
with:
arch: ${{ matrix.platform.target }}
distro: alpine_latest
githubToken: ${{ github.token }}
install: |
apk add py3-virtualenv
run: |
set -e
python3 -m virtualenv .venv
source .venv/bin/activate
pip install pytest
pip install deepbiop --find-links dist --force-reinstall
cd py-deepbiop && pytest -vls

windows:
runs-on: ${{ matrix.platform.runner }}
Expand All @@ -160,23 +76,13 @@ jobs:
with:
name: wheels-windows-${{ matrix.platform.target }}
path: dist
- name: pytest
if: ${{ !startsWith(matrix.platform.target, 'aarch64') }}
shell: bash
run: |
set -e
python3 -m venv .venv
source .venv/Scripts/activate
pip install deepbiop --find-links dist --force-reinstall
pip install pytest
cd py-deepbiop && pytest -vls

macos:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: macos-13
- runner: macos-14
target: x86_64
- runner: macos-14
target: aarch64
Expand All @@ -196,14 +102,6 @@ jobs:
with:
name: wheels-macos-${{ matrix.platform.target }}
path: dist
- name: pytest
run: |
set -e
python3 -m venv .venv
source .venv/bin/activate
pip install deepbiop --find-links dist --force-reinstall
pip install pytest
cd py-deepbiop && pytest -vls

sdist:
runs-on: ubuntu-latest
Expand All @@ -228,7 +126,7 @@ jobs:
name: Release
runs-on: ubuntu-latest
if: ${{ startsWith(github.ref, 'refs/tags/py-deepbiop-v') }}
needs: [linux, musllinux, windows, macos, sdist]
needs: [linux, windows, macos, sdist]
steps:
- uses: actions/download-artifact@v6
- name: Publish to PyPI
Expand Down
130 changes: 130 additions & 0 deletions .github/workflows/test-python.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
name: Test-Python

on:
push:
branches:
- main
pull_request:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
RUSTFLAGS: -C debuginfo=0 # Do not produce debug symbols to keep memory usage down

jobs:
test:
name: Test Python ${{ matrix.python-version }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.10", "3.11", "3.12"]

steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
fetch-depth: 1

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}

- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
profile: minimal

- name: Install uv (Linux/macOS)
if: runner.os != 'Windows'
run: curl -LsSf https://astral.sh/uv/install.sh | sh

- name: Install uv (Windows)
if: runner.os == 'Windows'
run: irm https://astral.sh/uv/install.ps1 | iex
shell: powershell

- name: Cache Rust dependencies
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-

- name: Cache Python dependencies
uses: actions/cache@v4
with:
path: |
~/.cache/uv
py-deepbiop/.venv
key: ${{ runner.os }}-py${{ matrix.python-version }}-uv-${{ hashFiles('py-deepbiop/uv.lock') }}
restore-keys: |
${{ runner.os }}-py${{ matrix.python-version }}-uv-

- name: Run Python tests
working-directory: py-deepbiop
run: uv run pytest -vls --tb=short

- name: Run Python tests with coverage (Linux only)
if: runner.os == 'Linux' && matrix.python-version == '3.10'
working-directory: py-deepbiop
run: |
uv run pytest --cov=deepbiop --cov-report=xml --cov-report=term

- name: Upload coverage to Codecov (Linux only)
if: runner.os == 'Linux' && matrix.python-version == '3.10'
uses: codecov/codecov-action@v5
with:
files: py-deepbiop/coverage.xml
flags: python
name: python-${{ matrix.python-version }}
fail_ci_if_error: false

lint:
name: Lint Python code
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
fetch-depth: 1

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.10"

- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
profile: minimal

- name: Install uv
run: curl -LsSf https://astral.sh/uv/install.sh | sh

- name: Run ruff check
working-directory: py-deepbiop
run: uvx ruff check .

- name: Run ruff format check
working-directory: py-deepbiop
run: uvx ruff format --check .

- name: Run interrogate (docstring coverage)
working-directory: py-deepbiop
run: uv run interrogate deepbiop/ tests/ -vv
21 changes: 3 additions & 18 deletions .github/workflows/test.yml → .github/workflows/test-rust.yml
Original file line number Diff line number Diff line change
@@ -1,25 +1,10 @@
name: CI-rust
name: Test-rust

on:
push:
branches:
- main
paths:
- src/**
- examples/**
- Cargo.toml
- .github/workflows/test.yml
- crates/*

pull_request:
branches:
- main
paths:
- src/**
- examples/**
- Cargo.toml
- .github/workflows/test.yml
- crates/*

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand Down Expand Up @@ -111,7 +96,7 @@ jobs:
uses: actions-rs/cargo@v1
with:
command: test
args: --all --no-fail-fast
args: --workspace --exclude py-deepbiop --no-fail-fast

MSRV:
needs: Formatting
Expand All @@ -137,4 +122,4 @@ jobs:
uses: actions-rs/cargo@v1
with:
command: test
args: --all --no-fail-fast
args: --workspace --exclude py-deepbiop --no-fail-fast
26 changes: 24 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,21 @@ Cargo.lock
# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb

# Rust profiling and benchmarking
*.prof
*.profdata
flamegraph.svg

# Rust release artifacts
release/

# Rust library files
*.rlib

# Environment files
.env*
!.env.example

# RustRover
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
Expand Down Expand Up @@ -193,12 +208,19 @@ poetry.toml
# LSP config files
pyrightconfig.json

# End of https://www.toptal.com/developers/gitignore/api/python
.ltex/
libcairo*
uv.lock
_build
CLAUDE.md
.claude
.specify
specs

# Claude Code development artifacts
claudedoc
claudedocs
.mcp.json
.serena

# End of https://www.toptal.com/developers/gitignore/api/python
#
Loading