Skip to main content

Image pyramid generation specialized for connectomics data types and procedures.

Project description

Build Status PyPI version

tinybrain

Image pyramid generation specialized for connectomics data types and procedures. If your brain wasn't tiny before, it will be now.

import tinybrain 

img = load_3d_em_stack()

# 2x2 and 2x2x2 downsamples are on a fast path.
# e.g. (2,2), (2,2,1), (2,2,1,1), (2,2,2), (2,2,2,1)
img_pyramid = tinybrain.downsample_with_averaging(img, factor=(2,2,1), num_mips=5, sparse=False)

labels = load_3d_labels()
label_pyramid = tinybrain.downsample_segmentation(labels, factor=(2,2,1), num_mips=5, sparse=False))

Installation

pip install numpy
pip install tinybrain

Motivation

Image hierarchy generation in connectomics uses a few different techniques for visualizing data, but predominantly we create image pyramids of uint8 grayscale images using 2x2 average pooling and of uint8 to uint64 segmentation labels using 2x2 mode pooling. When images become very large and people wish to visualze upper mip levels using three axes at once, it becomes desirable to perform 2x2x2 downsamples to maintain isotropy.

It's possible to compute both of these using numpy, however as multiple packages found it useful to copy the downsample functions, it makes sense to formalize these functions into a seperate library located on PyPI.

Given the disparate circumstances that they will be used in, these functions should work fast as possible with low memory usage and avoid numerical issues such as integer truncation while generating multiple mip levels.

Considerations: downsample_with_averaging

It's advisable to generate multiple mip levels at once rather than recursively computing new images as for integer type images, this leads to integer truncation issues. In the common case of 2x2x1 downsampling, a recursively computed image would lose 0.75 brightness per a mip level. Therefore, take advantage of the num_mips argument which strikes a balance that limits integer truncation loss to once every 4 mip levels. This compromise allows for the use of integer arithmatic and no more memory usage than 2x the input image including the output downsamples. If you seek to eliminate the loss beyond 4 mip levels, try promoting the type before downsampling. 2x2x2x1 downsamples truncate every 8 mip levels.

A C++ high performance path is triggered for 2x2x1x1 and 2x2x2x1 downsample factors on uint8, uint16, float32, and float64 data types in Fortran order. Other factors, data types, and orderings are computed using a numpy pathway that is much slower and more memory intensive.

We also include a sparse mode for downsampling 2x2x2 patches, which prevents "ghosting" where one z-slice overlaps a black region on the next slice and becomes semi-transparent after downsampling. We deal with this by neglecting the background pixels from the averaging operation.

Example Benchmark

On a 1024x1024x100 uint8 image I ran the following code. PIL and OpenCV are actually much faster than this benchmark shows because most of the time is spent writing to the numpy array. tinybrain has a large advantage working on 3D and 4D arrays. Of course, this is a very simple benchmark and it may be possible to tune each of these approaches. On single slices, Pillow was faster than tinybrain.

img = np.load("image.npy")

s = time.time()
downsample_with_averaging(img, (2,2,1))
print("Original ", time.time() - s)

s = time.time()
out = tinybrain.downsample_with_averaging(img, (2,2,1))
print("tinybrain ", time.time() - s)

s = time.time()
out = np.zeros(shape=(512,512,100))
for z in range(img.shape[2]):
  out[:,:,z] = cv2.resize(img[:,:,z], dsize=(512, 512) )
print("OpenCV ", time.time() - s)

s = time.time()
out = np.zeros(shape=(512,512,100))
for z in range(img.shape[2]):
  pilimg = Image.fromarray(img[:,:,z])
  out[:,:,z] = pilimg.resize( (512, 512) )
print("Pillow ", time.time() - s)

# Method     Run Time             Rel. Perf.
# Original   1820 ms +/- 3.73 ms    1.0x
# tinybrain    67 ms +/- 0.40 ms   27.2x 
# OpenCV      469 ms +/- 1.12 ms    3.9x
# Pillow      937 ms +/- 7.63 ms    1.9x

