Skip to main content

Image pyramid generation specialized for connectomics data types and procedures.

Project description

Build Status PyPI version

tinybrain

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

import tinybrain 

img = load_3d_em_stack()

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

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

Installation

pip install numpy
pip install tinybrain

Motivation

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

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

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

Considerations: downsample_with_averaging

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

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

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

Example Benchmark

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

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

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

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

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

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

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

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

dwnsmpl mips sparse AVG (MVx/sec) MODE (MVx/sec)
2x2 1 N 3868.58 560.54
2x2 2 N 2691.03 482.34
2x2 1 Y N/A 136.87
2x2 2 Y N/A 80.00
2x2x2 1 N 4466.7 337.08
2x2x2 2 N 2855.5 298.66
2x2x2 1 Y 1400.17 4.76
2x2x2 2 Y 1270.18 4.32

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 502.77
2x2 2 N 430.00
2x2 1 Y 144.40
2x2 2 Y 68.37
2x2x2 1 N 1969.19
2x2x2 2 N 1783.39
2x2x2 1 Y 7.20
2x2x2 2 Y 6.56

Considerations: downsample_segmentation

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

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

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

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

Project details


Download files

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

Source Distribution

tinybrain-1.2.4.tar.gz (390.6 kB view details)

Uploaded Source

Built Distributions

