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

Uploaded Source

Built Distributions

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12Windows x86

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

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

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

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

tinybrain-1.5.0-cp312-cp312-macosx_11_0_arm64.whl (385.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11Windows x86

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

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

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

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

tinybrain-1.5.0-cp311-cp311-macosx_11_0_arm64.whl (392.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

tinybrain-1.5.0-cp310-cp310-win32.whl (284.3 kB view details)

Uploaded CPython 3.10Windows x86

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

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

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

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

tinybrain-1.5.0-cp310-cp310-macosx_11_0_arm64.whl (393.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9Windows x86

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

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

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

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

tinybrain-1.5.0-cp39-cp39-macosx_11_0_arm64.whl (393.7 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

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

Uploaded CPython 3.8Windows x86-64

tinybrain-1.5.0-cp38-cp38-win32.whl (290.2 kB view details)

Uploaded CPython 3.8Windows x86

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

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

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

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

tinybrain-1.5.0-cp38-cp38-macosx_11_0_arm64.whl (396.5 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: tinybrain-1.5.0.tar.gz
  • Upload date:
  • Size: 42.3 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.0.tar.gz
Algorithm Hash digest
SHA256 9cff45b8b447a855aa8dfbd455d3eb4c922f7fd218c85275b3ff09b1f4a495ea
MD5 783c1f1e6f64800637bcb13a07637ce7
BLAKE2b-256 dc11937466e70f6241187bf400310562a8074652e1622115ff892ebab4dedaef

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b558e7ffa61b3aed431cfb90caac6641d7c9b9ed77dac134f8d4fb1764242be7
MD5 fec54f864b5a9b44abbf6ba1aeca5ac0
BLAKE2b-256 b5e64ac87d6770fb969c0452c19bea1d7c7e83bdb8f3d874682a82341576eefc

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.5.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 ab0fccedbd2fda15d19ef1e6702f0085fd6d56319075a1c347edeb07b88b5e38
MD5 2abf8262498ce826f5f278ea9047b07e
BLAKE2b-256 14d2ba74cf935bd3a373d38444d26f1dd4500482f25828cd1cea65d265a03793

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9a19f66ba7747ad7dd8d9ea2e1fb9afb28d6dffc817ff326caaad5e710c95592
MD5 879ab31ecfc587a33beef7e60dbb7df3
BLAKE2b-256 5e4a3c4b4292b6e0b97e2781514c3c596f785fb8cf135ebb31154b4095d1ea6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5b7b9bb27fe0695a3648f2d852dccd989d5c573fdbff18d6428b07b142475996
MD5 b07fb50394712bb7253adc77488537a0
BLAKE2b-256 0559ddf92594e38ff34fecd2b49a73873dc46f17398341082bd04f5d21627273

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 be4ed83ff62790d68ab0a6967a92ca3bbfe550524bcbc6574275e9326a37e972
MD5 0b7fecf3bf47b6a6e1a7b1b559186c03
BLAKE2b-256 af78547f84e6b977c565727a936b458f2f125c733b3039a6aefc6951dc0d861a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.0-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 385.7 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.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 de4faa2ea115fca8f45f78407f4a6105d219efbe235618d393c8a85f1778707b
MD5 93d0037945463627c885e2daf65e111b
BLAKE2b-256 3dae78810e4860b1ca2e404dc8dbd71a2b260acfb80270016a598499f4a9af2a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 af3de4d2087d817268615b33d6950b28bace64534178b1230fe484238c09b859
MD5 48357482e3a6fadda7a8ff9a63d7e5b4
BLAKE2b-256 f6a9831a2190650d914da3c92669d7570aa1d0393027edb3dcab8b30051a52f1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.5.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 45ce23cbb9c33fbe13f7c9b99b00aae578e27699662c509f2de1d8ff19f8a80e
MD5 8707f134a0c3926566950c4cb8d29977
BLAKE2b-256 d31a2626262863fbbcfa457dedd5d03cb79841f02cfc0ad65451dc6735ea23cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0a18cbd153a9df1502a0a55c5e8e1b932afbb93f1e754296f3e1f6d972dba336
MD5 aa488b07e982de09b88942c259519573
BLAKE2b-256 3e1ed351c6ebe622d7d49cbfb1480cc83e8b29a34cc4eefa40f98d534d6c6f07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c9910013c58b8e16cab9ee6963c908280dcf416be0767374d0e19560662858dd
MD5 ffc0ea815d98b6dc3e4a4586f8104398
BLAKE2b-256 ce4ad5a0f982b38bef579aad64958454cc243819161d73e599d7f06bea516518

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 61585a0767a3cece80c263e772411bba45e8bceb2fc59ae96dd89b51aaa5140e
MD5 d8c56d0c6943f0c5b24f9263b10cdcd3
BLAKE2b-256 2d006d1faed3faa208a458c74bb68f0dd4960b63a648f2b7b1fc831efee28554

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.0-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 392.7 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.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d87bcba9a6d96dcac71c5a7a99147dcc5a852d61545bb46ad4bdfc53871a1867
MD5 4ca50d61fdd443333320cc58b2841566
BLAKE2b-256 ac43d85e5cc245b3e070758a9add6cfb51ead703c18e45e1e944df6f52cd5744

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 222fa60ea6e22a35dfc3bf67b77cf3f474e72d66505351b810e666fdf8915c2d
MD5 77e939b3de7f911ea8f6cb139135e731
BLAKE2b-256 e2ed0ece1e553dfc4eeb13a39b99594171860fc4dea2a65cac4ade6523dd182a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 284.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.5.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 bfd18d887e90f110bf36d60d49e0c7aad6a554df118362116ccc88e9fa49f6c4
MD5 520a004effac171e3f98c3b726687e31
BLAKE2b-256 ebf4aa48992e634766195e36a23019f93148ca4f7fd7006252820414cac46596

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ee444c52ad471ce92cff5696e6d51748a3980474870b516800d743bfcaae3088
MD5 493c799148d4130f02fd1a131e96fd44
BLAKE2b-256 c96dc5179476630a4191ae79cb1768aa66df4dea45c2dc934cc1b1390f47e310

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8a54201e94e5b51fea807d31939fb816dd9235987786fa42cc85310d30d33040
MD5 08cf1f6833ced2aea599ea5cd9ca5849
BLAKE2b-256 c30ab9b4c71e5d397024aefef3d99982bcd8bef0e771408a21bd63a07dc8ba5e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7067b02511826abc6ef3bc50d9f9996d95ecf9f0548dabfc350af51983b194ef
MD5 e3093974b29d47f62d5ccb7340f0a66f
BLAKE2b-256 65449661c54a075296bfdf707ef94db15bafa91eba6d70f558b5b61b007a51fc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.0-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 393.2 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.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 20c9bb0dd28dfb1516a2057046a041a3be0b5789040b8037e2a6bc1b69e653ee
MD5 97d3060a118ad15c7eb54b8b901745a9
BLAKE2b-256 44dcf7d3bfd5587f7d1d9433b26700af4750a333ac3f081e33ceecabe7efeb8e

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.5.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2b9a8a2c538beeb5c61d6352812119d4836a765795e9d3dc13b4ea25b707c370
MD5 d89c69a11c19552d70f291cd27da6c14
BLAKE2b-256 f256fca61bf868d06b430517fa43e0d4b1a937137fc411d3458792a8192b04b4

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.5.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 9e8da138ebda8182daf77665d2748c1b8ee5dc38d03e28b144a78a51c8e0c93c
MD5 267770dbd2748ad5fc41dcd0b7306bf7
BLAKE2b-256 1eb483e67d350972efd6f7291ce33576f4737e6de30387e4e25717a73ee3c47a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a009c359d937481ff07eb1bebf516ceb19529d69d125cf78b03c3d62151074de
MD5 3ce28370a8a5253d7044cc5ca5566cc7
BLAKE2b-256 a04a19a3f0e708e50f4087a88f9b96067d7e31185d7ae15f2d40187b497528b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 68e18442014e03f312658a280b4cda11d42c74fa2c6e86a0a9eed78321776cad
MD5 52b9987f140d3a27a1087172d5787d7f
BLAKE2b-256 f9851b945d762f1fdd9af82846988af28482aea6d69f942308f297a149811a4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d34378141449673cf92e34dee6f338473a6210b95929152873a0f080858602b7
MD5 03b5b0673a8d587c82a9d2f0afc04059
BLAKE2b-256 3288b32be0da9dceba559545e591be7ee3c6348aedd6a8cf6169546ca629d134

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.0-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 393.7 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.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a9837cd13ea0d1a9a975277ea6404d7c4a18175b38131f5b5c9b28c0318c897c
MD5 4d099cb2c1e1dd7701db24dc68532d70
BLAKE2b-256 2e25e0a91ba77d19fdbd6a7176584a34eb7a2002cfb67efd25127261a5a4f88a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.0-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.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 b1ea1604841d07d6970bdcb63f88df0131c21ad3ad1c248aec48b24b3ff40bb7
MD5 faba2709112d4f3459c154540e4c87f3
BLAKE2b-256 cfbb086cea9a262ca18e9cb179412046a326fe2fbb19e0a23970132dc40eb3fb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 290.2 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.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 b3a84654767c43dc2c9a70f5462a9a1de31d4d217edec2a5656c3bd497749788
MD5 66045dca37a75291a00538acfc43fe0d
BLAKE2b-256 1f658baa5f0108cc0da14eb20454c56465fb98e90b476712748c23d82dde8bc3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 35fb2865cb373e868003dcfdfef5461756b65d4cb52d13efce53587c80237396
MD5 5c5ee96877b7d8d7b08ee3f25f3b86c7
BLAKE2b-256 8afacd498246a630ac3724ad035a93b891f0e657c1a475daddfaff35e30e3956

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bbe2cd4ee451c0e4445f6c467b433297b3306412765b98a2e1351525c3544854
MD5 3f94a3658dd9458126ba75d1adaef841
BLAKE2b-256 90f50268931aecb2528d4d1809ce7e5ab5c72007a94cfa40e2a8ef23b7f5dfe6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 85bba50dd0fb6518e839718231a7aa27dff92bae0b6140409631e666994bf072
MD5 e62dab1fa4e92b1f1ec1c299cc619bc1
BLAKE2b-256 a02fee7464973c73eb5518a1c1d9d00c703dd58f957a450c2c59032a2c2a94db

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.5.0-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 396.5 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.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 11eaf108bc614fb24c6dceab3a6f5680564d4a518457f0e2223b7b87273dc919
MD5 e82f2037a0ad68fe3fce0587a9c5f81b
BLAKE2b-256 4387bdaa003c35347748fb0f9cfa2ab4475ace70be2fd9e9a3a84b1b69816add

See more details on using hashes here.

Supported by

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