Here's the output from perf.py on an Apple Silicon 2021 Macbook Pro M1. Note that the image used was a random 2048x2048x64 array that was a uint8 for average pooling and a uint64 for mode pooling to represent real use cases more fairly. In the table, read it as 2D or 3D downsamples, generating a single or multiple mip levels, with sparse mode enabled or disabled. The speed values are in megavoxels per a second and are the mean of ten runs.

dwnsmpl mips sparse AVG (MVx/sec) MODE (MVx/sec)
2x2 1 N 3868.58 272.63
2x2 2 N 2691.03 164.68
2x2 1 Y N/A 138.22
2x2 2 Y N/A 82.20
2x2x2 1 N 4466.7 337.74
2x2x2 2 N 2855.5 299.42
2x2x2 1 Y 1400.17 4.44
2x2x2 2 Y 1270.18 4.04

Considerations: downsample_segmentation

The downsample_segmentation function performs mode pooling operations provided the downsample factor is a power of two, including in three dimensions. If the factor is a non-power of two, striding is used. The mode pooling, which is usually what you want, is computed recursively. Mode pooling is superior to striding, but the recursive calculation can introduce defects at mip levels higher than 1. This may be improved in the future.

The way the calculation is actually done uses an ensemble of several different methods. For (2,2,1,1) and (2,2,2,1) downsamples, a Cython fast, low memory path is selected. (2,2,1,1) implements countless if. (2,2,2,1) uses a combination of counting and "instant" majority detection. For (4,4,1) or other 2D powers of two, the countless 2d algorithm is used. For (4,4,4), (8,8,8) etc, the dynamic countless 3d algorithm is used. For 2D powers of two, stippled countless 2d is used if the sparse flag is enabled. For all other configurations, striding is used.

Countless 2d paths are also fast, but use slightly more memory and time. Countless 3D is okay for (2,2,2) and (4,4,4) but will use time and memory exponential in the product of dimensions. This state of affairs could be improved by implementing a counting based algorithm in Cython/C++ for arbitrary factors that doesn't compute recursively. The countless algorithms were developed before I knew how to write Cython and package libraries. However, C++ implementations of countless are much faster than counting for computing the first 2x2x1 mip level. In particular, an AVX2 SIMD implementation can saturate memory bandwidth.

Documentation for the countless algorithm family is located here: https://github.com/william-silversmith/countless

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tinybrain-1.2.3.tar.gz (384.9 kB view details)

Uploaded Source

Built Distributions

