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 3856.07 1057.87
2x2 2 N 2685.80 1062.69
2x2 1 Y N/A 129.64
2x2 2 Y N/A 81.62
2x2x2 1 N 4468.55 336.85
2x2x2 2 N 2867.80 298.45
2x2x2 1 Y 1389.47 337.87
2x2x2 2 Y 1259.58 293.84

As the downsampling code's performance is data dependent due to branching, I also used connectomics.npy (5123 uint32 extended to uint64) to see how that affected performance. This data comes from mouse visual cortex and has many equal adjacent voxels. In this volume, the 2x2x2 non-sparse mode is much faster as the "instant" majority detection can skip examining half the voxels in many cases.

dwnsmpl mips sparse MODE (MVx/sec)
2x2 1 N 1078.09
2x2 2 N 1030.90
2x2 1 Y 146.15
2x2 2 Y 69.25
2x2x2 1 N 1966.74
2x2x2 2 N 1790.60
2x2x2 1 Y 2041.96
2x2x2 2 Y 1758.42

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.4.0.tar.gz (42.3 kB view details)

Uploaded Source

Built Distributions

tinybrain-1.4.0-cp311-cp311-win_amd64.whl (329.9 kB view details)

Uploaded CPython 3.11 Windows x86-64

tinybrain-1.4.0-cp311-cp311-win32.whl (274.3 kB view details)

Uploaded CPython 3.11 Windows x86

tinybrain-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

tinybrain-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

tinybrain-1.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.7 MB view details)

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

