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

Uploaded Source

Built Distributions

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

Uploaded CPython 3.10 Windows x86-64

tinybrain-1.3.1-cp310-cp310-win32.whl (650.3 kB view details)

Uploaded CPython 3.10 Windows x86

tinybrain-1.3.1-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.1-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.1-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.1-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.1-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.1-cp39-cp39-win_amd64.whl (704.7 kB view details)

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 Windows x86

tinybrain-1.3.1-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.1-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.1-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.1-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.1-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.1-cp38-cp38-win_amd64.whl (709.0 kB view details)

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8 Windows x86

tinybrain-1.3.1-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.1-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.1-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.1-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.1-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.1-cp37-cp37m-win_amd64.whl (683.1 kB view details)

Uploaded CPython 3.7m Windows x86-64

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

Uploaded CPython 3.7m Windows x86

tinybrain-1.3.1-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.1-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.1-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.1-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.1.tar.gz.

File metadata

  • Download URL: tinybrain-1.3.1.tar.gz
  • Upload date:
  • Size: 401.8 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.1.tar.gz
Algorithm Hash digest
SHA256 7ef0c9e13fd56d29eac81aedc6d5ff91d5ad91e9b676a1bf599dcbdd4c860f45
MD5 5598cc2db97ee0436e281bea3b5b9161
BLAKE2b-256 6127be2056d90fdd911816ed52b99b0e4a77d7703b4b28a22ad77b78f8ed50db

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.1-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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 65cad83c11fc35f49136f359d957d080cdba32aceea5d46f4147a4350ba6bca5
MD5 e38d2fe94b568717d01e12d28af6e53f
BLAKE2b-256 1aa51a25cd23f0dfefb690f74f38cfd46c0db725f3d3ee0a288848f90a8c05da

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.1-cp310-cp310-win32.whl
  • Upload date:
  • Size: 650.3 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.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 1da22c1a3c763229f047c369c797d9057291c6c02ae1134abe95fd98313b594d