tinybrain-1.2.3-cp310-cp310-win_amd64.whl (653.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

tinybrain-1.2.3-cp310-cp310-win32.whl (605.7 kB view details)

Uploaded CPython 3.10 Windows x86

tinybrain-1.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

tinybrain-1.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

tinybrain-1.2.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.5 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

tinybrain-1.2.3-cp310-cp310-macosx_10_9_x86_64.whl (795.5 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

tinybrain-1.2.3-cp310-cp310-macosx_10_9_universal2.whl (1.1 MB view details)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

tinybrain-1.2.3-cp39-cp39-win_amd64.whl (653.1 kB view details)

Uploaded CPython 3.9 Windows x86-64

tinybrain-1.2.3-cp39-cp39-win32.whl (605.8 kB view details)

Uploaded CPython 3.9 Windows x86

tinybrain-1.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

tinybrain-1.2.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

tinybrain-1.2.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.5 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

tinybrain-1.2.3-cp39-cp39-macosx_10_9_x86_64.whl (795.5 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

tinybrain-1.2.3-cp39-cp39-macosx_10_9_universal2.whl (1.1 MB view details)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

tinybrain-1.2.3-cp38-cp38-win_amd64.whl (652.6 kB view details)

Uploaded CPython 3.8 Windows x86-64

tinybrain-1.2.3-cp38-cp38-win32.whl (604.0 kB view details)

Uploaded CPython 3.8 Windows x86

tinybrain-1.2.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

tinybrain-1.2.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

tinybrain-1.2.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.6 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

tinybrain-1.2.3-cp38-cp38-macosx_11_0_universal2.whl (1.1 MB view details)

Uploaded CPython 3.8 macOS 11.0+ universal2 (ARM64, x86-64)

tinybrain-1.2.3-cp38-cp38-macosx_10_9_x86_64.whl (785.1 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

tinybrain-1.2.3-cp37-cp37m-win_amd64.whl (638.5 kB view details)

Uploaded CPython 3.7m Windows x86-64

tinybrain-1.2.3-cp37-cp37m-win32.whl (600.6 kB view details)

Uploaded CPython 3.7m Windows x86

tinybrain-1.2.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

tinybrain-1.2.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

tinybrain-1.2.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.3 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

tinybrain-1.2.3-cp37-cp37m-macosx_10_9_x86_64.whl (773.8 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

Details for the file tinybrain-1.2.3.tar.gz.

File metadata

  • Download URL: tinybrain-1.2.3.tar.gz
  • Upload date:
  • Size: 384.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3.tar.gz
Algorithm Hash digest
SHA256 7035eddcdb16d24ea68389a11997ae8e2d341fd3fe753fc3142bd65fe60d8837
MD5 dd5f22cb20ea6f200fb8f80c6c2244fb
BLAKE2b-256 d4c0317e949a9c7ef2552d8231a30f8ca3c3c3ab78194ac289057c1e68b6b3c0

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: tinybrain-1.2.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 653.1 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7cfaafc61359f77f839e0538cdc773403593f4514fbc6e5b70c9b2c898d92653
MD5 302d6c3f032718a560f4142739aa9ec7
BLAKE2b-256 b029e6c5240b2fdc2666044ce79fd7fe95efb83988af9866aa88c7c43a3282ab

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp310-cp310-win32.whl.

File metadata

  • Download URL: tinybrain-1.2.3-cp310-cp310-win32.whl
  • Upload date:
  • Size: 605.7 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 7bbb61f5e556d711d407b2ccc3468440a33377cdf79caa2313916ead28d97787
MD5 b2c268be8871e193df229abd8cd9e9ac
BLAKE2b-256 952356fd7978cd271761486f48403c2a6c81e15cb1ef45fefe800067f3440f90

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tinybrain-1.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a24d0354e4dec7b8666e3018c225a19a32ae9b5cee4252e4e6b703158754be11
MD5 6e8862009228d225a6bf8cbcd10c2e6c
BLAKE2b-256 bf849546da3decbb9a5f473c9205727a056ef831d7446b4f06426a2f1a2bc810

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tinybrain-1.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e6631e682e382f51a792db0a1bc6c7f5f715434ad3404b59145cc9fbbe758f60
MD5 f3fe65d4c797401aab4023dc5f891edf
BLAKE2b-256 da349137a62650bef9d57044f95fe882069059f8b640de38f341c81f8f8f41c7

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tinybrain-1.2.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ad4ffc26adac2e4310c101c94da0f5cc020d435ee7d62ac7da88bf480dc463ff
MD5 c3b66ccb8f670ba8b56d129fe861ecf3
BLAKE2b-256 11b8d18daf2d26d22d9a90f1bf273e6cfe799e8e309040c457c91e93417168fa

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: tinybrain-1.2.3-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 795.5 kB
  • Tags: CPython 3.10, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8b08b783d153f6fbeec44a11c54bc999126b33dfc3272d7c125808ea9583256c
MD5 0f4c2c7b0727a6066840c556a198fb26
BLAKE2b-256 f91be0021cc309140a94968883cafa2adfbea112197fe16437c64c34f36a442d

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

  • Download URL: tinybrain-1.2.3-cp310-cp310-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, macOS 10.9+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 1bab0c2f29122f24c15cf10eddbf565e792a7bd36e7e91ee76c658e3fe9a7506
MD5 d9ca30af6034ea4ddc9986c845d9d2fa
BLAKE2b-256 4b2709e5d099d427469f63704fd9af84d38fd7ed4fe60faaa6bb589115135a67

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: tinybrain-1.2.3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 653.1 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f59e35105b5a51ae6eaa790aa23e79360e02b2327a12638ae345fc0263feedb0
MD5 d6db321e2965c419073d1ebe79f3189b
BLAKE2b-256 979c1d5f6476363bd674da915e362afa0b84e359381dcccb28b122475d1054f5

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp39-cp39-win32.whl.

File metadata

  • Download URL: tinybrain-1.2.3-cp39-cp39-win32.whl
  • Upload date:
  • Size: 605.8 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 122ae5fd3b72cb31e0ac444d9ce1ef4c2ec6e890e646aaf6d6cb821a83fa4a3b
MD5 539a7ad64b8d14332e0c2857db2881d9
BLAKE2b-256 76d6835cd0093b1080aaae66315b5fdc5dcb11fd6b0634a51aa999539117f3cb

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tinybrain-1.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f3218556b2cc8a760e1cfb3fdf1a049daa24d0f300f1f7878701bddbef752173
MD5 c008d9e1ae7653be227dc7ebe2753728
BLAKE2b-256 4603d1411afe2f284a90e0e16989f5a26469a5fc1651499b4adef76fd3ec8317

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tinybrain-1.2.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ee59ab693adca9879f89ce998f10bc6a9034385ffd636d5c94059dbf72bf6e1f
MD5 dff3f87e76e59560c9b802ea6cecbf07
BLAKE2b-256 695ca2bfafe19047d454274f23bd1568464f067ec81a01b86b5d0e96545b64b2

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tinybrain-1.2.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f0488007a559466e9a30790ed055e747bb5c0f3b8b526420462c79b2b11a7398
MD5 8bd2dd5d76860d0cd4f6ae25a4dedd78
BLAKE2b-256 3eb1de3ef9dbaee677ff38c8344508e938f13544d2cfeb61de877ee4b70d8153

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: tinybrain-1.2.3-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 795.5 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 803c1abf88c2dbacf9a3559eb1dca641e4c9ba5986e4d208263481499ff12472
MD5 ecc38b69da9692f26cdd23132324dcae
BLAKE2b-256 eca2f917bd5a35c4a6d0e9e2a6479ba8be562efdc3d99948378ec6df49871768

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

  • Download URL: tinybrain-1.2.3-cp39-cp39-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.9, macOS 10.9+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 d1a356732791a91cb0846a7515312503766b59cde90c92fc6264f757a1a6919f
MD5 04a587327ea26b962291300670aaecf3
BLAKE2b-256 527ae9a831092445f6bc6a08866ff3378bda5cd36ef68d58f4039990747d684e

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: tinybrain-1.2.3-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 652.6 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 d51d378477ad772098d7edcead72886846588f2a2d04519f5a330631c2074d68
MD5 d1e9c03b86422f1e4b87349386ee89dd
BLAKE2b-256 71851a2c11a5cde20431396bc587a11bd6f43260becbec94ea4835a63c92dd86

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp38-cp38-win32.whl.

File metadata

  • Download URL: tinybrain-1.2.3-cp38-cp38-win32.whl
  • Upload date:
  • Size: 604.0 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 0d496a9672a498e43c44a997396371c61cb163adbad100152f4db028067c8aed
MD5 7aaddb87b833095dd43762188bfc996f
BLAKE2b-256 0d0dcb51fdc17ab53c448c3d281ca5e5a53b6bcddec68b567a51430f58e56408

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tinybrain-1.2.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1e8020b0ef00be8ea25a54fde8d80ddcc609312581f6b74c923201e6d93cbae8
MD5 24bff11fa0a4df99513fc16067afd13d
BLAKE2b-256 6506e83852f5f76341d97bf1bebe075915c175e8950433e7d7577b1686222dc9

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tinybrain-1.2.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8af42e61a7f8474cf85e9231ac52f070b8729b22c5e7c34d4e5028fc4a74bd57
MD5 d231749d231982e50ecc147d9b6b1890
BLAKE2b-256 f085e7ad612fc383b4da7d5b3855ea81798db720432d3e9430229b79da1c9412

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tinybrain-1.2.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 02e56eba276d19655bcf2481ef922ff41d548fc1fbea621350be92f129bfceab
MD5 6cda30f9dd9388b89b2f5a639d89e47b
BLAKE2b-256 88de596dbfa1fcca8768de466e3b76bc47d67bba8caba025d99baaf0cd6c5321

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp38-cp38-macosx_11_0_universal2.whl.

File metadata

  • Download URL: tinybrain-1.2.3-cp38-cp38-macosx_11_0_universal2.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.8, macOS 11.0+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 f190c9747c61df0ca3ff44bf30defcfc0dd956702a6cdfb527a3369588978775
MD5 4bcd96a5f3e0c12a4bff6a038d3b0be0
BLAKE2b-256 7997442e44a713c862aa378a06f3a7bf3f9bf71ee89f527a7bccb40958bcba2b

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: tinybrain-1.2.3-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 785.1 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 822bc51f99dff08db91d533ee9a01b833d2d7d244f3e2ec6085f7e143f06b022
MD5 ca332de1b85f015dd29420aa342d4228
BLAKE2b-256 c0861739892660112d5dfc6a1851fe1850af19f6a0703b2ed5fd493ac1c3a89f

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: tinybrain-1.2.3-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 638.5 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 2d2571ac6268aa1634e14bdab80c6b7daa0009c636d548f7083067ada811dd21
MD5 b5379710aa3e7defc324b98407bd16b8
BLAKE2b-256 5f2e97e7288f5964e59de40693535ff84c708b7e151152f31cd833c1efbdbc2e

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp37-cp37m-win32.whl.

File metadata

  • Download URL: tinybrain-1.2.3-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 600.6 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 1db467c1c9cfda360def52e6b3123451b43ef1d3ef3c977fef98f59d0833c726
MD5 26515f7c4924dc6f61fa11322b01826a
BLAKE2b-256 2e6056558c0368a299c668ca103e3e20e8d9ae9a8b1ab5d4e5d96eaef8460624

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tinybrain-1.2.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 33d3b77bef74913b90c7f1ec71b6242f385a9b5133ccaeb97d2a0a1efc3fa025
MD5 05c948ecc0166594335fc607ce0e85b8
BLAKE2b-256 270aa3ee6189cca3688f7a4bb5517dff92bf581bd2ae9ddb75d2d24233222ffe

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tinybrain-1.2.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8b0932a83b56eabbd93a271effceb3203b3b31b5db7f880db846411ab2aecfd2
MD5 15023e291054d7970559d169ffd8d38d
BLAKE2b-256 c3a41a33b2db53897423082041764aaab532bca40afea079668cf5dbfcbc8fc5

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tinybrain-1.2.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0ee12728943486b1e16eb01e7826fd5e27e02ec459bee06fa5b477ffb121527b
MD5 b5919da977d42afa44617e81fedd18ca
BLAKE2b-256 16fe5ed8722f5928b7224f1df2a4e2869715c2b98f551b26441356f8978058e1

See more details on using hashes here.

File details

Details for the file tinybrain-1.2.3-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: tinybrain-1.2.3-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 773.8 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for tinybrain-1.2.3-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f759a35485e38d80954401082743f7b08d4f03e10e01ac5acdfb84dfbce33232
MD5 948555addd0d912bf8d6e88afa2671c5
BLAKE2b-256 d80a1017cd952e4dfa7dbc6fa80db6390ef74cf0e6d61626ac3a6bb90aad8f29

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page