tinybrain-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl (569.3 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

tinybrain-1.4.0-cp311-cp311-macosx_10_9_universal2.whl (967.7 kB view details)

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

tinybrain-1.4.0-cp310-cp310-win_amd64.whl (329.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

tinybrain-1.4.0-cp310-cp310-win32.whl (276.7 kB view details)

Uploaded CPython 3.10 Windows x86

tinybrain-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

tinybrain-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.7 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

tinybrain-1.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.6 MB view details)

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

tinybrain-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl (579.1 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

tinybrain-1.4.0-cp310-cp310-macosx_10_9_universal2.whl (1.3 MB view details)

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

tinybrain-1.4.0-cp39-cp39-win_amd64.whl (333.6 kB view details)

Uploaded CPython 3.9 Windows x86-64

tinybrain-1.4.0-cp39-cp39-win32.whl (280.8 kB view details)

Uploaded CPython 3.9 Windows x86

tinybrain-1.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

tinybrain-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.7 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

tinybrain-1.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.7 MB view details)

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

tinybrain-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl (583.2 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

tinybrain-1.4.0-cp39-cp39-macosx_10_9_universal2.whl (1.4 MB view details)

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

tinybrain-1.4.0-cp38-cp38-win_amd64.whl (337.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

tinybrain-1.4.0-cp38-cp38-win32.whl (283.5 kB view details)

Uploaded CPython 3.8 Windows x86

tinybrain-1.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

tinybrain-1.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

tinybrain-1.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.8 MB view details)

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

tinybrain-1.4.0-cp38-cp38-macosx_11_0_universal2.whl (1.3 MB view details)

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

tinybrain-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl (576.4 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

tinybrain-1.4.0-cp37-cp37m-win_amd64.whl (311.6 kB view details)

Uploaded CPython 3.7m Windows x86-64

tinybrain-1.4.0-cp37-cp37m-win32.whl (270.2 kB view details)

Uploaded CPython 3.7m Windows x86

tinybrain-1.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

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

tinybrain-1.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.5 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

tinybrain-1.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.4 MB view details)

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

tinybrain-1.4.0-cp37-cp37m-macosx_10_9_x86_64.whl (556.2 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: tinybrain-1.4.0.tar.gz
  • Upload date:
  • Size: 42.3 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.4.0.tar.gz
Algorithm Hash digest
SHA256 915380109691ae7747e10152cb8d0b734aef340a6727e4ea241b76639a0ede9a
MD5 d384aa38fb994c0caf6ec1e901635fe9
BLAKE2b-256 48d11ff709b7835beb31b5fa6c0cca1cda524027af9c7d6df76355e5140c3f04

See more details on using hashes here.

File details

Details for the file tinybrain-1.4.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: tinybrain-1.4.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 329.9 kB
  • Tags: CPython 3.11, 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.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 708a5e9bb04f5ff238b164276d96b63da1b444b34d162a5ff20966244f545360
MD5 0485b10c35d00eafae587764b905c6cc
BLAKE2b-256 8cc998ae8d9cd95c789f3294e0bf9fd09ecb7f0215938657f0a74514ca623fe7

See more details on using hashes here.

File details

Details for the file tinybrain-1.4.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: tinybrain-1.4.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 274.3 kB
  • Tags: CPython 3.11, 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.4.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 27840849fa14fd23924eba4d1a375c1a5a3ced4035e985ec73280e0fa67f79e4
MD5 aa2c72aad19f2ea7e7e1ddbbf41058a6
BLAKE2b-256 5de14184e75b62fac1c24f4151f50090b8ec1f1342672717d4052a76afed3794

See more details on using hashes here.

File details

Details for the file tinybrain-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tinybrain-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b0f0922bbf99563309cecb77348dc08f145a03612ba3230094374ade904e24eb
MD5 30f9d405720765079bfbb6664fea1294
BLAKE2b-256 6ca6c419f898cc45e4caecbc7732c39c1486ff7fa1fd19d57d4d07d933f25368

See more details on using hashes here.

File details

Details for the file tinybrain-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tinybrain-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 69f89d38ff57d0df35fae3027bfd89fb4c927d612000216d5ca01184b3d30a1d
MD5 483f4d11d310b76383a28b633e5e581d
BLAKE2b-256 d2f8b54b3aed4c872c36342e05e353c3a17b2b8ac8edffd4a59eb958634f525e

See more details on using hashes here.

File details

Details for the file tinybrain-1.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tinybrain-1.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b61b80f025af739ad7103a2ea6573a79273e655ed63515cfa2cc5f2b758c6223
MD5 516d619ed39d989b56687c7f2131340b
BLAKE2b-256 c47100395d0f68a8fc3d3f175392b9a020ee5562e5e9406889c32db63f166e5f

See more details on using hashes here.

File details

Details for the file tinybrain-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: tinybrain-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 569.3 kB
  • Tags: CPython 3.11, 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.4.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7fad545413839b323b722670944e47b7b78d5cc086a5e0c5f8ad1f9e64404344
MD5 f62f3edfe091dc1a1b220d9cb9449087
BLAKE2b-256 3e6bfe6c111791e35b895779e859f57f55184871cbb6be68beb84205af5ff80a

See more details on using hashes here.

File details

Details for the file tinybrain-1.4.0-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

  • Download URL: tinybrain-1.4.0-cp311-cp311-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 967.7 kB
  • Tags: CPython 3.11, 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.4.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 d507861557672218ba437beb08321ff5a0582b06939c7d0c060ada30aaf3c0aa
MD5 2a5db7ff29dc14a3034dbbc6bd406bad
BLAKE2b-256 fed66bb8e7ce191a14e572ab956e328c118567953fabce2d0a9fa8124c86700b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 329.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.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 37f3da2b4922ca1f9f686723d517b2d8dce61473949bf9ce5738109fb51c7ea6
MD5 e4a17944808e1d03c12f21aa6b855eb5
BLAKE2b-256 9673b5a5beaf234c4e5363a7256830c11006f07414c0d4edf906820267b8a29a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 276.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.4.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 42c5ae8a6165dd08a9608585d75153f81a462fe9495fdba1ad80fccf51bb204e
MD5 708c932632c7e8d26a0982de1609ae0c
BLAKE2b-256 8be658472732fc2c8d944a97b741cb677fb6a58b5b53f126874b7c2a065b5792

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e015a9ebb2ba3c5c1e83721554204fca33914dd82e197ce6e53c23d33e08b052
MD5 efb04ab9a81cd3410d00c3a4f8468fda
BLAKE2b-256 580ae2248dedfc706241a8d1c1a725e9ee27c7c2edee9e832cefa0f467c4e5e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d25c2860993c8d025928ab5b26c84905af11dea5604c43d3d97bdf171bfd8106
MD5 445eacf35b6cbb6ab43f05c642747c96
BLAKE2b-256 d9149155d967a0ad895818336c02b50db663e0bf2899af7436a9f6f058f2ce0a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f47c25a91c1b474fd8a7d88392fab468ec32573a47aca2f4bf4c55c2e6dad1a5
MD5 ef665418c230bc72bc76a6ac90c19686
BLAKE2b-256 5587b897b968bc6a7e155eca09cf3282515c089cf67eb890ce42e93d3209e8c3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 579.1 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.4.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5900b11449c0d99dd2eae4af378c12fff61bb75a7556cd5d640743b94240b102
MD5 a51e2e2922595f034ea28508ad2383bf
BLAKE2b-256 d48bc1e696f42e7729eff270dcd84cc97d0f43dd611a84327de56be9d2358e36

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.0-cp310-cp310-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 1.3 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.4.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 faaa83ddcafa8f24bb92bec9a95fbf0b295da6c0ca00104fccd67a21c25cd456
MD5 092c6c872c6c93784ca6b1f3eeafabc7
BLAKE2b-256 f3543e24c1362f96a441de82e3dadd1afc00daeee0f5c8017f75a4bf7fb1acbe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 333.6 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.4.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 43be626ffb4b7f715c21a337b6edcac4aea7ba670a48c7a836ef46e79724c23a
MD5 10982ac4180a9dbf6fbf790cd74f4796
BLAKE2b-256 c1e0afb2e5d919c67010dae4a029598c7dca0d9463276614ea448ae3083db826

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 280.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.4.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 3ab26590567c8b407fab9035aea3604f1d5da6e3a55cc8c255d3c280a69ff1bc
MD5 c6a10396b5d98cadd1819d83c4ea160c
BLAKE2b-256 fb4159ab7c9a0d095e076be1f77acae1ab037d4f5632d23791385e8f3db57fcf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 676ff4514d1229c13038854bfbef912a108835f850b29b9a319157869046b351
MD5 c803376d0a18e9b497be3218ff79010e
BLAKE2b-256 1a0bdbf527106852af401e4d31b0acd1b398bc0362a55a6d50ad5c44cf5301e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8033a334039141da16ca63b4b19e7bb98c038f16abf33d9f6d09f5250c226909
MD5 4c75c8d0528b75637bdf4a5d8cfe0cf4
BLAKE2b-256 b1cf4447e48f5ad91bad0b0ab047ee7ba03d0f5f6f2b0fa2562b4aed9ee4cc80

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 847d46072fd1758a35f38a149dc68445705b6aa3e97eff26032d0fa3e1998542
MD5 fc77b98b55add589f7ee3b25fd8654e1
BLAKE2b-256 68604db559e2adb78c80eb47aee1c91c016271f4eaf6229dd3e16558952e01bf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 583.2 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.4.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d6952dd7a586a1833a92867e6d7a4a05886ea8fc067b14002bdea40d6b5764dc
MD5 8f8645961c7d1d2057a1dcd31ea0788d
BLAKE2b-256 caeb7c23d7b763b86343ab7f777c5c5e7ea97c10e766591fcf3b6e334b6ca2eb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.0-cp39-cp39-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 1.4 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.4.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 17276c3eea76b1840d63586963fb6e78413e6f0765169a4192243310b9880d12
MD5 d69e1a56b08f783c2f0a5f4f4a3330b3
BLAKE2b-256 66a165c1dcdabb56071a5b789d241079b943d00f1a106ba612d5a14d691474e6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 337.7 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.4.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 5709077914ed18d23df1c3c397c0c6a8f55443d39e999722e4583830401d08da
MD5 2c9488feb2804956293fb53d3cea3522
BLAKE2b-256 4894b59a3daec995b8d44a63f4fcd1b9b234f743b25480b1812a32a17165b19f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 283.5 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.4.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 7c8eef148797fa622c3e3717ee8aaa430c6c0e7fd4b6bb5d0562e10273f8ac39
MD5 b72d978c535f2dabd87e6892551bbc42
BLAKE2b-256 ab125e974d756553637c933cfd5019d1f82337e2cc37b75a4045b3ec6f5ed72c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1dac36d72385b905e2c495406f839a603e5d12e13396ce3fb683161281579f24
MD5 46aabdf118c2c8a4d8a8334e3819256e
BLAKE2b-256 2bfef3a3315530f1c9eae033c78cfefc4955d90d57ce275290ca4a640ac459f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 04d608ed75f0cdf848db746c54745f786d6b9701bc58451eb5c07c7e3bc78d9f
MD5 f3129d7679cb985f6b9b936c0d166eb7
BLAKE2b-256 3a9ffb923218017389f9b7bed7201af298b2fb9496b66cb01abf6e4a0838172b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ca2fad90e7f865d3a61a9708b2949990e9078a309ace72ae2b0406fdc969ec85
MD5 d15a6150492c269c7c45f184f66b1241
BLAKE2b-256 3adb62227ab0a25c41878c58595eefbee881d27523c1a6a89e30b83177003bcd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.0-cp38-cp38-macosx_11_0_universal2.whl
  • Upload date:
  • Size: 1.3 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.4.0-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 c3d6df77e781dc659c476bee176e4c8fcaf2c5b326dc83943f9d8e08027c4bfa
MD5 c5d8c033dcb7d64f88c8c9b16da77ff3
BLAKE2b-256 41d1300490ebc8afb15fe87ba01e640adc004682d19f82e2b463e1c5ff73c3f3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 576.4 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.4.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7dc0d093d94d8bf6e25d9a1637218ba27f31198bb8f233c294be41cbd9f9def0
MD5 a60526edc2643c05548b7f6214193d40
BLAKE2b-256 052b6a673e7911a5d7cbaeaf821009d22879b0548318ae9d53a89d9bea2fe758

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 311.6 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.4.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 e6274f6a5814d725c363ad31989788e9cb147a37351bf6dab8fc4ae2e77fcb53
MD5 5ab05cec147b7040916f9afc17e8188f
BLAKE2b-256 b6a6bab57f9f7853a98cfc3514eb9e59de8450073af94f01c6471c00cf3b620e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.0-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 270.2 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.4.0-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 2536ecca78371b623bf0ffe98b6ba32dc5eca22727f3d1bda0719ef03fa10828
MD5 7913c5e46fc05d26468dbbdc9eb0bd9a
BLAKE2b-256 a955bed855c1feece73fdac2b351147696d0f1dc80595865798fb0b551b1a8c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 22d2d4505af6b6c8867dd0e39651ada5684ddc71751cd86139f402de82fc6c05
MD5 12a6815e6ea1f97c0c19b6f03a7fa6af
BLAKE2b-256 4a7efd6cf4d875d789af4d5a3853a85b920738edd9c0cfcf9ae59694cc05dd25

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 27a4fc26de19cd3299564896b786baf9483dffe7f47779046d350dbf3aa9bd7f
MD5 bdf4a4fce15b0099f41ed364a852acde
BLAKE2b-256 72de1947791ec1eb5ee9b6a715dc12542fc2217aa231a5e3aa3ca34d2d4d9378

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 98b30c892dbe96a9043d3f29590c3efc0dffcc78bb2e3e20fe790e8192e878e1
MD5 b3e9c0ed536da8c5ef9f2d5e4edddb7f
BLAKE2b-256 e2cedf794caa62a75c1da7d51c081048d257cf6e28fc996d1dd354d7c15a96c4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.0-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 556.2 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.4.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d1b3bf95fc6f3875117232800d912b9667868508eff6d6dfc4e157b50c422cde
MD5 45f5c2c5a3e80a0b99ae3d4ea677f173
BLAKE2b-256 b4fafb472f4829b84eddfb562e96f7b3310f421bbf29c1cec7df43a5a5ea5d29

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