Research Numpy: run either JAX or standard Numpy from a common interface
Project description
RNUMPY: A JAX/Numpy Package to Write JAX-Optional Code with JAX Syntax
What is RNUMPY?
RNUMPY is a Python package designed to let users write code in the JAX format while seamlessly falling back to NumPy if JAX is not installed. This enables developers to leverage the benefits of JAX speed when desired without requiring all users to overcome the challenges of JAX installation. It’s especially useful in scenarios where:
- Portability: You want your code to be usable by others who may not have JAX installed.
- Ease of Use: Users with simpler computational needs may prefer to avoid installing JAX.
- Code Consistency: You want a single codebase to work with either library.
Use Cases
- Sharing JAX-like code with collaborators who face installation constraints.
- Writing reusable Python libraries that can flexibly work with JAX or NumPy.
- Prototyping JAX-based projects without committing to the full ecosystem immediately.
Installation
To install RNUMPY, use pip. This will not install JAX. To install JAX as well, please see the official instructions here: JAX Install.
pip install rnp
Usage Examples
Example: Basic Operations
Original JAX code:
import jax.numpy as jnp
x = jnp.array([1, 2, 3])
y = jnp.array([4, 5, 6])
# Perform operations
dot_product = jnp.dot(x, y)
print(dot_product)
RNUMPY equivalent:
import RNUMPY as rnp
# Compatible with both JAX and NumPy
x = rnp.array([1, 2, 3])
y = rnp.array([4, 5, 6])
# Perform operations
dot_product = rnp.dot(x, y)
print(dot_product) # Output will match JAX
To use NumPy only:
import RNUMPY as rnp
# rnp defaults to JAX unless told otherwise, change at anytime
rnp.use_jax = False
# Compatible with both JAX and NumPy
x = rnp.array([1, 2, 3])
y = rnp.array([4, 5, 6])
# Perform operations
dot_product = rnp.dot(x, y)
print(dot_product) # Output will match NumPy
Ethos
RNUMPY aims to be:
- A Drop-In for JAX: All function calls and API structures mimic JAX’s documentation, ensuring that users familiar with JAX can transition effortlessly.
- Up-to-Date: We strive to keep this package aligned with the latest JAX updates to maintain compatibility and feature parity.
- JAX-first functionality: All functions will have JAX convention and functionality. In cases where numpy functionality differs, only the JAX functionality will be accessible.
Contributions
Contributions are welcome! If you spot inconsistencies with JAX’s API, have feature requests, or want to help maintain parity with JAX updates, feel free to open an issue or submit a pull request.
RNP Todos:
RNUMPY has all the basic JAX Numpy features, except the following, which are works in progress. There are no inherent technical challenges, this project is in a beta state. We welcome pull requests to finish these area.
- ufuncs
- mgrid/ogrids, c_, r_, s_
- bitwise operators
- isinf/isnan etc..
- Set Routines
- Most of the Scipy folder We stubbed out these functions, so you will find a NotImplementedError if you try calling these.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rnp-0.1.0.tar.gz.
File metadata
- Download URL: rnp-0.1.0.tar.gz
- Upload date:
- Size: 35.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5422e5268b93baec1a935e5c06a4b48e04f35313abc44de32c14588bcb2dd568
|
|
| MD5 |
945ad78633633f75d94af6084303cc37
|
|
| BLAKE2b-256 |
674cf29f51bfac0564dfe50dacdec36ecf5e9952ad004ea2754afc154189f011
|
Provenance
The following attestation bundles were made for rnp-0.1.0.tar.gz:
Publisher:
publish.yml on RCAIDE/RNUMPY
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rnp-0.1.0.tar.gz -
Subject digest:
5422e5268b93baec1a935e5c06a4b48e04f35313abc44de32c14588bcb2dd568 - Sigstore transparency entry: 154642811
- Sigstore integration time:
-
Permalink:
RCAIDE/RNUMPY@32728dc8e31715d611e6157e8dff658879428e71 -
Branch / Tag:
refs/tags/rnp-v0.1.0 - Owner: https://github.com/RCAIDE
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@32728dc8e31715d611e6157e8dff658879428e71 -
Trigger Event:
release
-
Statement type:
File details
Details for the file rnp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: rnp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 38.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6edb4a2a4eba96714218f628d11210b5f96134a55390fbcdf3c55f874134afef
|
|
| MD5 |
10f94dfc11d097ac71b51c0eee68dcc3
|
|
| BLAKE2b-256 |
7077623aae5e3f0cec90da04ce4c6ce8f0c4b4f33bbf552763eb416dd1352ae1
|
Provenance
The following attestation bundles were made for rnp-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on RCAIDE/RNUMPY
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rnp-0.1.0-py3-none-any.whl -
Subject digest:
6edb4a2a4eba96714218f628d11210b5f96134a55390fbcdf3c55f874134afef - Sigstore transparency entry: 154642812
- Sigstore integration time:
-
Permalink:
RCAIDE/RNUMPY@32728dc8e31715d611e6157e8dff658879428e71 -
Branch / Tag:
refs/tags/rnp-v0.1.0 - Owner: https://github.com/RCAIDE
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@32728dc8e31715d611e6157e8dff658879428e71 -
Trigger Event:
release
-
Statement type: