diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1482441..aecf518 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -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 diff --git a/README.md b/README.md index 1f3bc57..5bcff56 100644 --- a/README.md +++ b/README.md @@ -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) @@ -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 diff --git a/VERSION b/VERSION index 13a0e15..f0bb29e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3.0.dev0 +1.3.0 diff --git a/docs/openhcs-distribution-20260930.rst b/docs/openhcs-distribution-20260930.rst new file mode 100644 index 0000000..4143c69 --- /dev/null +++ b/docs/openhcs-distribution-20260930.rst @@ -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``. diff --git a/setup.cfg b/setup.cfg index 726d089..76ba369 100644 --- a/setup.cfg +++ b/setup.cfg @@ -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 @@ -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 =