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

Uploaded Source

Built Distributions

tinybrain-1.4.1-cp312-cp312-win_amd64.whl (324.3 kB view details)

Uploaded CPython 3.12Windows x86-64

tinybrain-1.4.1-cp312-cp312-win32.whl (263.8 kB view details)

Uploaded CPython 3.12Windows x86

tinybrain-1.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

tinybrain-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

tinybrain-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

tinybrain-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl (495.8 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

tinybrain-1.4.1-cp312-cp312-macosx_10_9_universal2.whl (872.8 kB view details)

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

tinybrain-1.4.1-cp311-cp311-win_amd64.whl (347.4 kB view details)

Uploaded CPython 3.11Windows x86-64

tinybrain-1.4.1-cp311-cp311-win32.whl (285.4 kB view details)

Uploaded CPython 3.11Windows x86

tinybrain-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tinybrain-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

tinybrain-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB view details)

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

tinybrain-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl (541.7 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

tinybrain-1.4.1-cp311-cp311-macosx_10_9_universal2.whl (990.2 kB view details)

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

tinybrain-1.4.1-cp310-cp310-win_amd64.whl (347.3 kB view details)

Uploaded CPython 3.10Windows x86-64

tinybrain-1.4.1-cp310-cp310-win32.whl (284.2 kB view details)

Uploaded CPython 3.10Windows x86

tinybrain-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

tinybrain-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

tinybrain-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.9 MB view details)

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

tinybrain-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl (541.8 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

tinybrain-1.4.1-cp310-cp310-macosx_10_9_universal2.whl (1.4 MB view details)

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

tinybrain-1.4.1-cp39-cp39-win_amd64.whl (347.7 kB view details)

Uploaded CPython 3.9Windows x86-64

tinybrain-1.4.1-cp39-cp39-win32.whl (284.4 kB view details)

Uploaded CPython 3.9Windows x86

tinybrain-1.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

tinybrain-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

tinybrain-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.9 MB view details)

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

tinybrain-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl (542.1 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

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

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

tinybrain-1.4.1-cp38-cp38-win_amd64.whl (353.0 kB view details)

Uploaded CPython 3.8Windows x86-64

tinybrain-1.4.1-cp38-cp38-win32.whl (290.1 kB view details)

Uploaded CPython 3.8Windows x86

tinybrain-1.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

tinybrain-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

tinybrain-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB view details)

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

tinybrain-1.4.1-cp38-cp38-macosx_11_0_universal2.whl (938.2 kB view details)

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

