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.25.tar.gz (1.1 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

libsonata-0.1.25-cp312-cp312-manylinux_2_28_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

libsonata-0.1.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

libsonata-0.1.25-cp312-cp312-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

libsonata-0.1.25-cp312-cp312-macosx_10_9_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

libsonata-0.1.25-cp311-cp311-manylinux_2_28_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

libsonata-0.1.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

libsonata-0.1.25-cp311-cp311-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

libsonata-0.1.25-cp311-cp311-macosx_10_9_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

libsonata-0.1.25-cp310-cp310-manylinux_2_28_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

libsonata-0.1.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

libsonata-0.1.25-cp310-cp310-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

libsonata-0.1.25-cp310-cp310-macosx_10_9_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

libsonata-0.1.25-cp39-cp39-manylinux_2_28_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

libsonata-0.1.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

libsonata-0.1.25-cp39-cp39-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

libsonata-0.1.25-cp39-cp39-macosx_10_9_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

libsonata-0.1.25-cp38-cp38-manylinux_2_28_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

libsonata-0.1.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

libsonata-0.1.25-cp38-cp38-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

libsonata-0.1.25-cp38-cp38-macosx_10_9_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for libsonata-0.1.25.tar.gz
Algorithm Hash digest
SHA256 b332efa718123ee265263e1583a5998eaa945a13b8a22903873764cf1d8173fa
MD5 600f7d82c765e539839d3a6b9aa92e62
BLAKE2b-256 e0183de1dd868e56e339146da5bd14efe864748e4847920094b46f0f277399ac

See more details on using hashes here.

File details

Details for the file libsonata-0.1.25-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.25-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4ad7cbb176d86998458c34cf76fcfbeb6cc8bb2d2c5c2873cffd5028f6027c37
MD5 aa5e7528b0cca34cdba1267563893900
BLAKE2b-256 e0b6f3ab321fd21ad20f8817216dae0ee1d274494e63e3bc74e2016394fc028b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4c9f99d55264b145641926f82b3e216ec6703fc56a6ff1750325a2d683e49b62
MD5 a58e66fe2cf2d9b6c71273de88371145
BLAKE2b-256 cb2174b36969ad88d3324c22af2bd5a42dfb78c7719c13985941e2b74608d895

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.25-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3ffa74f9faa9e257989f06f2df45711a373540abf4bfbf5a2290b994d88faf89
MD5 03fa2e02739b6136da520bfb18bbeef1
BLAKE2b-256 1961085f1dac82f3c7557ae508f058e27405b069bbcd198344e0e121eab57463

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.25-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 529d5a4e5272bcdb87438cb1c4ed3e4749aab9174880a7f06dd5e8e63c3be419
MD5 50ecbb189fb6225fac2ed19b3f59e1f7
BLAKE2b-256 ecde647193c433ab46c450af123f33292c6e43f9924f2755c03cc1cfebcf0e84

See more details on using hashes here.

File details

Details for the file libsonata-0.1.25-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.25-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 68648ca223e63fb00e07cb012b9453518d1d6a14664f43bbd0d7c48bd411b5e3
MD5 a59a898ae28783b8f15e2cd71b3bd9b5
BLAKE2b-256 0408080e1bb1caf049d594c4ce6e757c542f01d91883876a044052a683330dd9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 40f14b36d5218cf5941c83a8ae5caa54eaa04c2f02ddd00e2b4a1c63d3d10425
MD5 c88aa57e30a2742728fc04b9c2f93e83
BLAKE2b-256 4ba32fe18f0c48777d77f27ffdfdd02189941eca7bcec3a3cb9a66e4fccc5a47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.25-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3464b873d2c8e3097e2918014a06066b726cdfd50a5aabdcb88e92d56c48fffd
MD5 44e477712190e83acd2487670af64868
BLAKE2b-256 9d03d3cf6ac5897f8f6c74f2ba2e99d3c84e364aaf8debafcca32fe976884442

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.25-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2d770170d9ed61d1f73e9a2fdfb92abc5eb43a812fd724740215bc293438ef14
MD5 0cb478ff83a69a951c0c40455ff3c9fc
BLAKE2b-256 5bb8b587036c5d28c5235cad017d96eff3c758916479e6fcf2e24a782b706421

See more details on using hashes here.

File details

Details for the file libsonata-0.1.25-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.25-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e6356d438dca5cfc9244c7f95643427eae041ab2d4d00f9f47c57594a545636b
MD5 29376a32324f6c747436828d63184322
BLAKE2b-256 b82b8174d049a5ea683ad1e1f1f50fc21da1724dcae7030bf2275f0c90c39545

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f40d2a345d9454f0e9e8d799d5319ad42975b89d924f1ec9a30f401841083d25
MD5 92b6c4a5cdf0b5419fca30082e3a6342
BLAKE2b-256 de8c2fd8e679d964f20a4d79afa0231c5df83f528343d793d9f2b9a9b5ebdb08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.25-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 983e135d1bdf6860b886ddf2a0f292ddfabd3455fd3920d87ee8c5c73e4643f1
MD5 75014424ed472c086a5c6a0f7376a6a9
BLAKE2b-256 2c0d9dd244303f50cc5128b10930702dcf5b49ecad7600c1393a9a36b4b30881

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.25-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e9c4720f3a8322a69d3a746dd165d62d4b8965994c28d5ca949de9110c9e596d
MD5 033855a03a56e9d7d6ff40b0797714e4
BLAKE2b-256 066e0fbd7c55b009deb8c733231aaad95389e58d6497b951ab8ac5d93fd68097

See more details on using hashes here.

File details

Details for the file libsonata-0.1.25-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.25-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 993e979eb92ba09a7c761ce291e4b9ac047219db004dffaa4b1500a5981b31c2
MD5 6cba8aad9b46fbdf4564de9e97896d5c
BLAKE2b-256 be68749002e83c63ff49556ab61823884d31fb06789a5eb68706b5394a51a004

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f8ab9296904b0bcb6b2a5d7a2ee1c5322db7527f8df4a3e804f0afd727dae680
MD5 1d6341e9ac3dd98f577173fc7f910203
BLAKE2b-256 b0bd773a7f3d5461ce7cb99f5d171ab4a641773143d78dba78fc2ff1649f89ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.25-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 87b742e203c1e4fac029d636e14a26ee07e7a9e073019c8f5504a314b8360d09
MD5 5f7a0cf812ac4d8f70a715127f299076
BLAKE2b-256 a98ab21fdd749045638eb62d150176827bbf5509e32d32119353a584a46f7276

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.25-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 17c4ce56b28845f186d862d4345dca6e0bd67fc83f04ebc8d7a98e4a64007480
MD5 c26554e34bae02f4f887641212fc3d01
BLAKE2b-256 588a53ec0c5ee64108cf478869dd33acb0be99c7edb584f483cbc413a418cf7f

See more details on using hashes here.

File details

Details for the file libsonata-0.1.25-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libsonata-0.1.25-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eb28034aaec93e939792d09c361265f8487d98faa895db7abf705a769e23d6db
MD5 44a02746cb08ccc8a0fb5f89c8e8c1cc
BLAKE2b-256 255dfe77927aac229c034e522c0420953609d907bbc5a14196de346fabd4e955

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e95aefa85055e504c09754702d46148f2ff5fa01634b7200df17398c85cf7b7a
MD5 48599d0454cb564e53945a32e11fbc7b
BLAKE2b-256 c9e6cc2cb620f6a684fad43d7066c5f0cd132f4c6b7c923d0b73140fcad19efa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.25-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8565e24917184db8f551df1453757ff16212d97bfe64fc8fb757be848af94be6
MD5 f6b183f2e334b74d22b47d608c088259
BLAKE2b-256 d9efff39d808456e145d8b1c8942717561156a68b520df9b34d21b85a0828465

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.25-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 37b500f2e2b1d513471c89a0230c44d778ed2bb840262c4ab3636b4261750161
MD5 642e85928158b6065f3b3e7984f1135d
BLAKE2b-256 6cc5040e7cfbb81e9bba5fa672c491529368060080a319256488ae53c5056673

See more details on using hashes here.

Supported by

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