Skip to main content

SONATA files reader

Project description

banner

license coverage documentation status

libsonata

C++ / Python reader for SONATA circuit files: SONATA guide

Installation

Installing from PyPI

pip install libsonata

Installing as a Python package, directly from GitHub

pip install git+https://github.com/BlueBrain/libsonata

Building the C++ library

git clone git@github.com:BlueBrain/libsonata.git --recursive
cd libsonata
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DEXTLIB_FROM_SUBMODULES=ON ..
make -j

Since libsonata uses backports for std::optional and std::variant which turn into their actual STL implementation once available, it’s recommended to compile libsonata with the same C++ standard as the project linking to libsonata. This is done by passing -DCMAKE_CXX_STANDARD={14,17} to the cmake command above.

Usage (Python)

Nodes

NodeStorage
>>> import libsonata

>>> nodes = libsonata.NodeStorage('path/to/H5/file')

# list populations
>>> nodes.population_names

# open population
>>> population = nodes.open_population(<name>)
NodePopulation
# total number of nodes in the population
>>> population.size

# attribute names
>>> population.attribute_names

# get attribute value for single node, say 42
>>> population.get_attribute('mtype', 42)

# ...or Selection of nodes (see below) => returns NumPy array with corresponding values
>>> selection = libsonata.Selection(values=[1, 5, 9, 42])  # nodes 1, 5, 9, 42
>>> mtypes = population.get_attribute('mtype', selection)
>>> list(zip(selection.flatten(), mtypes))
[(1, u'mtype_of_1'), (5, u'mtype_of_5'), (9, u'mtype_of_9'), (42, u'mtype_of_42')]
Selection

List of element IDs (either node_id, or edge_id) where adjacent IDs are grouped for the sake of efficient HDF5 file access. For instance, {1, 2, 3, 5} sequence becomes {[1, 4), [5, 6)}.

Selection can be instantiated from:
  • a sequence of scalar values (works for NumPy arrays as well)

  • a sequence of pairs (interpreted as ranges above, works for N x 2 NumPy arrays as well)

EdgePopulation connectivity queries (see below) return Selections as well.

>>> selection = libsonata.Selection([1, 2, 3, 5])
>>> selection.ranges
[(1, 4), (5, 6)]
>>> selection = libsonata.Selection([(1, 4), (5, 6)])
>>> selection.flatten()
[1, 2, 3, 5]
>>> selection.flat_size
4
>>> bool(selection)
True
Node Sets

libsonata can work with the Node Set concept, as described here: SONATA guide: Node Sets File This allows the definition of names for groups of cells, and a way to query them. libsonata also allows for extended expressions, such as Regular expressions,and floating point tests, as described here: SONATA extension: Node Sets

# load a node set JSON file
>>> node_sets = libsonata.NodeSets.from_file('node_sets.json')

# list node sets
>>> node_sets.names
{'L6_UPC', 'Layer1', 'Layer2', 'Layer3', ....}

# get the selection of nodes that match in population
>>> selection = node_sets.materialize('Layer1', population)

# node sets can also be loaded from a JSON string
>>> node_sets_manual = libsonata.NodeSets(json.dumps({"SLM_PPA_and_SP_PC": {"mtype": ["SLM_PPA", "SP_PC"]}}))
>>> node_sets_manual.names
{'SLM_PPA_and_SP_PC'}

Edges

EdgeStorage

Population handling for EdgeStorage is analogous to NodeStorage:

>>> edges = libsonata.EdgeStorage('path/to/H5/file')

# list populations
>>> edges.population_names

# open population
>>> population = edges.open_population(<name>)
EdgePopulation
# total number of edges in the population
>>> population.size

# attribute names
>>> population.attribute_names

# get attribute value for single edge, say 123
>>> population.get_attribute('delay', 123)

# ...or Selection of edges => returns NumPy array with corresponding values
>>> selection = libsonata.Selection([1, 5, 9])
>>> population.get_attribute('delay', selection) # returns delays for edges 1, 5, 9

…with additional methods for querying connectivity, where the results are selections that can be applied like above

# get source / target node ID for the 42nd edge:
>>> population.source_node(42)
>>> population.target_node(42)

# query connectivity (result is Selection object)
>>> selection_to_1 = population.afferent_edges(1)  # all edges with target node_id 1
>>> population.target_nodes(selection_to_1)  # since selection only contains edges
                                             # targeting node_id 1 the result will be a
                                             # numpy array of all 1's
>>> selection_from_2 = population.efferent_edges(2)  # all edges sourced from node_id 2
>>> selection = population.connecting_edges(2, 1)  # this selection is all edges from
                                                   # node_id 2 to node_id 1

