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

Uploaded Source

Built Distributions

tinybrain-1.3.0-cp310-cp310-win_amd64.whl (704.7 kB view details)

Uploaded CPython 3.10 Windows x86-64

tinybrain-1.3.0-cp310-cp310-win32.whl (650.4 kB view details)

Uploaded CPython 3.10 Windows x86

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

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

tinybrain-1.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB view details)

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

tinybrain-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl (928.2 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

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

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

tinybrain-1.3.0-cp39-cp39-win_amd64.whl (704.7 kB view details)

Uploaded CPython 3.9 Windows x86-64

tinybrain-1.3.0-cp39-cp39-win32.whl (650.3 kB view details)

Uploaded CPython 3.9 Windows x86

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

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

tinybrain-1.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB view details)

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

tinybrain-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl (928.2 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

tinybrain-1.3.0-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.0-cp38-cp38-win_amd64.whl (709.1 kB view details)

Uploaded CPython 3.8 Windows x86-64

tinybrain-1.3.0-cp38-cp38-win32.whl (653.3 kB view details)

Uploaded CPython 3.8 Windows x86

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

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

tinybrain-1.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.1 MB view details)

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

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

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

tinybrain-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl (924.5 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

tinybrain-1.3.0-cp37-cp37m-win_amd64.whl (683.1 kB view details)

Uploaded CPython 3.7m Windows x86-64

tinybrain-1.3.0-cp37-cp37m-win32.whl (640.8 kB view details)

Uploaded CPython 3.7m Windows x86

tinybrain-1.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

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

tinybrain-1.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

tinybrain-1.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.8 MB view details)

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

