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

Uploaded Source

Built Distributions

tinybrain-1.6.0-cp312-cp312-win_amd64.whl (324.8 kB view details)

Uploaded CPython 3.12 Windows x86-64

tinybrain-1.6.0-cp312-cp312-win32.whl (265.7 kB view details)

Uploaded CPython 3.12 Windows x86

tinybrain-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

tinybrain-1.6.0-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.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.1 MB view details)

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

tinybrain-1.6.0-cp312-cp312-macosx_11_0_arm64.whl (411.8 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

tinybrain-1.6.0-cp311-cp311-win_amd64.whl (347.1 kB view details)

Uploaded CPython 3.11 Windows x86-64

tinybrain-1.6.0-cp311-cp311-win32.whl (288.7 kB view details)

Uploaded CPython 3.11 Windows x86

tinybrain-1.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

tinybrain-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

tinybrain-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.1 MB view details)

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

tinybrain-1.6.0-cp311-cp311-macosx_11_0_arm64.whl (421.8 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

tinybrain-1.6.0-cp310-cp310-win_amd64.whl (346.7 kB view details)

Uploaded CPython 3.10 Windows x86-64

tinybrain-1.6.0-cp310-cp310-win32.whl (289.0 kB view details)

Uploaded CPython 3.10 Windows x86

tinybrain-1.6.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.6.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.6.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.6.0-cp310-cp310-macosx_11_0_arm64.whl (421.5 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

tinybrain-1.6.0-cp39-cp39-win_amd64.whl (347.2 kB view details)

Uploaded CPython 3.9 Windows x86-64

tinybrain-1.6.0-cp39-cp39-win32.whl (289.6 kB view details)

Uploaded CPython 3.9 Windows x86

tinybrain-1.6.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.6.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.6.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.6.0-cp39-cp39-macosx_11_0_arm64.whl (422.1 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

tinybrain-1.6.0-cp38-cp38-win_amd64.whl (359.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

tinybrain-1.6.0-cp38-cp38-win32.whl (295.1 kB view details)

Uploaded CPython 3.8 Windows x86

tinybrain-1.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

tinybrain-1.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

tinybrain-1.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.2 MB view details)

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

tinybrain-1.6.0-cp38-cp38-macosx_11_0_arm64.whl (421.9 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: tinybrain-1.6.0.tar.gz
  • Upload date:
  • Size: 42.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.6.0.tar.gz
Algorithm Hash digest
SHA256 f6e70e99a26ea0de47b7828257b73fa3162b0c743ee3db9d991f99d90e69f46d
MD5 5de393194fd4010747a723ca54d09dfd
BLAKE2b-256 bb7450f7d5626f423aea7d81f16a2357aca47d8ee4249bc87fd16101802417f0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.6.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 324.8 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.6.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cd9dfc5e4424175960e46e2b2a176ea2333e67be95f9eece141c13d3028b1f8e
MD5 a98f33179fdfb0f470910e5a9546b945
BLAKE2b-256 04ea7d0243820491372fcfb54d5e670a62209ab01cfc2d1a703f09aa0cd762cd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.6.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 265.7 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.6.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 90a6aca614f32fad4a6979e7f124f52addc01020b070d5567802cdef4bc0d741
MD5 0883ea773c4fc14170028ff1b81120f2
BLAKE2b-256 ff771c9e4f32722f641781d5fbf20eb84796133378cad4ea449474b7555ac505

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 64eb7d69fcf9a02b73cb3f8a0a19b7bf9d9ffc13a0967e8ed61e1fe430dcd9c7
MD5 deb14bbee2e90b6fd8998223239e45a0
BLAKE2b-256 d0ff999fa2791634f5aad5a47b32331143424e4580c6f0591a8f90bd694148a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2d54a6434b328dd580feb2b38260192540a082d0cc9ce7e8771987e43472d513
MD5 04bd2139374908e037589ad738f0cfee
BLAKE2b-256 087d7d2fb51ca241fa0d7eff14ce19e087f1df4b3c88091b465390a07d87caab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6bd25120f9aaa1c6c05c48e5513bb02a6a75033c8af3dc684936e0a149361441
MD5 06500068a4ebc46bfcdd3cde5c397283
BLAKE2b-256 e3e001348e992f8cb14d5a975056a10cbbfa5b068f43108261bd26176ce0e042

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.6.0-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 411.8 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.6.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b2d1fec4dba083b639357fdbe31b06e6172ef5ccfe02d11c83bc28802877adb8
MD5 2d4c2b92277f64c177d1510046dbbc20
BLAKE2b-256 4e4093aea91e5f864810fff298bd3b173f4eeffedf4d0c2b4ac9e45ba0ee29a6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.6.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 347.1 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.6.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 413b709b480b484b40a30df84a254a36b203ea3f0c676ce17f212f941be50e6e
MD5 059adba52a96fc325d1983d0e97bf8db
BLAKE2b-256 60d085d4a8a0df2011349f7c70c0558252558847397c589c64f0d2ee8c2b3dde

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.6.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 288.7 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.6.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 045204d5834686d415b6c7dc7b071472bf837aee99c9e8504a33583a825fc9a6
MD5 9131c1ae703160e49fd4efc205394266
BLAKE2b-256 8047f6026dd6f6e58893112fdbca94a49f02da3060df2ba86cb478af3a93eac3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c88a29c654ece727900cdc51c7a53f7fd9f507ccb0b28cafbd329569b3895c80
MD5 0d8aca7c6c33cac2aed3c74ae3065013
BLAKE2b-256 8719cc9abc480003e5b624b0e9fdde3e1e52243dc485b4699ae900f4e3e0c455

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 861f206fb8a5e6edd2e86e31b7d4a5f6d8a8f6886cd80c5828f882e2cc361f54
MD5 0e31b06a2e4f2b1a06db12aa233c6716
BLAKE2b-256 baa9133d3b76629bdbe35131a9b791dd9c8f65f912271ea347185a10d51998b7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fe5a3e2826a8b19579e1a5c1eeb82721575e40cdbab1c4f49710a3c1543d3e46
MD5 af70584c42a511c35607c5ac8dc6ebc1
BLAKE2b-256 a5ada992c4b2c1332dd87429ccd3dfbc9ef4410c6fed91cf5a8e509cc032d10c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.6.0-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 421.8 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.6.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e7e8476859b330e59933fb1db8a2141dddaaf4ea8d56fad73c01e5a9cff2f820
MD5 2027837e3b76d1263cf68ba6cca82d2a
BLAKE2b-256 db8ac2edda78900a18b3282fef673e16c1b89dab232d85eddc95a25259abd76b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.6.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 346.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.6.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 97d0bd861f849803e60ae48e0d768695f3cb1348e9aec4c3e7923829c2a9f55c
MD5 6144314a73098784ecc033f1f5285d32
BLAKE2b-256 9d7aa049d26116556dea7c93dc15b1222d7d4c18fad0fcd5ed3cd44d8641d8b6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.6.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 289.0 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.6.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 2f42218bde6ddc70da10a8eb494ccf70ddbcd023bf44e757b531a28e92948fbe
MD5 f2b7ecb40b3dfd84409ab1b4b6c3d86e
BLAKE2b-256 eba7e684f5cdbc92d36a8f198fa79ca89811b922e2c7996043220388d3450195

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f0b85bfd7740c1d24e7b7f1682af33d88aa53ee71a7379f808227e2d154dc3e0
MD5 e222599e8ec86c2a5395ea0eb672d9a2
BLAKE2b-256 21f69fe51681d0afaee263ea5f957e5fa5c62a442760e6710ade2ba74e0629a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3e9f5839c299b7f410268f4f9081676eee9d14bc927b69be124ed23038bfad73
MD5 3e33cd7f3b76e96f27bad3184db3d989
BLAKE2b-256 222623a0ea9d1ded902230f319bddfa0f48141d3f62ea5f7992be2e0bce7ece7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c284ccd1271f076b2a2e0ce88a1f408eb004572fc7ae8f968a488764e8db8d0f
MD5 6ae9f706b5cbe27b9b2ab0d6b9f72fd5
BLAKE2b-256 a36e5b989cf8cc14c5d1cf0a8f5d029cf5f2118716502b9e0fea9331c0296ac1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.6.0-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 421.5 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.6.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6b15c2fcac486cdec8e98157d1b0e2e75aec282dc23e59502a4b1e300866c5d4
MD5 0301eded15557325de153a0d166d10bf
BLAKE2b-256 31d6f010fa90ffe74d53a28e05d7844609673ad62ed445534fd68eaeeae10d83

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tinybrain-1.6.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 9d8730be7bd86cde8b8ce0d3799d86329bec194bb7ef4f27322b0d936de8be76
MD5 0ac274ccb8d36cc8d5616de263a298a3
BLAKE2b-256 e4562cb27933bebd643477e1a440995213bec8620bc32523e433473e1b007c7b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.6.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 289.6 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.6.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 30ae5935c99143f01d4f4ef3ee7cc22e2c454de169bda39c5d939276fb7e5160
MD5 5ad59aa27b9d785e835ffd8667d854fd
BLAKE2b-256 d99403681d260cb2a2ebea4b13def20160961fd1203388409d5e1ced8ad0f396

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 706263f131767f6ff2c1a0f12c7f247d2609764d7c1172c6a56c7728398a299b
MD5 2b3db4453658dbc7d1fdb38d0ba3f45f
BLAKE2b-256 afec68632d988737c90d228442358bf5727179ef14bda26d1ea716d53e152185

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3c812ab40a4833f9a4c0b6e05b4c2293f6a3fb633e3392dcc002e0f845b8b935
MD5 0a5077508abfa7eaf0fe0648618b4193
BLAKE2b-256 a35588d5209c355d14f29a4cfcdfb770c6bce9a795437074dc6982ccc4edca31

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 bd0c9397461b2ce5d43c9bee22788590ca187c0ab4e428d6feba6628ebe995f7
MD5 628113b9df6e5925cab1125f4a815450
BLAKE2b-256 98bed3cb2e994f585863efd2a52dbe0c9b53443754029e760b950ea556388766

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.6.0-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 422.1 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.6.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 37f9ddb60fb37859da9e225727a5008c94c6a993a87f6db23dea0c4f8b46aa85
MD5 914ae470a587acc6e9a36c672ccb492d
BLAKE2b-256 e16be5d3b117adeaa5ac094ae3e2620f246981812af3fd250f4202a8c8ee2274

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.6.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 359.7 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.6.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 06c14d0d67fe11c3efbd5b361678f85733c08d7285dcdc5b6537b43de21d560c
MD5 661f451474e11ec827c111c92bcd7898
BLAKE2b-256 7df5883f726ecb7a2a44ef4bf0f869e6741ee3ec6b5f38cb87a0ab19b25d7183

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.6.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 295.1 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.6.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 0ec48b076eb549ee1c7233104cf60d133cc1fe19ac75c90607346067ec784348
MD5 7b7163342be66ff9cd8c0a5ec70eb248
BLAKE2b-256 b51047e7aeb3f2c724c3fc871af22b39973f856a820e8449dbf2302c55191f2e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 49d494a8b7c4f91457ff345f49b349a32ca230025f1848ac3020d5593082a42b
MD5 de3a89dca72f60389da5c6239ca1f5a8
BLAKE2b-256 95b72a80f1f3592e92dfd7ecc1a015ad1a5710134f97e0d0be57b556035c4a56

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 eae43a18bb9766ea2b5c9a827f0103fd27186bc5fef5646555165f1a63bc2e3b
MD5 f0f998216bd7ba383845c1d903db10ee
BLAKE2b-256 46a2f2d816679cee678a811154705869790f296c320575439f45be0fca0c62cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tinybrain-1.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fe4abd0916f8fd42597f4118027671b9fa069a9d94494063ffa7eaccec8150eb
MD5 32f2e64a259dc3aa88235098e5638f7f
BLAKE2b-256 94daa5ef076f7ead071fb5194a27ac1e0197538daffc40ada4cd97db6557f492

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tinybrain-1.6.0-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 421.9 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.6.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a67160765202d2d29484e8fa87d096e90c6f0083c14e0fe7479e29f1b22663d6
MD5 014b1c9961e7a4271c09fdc7e89e5574
BLAKE2b-256 0d13c390cf8d0e1d7e87ddbe360a93c75b5159809153cb1cdca0bbc5f49d7c6a

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