# ...or their vectorized analogues
>>> selection = population.afferent_edges([1, 2, 3])
>>> selection = population.efferent_edges([1, 2, 3])
>>> selection = population.connecting_edges([1, 2, 3], [4, 5, 6])

Reports

SpikeReader
>>> import libsonata

>>> spikes = libsonata.SpikeReader('path/to/H5/file')

# list populations
>>> spikes.get_population_names()

# open population
>>> population = spikes['<name>']
SpikePopulation
# get all spikes [(node_id, timestep)]
>>> population.get()
[(5, 0.1), (2, 0.2), (3, 0.3), (2, 0.7), (3, 1.3)]

# get all spikes betwen tstart and tstop
>>> population.get(tstart=0.2, tstop=1.0)
[(2, 0.2), (3, 0.3), (2, 0.7)]

# get spikes attribute sorting (by_time, by_id, none)
>>> population.sorting
'by_time'

Pandas can be used to create a dataframe and get a better representation of the data
>>> import pandas

data = population.get()
df = pandas.DataFrame(data=data, columns=['ids', 'times']).set_index('times')
print(df)
       ids
times
0.1      5
0.2      2
0.3      3
0.7      2
1.3      3
SomaReportReader
>>> somas = libsonata.SomaReportReader('path/to/H5/file')

# list populations
>>> somas.get_population_names()

# open population
>>> population_somas = somas['<name>']
SomaReportPopulation
# get times (tstart, tstop, dt)
>>> population_somas.times
(0.0, 1.0, 0.1)

# get unit attributes
>>> population_somas.time_units
'ms'
>>> population_somas.data_units
'mV'

# node_ids sorted?
>>> population_somas.sorted
True

# get a list of all node ids in the selected population
>>> population_somas.get_node_ids()
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

# get the DataFrame of the node_id values for the timesteps between tstart and tstop
>>> data_frame = population_somas.get(node_ids=[13, 14], tstart=0.8, tstop=1.0)

# get the data values
>>> data_frame.data
[[13.8, 14.8], [13.9, 14.9]]

# get the list of timesteps
>>> data_frame.times
[0.8, 0.9]

# get the list of node ids
>>> data_frame.ids
[13, 14]

Once again, pandas can be used to create a dataframe using the data, ids and times lists

>>> import pandas

df = pandas.DataFrame(data_frame.data, columns=data_frame.ids, index=data_frame.times)
print(df)
       13    14
0.8  13.8  14.8
0.9  13.9  14.9
ElementReportReader
>>> elements = libsonata.ElementReportReader('path/to/H5/file')

# list populations
>>> elements.get_population_names()

# open population
>>> population_elements = elements['<name>']
ElementReportPopulation
# get times (tstart, tstop, dt)
>>> population_elements.times
(0.0, 4.0, 0.2)

>>> population_elements.get_node_ids()
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

# get the DataFrame of the node_id values for the timesteps between tstart and tstop
>>> data_frame = population_elements.get(node_ids=[13, 14], tstart=0.8, tstop=1.0)

# get the data values (list of list of floats with data[time_index][element_index])
>>> data_frame.data
[[46.0, 46.1, 46.2, 46.3, 46.4, 46.5, 46.6, 46.7, 46.8, 46.9], [56.0, 56.1, 56.2, 56.3, 56.4, 56.5, 56.6, 56.7, 56.8, 56.9]]

# get the list of timesteps
>>> data_frame.times
[0.8, 1.0]

# get the list of (node id, element_id)
>>> data_frame.ids
[(13, 30), (13, 30), (13, 31), (13, 31), (13, 32), (14, 32), (14, 33), (14, 33), (14, 34), (14, 34)]

The same way than with spikes and soma reports, pandas can be used to get a better representation of the data

>>> import pandas

df = pandas.DataFrame(data_frame.data, columns=pandas.MultiIndex.from_tuples(data_frame.ids), index=data_frame.times)
print(df)
       13                            14
       30    30    31    31    32    32    33    33    34    34
0.8  46.0  46.1  46.2  46.3  46.4  46.5  46.6  46.7  46.8  46.9
1.0  56.0  56.1  56.2  56.3  56.4  56.5  56.6  56.7  56.8  56.9

For big datasets, using numpy arrays could greatly improve the performance

>>> import numpy

np_data = numpy.asarray(data_frame.data)
np_ids = numpy.asarray(data_frame.ids).T
np_times = numpy.asarray(data_frame.times)

df = pandas.DataFrame(np_data, columns=pandas.MultiIndex.from_arrays(np_ids), index=np_times)

