No project description provided
Project description
Imops
Efficient parallelizable algorithms for multidimensional arrays to speed up your data pipelines
Install
pip install imops # default install with Cython backend
pip install imops[numba] # additionally install Numba backend
Features
Fast Radon transform
from imops import radon, inverse_radon
Fast linear/bilinear/trilinear zoom
from imops import zoom, zoom_to_shape
# fast zoom with optional fallback to scipy's implementation
y = zoom(x, 2, axis=[0, 1])
# a handy function to zoom the array to a given shape
# without the need to compute the scale factor
z = zoom_to_shape(x, (4, 120, 67))
Works faster only for ndim<=3, dtype=float32 or float64, output=None, order=1, mode='constant', grid_mode=False
Fast 1d linear interpolation
from imops import interp1d # same as `scipy.interpolate.interp1d`
Works faster only for ndim<=3, dtype=float32 or float64, order=1 or 'linear'
Padding
from imops import pad, pad_to_shape
y = pad(x, 10, axis=[0, 1])
# `ratio` controls how much padding is applied to left side:
# 0 - pad from right
# 1 - pad from left
# 0.5 - distribute the padding equally
z = pad_to_shape(x, (4, 120, 67), ratio=0.25)
Cropping
from imops import crop_to_shape
# `ratio` controls the position of the crop
# 0 - crop from right
# 1 - crop from left
# 0.5 - crop from the middle
z = crop_to_shape(x, (4, 120, 67), ratio=0.25)
Backends
For zoom
, zoom_to_shape
, interp1d
, radon
, inverse_radon
you can specify which backend to use. Backend can be specified by a string or by an instance of Backend
class. The latter allows you to customize some backend options:
from imops import Cython, Numba, Scipy, zoom
y = zoom(x, 2, backend='Cython')
y = zoom(x, 2, backend=Cython(fast=False)) # same as previous
y = zoom(x, 2, backend=Cython(fast=True)) # -ffast-math compiled cython backend
y = zoom(x, 2, backend=Scipy()) # use scipy original implementation
y = zoom(x, 2, backend='Numba')
y = zoom(x, 2, backend=Numba(parallel=True, nogil=True, cache=True)) # same as previous
Also backend can be specified globally or locally:
from imops import imops_backend, set_backend, zoom
set_backend('Numba') # sets Numba as default backend
with imops_backend('Cython'): # sets Cython backend via context manager
zoom(x, 2)
Note that for Numba
backend setting num_threads
argument has no effect for now and you should use NUMBA_NUM_THREADS
environment variable.
Available backends:
Scipy | Cython | Numba | |
---|---|---|---|
zoom |
✓ | ✓ | ✓ |
zoom_to_shape |
✓ | ✓ | ✓ |
interp1d |
✓ | ✓ | ✓ |
radon |
✗ | ✓ | ✗ |
inverse_radon |
✗ | ✓ | ✗ |
Acknowledgements
Some parts of our code for radon/inverse radon transform as well as the code for linear interpolation are inspired by the implementations from scikit-image and scipy.
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 Distributions
Hashes for imops-0.5.0.post1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa7736e39a82dce7e580cd69de03ab1903f365363cf231d53a7bca537f3a1f7f |
|
MD5 | c566481408ea604b3ab2ba970cdcf926 |
|
BLAKE2b-256 | 4cb58880e6a836d9d98ae4452cc193c4866bb5e0ee1e1900d3cebb3f29e59448 |
Hashes for imops-0.5.0.post1-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ea97982146bde7517519f9f9a3ac184f283bcf8f73df3a8990c3ea4e846eefa |
|
MD5 | bc4c0bd46a89c527ee0d83ee1422a6db |
|
BLAKE2b-256 | 320f062a71a2c9ca77042480bc7367a31a9933c063cb2ed6bfb5e44204988d23 |
Hashes for imops-0.5.0.post1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2717a6bf8433654153e361d868d69ac41cadee57b17216469d147d0176d64f96 |
|
MD5 | 54b1c9f6aca1f611394fca60f9a98245 |
|
BLAKE2b-256 | 06450659ee1061c2097e0361b0e15a296801fae55bf4d1be04c1d9da1d399de8 |
Hashes for imops-0.5.0.post1-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | af2dc58e98512e97f1449797d596a4da492f5d8d4e8b38f2364a3047c4016e0c |
|
MD5 | 8f7b38372bcc75e1420e9b9570453498 |
|
BLAKE2b-256 | 2d583932717675df6d8d0d99287ca17d5f6f6ff9f12923f3406b5737dbb91d27 |
Hashes for imops-0.5.0.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52fe8aa2050a36bf1433ebc4be2d7c8a54b1976df9f6e2220bd01df50a1ad1b7 |
|
MD5 | 978ba1b283c302acdd434e2105a2b400 |
|
BLAKE2b-256 | c4deacca7931487260b2546275f0ea5005b49a0e5590325cf895339325bf3595 |
Hashes for imops-0.5.0.post1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b36eb76a76d8d9a7948190fca9934d1e7b38350b5a9e67f340ebab7ff3539fcd |
|
MD5 | e1164618187970a4a0aa509f5de3137f |
|
BLAKE2b-256 | f43b98969db37ceab8262b44909071f436db16488079c297a6e0b08e2e8d82b2 |
Hashes for imops-0.5.0.post1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 19b6ed8c21076102327039b32608d2a8cef3e1db2721233511b1c66910e7d0b6 |
|
MD5 | adbbeb224b12499652c9784140943203 |
|
BLAKE2b-256 | 6c9eb095aceaaf0d1a43dff61047b4f7b8fcee1fb2dfb7d58bb811c44013559c |
Hashes for imops-0.5.0.post1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 920a6c598b22e80d8740575c8b3b15c820dad4435a78cf1ea250e971790c2b42 |
|
MD5 | 6783a5c621488597c2e36c7d3002174d |
|
BLAKE2b-256 | ed0fefef8f08fb56a9d33d0a324b62eeb4178dbc66af7b5d185e0c6798dc56e0 |
Hashes for imops-0.5.0.post1-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4eeec5f17cc7b4ea2d6d51418598b3fdde8f455a457b6ec96b0f37e8e776d09 |
|
MD5 | 89ca5642b63c54abcf84207cbe94c82d |
|
BLAKE2b-256 | 76f2e8adab39423dc23707616ab07d5cd73e924a45b5c3d5c5714f4df28ffa03 |
Hashes for imops-0.5.0.post1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 185353effcdab81e6afd41bd8c56afea2c71ea60200e365d0948b811c294767d |
|
MD5 | ccb1ab4e1934a90a9e1ce4005b0aa9e6 |
|
BLAKE2b-256 | 2046c19566a4ab63a3ad3e3206f81a8434e53679142e7435557ad9ab51b886ec |
Hashes for imops-0.5.0.post1-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 47f7724dc7bf11fbc9c255067ccc8f11db0593b719c55f6a71295a91e41ae745 |
|
MD5 | 8a29331cab1428c91ecdfd0bf369c378 |
|
BLAKE2b-256 | fc6edef7f0866199852f265d4f536135f5683f4c132f37dcc6d0d45c9d11a272 |
Hashes for imops-0.5.0.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97bacc2806c061990b2b017bda17be0ebb38727ed8e3829e9d17e610f4f226e7 |
|
MD5 | c22bd221da5cbe9723fac11348443bd0 |
|
BLAKE2b-256 | 563940bf462bf46f924c285f0b22efd862a8371e9ea096e3cb9ab5692d52fa8f |
Hashes for imops-0.5.0.post1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2da32efca6210d1eeae1e570fe746f0923b978bf7caf26d5c83bf2489536ab4 |
|
MD5 | 90e6b56177c397a0a3d52e12d3cec023 |
|
BLAKE2b-256 | 05b131fb2a56153d22e0fb377d50a16efc88ce3c34e63a3fea6010238782f0b4 |
Hashes for imops-0.5.0.post1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c3d01960e89fb0e83ebc490c39d8e1a28d9d280b5059981571cc14db157f4fa4 |
|
MD5 | 013c167cc3d457c51bbfc5787739cf99 |
|
BLAKE2b-256 | df33ea708fe4192eb8cdb5c77f575f513049ea73070caf2a106c392b7cbf6391 |
Hashes for imops-0.5.0.post1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 392c104fcd5b387ec8042bbcafdb58560feefa5e0aca338109e2a1e6ff4dae90 |
|
MD5 | 4de2240cc5bfc231eacf760728b322f4 |
|
BLAKE2b-256 | 44c7c7f86fd7968570bd9089dd1569d995226c907b5da33da7493f09c8b1fae5 |
Hashes for imops-0.5.0.post1-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2cf6e0c27e3d93c0350c537cf6c7d7bc714cccbbbcc334f2e12ac50650325bf |
|
MD5 | 278ca0c0b57a503270a1ae303f645955 |
|
BLAKE2b-256 | 5224af28bed5a3a5ced017cf1ce385ef3676cfefa741043e0dc72171940411fe |
Hashes for imops-0.5.0.post1-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a84fbdee0e664d8ef74078156fa5104b44159b6d49f471c3b30a66a7897c29e2 |
|
MD5 | 42f239ab43183e3c1c37ce1bbea2dd0c |
|
BLAKE2b-256 | 1c15f49a37feb82a367a965d7a203a4c2e3a4ac32fd03690e0d151b30f752cbf |
Hashes for imops-0.5.0.post1-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | de5b1836a360156b5dad31c2f43f3e0cea41efdb42dea2f85222b0fa533fb90e |
|
MD5 | a4d543de1edaee2244081c148f614511 |
|
BLAKE2b-256 | 5b2aeb503d35b168ca5f0dca3408e983be9bb5e54bc02e88e9be5e312e663423 |
Hashes for imops-0.5.0.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d19f817eb4d0d508f9f2b26187c2184b4f87f956f91e2d424d64777ecea7dfc1 |
|
MD5 | 6bca1b1a569536e5a66a646bb711ed25 |
|
BLAKE2b-256 | c7a68547cb43d1c9ac94ce39274664624dc3cd841956e00f41a530bbc258d3e8 |
Hashes for imops-0.5.0.post1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b212ec5d7f4e3ea36a612336e50807e662822ec4c0b85d9f786c42620ef079d |
|
MD5 | 501726ca9457217668e0f2045ac743d9 |
|
BLAKE2b-256 | d50a9db4d319362ef4e5339ce1347268c936f1dd9012dfef4a75d7982e7ada88 |
Hashes for imops-0.5.0.post1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f824c3391868d0c5b78b3c32d78ca75b7f4fc873117a94ed8dac1f39d06ce003 |
|
MD5 | 7b5d0c7338ae9282f1971ad4bf39b2e7 |
|
BLAKE2b-256 | 64075a7a049c4ee3c3c24caf99b24f4c452adce6492a079e0cae7cf4fc32e023 |
Hashes for imops-0.5.0.post1-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8963972bbeeb96f72b9fd1e246b66ac05a0d56db09d09a697729e546bbc24ecb |
|
MD5 | fd03811beb036dad9485ec301ee4dc99 |
|
BLAKE2b-256 | fc84b93c76a51544b73d532d154d6cc641daca60215a4dbc0ad9bde8fa04b514 |
Hashes for imops-0.5.0.post1-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f757958e2379adbe297ecf456a11b481ad42b664cd8f384a88876598124b82c5 |
|
MD5 | 52c39d2ad4aa4e0c39093237f4133b05 |
|
BLAKE2b-256 | 520c3c7e11217f4f6b9ca6e0254fe95011685cc440e0a0d74f3fb0ba09c20f54 |
Hashes for imops-0.5.0.post1-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee5489ad64f2f65d0977772031abd0f1ee8de2d1fcffe9e4510078b05741f23d |
|
MD5 | 737d9fa2b4ecadab98c266419affe86f |
|
BLAKE2b-256 | b0bdcf6d6a0012a46685e5aa0d94d3befe1715780771c03ff41a99aca2bf8b7f |
Hashes for imops-0.5.0.post1-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bb500a2aac32c87afb1dc1f364550c713d2f417a0cc965a494621c8aa4cd7ecd |
|
MD5 | 34cd4695257e09349ffe0d5a5931512e |
|
BLAKE2b-256 | 95801211c46d7abede0a19514b49a1c3975fab682a39d992795701eb33067c2e |
Hashes for imops-0.5.0.post1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d283f1191a033938c74d858aaaf6ddf5d006012a769ce8ad407d2b07ee97f08c |
|
MD5 | aa6a175c1b58e1b281fb06ac14f341e5 |
|
BLAKE2b-256 | 7b8c1a4acd044660cc8794c5a32e942f106a7c63ac6909eb37fea7619074d195 |
Hashes for imops-0.5.0.post1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a16f80fe8ab5c1f2e42637dd6dd54d8b102d947046b496579609196982ac8d1a |
|
MD5 | 27667cc6582773b316bed15cb4d2697a |
|
BLAKE2b-256 | abce272a5b0b7ea5b0a2e4ffb09e1f3dce3b737e042272e758b6d5d0daf9659f |
Hashes for imops-0.5.0.post1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ae902f58051eebbc207b656383c995a7cc11d45d899eadf7755fabfafd6f991 |
|
MD5 | b700ec31ede113375e3572448bc08f7f |
|
BLAKE2b-256 | dfacd67e12e86d983c2684f356e34925744e158b79675c18fb30eb25c0893cce |
Hashes for imops-0.5.0.post1-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 53bdd1b28baa91b4844239cc56e56029b36d10158dd8379ff98a4fb5dd0a7918 |
|
MD5 | caf607c3016b966a6d96765b52bc2300 |
|
BLAKE2b-256 | b74f1f00e24594b500d238e8e987abd6602ca5d721c98527d19379d70dadc549 |
Hashes for imops-0.5.0.post1-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e36abeeddcc98523f513ebfb07403e08581fdddb273b52e6a2c6e0b5d3728856 |
|
MD5 | b5aaefc8fa7d5c9791f5caa29bbbd3e2 |
|
BLAKE2b-256 | f66aee1d780a0edf587256af2dbde727ba0f62598f44e32e84b93dd78b914c08 |
Hashes for imops-0.5.0.post1-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f39bb23f1774bea6f31855af1d355a89d07999fe2accd43e8e77c9ee75187473 |
|
MD5 | 77be785e9a7dd59e2a450aefa699c9cc |
|
BLAKE2b-256 | b001f992019f5fc375bfc7880c462dd197fb7a6786161e625a94a9b2778fdc35 |
Hashes for imops-0.5.0.post1-cp36-cp36m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | db1f78356d7ab1dddb5842ace89785d5a53edba922f8e79b9cc536fa654eac92 |
|
MD5 | 5b7c8b11a3acb0c2a35571ae3439ecba |
|
BLAKE2b-256 | 5f5d3e3aedf0a97584e30c82d579499530d1d7e645aad7a1c0c80dce56dfe042 |
Hashes for imops-0.5.0.post1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a60efce79055696e67c73d1be58675e8fc34202632f9031d680a8d0462e6fe6f |
|
MD5 | 15efea85c84e254f89171e45980b041b |
|
BLAKE2b-256 | d4ba835423f3a510340e68444931f70abb91e39fa6b57890d524a356d123e603 |
Hashes for imops-0.5.0.post1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 01bbba3e96d193daa3270c1c5ba2dd871390eab9c9f15f4dff409e84832ccdc6 |
|
MD5 | 61ed5c102673d9199077e35aaeac688a |
|
BLAKE2b-256 | e0cd96e1d2691ac505a371f58641a42db29c1d3cfb2cf0ddf14cc2eae637a3bf |
Hashes for imops-0.5.0.post1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4b44d76e47e5d3c58d69544b02281aa6d66dfac5b7835c2bde5f12defa01d05 |
|
MD5 | 8661cb54a7b4e0cf969fafb8f77cb524 |
|
BLAKE2b-256 | 443074666fb1c133250f9e2c0965865953bd5d501f240270d8218df8e0232299 |