Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ jobs:
- name: Checkout 🛎️
uses: actions/checkout@v2

- name: Set up Python 3.9
- name: Set up Python 3.12
uses: actions/setup-python@v2
with:
python-version: 3.9
python-version: '3.12'

- name: Build basicpy
- name: Build openhcs-basicpy
run: |
python -m pip install wheel twine setuptools build
python -m build
Expand Down
61 changes: 20 additions & 41 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
# BaSiCPy
# OpenHCS BaSiCPy

This is OpenHCSDev's JAX-based fork, packaged as `openhcs-basicpy`. It retains
the `basicpy` Python API; it is not the upstream PyPI `basicpy` 2.x PyTorch
implementation. Use `pip install openhcs-basicpy` for this fork. Do not install
both distributions into the same environment: they provide the same Python
package. Numerical and saved-model controls cover Python 3.12 and 3.14; this
does not establish biological validity for a new acquisition.
A python package for background and shading correction of optical microscopy images

[![PyPI](https://img.shields.io/pypi/v/basicpy.svg)](https://pypi.org/project/basicpy)
[![Status](https://img.shields.io/pypi/status/basicpy.svg)](https://pypi.org/project/basicpy/)
[![Python Version](https://img.shields.io/pypi/pyversions/basicpy.svg)](https://python.org)
[![PyPI](https://img.shields.io/pypi/v/openhcs-basicpy.svg)](https://pypi.org/project/openhcs-basicpy)
[![Status](https://img.shields.io/pypi/status/openhcs-basicpy.svg)](https://pypi.org/project/openhcs-basicpy/)
[![Python Version](https://img.shields.io/pypi/pyversions/openhcs-basicpy.svg)](https://python.org)
[![License](https://img.shields.io/pypi/l/basicpy)](https://github.com/peng-lab/BaSiCPy/blob/main/LICENSE)
[![Tests](https://github.com/peng-lab/basicpy/workflows/CI/badge.svg)](https://github.com/peng-lab/basicpy/actions?workflow=CI)
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
Expand Down Expand Up @@ -39,53 +46,25 @@ See [Read the Docs](https://basicpy.readthedocs.io/en/latest/) for the detailed

## Installation

### For Mac (Intel chip), Linux or WSL2 users

Install from PyPI
After the first fork release is published:

```console
pip install basicpy
pip install openhcs-basicpy
```

or install the latest development version
Development installation uses this fork:

```console
git clone https://github.com/peng-lab/BaSiCPy.git
git clone https://github.com/OpenHCSDev/BaSiCPy.git
cd BaSiCPy
pip install .
```

### For Mac users with M1 / M2 chip

BaSiCPy requires [`jax`](https://github.com/google/jax/),
which has potential build issue with M1 chips.
One easiest solution is using [Miniforge](https://github.com/conda-forge/miniforge)
as explained [here](https://github.com/google/jax/issues/5501).
In the Miniforge environment, please try the following:
```bash
conda install -c conda-forge jax jaxlib
pip install basicpy
```

### For Windows users

BaSiCPy requires [`jax`](https://github.com/google/jax/) which does not support Windows officially.
However, thanks to [cloudhan/jax-windows-builder](https://github.com/cloudhan/jax-windows-builder), we can install BaSiCPy as follows:

```bash
pip install "jax[cpu]==0.4.11" -f https://whls.blob.core.windows.net/unstable/index.html --use-deprecated legacy-resolver
pip install ml-dtypes==0.2.0
pip install basicpy
```

One may need to add
```python
import jax
jax.config.update('jax_platform_name', 'cpu')
```
at the top of the script to ensure that JAX uses CPU.

For details and latest updates, see [this issue](https://github.com/google/jax/issues/438).
The fork requires Python 3.11+ and JAX 0.9.2. CPU wheel availability follows
the [JAX installation guide](https://docs.jax.dev/en/latest/installation.html):
Linux x86-64/ARM64, Apple Silicon macOS, and Windows x86-64. Modern JAX does not
publish Intel macOS wheels. CPU numerical acceptance here covers Linux Python
3.12 and 3.14, not a tested cross-platform installation matrix.

### Install with dev dependencies

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.3.0.dev0
1.3.0
32 changes: 32 additions & 0 deletions docs/openhcs-distribution-20260930.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
OpenHCS distribution checkpoint
==============================

``openhcs-basicpy`` 1.3.0 packages the existing OpenHCSDev JAX fork as an
ordinary registry dependency. The Python package and CLI remain ``basicpy``;
no algorithm, dispatcher, compatibility alias or second implementation is
introduced. Do not install upstream ``basicpy`` beside this distribution: both
own that Python package. Scientific attribution and the MIT license are retained.

The VERSION file owns the release version. Existing release automation builds
on Python 3.12, then uses the organization's existing PyPI credential. OpenHCS
must not merge an unavailable dependency or put a direct Git URL into published
metadata. A successful wheel build is not registry publication.

Actual local evidence
---------------------

A built universal wheel was installed into an owned isolated target (no
dependency downloads and no shared environment changes). Both existing Python
3.12 and Python 3.14 imported ``basicpy`` from that target, with distribution
metadata identifying ``openhcs-basicpy`` 1.3.0. Six tests passed on each:
public JAX inverse-DCT parity, 2D/3D ensemble fits, preserved measurement units,
saved-model/profile reload, and the stationary-biology negative control.
Python 3.12: 13.24s; Python 3.14: 12.18s. The supported scikit-image range includes
the actual Python 3.12 environment's 0.25.2 and the modern 0.26 line.

This does not establish CUDA, autotuning, a minimum-version matrix, OpenHCS
compiled/MCP routing, real biological acceptance, or ordinary shared-install
activation. Durable wheel/XML receipts are retained under
``/home/ts/wt/openhcs-issue-batch-20260929/basicpy-project-dependency-20260930``;
the disposable installed target belongs to the parent dependency task at
``/home/ts/.cache/agent-scratch/basicpy-package-20260930/installed``.
4 changes: 2 additions & 2 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[metadata]
name = BaSiCPy
name = openhcs-basicpy
version = file: VERSION
description = A python package for background and shading correction of optical microscopy images
long_description = file: README.md
Expand Down Expand Up @@ -30,7 +30,7 @@ install_requires =
numpy>=2.0
pooch
pydantic>=2.12.0,<3.0.0
scikit-image>=0.26.0,<0.27
scikit-image>=0.25.2,<0.27
scipy>=1.16.2
python_requires = >=3.11
package_dir =
Expand Down
Loading