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

Uploaded Source

Built Distributions

libsonata-0.1.27-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.27-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.27-cp312-cp312-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

libsonata-0.1.27-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.27-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.27-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.27-cp311-cp311-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

libsonata-0.1.27-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.27-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.27-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.27-cp310-cp310-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

libsonata-0.1.27-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.27-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.27-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.27-cp39-cp39-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

libsonata-0.1.27-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.27-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.27-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.27-cp38-cp38-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

libsonata-0.1.27-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.27.tar.gz.

File metadata

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

File hashes

Hashes for libsonata-0.1.27.tar.gz
Algorithm Hash digest
SHA256 8c69ae8eec2e77fb017202896e070b73f2a5bb4d7f2c245c9f21a9964daccee1
MD5 deafb3dfe55888fc95badaacfdf54e37
BLAKE2b-256 dcff7bf2eb233f1a89f95e3181a55f65501c2a88ad65d3e1a61e8954e994a5ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 08ee5cbb8d9930c6382f395d4842e4fef655418b288f5b0e4bf8ca93371696f1
MD5 086f2394bd8249cb50db92c549875803
BLAKE2b-256 6d2be91b861182cb3009b952aa0ad20e8b341cf951e13da07c411c4c5ba61951

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 56a90d7fc1080538a944b88f504a32854bd55426fe7fd7c186369302f95b7e15
MD5 d1ed644632d6dd9ca8004fdab389cadb
BLAKE2b-256 e8f05fd7c5403aa80519bcbb33e87e42c0b95ce965347091354e621733fedcec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f9db9a10e07893942d1d7d66bfdd9418e3ec64cc5c063dd84c913a6cc0c70388
MD5 c03ff6c73af07317bff68fc296887cc5
BLAKE2b-256 ab84a8a52d7a867225038ca27db3e49868d374d7c9bca13e7669ca72bf5c7825

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fd5deaba961f6b2db2f22ad9a5349a8f8a223b94293d8d98c637f3141dcdb7a6
MD5 73c4852985f8738577ea3de0bb9d748a
BLAKE2b-256 5cf686921554e0c40fac200ce6a224bbe7c0bd4ee17f33f5265dda5a84a18e4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 87cb11c165a42273f5fee4c69038b25d3fd28144002b5bcb93d575e20911f8f6
MD5 99ec6d0463748b4196b1473ea594888b
BLAKE2b-256 896ca426e0544622761dd14ead6cfb1a5656e7771fd36a2f835ff52ef232b37b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 28de84b3f28a5d248fe387aed16abb78f2a605b4aa27d28ab7c6a7032edebbb6
MD5 62742d906c0fb611170611bc892e2fee
BLAKE2b-256 cde2763096db5efe4880f52ff9d51309a6e653697f2a0c7f07d05551cae087a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c980003adb46cbf069c20352b752e12e2abb54ef83165a53771661a0ffa4f74b
MD5 1801a638171da24db1007fd5706565f0
BLAKE2b-256 6fc856c3cedaddb3b29b52050c72394592d1f8bb38c689baf121834f677861ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 37f291a4ce6bb758739cdd0901464715aec403ccba0cbe3d38c22f4de9fc0a3a
MD5 49ce10920ae9c9febd895ca9e7de8a39
BLAKE2b-256 8e13b6f88f45a33a1ae10f1feaa40dd06d66186cbd14994f7063a6c1c92cc6e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 24393a969c0cb3a6b9a41317e06c8fceb6e5703bbdf82b0af760d4b2b364178c
MD5 39b8e18c23c27c6e77d644413550b6af
BLAKE2b-256 1784df695f79ebc6c96cf59130db61e394a7cf6d1aad04809d94779138f49bd2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 15439c806001142544e7a3c8322773c7a8c19b8acbce789d185dd7daf77b424c
MD5 53a1120ccaef076d952aac9b5048735e
BLAKE2b-256 c565031162c545e7a894199d915862864b13f5d5931c4b13716da5087f1ab3bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9b16c3f9306140133519910ce02ac13310788e21a2bac3e0281cda8466d76cca
MD5 85c62abff9f4137e92d199de422d6259
BLAKE2b-256 a4b518633ac2dc83974fd782c1e6994bf99273d67492bb124e59fecdd339e0cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9c59d78f51586f2e8d164703723b64db11445a30c8dc9b023079f8fa21a0bec0
MD5 346a8a59e34c77292554710b302dcbe4
BLAKE2b-256 a1756d4e689bf6adba1821175fd2bc6f97567d3b876c20e3a1aebba1cc288696

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 08caceaa174a367bb2990aabaf27d4caac35adc6b7412559cf1af13f46d8aaab
MD5 976d9da954f791727a89486b065b2495
BLAKE2b-256 4e9286f0ebeedfc10f080968f99ac33aa092d1825ca044c5e31d0a820c7da069

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 922797a2f1c7ee04055f9c678d6452b222399029fc74967c58f620bf319ac740
MD5 489f9200409edd6cde66d3e93ce79886
BLAKE2b-256 a07de8e259452f6506b9649bcaa0e02e5bdbe94fe3ab621e6ad59b8c507ca5f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e98bd6d099fe4317257203a2ba6ac10759a6e0db2ffbe4c6503c644c1c7ce849
MD5 e512243e41ce2092c096bb0a9c53dca2
BLAKE2b-256 a40a2bac5e543a081660dbd66d806470197c1fb12d6e8a08b84ce5547bebbf03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8e0eeca5c24905a3d689d27dc626e22c5554798c30710774e0d2bd5270549a6c
MD5 f460f94bdefb084838f2b00a09bbd721
BLAKE2b-256 1ff08a96c6d519762d26bb2a0fbb26dea99f80df2b4ba94cc92ba8d615b7c809

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1cdece12ae4227efd2182b5c78940b00cc3ba11ecfb0ce505082192ffdd709c1
MD5 93e7e7c3a3fd92d77ca8cc8e627223a9
BLAKE2b-256 25259a4ff63bb63115f21b12c1df0c4213c64cb76c9e926d751b3b5c22308ea7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8c51aab16448cfb9d1604dadb9978be31c662fdafd35347dca94ff6c43b8026a
MD5 1dec2ceb645edc7ae5d554216b9a15f8
BLAKE2b-256 0b4873f7f9c8bef042219eb363d30219fc9c8712a55abe320c35e95b65b4fa8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8b8e9930ff7cdeae6b393c4cc475f4ebece54e0add20d5e4ed83d3ea2dc2b5d5
MD5 5fbcc357b51838ede4e69ca29522c312
BLAKE2b-256 c6de3dda2c6fbbf2ddb5334a330260da6f2eead56f671c88c3eacbb784fbd562

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsonata-0.1.27-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2c77e4e5e8cfa983d50f48c8728f99e7ce807b49ce6f4bdf032c017094253e07
MD5 f1dfbf05d814f6c993fe1359b5c955be
BLAKE2b-256 e7b30a404b2cf35b06351ed1eab1fe6a626c92c2ca252b5c461784fcf96cced9

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