MD5 36d3c072552cb1c506e67d6e625edee4
BLAKE2b-256 52c625b52a96eb61aaf47efe15c60ae453a59c39302cb7fc611338c7577ccd00

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2e89c420ffd319c825868ef21204a6379c4b7ddff1628d13449144f4994a3387
MD5 83b71037d398718f8f0eec32b63406fe
BLAKE2b-256 db171c9b53fb9e6fb27aa1c88f4f360c573dc39944edeb84b2c425a09cdadeb7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c59e2483fcca31a14628d7190c6c05341c38f019fe837c938ebebca1fc83dab9
MD5 ed29810cfaebf70502089feed3fa0b1f
BLAKE2b-256 b1ff6595589d5dd2e3624a3c75233065a9a96dd96fe205760b41bfeda7a5fe26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2d6aceccad0936432511066891fbc2309f0af20bc058b8a2a304fe8b7d07907e
MD5 ca2ba8660a0e1665529581abe36983da
BLAKE2b-256 8adad5ead68fc50500ac9f3e264922a0440d417b1e38fd9d87209ef5857644a9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.1-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.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6705ee9dde702f51ba3aacc0f355edf65e2b29cff854ea7d3feb0f53da7f7c1c
MD5 18cf9daa2d592ab54ec014efcdc1ea21
BLAKE2b-256 5cd6ade802bab83d73032a6cebc4573f9a7fb669894b425c107d9fc8eb5cc08c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.1-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.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 5b7f384ab5529f7596d97625529ae5d1462ee6626dd50017842f4563ee6df4a4
MD5 85ce2703f18f72ddd8559d8456c0daff
BLAKE2b-256 407e73f75504a072594dd0ca64a47e30bd7885d27b026fc7a7a702c6c1cce8ff

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.1-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.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 18c9231bc93a4841959b88c3432a28768e8130014bf3b85213e5e2b47044a1ea
MD5 1363624a3ede1424e134ed1a7c095a8b
BLAKE2b-256 68e0a5d41af80fbad8e704aa672deea214be7d610dcc1b88abb5da0535946285

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.1-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.1-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 0daa5e0e260d2663a81a268655afefcad43050803a82934386c991fc199d63bb
MD5 6ca2050971ebc28bda63db1315e257c9
BLAKE2b-256 ef3399d0dd2f69c82130155a82107c224ded6d7fdc46e8ae2c385c9ea90bafae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 629d44f1165ca96f8d55fa290caab6670fe27fb73630848db4f753c30dd64add
MD5 2d4208d24d18b8bf18e7561eb7968560
BLAKE2b-256 48f700e4d9dd5a12a5cfa6c1c0184dec2f61249aee9b0f9567b225eeabc9af91

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4de0ad10f54dac3d60b4392f688080e536e72feb326201fda4d0c5b8b31e91e4
MD5 a717e15f0da1235e9526a105991abf78
BLAKE2b-256 3b8cced1581d17c6cf0356ed4f4081b52f61a2e50478d0bc3f756818f74aa72b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2c0d29df70c4eb7ed9e117b00dc5254a1c86cd0a7bdd2e6b43fded328a565abc
MD5 0ca0ce13224cd39eaaa004d114ad804e
BLAKE2b-256 6d9716a71db2d1598575beac583898de9471de4555c8569b5d5f35533fe829c0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.1-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.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ab660cf4f0dda15dbc58aaba392037aa931273e4df2c9fc3aec6ac74724d0570
MD5 d582bd74823ea8486ffcd9207b0e24da
BLAKE2b-256 41e50e5e871d17dda5fb628c02081cf79c631781d4dc89a86ebaef3ddd5cc61c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.1-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.1-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ac43b69d209bc88cd13d0f09e67409df317185f6938da8f47e9898564f753acf
MD5 cebe0dff18a3d4f0e25bf4a3c66c28c6
BLAKE2b-256 24fd899da90ddf95ff5a4b6d31162c8f848ba0e6d3e31e4d459ad8f586b7033b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 709.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.3.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 ec907c8937f072e472d510818b2e7a84a98a11e2f81d696d5af2eedf38ac7cf9
MD5 603a04cbdc4c0a1a2490cbdca484c369
BLAKE2b-256 e9d405b50b0e3278fc663313cc9adf0f465726db50c863024f79c34036d507dd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.1-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.1-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 bedc11ac6faec0f817afb52e224abb8639cd5af0e68ae9b4305f01820e0f781a
MD5 1b6bee6c911bcba7ae9bded12f5e3161
BLAKE2b-256 eef43ff836a8e3e87fbe28d7881c7913450ea05853e92ec25371438f7e85b2bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1ca696e9b3e8ad1bb78ed4d15ed8190c95403f0fc6e1a7fdbc0d5e9606c7660e
MD5 48f67209239dcde9a44be60920aadb8f
BLAKE2b-256 f3cf55067cd9486bb072a3c0863f08d9f0d08a76df88778b620c166ccfba5695

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 17f9d278faa8b9aa0ef306bf8a9769de2b34d55640921adf2a76ab41b71772b9
MD5 2a23b1733a3f086739babc832803fdf5
BLAKE2b-256 e00e24851c427b1ef5987d22381798bd7367312487d0f6bf28cfe18dcbffbc94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 963764fc1cf0032cd2b044c831680efe94b0ad330112d882a4666f84bb00b5e3
MD5 b2bc7520360d0eaaa787ac9baf830c6e
BLAKE2b-256 a279c4ffbc9629dcfee30d55599f78bdac4fdaa8df093de157f99f42df3f7f1b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.1-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.1-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 8a8d7e8abd6cf07e161c3d954db411938f4dace77c8f038a3eb9e4ec532e1aac
MD5 8919722432ec8f6b3860836d08cc56d7
BLAKE2b-256 cc690c2d11373ad6b2462ad4eb4f5faaa68b6164e14e93bfa9afa01f6fea3bac

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.1-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.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5953ecf5658a17ad923c482f277a86f21b6a6d6cf75739f4a7849b887a4a5197
MD5 53715ad84d4846c145f2e5e83f463f35
BLAKE2b-256 b744b2e76eb96eef928a5d44638fb1bfe1e75c1f43fe6a55cd30e6b978277d0a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.1-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.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 f3aff0e305594570310f5af3999428c69784d536ac122aefcb3768826008e6f8
MD5 48dd3c36ce9712831dc56397bf5681fa
BLAKE2b-256 8a7aa00c715e2bb348193ee4fcdb90d876f22059ab5d8b5eded6920b463055b5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.1-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.1-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 3f7f44a1f0fc156874b44ccd4a5932caaca2a684ebb0cebc3f43e2451b30a82c
MD5 07f43f676fc7be8b182293b7e6724cf5
BLAKE2b-256 c085ea99bfd8be3e1dac03ba4c6c9795cb91ddfd9d5e39256e011575eabe1034

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 233fb68113331da047b8804c6481bd24d7b5cc02bbe138cb0adc806feb957189
MD5 4c249952ffd5ed36d9955abb55156ff7
BLAKE2b-256 d62bbbfa7149170f0d3c2200b3c518580ccfa7b6cfed1996149510a629d13409

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 88b708b35b8e5596eb4d4339a8875fb90f7c2e1cd743044eb2ef99c3f4bb6a5f
MD5 6d1d640aebfece24b8a8c298843e766f
BLAKE2b-256 223d0a8f0a526737bab4c6d27f66712e1be3ed95672675643a37c109cf57ce38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.3.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b5509c5fe7b2fcb16dc6a7453523b5bec8ce950d1bb7fdc1d67552732bd920bf
MD5 bb57d548bf5f9ba2209e7732b3f2ea84
BLAKE2b-256 27e8d71af5be281bb795654dbe942646ce83da6681ecb5f95adce9a0a0a76bd5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.3.1-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.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 51aec8dca787544641ff618ffe26a5bfb35ef442f54a6880f4bd6df106649f80
MD5 b351f1f560b6ba9d56de9370c226ff22
BLAKE2b-256 4adf72da675037b7ae2e85faa7b303e250952a3f9295ecf5e2cde9ab801e2dda

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