tinybrain-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl (901.9 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: tinybrain-1.3.0.tar.gz
  • Upload date:
  • Size: 401.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.0.tar.gz
Algorithm Hash digest
SHA256 155bfc9e52efcd8ced5bcef67f4fd2154b7c1dd3075765a10f3412219713ec8e
MD5 436a9b16226229a626a78c8c1dbd17fa
BLAKE2b-256 349b3d64eedea64e128cfd32113bd2236b7a5a078d6be5dde50ca9110842ccc3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 704.7 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.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1d939f21bbfae0a5952b9dfc8e1706321afee1067609bd86ea44ac6edb2bbb4c
MD5 45af2a04ab8c1144128b8e4666bd5ca6
BLAKE2b-256 000c43d05ca7d0378b7e7220328fd5b7074970b4ee36aefcad423208a91a6acb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 650.4 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.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 4bdd7e53a202a835d2344f1413af2724a2547782ed09d94cc574ab11ce1567b0
MD5 9688edd8f3f30668204602135eb4189e
BLAKE2b-256 b9d9ada2372a8785c500fff6b3cf0402a5a0ff059dfb4a9204d8128f7753386c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 54c9917e9df82397b0a3d24bfda4d39b5c7bc99db4a42b30771320837ebde5f5
MD5 d9854b579021b7b70b0357d5e73063d4
BLAKE2b-256 0bfe8a4196848a808d67c5687ce3d2669487006cd967558e3f1bf477802d9a10

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 23a938c8d56b67a943eb4411c11857204cb415103856f0741e075900a3ace8fb
MD5 b4cd20644bf4de98c9a853cc48919b7c
BLAKE2b-256 0b0c2348081f36e82fcdefb7ebd81f026352e83cf90f9c99bc1fb9046a0cab43

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 517c636f647a685ec22b05df5b6b58d6224f0cc11d3a13ead5ce6a47eab69846
MD5 5e8b6db8f681b1ad190749a76d86ce01
BLAKE2b-256 b0d95a3a06a9c221492f424e9ecf2d630d97ce5a72e05d3c29498ffbecf0d1d5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 928.2 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.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4dcaeaa9e30e98805319959ddcf5e33152df5473f3e2fff258005c6221aeebe1
MD5 9a90f09013748155c22933c323fab673
BLAKE2b-256 a858fd2dd110b4a4513fd937f88d051dbd7a95617fa0703da85bc4133ce06ab9

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.3.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7092624cb7b73587f274a1ae28d57b9a2ec0b2794eabd78bf722984248b6622c
MD5 88a98a45d9774dfbfe15a2711230e5d1
BLAKE2b-256 7afc16ddeb6698441fa5ba12b47c3e919b198a0c9f5e1809ac1757795db2f09c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 704.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.3.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1120dc4a152925a215636f1ccc21d8665e86cd10f10a9266fde20ad053cac158
MD5 69c9d5fad3eedca7034e525d244acf63
BLAKE2b-256 8f935c3d478e692e5715748ac74b81b6003d54a9432906bb0d14f24bad2241ef

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 650.3 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.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 17bd40f926aa6fbff638f98f11a350330b2e98ab362a20a0542729f4c5d60c0c
MD5 9690a0dbe3f147787ee7bd8f0c40ad19
BLAKE2b-256 21aad54e7caa94b5c7057d67bd66f53a5d582cb43930495527520f0804f7fb60

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e3cb3ca4d396b29f2e2459ca927bd0e9c069108c97b5187d42fbde85d038b180
MD5 1a94f54a877cc761c939cb046e83b171
BLAKE2b-256 65b77b620abe9ca6bfbf72590361913739b2ade1083ee2bf75b6ec3a159ea4b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 88ef95419ff0fce6d351e86862f92004fd814a6f7c28901dd87edbcbe905fd62
MD5 538d43b40a939da1c524ae708489030a
BLAKE2b-256 e1aaf51a2ed99adb7e25d7f562950a7d46d89d938f01da1a47925b52cc7ca41f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9e7644c6c4d7717fb8d59354dc2976e791bf790c4d9ff55e8ca6356083928344
MD5 e25ed1e0d268111ad7a8f987e22b545e
BLAKE2b-256 701f9594f91b7c311db49b0a61c9ef089e215ca527432642c9abdbd043392bc3

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5fbbb29044025c25d99ab714280c6d7f6a1738d015a96ce1bdfb36c53e2d9b7a
MD5 afd571763a4e5e4d1f3c803fb9b8ca5f
BLAKE2b-256 df3cb6b2ea0cba473d71156fa3896840dfa3b3e2e1be4323ee94f7fb1d3957c8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.0-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.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 6ab4852cd5946ecd301703d9565da00a477a2bd385ea84a64556381f64781ff3
MD5 6546c9d2552f95ff1da1b08436b98f23
BLAKE2b-256 5cce21b6227c9016ba8d32d41409d4a1df685ce04b7584aec231d251c2c2fb4c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 709.1 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.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 480dd03af98460d8fbf6decb0a9a4f264d392079f6c572efc6b33ade47afc2c6
MD5 927f4c9f06f811cfe6f0dadeb1f9892b
BLAKE2b-256 d274124d52d5deaa20f949b32551c7dbe11a2bc5cd7b19c688913a611637d0be

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 653.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.3.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 440925f69d2ef872c3a5e0ee6ac2edcc67561775e07e65ddf1b5d22a7a560ec8
MD5 b4d9e52aaf6d7c1dd5275a8e7aa392c5
BLAKE2b-256 60f140804e030539165bb38450c6acd3871982d5497990e7aa8dec09f6aa6cf5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5bb6e651e03736d5fb4ca6a4d0f59ebd8c6605071273b0a63ed242b6ca912085
MD5 0c8c06223d8a0fb09d8d2bca6d200270
BLAKE2b-256 8c2a6bceda93594105d70f26a925b6a865f8cd12dc977b25127e3fe519c2c423

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8045b2367b41ebd2f5d152bce37efe0c79685b11099f34fc4c2314f1fc0bfffc
MD5 50d80833ce4e96591498151e8258d4ee
BLAKE2b-256 15c21967ba5499795d60154e33becbb517f804ef997f861cef22df8f8f5d3d2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 812755d2082fe67443bf0c45ca1d3f687a074b725aa8112c0d40dae880aa7f79
MD5 0800033a4f68ef9d6c9f162a85628502
BLAKE2b-256 b37d9fb913bf00ad79ba8882caee565208e8c027073828b2aa477d98c9dc6c55

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.3.0-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 5a54a5e31b58d8893f0d8e3401de375907be75cb833dba92f18195c0253ace99
MD5 9aa6c3ffec31fe4c9ec7048d22d386cc
BLAKE2b-256 fc5ecd36de0cd0a88f666fe6b977e22c925240a0769d998eaf844f301585afe8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 924.5 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.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e87baea17a2ea3740ffdf58356b1318226f0a2b947e6788821dc3348696c719c
MD5 d339b4dfdbf8d691f6fa963154e055ea
BLAKE2b-256 8c82c8fbe0d345ca7d6c839e7c51def2afc48773f40fff4d1082001e0d6cd782

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 683.1 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.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 02ca08db30d7fb0c7f6863ccdc77ef9a0773ab535294d7f1cc8f389a7386fc95
MD5 483d0c37bd2b0a7d9026b9ad004ae2d2
BLAKE2b-256 b50c300a5a1c9b95b23db0de6bd3010124c373244aecc41a0515d217cb229c29

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.0-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 640.8 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.0-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 48b732b48d94ea9039e23fad7dece930caff7e49c92f39daa0032e1f4dc72b50
MD5 ac32a2aabe038ec31325d30640efac31
BLAKE2b-256 4fa6944cd74ef6d6fb01458948ca210914a63d91c0b977bd663edda003ec1e54

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cc68a5f987843a5ad70f31a436fb3f6e8edb8ac491925edf0266f6c927c67d2b
MD5 8a947b8812a65711277e1946d3be4d75
BLAKE2b-256 3be431ba721f22379bdb25fd8ecb3edf99ac23cc1d75f8c4c8d9c85dd2cbb971

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2c17f67476183808287dadc6c96e1306b38c3146d79a7f4bc87387633003100d
MD5 b55051b477f09746784d6b75260612f8
BLAKE2b-256 dde1d730bba06f43312d3ba4669d3b904e5ab1df271b949305e579f056d1d810

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8d62ec071449af44ff3c624313f95a3b6749f3ba4a8d071e58fafbdb7e7e043f
MD5 9f9a1a4ae7b26e6510ba14a2367c039a
BLAKE2b-256 9ab7314cef6182a8e589f76c8465c90cd674638ddfb1c38ea1a9b9b232e47406

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 901.9 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.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8540d6f60c8781eefc440f288d0747bd2f2c286c1de7a6655f7549f5b9e8f9b4
MD5 a976ce21f3e721aa2a21e62bafd7bb1f
BLAKE2b-256 1a1bf4578ff73111f6be2008d38a392eac73662a972437fe204b5d44bc46f5f4

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