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

Uploaded Source

Built Distributions

tinybrain-1.5.1-cp312-cp312-win_amd64.whl (320.5 kB view details)

Uploaded CPython 3.12 Windows x86-64

tinybrain-1.5.1-cp312-cp312-win32.whl (260.6 kB view details)

Uploaded CPython 3.12 Windows x86

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

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

tinybrain-1.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.9 MB view details)

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

tinybrain-1.5.1-cp312-cp312-macosx_11_0_arm64.whl (381.5 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

tinybrain-1.5.1-cp311-cp311-win_amd64.whl (342.7 kB view details)

Uploaded CPython 3.11 Windows x86-64

tinybrain-1.5.1-cp311-cp311-win32.whl (284.1 kB view details)

Uploaded CPython 3.11 Windows x86

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

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

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

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

tinybrain-1.5.1-cp311-cp311-macosx_11_0_arm64.whl (392.2 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

tinybrain-1.5.1-cp310-cp310-win_amd64.whl (342.0 kB view details)

Uploaded CPython 3.10 Windows x86-64

tinybrain-1.5.1-cp310-cp310-win32.whl (283.4 kB view details)

Uploaded CPython 3.10 Windows x86

tinybrain-1.5.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.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

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

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

tinybrain-1.5.1-cp310-cp310-macosx_11_0_arm64.whl (391.8 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

tinybrain-1.5.1-cp39-cp39-win_amd64.whl (338.8 kB view details)

Uploaded CPython 3.9 Windows x86-64

tinybrain-1.5.1-cp39-cp39-win32.whl (284.0 kB view details)

Uploaded CPython 3.9 Windows x86

tinybrain-1.5.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.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

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

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

tinybrain-1.5.1-cp39-cp39-macosx_11_0_arm64.whl (392.5 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

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

Uploaded CPython 3.8 Windows x86-64

tinybrain-1.5.1-cp38-cp38-win32.whl (290.0 kB view details)

Uploaded CPython 3.8 Windows x86

tinybrain-1.5.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.5.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.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB view details)

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

tinybrain-1.5.1-cp38-cp38-macosx_11_0_arm64.whl (396.7 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: tinybrain-1.5.1.tar.gz
  • Upload date:
  • Size: 42.2 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.5.1.tar.gz
Algorithm Hash digest
SHA256 3ae4a7882b3fdc84e5740c3860af3d821a2d2aabbd62c955ad2316dc7c507c7e
MD5 99107dad717d81c764b2e48a4b917e3e
BLAKE2b-256 7822d0ed0b949daf54f52c06370d959132651e25a0116e6f09dd38cb9cdfc61b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 320.5 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.5.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1c5b70c5905c3972244074eac61734c339d9a8b1c7f13ae8961df6f4ce617e9f
MD5 edc956d153c4bb612058b819cba9c380
BLAKE2b-256 b38b67e26dc45cc50f8087c54e5ffed4506bf3cd859cda3d6c7f152645fc5651

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.1-cp312-cp312-win32.whl
  • Upload date:
  • Size: 260.6 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.5.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 8f2daf5e1cb93cd9b1e0885c068a34594e16ff5d194053069ddd07a0e153c5ba
MD5 c8773c9e244f93a58c395235b435e746
BLAKE2b-256 c1f5ff9a44edc0c471c5f50d0913f02fc06d5757adfc722a9a71028aeebdf34e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7a7980820dbb5a6d282b8df5340e25574cb75515c882d950832c7bd3d0247f4a
MD5 4e7cea42cdd27be18afdc11570429526
BLAKE2b-256 ee78fde712427a4e1dff1532eb9ad3a56eaaebb49683fb74a6322442439efc89

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 345a9284e9f36299484e39a574ca859579de87d316d9aa7065f32d56bf8e2aa0
MD5 2ff44ce7e565ffbc44bcc9d7c3b29a82
BLAKE2b-256 3cf7d8a85cc1efda44e8f096f1bdb22d90533737ca8c06d7a46aba6a0b9cf710

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 bef5fe196b574178dc3747f2727447b1663cd9f656f6274cc81b850152b9e468
MD5 52ca756f02ea3d49bf4c21c65a103c28
BLAKE2b-256 5ea0d9586910fc7fa8b872c00bd7e7b9017a17ca13bebd8fa72b1b57766f0504

See more details on using hashes here.

File details

Details for the file tinybrain-1.5.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: tinybrain-1.5.1-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 381.5 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • 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.5.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 516d133247a445065bdae415aaada9d613d3278de504b4734ab116e92ff963f2
MD5 4cd5693b52c3efc9546648f23790023c
BLAKE2b-256 ad6ef343ecf3d860455e0288b9ad626e2019c651e3b4acca0f6b80fc9c49b665

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 342.7 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.5.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0d9ea261d505bd7294b6b61ca688e8c1df46743ab3d99a726729fb81ab73d905
MD5 037dc2295f047d54506870c614e34884
BLAKE2b-256 eb67d069c6cc5d65afd636398fbc9920875ba217a65141e6296ccd4b1041295e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.1-cp311-cp311-win32.whl
  • Upload date:
  • Size: 284.1 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.5.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 f90c8dd905c00ad5a38c6adc3bc45c3ef91a3a21ca61eaf4a77e0d15a6f3ddb9
MD5 20209b87c10386c44592fad797eb7883
BLAKE2b-256 a58263a19044513128877afc32e96928fa7471034020f860f5a933edbdf60de4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 32d036152e472dc84d9a64a40b3ebaa170d09c41dcdcea12629d6d7b846b8053
MD5 80b071a00f4e3f44c4baaebba6fb2b7f
BLAKE2b-256 6c7d31e51da1403a39d4e2de1ca6c9b2298a818c5b7806462650415d2ec640a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4666e66617b358e9d34051d10becd2b465987822ed972878647243b5ce14a329
MD5 bbdc91dfcfe8185daa40fa72bcf86304
BLAKE2b-256 292f9e5415dd53927a8295ca85c51ad7bdc5f878ec91c4056838ac4cec15d8d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7f175f606f4af996df33baf06783fcdaa072113bcdb752374e7cd62b8c8b89ed
MD5 0c407dd624438a58f4b8e6d694a533ae
BLAKE2b-256 6f085d80c2642b20ed86391bdec09ad2d790e424917ba4918686147eb9d9b5fb

See more details on using hashes here.

File details

Details for the file tinybrain-1.5.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

  • Download URL: tinybrain-1.5.1-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 392.2 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • 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.5.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5ff90178ace3567e0d440d21753947d48a18e9b6435c92486bbebfa54e1fc549
MD5 6d77123463c1baf1bb952940b362793b
BLAKE2b-256 885145aec2a3b7ced463700e1bb18c67b9e8f05a8994685590850773efff583e

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.5.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 698b60507cf44422129c7733694f09e9bfb9bb3083b659f3c6abe039537dceee
MD5 69b78324b06e6181f1d7289fec2c20e5
BLAKE2b-256 2bcf66581953b05e7dd17d16639735b6734ed479be3b0f912907294d45579fdd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.1-cp310-cp310-win32.whl
  • Upload date:
  • Size: 283.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.5.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 163865107b5e69001755ae2ac62ca23d6b15aa8afab4ccb9d7a836c1d6d83faa
MD5 48f5a284b22e4641cc12d2e053515a65
BLAKE2b-256 630e9de9f5d755c325efaf14492c88ac9783e5af4ebefe14f8c46fdeedd849d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2cd8cdc9601650482d355a1824092510561186b4057184a21b2967acbd58d5cd
MD5 383b3535763e37df10cb4666518497b4
BLAKE2b-256 5ab9d278f9e7fa11d39ad041e5635e2831cff06ce37cb530b2cd0ff70076b15c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 94ac1415c7e669286d4f720c95bb8f11c9b0f5b69e9c7f5ba42d0f731986ddf9
MD5 6e79c61379ced2f45d627e33845e2f36
BLAKE2b-256 44347e1634fab55253576ad7e60f6fcd954926572f6da478e52db68c2686cf1e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9b520d63ecfc7503b60d3dfafa4450b4b22844ba53b3f98e42d06d1f0358ce31
MD5 c4dbb06bfb234df1035a79a0865cc7ed
BLAKE2b-256 4c68564a0253a08606cc215c653583c8678f73ae154ad8466bfc1e1b80615389

See more details on using hashes here.

File details

Details for the file tinybrain-1.5.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

  • Download URL: tinybrain-1.5.1-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 391.8 kB
  • Tags: CPython 3.10, macOS 11.0+ ARM64
  • 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.5.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 da34b81d1f40a501972f2089d82feb0f6f24c9a62e8da13c4b19dff30cd544db
MD5 6f84f3adae2359fa5951ea17891995d0
BLAKE2b-256 d70d1d23008d9b88d6ea3bcecd19412630ad73ba3c4d4cf9ebd8bf4a54812559

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 338.8 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.5.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 74a9814878f1d73f4809d1204f2e925a08d7dbaf06773c785b26b4c5b45e3553
MD5 c7dc26dc277720a9665911d67459256b
BLAKE2b-256 d8dfafa32f5e705b9a2c9318ceccd635f24dc13164f3b8fec97c7b1dc5ef77cb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.1-cp39-cp39-win32.whl
  • Upload date:
  • Size: 284.0 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.5.1-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 1f458d9df357ef16be4477851981150bf8fc8a6208567499745d29d83be2a96b
MD5 e0b9ba54e4191bd5c152d4db3950edef
BLAKE2b-256 a7d5496277f4c82df47ed7a7b8e882853d21a203ba77a3aa8890947cc0a548d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b1aa79ba1e7af21193ac7eb4257a6748649df1310aac3e5a26d8533d430819bb
MD5 b3c4cadecc9638f594a0c0d45e58c507
BLAKE2b-256 fe4466b93e0a914f06afe439226ead1bc953b6698194bc37d4689ef54ee2ca8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 413096345654903cf49f26a24ea3aec8004ddbd717ad383acce2468b75d66e36
MD5 630c83b085d6aa094f4c7736750df2c8
BLAKE2b-256 5354e8e660b7830d15774032bbb08df32a15717d6885f92c786b611c40d917bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e8a36b8cd3c4d58f9b0314a624f9f6f00b8443f03ef812dc46643c5ffc6fa9b2
MD5 7e909858098fa7e0b5da35204ba3ee5a
BLAKE2b-256 9c1bd7722ac66aafd4be70c76b8a650273553f3cde2512be0630a65e17909c2e

See more details on using hashes here.

File details

Details for the file tinybrain-1.5.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: tinybrain-1.5.1-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 392.5 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • 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.5.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8183663bf2ad259f7e5e6801e3f424d823a2ff8f1fde248e7bc2615b1f85077a
MD5 6446201a60300eb4dff49ff8702e7e38
BLAKE2b-256 ce6d0520f6183928e1c0b9836412aecbbcdbec66e3598f82bcb02796e8128e50

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.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.5.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 3913d849dca971e39a7ede7d134e8843fd15bc865d714004ec8f41b56931bfbb
MD5 22a6512ef103ff733a25571c10afd14a
BLAKE2b-256 cc81b0844cdfe879ddff8cce69ce95de6764c968edc6ca7e04b3305059e79cab

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.1-cp38-cp38-win32.whl
  • Upload date:
  • Size: 290.0 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.5.1-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 8f2322a4495fd8692863e7cc3d06b9c6cc91f5d254aa9896509f7f65d9ab47fd
MD5 736a882ec465b5c2a3b24149adc04a31
BLAKE2b-256 d6fdbc7fa4cc241f6c973fde24699c9b5016d37378bb8a88ce1582992670490b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 900d53ef106f377183be218f67ca2ba496ba564671945b9bac36e3bc93aa7169
MD5 9d960244fccf9e1485e069dda983704e
BLAKE2b-256 7cadc5b49ad5d7d2d3f8579681d082efd8d71149fa1b03d433556726cee409e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f7a97a3c53b090cd99dc2a6b43136d032ccba7256db79ae88605fc4c0260e6e0
MD5 26a45fa856683ef0fb9e64afcc50a85e
BLAKE2b-256 10b0503729ee7c82e99d9f5cfed652c53c78bea1ae2c02a6329c58ea1cfc3c61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9cea6384b0f24d7a8874796889b7f11c31681f77fb58fde130db9a40a27a240a
MD5 0f6af3ad74bdcd0fd82110b3172d1c09
BLAKE2b-256 8c88fd565851727050129cfd7d9dd5d3d8cdacfac183be03858fc9cd391726bd

See more details on using hashes here.

File details

Details for the file tinybrain-1.5.1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

  • Download URL: tinybrain-1.5.1-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 396.7 kB
  • Tags: CPython 3.8, macOS 11.0+ ARM64
  • 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.5.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 de47ec19f41c68023553ddc1ca1cd48780b70e6edcd7ef8f7e8fec2586c50379
MD5 7bab4d71475152d5725a2399d13d0c89
BLAKE2b-256 c5e6dcf7fcbb71583becbb70f80a52bf19cc22a22c4427200be7f042cd8c2147

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