Acknowledgements

The development of this software was supported by funding to the Blue Brain Project, a research center of the École polytechnique fédérale de Lausanne (EPFL), from the Swiss government’s ETH Board of the Swiss Federal Institutes of Technology.

This research was supported by the EBRAINS research infrastructure, funded from the European Union’s Horizon 2020 Framework Programme for Research and Innovation under the Specific Grant Agreement No. 945539 (Human Brain Project SGA3). This project/research has received funding from the European Union’s Horizon 2020 Framework Programme for Research and Innovation under the Specific Grant Agreement No. 785907 (Human Brain Project SGA2).

License

libsonata is distributed under the terms of the GNU Lesser General Public License version 3, unless noted otherwise, for example, for external dependencies. Refer to COPYING.LESSER and COPYING files for details.

Copyright (c) 2018-2022 Blue Brain Project/EPFL

libsonata is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3 as published by the Free Software Foundation.

libsonata is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with libsonata. If not, see <https://www.gnu.org/licenses/>.

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

libsonata-0.1.26.tar.gz (1.1 MB view details)

Uploaded Source

Built Distributions

libsonata-0.1.26-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.27+ x86-64 manylinux: glibc 2.28+ x86-64

libsonata-0.1.26-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

libsonata-0.1.26-cp312-cp312-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

libsonata-0.1.26-cp312-cp312-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

libsonata-0.1.26-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.27+ x86-64 manylinux: glibc 2.28+ x86-64

libsonata-0.1.26-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

libsonata-0.1.26-cp311-cp311-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

libsonata-0.1.26-cp311-cp311-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

libsonata-0.1.26-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.27+ x86-64 manylinux: glibc 2.28+ x86-64

libsonata-0.1.26-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

libsonata-0.1.26-cp310-cp310-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

libsonata-0.1.26-cp310-cp310-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

libsonata-0.1.26-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.27+ x86-64 manylinux: glibc 2.28+ x86-64

libsonata-0.1.26-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

libsonata-0.1.26-cp39-cp39-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

libsonata-0.1.26-cp39-cp39-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

libsonata-0.1.26-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.27+ x86-64 manylinux: glibc 2.28+ x86-64

libsonata-0.1.26-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

libsonata-0.1.26-cp38-cp38-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

libsonata-0.1.26-cp38-cp38-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

Details for the file libsonata-0.1.26.tar.gz.

File metadata

  • Download URL: libsonata-0.1.26.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.19

File hashes

