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

Uploaded Source

Built Distributions

tinybrain-1.3.2-cp311-cp311-win_amd64.whl (321.2 kB view details)

Uploaded CPython 3.11 Windows x86-64

tinybrain-1.3.2-cp311-cp311-win32.whl (259.6 kB view details)

Uploaded CPython 3.11 Windows x86

tinybrain-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

tinybrain-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.7 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

tinybrain-1.3.2-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.3.2-cp311-cp311-macosx_10_9_x86_64.whl (552.6 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

tinybrain-1.3.2-cp311-cp311-macosx_10_9_universal2.whl (931.9 kB view details)

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

tinybrain-1.3.2-cp310-cp310-win_amd64.whl (321.0 kB view details)

Uploaded CPython 3.10 Windows x86-64

tinybrain-1.3.2-cp310-cp310-win32.whl (267.6 kB view details)

Uploaded CPython 3.10 Windows x86

tinybrain-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

tinybrain-1.3.2-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.3.2-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.3.2-cp310-cp310-macosx_10_9_x86_64.whl (560.5 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

tinybrain-1.3.2-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.3.2-cp39-cp39-win_amd64.whl (325.2 kB view details)

Uploaded CPython 3.9 Windows x86-64

tinybrain-1.3.2-cp39-cp39-win32.whl (271.2 kB view details)

Uploaded CPython 3.9 Windows x86

tinybrain-1.3.2-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.3.2-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.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.6 MB view details)

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

tinybrain-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl (567.7 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

tinybrain-1.3.2-cp39-cp39-macosx_10_9_universal2.whl (1.3 MB view details)

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

tinybrain-1.3.2-cp38-cp38-win_amd64.whl (329.6 kB view details)

Uploaded CPython 3.8 Windows x86-64

tinybrain-1.3.2-cp38-cp38-win32.whl (274.5 kB view details)

Uploaded CPython 3.8 Windows x86

tinybrain-1.3.2-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.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.7 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

tinybrain-1.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.7 MB view details)

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

tinybrain-1.3.2-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.3.2-cp38-cp38-macosx_10_9_x86_64.whl (555.4 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

tinybrain-1.3.2-cp37-cp37m-win_amd64.whl (303.5 kB view details)

Uploaded CPython 3.7m Windows x86-64

tinybrain-1.3.2-cp37-cp37m-win32.whl (260.7 kB view details)

Uploaded CPython 3.7m Windows x86

tinybrain-1.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB view details)

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

tinybrain-1.3.2-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.3.2-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.3.2-cp37-cp37m-macosx_10_9_x86_64.whl (537.8 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: tinybrain-1.3.2.tar.gz
  • Upload date:
  • Size: 41.5 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.3.2.tar.gz
Algorithm Hash digest
SHA256 58ec60413ade4febcfd28eae9fe5948f7aecf16e11915bbd450251d1cc77c585
MD5 49e03ac4b25185a0b997381e133d120c
BLAKE2b-256 56b9221365f2a8f587f1b8fbf6f1cce3b4bf5320c894781768dcbe6be67cb6e9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 321.2 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.3.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b78dce571d8dd58da407a83b48c9f10141775ddd617ebe37acbc3754a2690da9
MD5 5db7f3c3f183dbd22ae1c0db46607444
BLAKE2b-256 5c41d5475f157e866a24939e5a3e9c9fa2fe43dccaa9cdf0c8d12104fa3cf208

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp311-cp311-win32.whl
  • Upload date:
  • Size: 259.6 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.3.2-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 6c18a24f43c5e9a393f8c8180199a2b6f4443e9ffcfc2910f06d1235719a5881
MD5 4a2b62f609deda73d6307b4a55854a4f
BLAKE2b-256 df463a07bb3b4dc2a8a0a73ddf77a94f03223857623294893e6ac0861b5cc957

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 60fe31fd9fef4ed6742d576ccc2ff96b8efaf5b43b84d52682015fd737066450
MD5 499773974872830ea9ced8d437c23a5b
BLAKE2b-256 28f6f488c1bad49243b0c53ca0acb8a476b968e0480337504c83c6cea0fb2234

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c165266f624ffe9761a62a3809882309bb8fdfeeec8fcc0b91ef64363dfc877a
MD5 e80be2f36c0996c7796f4af5e4c46acd
BLAKE2b-256 cc2fd2967b11a4e3a7829450bc40daec5a87f6b3619d03bcc231ca26f0d31d35

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e140a6d6ab5589a60a8421edaa06bea7e08d896ebd471379b72912d81a4610bf
MD5 548a6b20b8595da1ae1f4654397229d8
BLAKE2b-256 8eefebdfdb27a53f73f9dcf3d4e66a1aa6bf0f70aef741aa5459990ad7c575e1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 552.6 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.3.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3e1d2197cc340e4fd2d149438b21bb181ada9d814060518637e2a6810ac44ae9
MD5 a253abe33d7fe6fac7e9a10344e127f2
BLAKE2b-256 4e2379754329d94e64e9d072eaad32ceb8704f499bd1d9e742d9615fb4df9eba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp311-cp311-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 931.9 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.3.2-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 aa428e8a0f065471d5130a0f74659fe5d65c460d3e25ab1e4a2a81b995fb5c76
MD5 165a38e0f754176ab52c49d70bf11611
BLAKE2b-256 823f7e87f84dcb4cdfe2e956bd62dd8adc689a0293cd0edad54f4d909a320921

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 321.0 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.3.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ce5f0da556b82d5981fc2f5352880bdceb6228ecfefae39ad49dc522375b43c5
MD5 c68dc6c0bb551c4db160eff52d621784
BLAKE2b-256 b65881460006c9a5cec2d19a4da4435ed3d0613d6dfd5e1914d2cad4da0300b3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp310-cp310-win32.whl
  • Upload date:
  • Size: 267.6 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.3.2-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 073e1e0769a489325238a99232f16849c00ccdd17c2b8516e149acd89a33c122
MD5 1956e5922139fac76c890a4cb63badc6
BLAKE2b-256 0e6fb2b2cfb066218e52938f609b4a4ad3954e96ffd449eb6fcd3864c965ebf2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e7d6514d711d2069af0c3e388b9d6844fc648e4faf0fd26f02b1f79c3b44636f
MD5 ef84d8c49cf389a5c62a5564d1b97877
BLAKE2b-256 acba67803dfbe57954a80d62f352298479cc2ecd07da7c455662aa440ea9bd78

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 89f8d7af8ba7eb81e42232f61d3bee06906b91a0badd5b1852ab2d7c503a9fa4
MD5 2a2e06a5b10ffdb2bc4646f42df0d5b9
BLAKE2b-256 07367a843bfc2a6fec54de50bfe51823d9b551be2f1db9111fc1f87d71557d91

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1c5b3e83d2240530fde4e0fb9dc0af0533977bf118b3b1a054c92d4fdc0e2b8a
MD5 98277069f7ffd6ae3d773672e8882cad
BLAKE2b-256 cc5cda99dee45aff351cea9165f89f605131826f4afe55a7c52e83a0184ebbb9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 560.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.3.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 453404ca674f353654c53d2cd3747315dedb7c0633b7ebf9a62f68acdf9486e3
MD5 1c8969d997a41e964c4def6cf6c7328b
BLAKE2b-256 9fd51336f8057a817b7ed67868d22afefac0a4848f250d54688dbf658b806ea1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-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.3.2-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 315057a8dda0966fd23d69febfbbf773d3ba442e6f1e52b7714c4e202fd21da2
MD5 5b66d532c14e863d383e91027d735459
BLAKE2b-256 821d177acf8637bd12eea6ef13541c610127608769bac4fb9dac4d06aa02a12a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 325.2 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.3.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 cabf5eea6a4e58dd1b4e7a89fc51f620406b0162a09ee901c75f839798b7b020
MD5 1ab7fa6c8da9e2dfe8601e3201cdfbcf
BLAKE2b-256 408884c7d1dcdf3a53edc0c110c74348db60b7fcc2372ef439aa54f21c4d3f6d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp39-cp39-win32.whl
  • Upload date:
  • Size: 271.2 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.3.2-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 c33c9b3cabc8c9be40f210325bad4e66ea448455ee4a5def0dea1fa1e81edf27
MD5 f8f95ced54e330926b8755fb10825375
BLAKE2b-256 5fbdd6bc276643e98a4207c6a75cc7f041a324aa14e8d1884f3191d48a5e5ae3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 43e3737418526e1f785e3b02dccf6762b464b860ee238df14bfb02dea56bd3e1
MD5 7b5fd3e48483326128bcb6d7a2cdde20
BLAKE2b-256 8d56ef88a62ca22e8ad97190d5a780092d3bf94a8e228a2adf35666b358c3b21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 60e4693078b451f214da3bdc622916b4e95c794496c3ceaab89eb8335c8ae8da
MD5 d31b73542d71e70576235da93153422b
BLAKE2b-256 f6ed93250975ab14fd9c4c9501579d01e02d9cb64600f98160098d0386ce9b77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 35a9139a579aa29ee27490310dd3ae3575751c80260a072e81c209703577cbc3
MD5 d6eed0484badd131cfe48580ec9cf969
BLAKE2b-256 b3f8ed0a06357cc7ff3db86ecf09caf43501e51e6268df6de2408d558853eab5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 567.7 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.3.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 abd9b439c3c6f219b345ca9ea4af57d143009db907b0a996b5c7796e9a144c2e
MD5 2fb53ed3259dec3623d15d94087a4b8a
BLAKE2b-256 285ef22d3d4a375c460399224679dbd421cba635ebbb8bed207c34b1a1234c72

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp39-cp39-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 1.3 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.3.2-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ece838b9d289d31336d0578645260789978df9649b89a49cafd769a5a64218cc
MD5 2d957873b3940dfb1b8c792cc03ae22c
BLAKE2b-256 7db894fc28c26969c43da0e6ef578e1c4039f0a191cb0a818cbf4e144fe69c6b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 329.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.3.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 60f0296bd003818b30dad1af02c0d31578f45491845a8bc7bb9fc00e0f286592
MD5 4787133d3ac5bd763f8352b07baf2beb
BLAKE2b-256 aefa3f2fcfffd2bd9e12334ecdb1369ad528a302fb1a05c1eddbb33824cd35fa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp38-cp38-win32.whl
  • Upload date:
  • Size: 274.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.3.2-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 55701447811705bd1c653a99b4a07abd50a3e888f7a57d6dbf3ac5e792817362
MD5 2250686d70b747e41af55af05b9ca348
BLAKE2b-256 a7b8a496d214af74e3bdebf89d1c2ae8871a7368ac7fea4b1e15004b92a0bf14

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fa68d20400b10c84e724c5669a6e458fc8e947c2cc5025e9be0392e277be0a97
MD5 35d6ab176a549762421babe5e2277fe5
BLAKE2b-256 8de50c4b1fb9f5fd40b10ef7cf5118d01a5d3583e6e155890aa183bea378947a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c6f410c90328ad2fad35f6935b7e14f42f6216a3b4e63a4d7df28871a47b87c8
MD5 ae203ea98ec8c4427f71db1de8c77333
BLAKE2b-256 105a2ee83081153fa8d78e501d4d9fdabe575e3556fbc8f63f03c0db19311408

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e8d8bb1d68f51f47d225685f6efca4451dd1bbb497d0528d23e7e854f6337dbe
MD5 427c9d758639f7cfa0fd44a15cde7864
BLAKE2b-256 65af45a32e5d94bd5ab2a283ed9e35d4385ab1062c8119388a591ac485218c08

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-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.3.2-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 1873b1a047d022f58046197d09b530d905e1e7142ff477d5acefa417c37c03ff
MD5 0083bce1c7d2bc870a0d3b7fa992b058
BLAKE2b-256 ebe28896d5ae487036c6fcbfdb8fcfe905220b3aeb381bdac6835bbf350577e9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 555.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.3.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 381540f9299155b961d67ee6fe12f1b9e9cbebd6d888b48a2d5b932f99407cf3
MD5 0ef47f4bdca08b4ffc60ff042e6b07b2
BLAKE2b-256 95039ae396630bbfac7a1f738190eb0bc0236a42c7f75eccf9bc3fc37a578804

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 303.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.3.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 7e66f2820fa9a6515a09670da2ba159b7ea44c987cdd2af0377c1d045987b393
MD5 94ae258c09674e860059f810a784f48d
BLAKE2b-256 a2e77ed4087fe6fdb4f4211d3a7c244d5b8da590e3f5dfb6788ad28896b3191b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 260.7 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.3.2-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 aa233d85b4260db93b9a6e7d16adff4a32430fdd37562aa2fcb3fd23ab6a5b32
MD5 3d372081519c7461bfd31179f6c7380f
BLAKE2b-256 cded2665c3f917c28d1ab287892cce810535c0e3e79f332a029e4f8e51c38019

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 497e299268ced6a0cc983c6f4f638d479533d310d7d12e4168526a03a7e57b17
MD5 3d4a51286a444d8f74a27a5acd59e2f3
BLAKE2b-256 9d5927e3d156a4a8425c7749058fc89fe00b51b38161e5eeda94749e0c421546

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5d76364e4aa998392d07aeefa0f2f29dee342f7c308e1fccdbf46659bd43c45b
MD5 a4c9f67bee910b494cb97ea8d857f7a2
BLAKE2b-256 7f21c1a6c4e1bc0f80ac3fd167736ba07a428af8b37974c5b3c3956fc450c3a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b8b23d1b6dc4c23196d0fbdb0ce2547b0b7dc65940a1535c18f1dee4e013a7aa
MD5 46aa649ef20aa22d61e312cdc4483ddf
BLAKE2b-256 89fb680acec2ade507d4099a65267b8c1dfcd6cba9493070e957102717f4a4f4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.2-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 537.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.3.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ac417a08f20979b07cc5285b42ecccdb5f2d7884147e799c1d1a1f467d01661d
MD5 5e12451fc49d84b2051924557dae5739
BLAKE2b-256 2cb80f38c2b85bac4c7d1c64852c9737916a1bbb9a45d88ce4a1a2673fa2bf15

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