tinybrain-1.2.4-cp310-cp310-win_amd64.whl (662.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

tinybrain-1.2.4-cp310-cp310-win32.whl (609.9 kB view details)

Uploaded CPython 3.10 Windows x86

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

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

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

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

tinybrain-1.2.4-cp310-cp310-macosx_10_9_x86_64.whl (803.3 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

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

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

tinybrain-1.2.4-cp39-cp39-win_amd64.whl (662.2 kB view details)

Uploaded CPython 3.9 Windows x86-64

tinybrain-1.2.4-cp39-cp39-win32.whl (609.9 kB view details)

Uploaded CPython 3.9 Windows x86

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

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

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

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

tinybrain-1.2.4-cp39-cp39-macosx_10_9_x86_64.whl (803.3 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

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

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

tinybrain-1.2.4-cp38-cp38-win_amd64.whl (662.0 kB view details)

Uploaded CPython 3.8 Windows x86-64

tinybrain-1.2.4-cp38-cp38-win32.whl (610.3 kB view details)

Uploaded CPython 3.8 Windows x86

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

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

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

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

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

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

tinybrain-1.2.4-cp38-cp38-macosx_10_9_x86_64.whl (791.2 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

tinybrain-1.2.4-cp37-cp37m-win_amd64.whl (644.8 kB view details)

Uploaded CPython 3.7m Windows x86-64

tinybrain-1.2.4-cp37-cp37m-win32.whl (606.4 kB view details)

Uploaded CPython 3.7m Windows x86

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

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

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

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

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

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

tinybrain-1.2.4-cp37-cp37m-macosx_10_9_x86_64.whl (779.2 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.2.4.tar.gz
Algorithm Hash digest
SHA256 2ff9a4ec4e9a51aee017d65c9d4dfe54f6c49dc6a0efdb95656ab66a1e7ab03f
MD5 7c793db9d2fbe70483f9066aa4ba8575
BLAKE2b-256 766c91f00278e8ff7606384f8ad5c94ddfd0e898aae875591204a0f08ba7cd41

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.2.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b2a64c14758317ee1c31411b03db4fe126722067278a3ef49dcadfe9c09f9263
MD5 46bf973e326f0e2f69e47c8dde99a2bd
BLAKE2b-256 0dec1553200cca0eac7f80b0e6af507634f74c73ab3f4f458ebe40541ae962db

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.2.4-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 bc0e73592898c206b52bf1f15afcc0ef8a3dd7eacb2ca99183f1f0edc6f3f170
MD5 2cd67c3876706c1f21ae52225a9fff18
BLAKE2b-256 1493365e797fbe8351f42fc76a7a4c977348b61b18d023dc78eb0020182be4c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.2.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 84896e1f1e6008115ce89b2d10f9f190903c4fa2cdec1c8193c890dbe6eaee28
MD5 132c233fa9c1ec1d10b88ed4d187c999
BLAKE2b-256 7caddb9b93da7d88d8bfd1a6ad311bb3f10b7785151b3bc5db014a9c0416cb9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.2.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0df3d883e8f172a9059351ce82d0633e019a76158af8e1c3c57a3fed5fd891de
MD5 eb3cd3778606475ffe6900fec973db8f
BLAKE2b-256 ac2bfa275d85bca3881d8d79ce6e4ab5fa9b72792c2dcb6b75547a9667a538a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.2.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 206a82c99e567185bc0eb16ae57b86dccf7a073c9441a8e3791c790fa5433803
MD5 bbeab301446a86cbdae40f0b4d25e714
BLAKE2b-256 d57bc21a497d2d18e8ff1e9655a89e4d394c71532f03d61163773bd8d758ec96

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.2.4-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e29b7d498ec35f7160c3505dcbb57aa215a82efdb0597f79ffdb194c23b1d79e
MD5 c41dc5331683eac7efff375bd88c8fec
BLAKE2b-256 38911c0731587a9ddfd537f75306ef9129fc3dbeb12153f4cf356af3d6edfec8

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.2.4-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 4bf7060efbdbf529ab340bc9569e66a048b1c80790fbc09f521db93dff6a6122
MD5 c57ea2221832d06718068c7444330d1c
BLAKE2b-256 da4a19d104413228ecd1cfc952ee68156ee99fbeb6edfde2bcec67a7f5ef9602

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.2.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 662.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.2.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 fe47ab2ee4b8e14363e8caed4ad49488b9dc1fdc552b637e6ecb67e83fa9bd64
MD5 4486acd80e7bd304e7df85a0b9111e30
BLAKE2b-256 db70b067843d6e334b73e65f74e60c1d44ed7f812a3242dcf3088a1fe1481360

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.2.4-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 c892562fda52fceb9e4b220451f1dbd628e8482cd7cf51afb5fc1582d9c54e5b
MD5 a70bc656e08ec59f6085ddd810d811bd
BLAKE2b-256 d7e887e395e56828d3ea8ec5ccb8d739f5445c21d340056bf3d3d8d87ebcffbf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.2.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 55efa9cda53f6ee79c3f9b91055c68fb023cd5830461dd9cc83c673437a1f5ca
MD5 6acb0647439f443dceebaea214f107ab
BLAKE2b-256 8f034aad2752c773f96edb877cb65195eba9a4de74abd89949d31ba6c54e9ae5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.2.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 29cefe84c187ff96a2f6e7725022e1d8ebe573e8cfd03cc6b9722e6d1125c820
MD5 774a9e7f5e7eaf32581976c7cc653e9a
BLAKE2b-256 380f797ceb73745aefb7f6da5acb5ddd58cb1a32a1c24c2d2e742fd24d7c7758

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.2.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9e92c52285a4cb0e8201d705a782bc5efe2cf774c38e8e9a740b4bf7e46e8499
MD5 0a0ed51b05199f32489b507351f5211e
BLAKE2b-256 d08edff2673aa8b993c318cc0568f74f9fc218511dde9c4a0627cbbc358027ec

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.2.4-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 76376aa2b24763b7ac1f09bc0f133d74e09cba61f296ef7b8c5fd0d3ff1a441d
MD5 937cc3be6a6fc7d891c92cc1dca97971
BLAKE2b-256 d73cd40aad52c30d20f305dd707d73e27aa3cafe549ab03a3122667627645bb5

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.2.4-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 c2796b29c1366505c8529dd111110c5d758a1c86c9f62beef339f5c7d666140e
MD5 9ec1a96c18ea8538c17363eacd395bf6
BLAKE2b-256 c89ffd683496ce7fd6562970cb08022150926c6233348dde485986613b458823

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.2.4-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 662.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.2.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 7a86a6b28717d58b7d62281208aebffbee20625a9689bbbff7e6478453135aa0
MD5 d89c308265ad29f5277f390366f4d7e4
BLAKE2b-256 afbf3d1c6b635dc571c844bae0bf5ee5255859693d89d750b8bee801f73f453c

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.2.4-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 fe2d8b6b472bd11a4f3d7b221cd3af3326934430830a7af235da9e21c07f73b5
MD5 c9e88622fafd79401ab85b9b7f965da0
BLAKE2b-256 a8722b5111da553a56a2ddd37a77b55f1a3cbfd71513d7e78246333cb337cc97

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.2.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e8b7c0e95539d699172c21f878ddd5edc4ffd14f191379e55ccc6991f80dfb74
MD5 51a72b7683afb8df592dfd83d9124140
BLAKE2b-256 2d885e35525be129c2e3cb65586449f63d76260282ebcbd5735f2bfa8d4cdedf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.2.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 07d438ecc29a16133a9598f45f2118820947142e79eb5d05ca0f03a7f8d076a1
MD5 1a4328d33dee9b717c5d33b9809d3a86
BLAKE2b-256 7984c3c2594b3fdfd68e8aa5618f2e97048082224b5e82298f04a6fb34f39412

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.2.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d6d0eee91588f33c53f0c2a614e77faf6d22e0e5f631dbd9042927aeb0274432
MD5 b96d080d6c14c5b42ac92922c8f480a0
BLAKE2b-256 c3fef7d8d6de8d4d7516e9acb9fbbb79f435aa9fb8d2866c0e60f535aa0d083c

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.2.4-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 681b9d353c7c64d19b37b25a6d0e351b96078d817eb2b5d8c7033d57a9e6a52a
MD5 627e98dfc9a226d4f79c65b24f345bf6
BLAKE2b-256 85878250976717b19296bd529a34388a631e6d939b76693705b16b417e4cacaa

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.2.4-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 257d379aeb4cb0489b17cffc2652ad5a8b3f79ef078dcb6131e00ba01ea7f8f2
MD5 2fe26ffc710ade301973b1cc70522666
BLAKE2b-256 732edbb90662bbc6d5e645df2f15038e1405b007e323c23be8c87a34cccd7ed2

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.2.4-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 ceb7b8d854c5f0535115db47d12a73d75c9655d7db1ed1f9f968be988637d9f1
MD5 29223279def26e6390e75b5090899da8
BLAKE2b-256 7a1e3b81bcf109d878fe538ca3fddbb32dbff50188c0df525b089c1e5753e25e

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.2.4-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 66efaed60d1b90e17830ed7c7ee9b6dc23775cb740128eb75899805d6b58b200
MD5 08b4012e2a73f8fc3d84bf145bf65167
BLAKE2b-256 4547dbabdbc392a96e2c3ffc4e7c1eafc30310ce8fee241d077368a5d7c5e090

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.2.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 278361ea6c8c9e62144b32e2c16605c27ead839b8b79e8eb486807abc7326d32
MD5 fa845b5ecb0dd9d22de2ce1596b66faf
BLAKE2b-256 09ed3dbc185ba8784460a0708a7bf0b06a653c98bff1e676489021806fb4f069

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.2.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a5fd066ae3763e7274bdb03ad2611a20798974ee957c668797de5cd09f596ca4
MD5 20646dab8e087a30c970d25832e7fda1
BLAKE2b-256 a37c75295f06cd312009607db5882190e3ba6144be5436c070db0dd0d386c6cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.2.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c7163a201eb38a53d9891ff75fd9633839ff064972717ef384222809f95223b6
MD5 98d9e16ff4e954d9908f68531704e872
BLAKE2b-256 e9a428d02c78e258ee8752f501d4f62b2b6640ab8f4ebe834ac8715756fce942

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.2.4-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 779.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.2.4-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6b1c37d69468f0117f8c9f1c15e638ec880cd3f75ab4f65bbfc5990aaf3ece80
MD5 328407bd0c1a0d62832c3777f51f5bfa
BLAKE2b-256 3ece7f6e84bfd6dbef305f5e99a87c7e715cd2fe456bbc6dab4695e1a72cd2d2

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