Hashes for libsonata-0.1.26.tar.gz
Algorithm Hash digest
SHA256 b653cbefbc511fe24ccf5cce7d80253954ec280800af5fd33700f0faea93fd4c
MD5 408bd40e12462eeb876857c0471a4923
BLAKE2b-256 43290ed25f6980108c3f5c06b585745eb0a2a73f24653049b856c47ab861d56b

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2fa61e9b6039af4aa572c0346e1ff2d1a3e319edde1fcb55841f93751a7f46cd
MD5 900f3aec0e6f25f479cb5a7c968fb52d
BLAKE2b-256 2b2adb6ac287f8c3f683ed8857047859486208ec4de1e01cb704d25d90c4bece

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b1b3a7f0072bc6eff81c4cde55ce8005a484f46fe0c20144f2a270e88bec7f6c
MD5 eec87c243d95f0f0d78c947f044fb975
BLAKE2b-256 8d2e7491076e29fe86bf31dd780caf5030f2c5970964c21c0ae32d457c8bf080

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 73d8852dbdc0fc4cd4567662d12e58bd83e5823a438e1b1f19142a4d654c9ac8
MD5 c0f242abbec98116fb5b8a7ba7346788
BLAKE2b-256 1ac7626dcd25c62d0d6dee58ffbc32dfe8a1b7d25540f9c0f756a0f822a5c5a4

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5720092fd46407ed1a28ca28f0f359d499f6d8d65700f2f64afa0e17ad9bf90a
MD5 c2d4b56428ea9a296ddacc57e0a80211
BLAKE2b-256 90a2ae0c6e46585a87a50498b28346e527052714b1791b14dcc3d154d2a26e4a

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 11aeb802e98babc0d8eb8caed022fab78b9fadd47b2960bc0d95ebee346425ad
MD5 b751d7c6d49cc97dec7b81ccca3b541e
BLAKE2b-256 36cfff59b00af317c25bf5d24eb3b926b939b9ffbf5c7ad6e157e49212304528

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8dd06bca6e8d4e92f68263e7a3641abd87fd52cd542adddcb58b013681a52cd2
MD5 1afe0506164b72dd3e052c76ce024f5a
BLAKE2b-256 08d6368290a705f8d50c5be869bec4970c66c0c93e4185a5039f5309d650fdd0

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b98aacc8131920c43ebff5e66ea81b61c432bb8e08516a46470e7b8049897ccd
MD5 89c91ccf19511bfebed507f3c1a58db8
BLAKE2b-256 f0b8395ac01061386a09a348ee1b7dd77ddcfb4e05f97175851192cc3de4b45f

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cdf5bdd4a0d2f966993ff0d917f9b54b3d314b26a901d00a544c0db75560a981
MD5 07514653986ddc4cce447e39f39b3642
BLAKE2b-256 13a5547a4f8d8be086f364a29c93577b3ca8dad682ca1f9f06db3778c84059cf

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7dcf12d519b68deab4dd8dc63824f90afedb03a3ed3fa09a38a80a47019f77db
MD5 e2a2d4ddd08a8fbd3b952dd84a0b34ac
BLAKE2b-256 ab20a40814a924548f318bc400b50c7132a8182ec0c52efa548ca1397a172855

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 987b96bf1d6e62d638e8cd02862f6ec0ba24342f4b4da875db8c37390f81baaa
MD5 415a9160dbe55ccae43f5e2eb6501992
BLAKE2b-256 2c1a5f88c08245350ccbaeea220d89d22e3743d005aeaa83532f02c719efbc5f

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2fb754066d319b4e0bf93cbcaf3147e75cc0ae7b39129bdd1059db62a52facf8
MD5 a4a99b66f971550ca7a484b137a0f3b2
BLAKE2b-256 45e083f280846fb99b32155ee3a57c28768377a8ec990be28c0738f84daef4e2

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d77dc1ecdc9bed447656e217a5d093bee5b54b6836fabf4c3659930983966ded
MD5 7827fdce96e29cc5cd585f87abb87dd8
BLAKE2b-256 a9e6c553179d225c3131e4d64d202986c62da8e31848959bb3e92d6aed0e4ca2

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 afada4fe47bd0c24525d91a93a54a7fe08b4a2deae19061a2240af968fbfa2bd
MD5 2a75f6538d64f8aa0a7a948b4ed1c563
BLAKE2b-256 ccdd8f6e2d38c56f1f5f0e41e87117657e9e08024712958e840940a3fee6b1a2

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8fb8e2f7debdfbfb59095d5c860161698ba400a7b58c0179990e6f118f16b9d1
MD5 6d947bb59b346edc0a60c5124481c952
BLAKE2b-256 d22fd7efbfe69ee521a3f7021534a30a36e8c9ad78223509c38d4e90c9c9c4e1

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ac305535490f3739984afa0481b9f44df9f480bad0cf2e6ecc2705ae22eb6b0b
MD5 7a5367d982a990cb2aed110de3a82bb3
BLAKE2b-256 3209a77a39136984820b6d0f15ceb9cbc2bb6ba8ea21e90094d73a7fca46ef86

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2aaf9df4391e3a2b3109f8b46ecc7e0df1320b5fa8ee7a7cbe2fad4f19b6c949
MD5 aef084eef8f3a3dc33e484874802fc6c
BLAKE2b-256 466e4bda655825ec53a8c343e322d2a6a6e735f43ebfbdf552fb004eed4a9b5b

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 47cd673416008507ddb9c5e28fa752274ff6b1dd744f8ac780ac3ca6e1290f2a
MD5 77c2053c53b0a8ebc1148d916298d7ab
BLAKE2b-256 724062bc37a8285d522c72a545fe3c5bbf8650067c931f0f945f1fec91c3fec6

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7457b68768d322e4340756091de0fefc984e51c3a5dc808811b424e11335dfc9
MD5 d43ba20fb832aba667be0b27748e532f
BLAKE2b-256 a7b484e7162e271b0b569a401b7f1b7f8de56362a09ca9d0526b79f1ed4a0efe

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fad72f72199cc2b6ca737b684dc88b3e984d5aa87786bd565d6fd4242235e487
MD5 07fe89bbcd5a5b8b80f5270d52d00009
BLAKE2b-256 61513873692120d3e05e0517af64049e51b341fcebb667fee1d2a2766ed082d1

See more details on using hashes here.

File details

Details for the file libsonata-0.1.26-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.26-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 059b320b89047e0e4992f10438a5194475386ae87288393aebc9f8ebf3be3c48
MD5 6099db083992548655a5d7bc494b0b9e
BLAKE2b-256 cfe8cbed28017ad3a1e6400998389ce620447c8453623a9c510eab427b574e8c

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