tinybrain-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl (535.4 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: tinybrain-1.4.1.tar.gz
  • Upload date:
  • Size: 42.4 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.1.tar.gz
Algorithm Hash digest
SHA256 d14b72c1422289397051bd3efaf5e386d98998f525e92c197ee998193af99ba3
MD5 09872e8101cd49040807a06b9b217cf4
BLAKE2b-256 33edab9700336c463f0e0a823c1fabb5034419fbde565645e9f9a5b834d49f2b

See more details on using hashes here.

File details

Details for the file tinybrain-1.4.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: tinybrain-1.4.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 324.3 kB
  • Tags: CPython 3.12, 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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6e51f7e51dcd86d94e8c7ee4f32dfcd47af9fe5c265fdb12b8b13598f1e533cc
MD5 0606c1a2f2aa815c0b7a36fedc2d340e
BLAKE2b-256 c76e0fe5287d681232b4924c1d005a1bfa0455b33c9ed711abbc7d4c4565da62

See more details on using hashes here.

File details

Details for the file tinybrain-1.4.1-cp312-cp312-win32.whl.

File metadata

  • Download URL: tinybrain-1.4.1-cp312-cp312-win32.whl
  • Upload date:
  • Size: 263.8 kB
  • Tags: CPython 3.12, 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.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 6eb4274ef4617d43fb14d91a408b4673d657f32fd7ab0ec79cb509e05fce6b41
MD5 87d6c457fff26afbe3cf7191fa20a7c0
BLAKE2b-256 434a87923fc8ac8b94269dd84b89a2b21b3f865fe6646da603fed718670ce536

See more details on using hashes here.

File details

Details for the file tinybrain-1.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tinybrain-1.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bd3ae61bb07a0f77782f527f8dfd9f86a752703cda539d5e0f6669476a6b3f2a
MD5 0fd24ad94d1b810687dbe03aabb104df
BLAKE2b-256 0f04cbdcaa4a0967c45004c3b9e0f0830783ecf071b224755bec42a5299a74f4

See more details on using hashes here.

File details

Details for the file tinybrain-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tinybrain-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cf69e6fefa68a384a00602b56ef87ef4204483fd878a55fe582b7d4c18939742
MD5 0e5afcbf4dfaeb35fbab2d8ade9670dc
BLAKE2b-256 073f3886373eff414f4cb1c4680904bd2791d2d2b924ddd2b25ce6de7baefc2a

See more details on using hashes here.

File details

Details for the file tinybrain-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tinybrain-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f291353e5a135f3bffd517b0824a7c5248de2ffc99bc1ed99ddbde900e94aea0
MD5 d5f15abecdaba9dcc077c10c15c9888a
BLAKE2b-256 744faba71b5b2c7f2025d185c6dd4a3fb127ca3e28b430c1303a1d4f6f9f1fca

See more details on using hashes here.

File details

Details for the file tinybrain-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: tinybrain-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 495.8 kB
  • Tags: CPython 3.12, 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.1-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 302217663615f197f43c1c47c6255c1757a7afde4209b2cc910270bc45b99b97
MD5 10799fbc7fda3870b61f8445051ee693
BLAKE2b-256 d9c626fd198b9798ae076667c7651d86c81b3fe7b644e3773794eaad34c887b1

See more details on using hashes here.

File details

Details for the file tinybrain-1.4.1-cp312-cp312-macosx_10_9_universal2.whl.

File metadata

  • Download URL: tinybrain-1.4.1-cp312-cp312-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 872.8 kB
  • Tags: CPython 3.12, 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.1-cp312-cp312-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 6f6bb8f641de763bfe9c5989863d8c9577714e30e2c1d7b7ed34f8e502f9b17e
MD5 9c0669288beab88bf12ec2aa843c2832
BLAKE2b-256 1e240b5ab25266357734aebf4f2f10cf0e9d7531cda54e68fa2596eb8be8567b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 347.4 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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5cfd9dfdcf25adfa3c8e5136adb5010627a4cfb40e26520abafe61c93cda0048
MD5 a024e59830c64cc60a6cea95ce34bfde
BLAKE2b-256 ab7b1f3871dfb7e1c84078ac118288f5c4139874db15d140880f77322e385539

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-cp311-cp311-win32.whl
  • Upload date:
  • Size: 285.4 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.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 579e829ce48684b22c38a7292e49db03178e78711338df3265997f6b5b371bb9
MD5 80d753e2da5750a23b33218f3d97a3ef
BLAKE2b-256 e7ff106a73a568f9363003e55bab7c4950c72ee9e4d74256943d491d7b0dfa8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 289f79632c255188e7fb0ebc0f13533e65c9279c9d813a18dd77edde25cf5dfe
MD5 0a839c3d7bf6d543517ea99f820cbf68
BLAKE2b-256 778933cc5eb0a0683f4a76f64b533baca66e0781279e1774aa96d250726c58e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ae5ccdd285f83c2706938e28f437957b1d585bac968bedb2b01e9e8b18882010
MD5 681c328eca064cfb82b981bb44c252e5
BLAKE2b-256 bad23ce1ac3846cc016193cb22c8ab397e3c470b4357f2788e4d43d73430c514

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2b9bfc15f42107d77d2bb80acb8f7bd879784e1542b1517abad30932daf25d4d
MD5 6af3d22b6d15662a0c30d145d29eb016
BLAKE2b-256 f57f85348f345b2292ed9cecbef254599cc2a22abac6ce868f1cb6c298326118

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 541.7 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.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0977a9bd673a2e18213033f47b7c44e792fab5adb2247f9f5ecaf88e991ed9fb
MD5 326fa3c27c79418e05c8827745019901
BLAKE2b-256 b37628a5d66ae163cc833f4f02870d06e42b63e202e6095b01c884850e07c4df

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-cp311-cp311-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 990.2 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.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 5de55fe412fd0261243f70a3a87a486e6cd4874c3ab0fa016ee9f2ef7ba1a4a7
MD5 cccb072932c7277652a680f45a842b51
BLAKE2b-256 4f84a8470813f334cd073ed2e6f93ca7a9255c00fb60cb3867894622e00daa54

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 347.3 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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e67189a856f1c8d9914c4956169a429c9adc3efa95cadfae4db18b0414d3c638
MD5 7bf13f8c6d0d8526e4c46fc83b273cb4
BLAKE2b-256 4db8ca728ce597d952228b05f6a5e272662299f3b2c8e266e5795e70487e9ad7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-cp310-cp310-win32.whl
  • Upload date:
  • Size: 284.2 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.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 95c603a2ece8c1b22c4e3c41a8e0ad78a9e68500f843c96eedcc4dd83af9a31a
MD5 aca8c51fc4b12d585eb3589bc1c20e8d
BLAKE2b-256 10abf3517d6ae9324fd2b341175a2ee9193ce6f7e5ca0aa3b998c98c74792939

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8c40c464bf0d1c3cd0cd281cb88cabad3aba3641c6c6eabead4eb31d16580809
MD5 a8104caf7057f7977e575eac5fa3280c
BLAKE2b-256 2cdfdf3a60970d11a729d8e19e9532bd4658d7d253a98e96338c2798fcbc7274

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a42a97b9597ecd6aa63f1422a95062110a23c791f87008e2152b3dbc25595edb
MD5 d22c37537baecdef183e87cdc5e182dc
BLAKE2b-256 4222780f36925bc35b9cc5e89289d0615835f6e6ea70845ccfc30d1d122ca242

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 99a2a1a5ad9a1c2ab76743cc441e26e994a4287758f4654dcf26785986b1201d
MD5 b175f3b591b86f608a7f6419a480613c
BLAKE2b-256 38b6ac01d233be88ce8c728e9ecc02045a2a5a58149bfd985eebbce14ee3af42

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 541.8 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.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fec782622c8e5dd94bfe3d4cc9261b13506638b34c287336715b8c9c73d93c24
MD5 8dbb25629534f8ca45db1166464c4cb3
BLAKE2b-256 a78709252e08b7b407303b201c9bf242171dbf023dceb45d220313f8226bde8b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-cp310-cp310-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 1.4 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.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b26def7514bc776c63d297bf34ebd43d7a936a790300a1c08d081e17b94e267d
MD5 2af054cb1f4a3575e15b4666d8c10c36
BLAKE2b-256 1f74f51c9f67cb8e84e6c789f89ee8ec1f870b8162ca08438d79c57335c3e10a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 347.7 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.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 05e9fe3659ffa1a05e17e396bd43b802e78886e43b32d55aa7d2dbd0407a0628
MD5 6ab0659aa8ff1a7009ba3e3891a77f69
BLAKE2b-256 ab2cdb5976e901f845b9eec2b8bcf0353c5a9761d9275a616c91c8c76182122c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-cp39-cp39-win32.whl
  • Upload date:
  • Size: 284.4 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.1-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 e9fc01274f5c956857c2bc858b8441c9e1686aff3227ebc98fe4c73766f7670c
MD5 00a9000678e2ffb2a55fa8b82f89de26
BLAKE2b-256 3ebe093fa92c7d7d7cb51153588aa813e939e2fea64ed2384825ff731eb211f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db7d0194b3469f254fc7ac90f184cf3e97d6fbee756f1dc36e012f85474d4a28
MD5 36a3c7245ae1bbf3236b3dbdc7abb443
BLAKE2b-256 2513752b6fe073cb3d6aad19bd43c831a59055452d7f652b47f2f8deaec9803d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6fcf67cd52bb7584ecc2a955aee27931e00ba94f471d920290d304b9b522976b
MD5 0fde796c35ae5f1ef1519e9eb3626281
BLAKE2b-256 69200cec2469d87b44fddaec00f21a9265c33739a30330ce96d76604899a2925

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 25ac5230e5594faeadb5d46c5efca957b1ae53fd4ecfdd97bf50b5b67f642ba8
MD5 835bb0fc4049f23aab8bb6affbcdde34
BLAKE2b-256 8ad98fb4892214ed154e5e2a54d2ad0e121b6240daf2b0043b3b7463c96be58b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 542.1 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.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 857220aac528ff5a5a62ee2096c32cb15e2dbcc7df041dfbc05af6ee5abe3f39
MD5 35c90e42ced6368c3755ea63dbbe202a
BLAKE2b-256 a657545a51de0487e4595c174861d97ae6aac85ebc31582e0cfa5b315cf00785

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-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.1-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 fd5bd79d9958e950fdfc257de4d20f19428eb51329aeb45b8c1891fcc514231d
MD5 c010abb55927a4cec196cc741e1941d7
BLAKE2b-256 49ad58aa6aa897664da816317046e253fd2d3ec3b4d3ebd46143ca70dade3c43

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 353.0 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.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 cd109ad04ea7e43ea13e4354b2aacba0d0b1e48dc0b17fb47ce586445148e0ca
MD5 ad142c2132df16b1331d75bd0d77c882
BLAKE2b-256 e18a2d445621c90898f629840f4af0a7cf6d6a9e503e5ec89e40f6c66fa15928

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-cp38-cp38-win32.whl
  • Upload date:
  • Size: 290.1 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.1-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 efc7368b7c52f522881de9a4746f2ec04951cbf9668a8809b17814f1d182da07
MD5 5cdd61274b3003099772174747a71f2d
BLAKE2b-256 7eea47224d00cd4d582f6b88f5dfd787f7bbe9f7b04881e9ad5609ee37e0a386

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a2758e044058143141471ba28a53502962402cb0cd8ae43f0cf19834684193cc
MD5 cb0932b6ceb6db1f7e91611494537ace
BLAKE2b-256 a5376b1b961d339e9589eeeb1c244ebcc6f254d03645e3fbcf20398ebc5fdec6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c8512b5cfdc2bb9bb6d4511915f72d0a38699862978a89b28800263d9ee8d0a6
MD5 5935bce0035269465fd5373a657dc984
BLAKE2b-256 74e5185277b16adc864aedbb75385b232007f1aa1c63e5bd120ca393dc3562a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5dc32ebe032e4d1494e3c61f82055e2721e1cd911e69928a5447630a6800b345
MD5 8c9395c9603a5104015b7c3423995c94
BLAKE2b-256 0cba7a835891bd28b86557d6a6a7776b7bfd896cd11fd868f2143dce7fde28f5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-cp38-cp38-macosx_11_0_universal2.whl
  • Upload date:
  • Size: 938.2 kB
  • 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.1-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 086b98e96d88f784f10d899e10770ad2322180716c30185c1a8e42605c736f37
MD5 7ff9f9d964dc06d09a246ac37484c212
BLAKE2b-256 b3c3b6ea6f528b8fcb2e247ecc29c8163ac0875ee7d7e5bcc9323daaf49aee73

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 535.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.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 09f725d035944bed366b918b39414046ebac98e078322b9546f7b5e2f196fc86
MD5 ed1d0573ff97c2d4e01d8df19db8ca3a
BLAKE2b-256 1fc8976327a4a8d12f517d18235540435f1441ed1cf0d963587be8161eb5d95f

See more details on using hashes here.

Supported by

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