Metadata-Version: 2.1
Name: shard-computer
Version: 1.1.1
Summary: A library for rapid computation of Neuroglancer Precomputed shard hashes.
Home-page: https://github.com/seung-lab/shard-computer/
Author: William Silversmith
Author-email: ws9@princeton.edu
License: License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)
Keywords: neuroglancer sharding igneous cloud-volume MurmurHash3
Classifier: Intended Audience :: Developers
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: POSIX
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows :: Windows 10
Classifier: Topic :: Utilities
Requires-Python: >=3.7.0,<4.0.0
Description-Content-Type: text/markdown
License-File: LICENSE

![Automated Tests](https://github.com/github/docs/actions/workflows/run_tests.yml/badge.svg) [![PyPI version](https://badge.fury.io/py/shard-computer.svg)](https://badge.fury.io/py/shard-computer)


# shard-computer
Perform accelerated shard hash computation for [Neuroglancer Precomputed shards](https://github.com/google/neuroglancer/blob/master/src/neuroglancer/datasource/precomputed/sharded.md#sharding-specification).

```python
import shardcomputer

preshift_bits = 0
shard_bits = 11
minishard_bits = 8

label = 12949142

shard_no = shardcomputer.shard_number(label, preshift_bits, shard_bits, minishard_bits)

# let labels be a uint64 numpy array of labels
# e.g. set(['4d2'])
shard_no_set = shardcomputer.unique_shard_numbers(
	labels, preshift_bits, shard_bits, minishard_bits
)

# Returns shard number -> label list dict
# e.g. {'4d2': [12949142]}
shard_no_to_labels = shardcomputer.assign_labels_to_shards(
	label, preshift_bits, shard_bits, minishard_bits
)

```

## Install

```
pip install shard-computer
```

## Credits

Thank you to Austin Appleby for placing MurMurhash3 into the public domain.

