siibra 1.0.1a0__py3-none-any.whl → 1.0.1a2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of siibra might be problematic. Click here for more details.

Files changed (82) hide show
  1. siibra/VERSION +1 -1
  2. siibra/__init__.py +11 -20
  3. siibra/commons.py +17 -14
  4. siibra/configuration/__init__.py +1 -1
  5. siibra/configuration/configuration.py +6 -6
  6. siibra/configuration/factory.py +10 -9
  7. siibra/core/__init__.py +2 -2
  8. siibra/core/assignment.py +2 -1
  9. siibra/core/atlas.py +4 -4
  10. siibra/core/concept.py +7 -5
  11. siibra/core/parcellation.py +10 -10
  12. siibra/core/region.py +82 -73
  13. siibra/core/space.py +5 -7
  14. siibra/core/structure.py +4 -4
  15. siibra/exceptions.py +6 -2
  16. siibra/explorer/__init__.py +1 -1
  17. siibra/explorer/url.py +2 -2
  18. siibra/explorer/util.py +1 -1
  19. siibra/features/__init__.py +1 -1
  20. siibra/features/anchor.py +4 -6
  21. siibra/features/connectivity/__init__.py +1 -1
  22. siibra/features/connectivity/functional_connectivity.py +1 -1
  23. siibra/features/connectivity/regional_connectivity.py +12 -15
  24. siibra/features/connectivity/streamline_counts.py +1 -1
  25. siibra/features/connectivity/streamline_lengths.py +1 -1
  26. siibra/features/connectivity/tracing_connectivity.py +1 -1
  27. siibra/features/dataset/__init__.py +1 -1
  28. siibra/features/dataset/ebrains.py +2 -2
  29. siibra/features/feature.py +31 -28
  30. siibra/features/image/__init__.py +5 -3
  31. siibra/features/image/image.py +4 -6
  32. siibra/features/image/sections.py +82 -3
  33. siibra/features/image/volume_of_interest.py +1 -9
  34. siibra/features/tabular/__init__.py +2 -2
  35. siibra/features/tabular/bigbrain_intensity_profile.py +3 -2
  36. siibra/features/tabular/cell_density_profile.py +10 -11
  37. siibra/features/tabular/cortical_profile.py +9 -9
  38. siibra/features/tabular/gene_expression.py +7 -6
  39. siibra/features/tabular/layerwise_bigbrain_intensities.py +5 -4
  40. siibra/features/tabular/layerwise_cell_density.py +5 -7
  41. siibra/features/tabular/receptor_density_fingerprint.py +47 -19
  42. siibra/features/tabular/receptor_density_profile.py +2 -3
  43. siibra/features/tabular/regional_timeseries_activity.py +9 -9
  44. siibra/features/tabular/tabular.py +10 -9
  45. siibra/livequeries/__init__.py +1 -1
  46. siibra/livequeries/allen.py +23 -25
  47. siibra/livequeries/bigbrain.py +252 -55
  48. siibra/livequeries/ebrains.py +14 -11
  49. siibra/livequeries/query.py +5 -5
  50. siibra/locations/__init__.py +19 -10
  51. siibra/locations/boundingbox.py +10 -13
  52. siibra/{experimental/plane3d.py → locations/experimental.py} +117 -17
  53. siibra/locations/location.py +11 -13
  54. siibra/locations/point.py +10 -19
  55. siibra/locations/pointcloud.py +59 -23
  56. siibra/retrieval/__init__.py +1 -1
  57. siibra/retrieval/cache.py +2 -1
  58. siibra/retrieval/datasets.py +23 -17
  59. siibra/retrieval/exceptions/__init__.py +1 -1
  60. siibra/retrieval/repositories.py +14 -15
  61. siibra/retrieval/requests.py +32 -30
  62. siibra/vocabularies/__init__.py +2 -3
  63. siibra/volumes/__init__.py +5 -4
  64. siibra/volumes/parcellationmap.py +55 -20
  65. siibra/volumes/providers/__init__.py +1 -1
  66. siibra/volumes/providers/freesurfer.py +7 -7
  67. siibra/volumes/providers/gifti.py +5 -5
  68. siibra/volumes/providers/neuroglancer.py +25 -28
  69. siibra/volumes/providers/nifti.py +7 -7
  70. siibra/volumes/providers/provider.py +4 -3
  71. siibra/volumes/sparsemap.py +8 -7
  72. siibra/volumes/volume.py +33 -40
  73. {siibra-1.0.1a0.dist-info → siibra-1.0.1a2.dist-info}/METADATA +21 -8
  74. siibra-1.0.1a2.dist-info/RECORD +80 -0
  75. {siibra-1.0.1a0.dist-info → siibra-1.0.1a2.dist-info}/WHEEL +1 -1
  76. siibra/experimental/__init__.py +0 -19
  77. siibra/experimental/contour.py +0 -61
  78. siibra/experimental/cortical_profile_sampler.py +0 -57
  79. siibra/experimental/patch.py +0 -98
  80. siibra-1.0.1a0.dist-info/RECORD +0 -84
  81. {siibra-1.0.1a0.dist-info → siibra-1.0.1a2.dist-info}/LICENSE +0 -0
  82. {siibra-1.0.1a0.dist-info → siibra-1.0.1a2.dist-info}/top_level.txt +0 -0
@@ -1,57 +0,0 @@
1
- # Copyright 2018-2024
2
- # Institute of Neuroscience and Medicine (INM-1), Forschungszentrum Jülich GmbH
3
-
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
-
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
-
16
- from . import contour
17
- from ..locations import point
18
- from ..core import parcellation
19
-
20
- import numpy as np
21
-
22
-
23
- class CorticalProfileSampler:
24
- """Samples cortical profiles from the cortical layer maps."""
25
-
26
- def __init__(self):
27
- self.layermap = parcellation.Parcellation.get_instance(
28
- "cortical layers"
29
- ).get_map(space="bigbrain", maptype="labelled")
30
-
31
- def query(self, query_point: point.Point):
32
- q = query_point.warp(self.layermap.space)
33
- smallest_dist = np.inf
34
- best_match = None
35
- for layername in self.layermap.regions:
36
- vertices = self.layermap.fetch(region=layername, format="mesh")["verts"]
37
- dists = np.sqrt(((vertices - q.coordinate) ** 2).sum(1))
38
- best = np.argmin(dists)
39
- if dists[best] < smallest_dist:
40
- best_match = (layername, best)
41
- smallest_dist = dists[best]
42
-
43
- best_vertex = best_match[1]
44
- hemisphere = "left" if "left" in best_match[0] else "right"
45
- print(f"Best match is vertex #{best_match[1]} in {best_match[0]}.")
46
-
47
- profile = [
48
- (_, self.layermap.fetch(region=_, format="mesh")["verts"][best_vertex])
49
- for _ in self.layermap.regions
50
- if hemisphere in _
51
- ]
52
-
53
- return contour.Contour(
54
- [p[1] for p in profile],
55
- space=self.layermap.space,
56
- labels=[p[0] for p in profile],
57
- )
@@ -1,98 +0,0 @@
1
- # Copyright 2018-2024
2
- # Institute of Neuroscience and Medicine (INM-1), Forschungszentrum Jülich GmbH
3
-
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
-
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
-
16
- from ..volumes import volume
17
- from ..locations import pointcloud, boundingbox
18
- from ..commons import translation_matrix, y_rotation_matrix
19
-
20
- import numpy as np
21
- import math
22
- from nilearn import image
23
-
24
-
25
- class Patch:
26
-
27
- def __init__(self, corners: pointcloud.PointCloud):
28
- """Construct a patch in physical coordinates.
29
- As of now, only patches aligned in the y plane of the physical space
30
- are supported."""
31
- # TODO: need to ensure that the points are planar, if more than 3
32
- assert len(corners) == 4
33
- assert len(np.unique(corners.coordinates[:, 1])) == 1
34
- self.corners = corners
35
-
36
- @property
37
- def space(self):
38
- return self.corners.space
39
-
40
- def flip(self):
41
- """Flips the patch. """
42
- self.corners._coordinates = self.corners.coordinates[[2, 3, 0, 1]]
43
-
44
- def extract_volume(self, image_volume: volume.Volume, resolution_mm: float):
45
- """
46
- fetches image data in a planar patch.
47
- TODO The current implementation only covers patches which are strictly
48
- define in the y plane. A future implementation should accept arbitrary
49
- oriented patches.accept arbitrary oriented patches.
50
- """
51
- assert image_volume.space == self.space
52
-
53
- # Extend the 2D patch into a 3D structure
54
- # this is only valid if the patch plane lies within the image canvas.
55
- canvas = image_volume.get_boundingbox()
56
- assert canvas.minpoint[1] <= self.corners.coordinates[0, 1]
57
- assert canvas.maxpoint[1] >= self.corners.coordinates[0, 1]
58
- XYZ = self.corners.coordinates
59
- voi = boundingbox.BoundingBox(
60
- XYZ.min(0)[:3], XYZ.max(0)[:3], space=image_volume.space
61
- )
62
- # enforce the patch to have the same y dimensions
63
- voi.minpoint[1] = canvas.minpoint[1]
64
- voi.maxpoint[1] = canvas.maxpoint[1]
65
- patch = image_volume.fetch(voi=voi, resolution_mm=resolution_mm)
66
- assert patch is not None
67
-
68
- # patch rotation defined in physical space
69
- vx, vy, vz = XYZ[1] - XYZ[0]
70
- alpha = -math.atan2(-vz, -vx)
71
- cx, cy, cz = XYZ.mean(0)
72
- rot_phys = np.linalg.multi_dot(
73
- [
74
- translation_matrix(cx, cy, cz),
75
- y_rotation_matrix(alpha),
76
- translation_matrix(-cx, -cy, -cz),
77
- ]
78
- )
79
-
80
- # rotate the patch in physical space
81
- affine_rot = np.dot(rot_phys, patch.affine)
82
-
83
- # crop in the rotated space
84
- pixels = (
85
- np.dot(np.linalg.inv(affine_rot), self.corners.homogeneous.T)
86
- .astype("int")
87
- .T
88
- )
89
- # keep a pixel distance to avoid black border pixels
90
- xmin, ymin, zmin = pixels.min(0)[:3] + 1
91
- xmax, ymax, zmax = pixels.max(0)[:3] - 1
92
- h, w = xmax - xmin, zmax - zmin
93
- affine = np.dot(affine_rot, translation_matrix(xmin, 0, zmin))
94
- return volume.from_nifti(
95
- image.resample_img(patch, target_affine=affine, target_shape=[h, 1, w]),
96
- space=image_volume.space,
97
- name=f"Rotated patch with corner points {self.corners} sampled from {image_volume.name}",
98
- )
@@ -1,84 +0,0 @@
1
- siibra/VERSION,sha256=obkBMWS4uPgy0Q8o6UWN0GqfjWFwM9_DzViNq5cAX98,14
2
- siibra/__init__.py,sha256=odym0KtWXn55LqBXZDRgXCzSd5daKXrC0D6lSeYi3po,4715
3
- siibra/commons.py,sha256=L0tEiZycG0GyDo-KxTeEs8abfTZC98VR_xsDRDdWWNQ,27561
4
- siibra/exceptions.py,sha256=ruU9IGFBqD52mXUryBF41uE6mDV3kabfSAzUunhCWR8,1319
5
- siibra/configuration/__init__.py,sha256=Kp00hs44rVSU5OPuZ26KFJpd6HXtMocEiLiZihdvav4,752
6
- siibra/configuration/configuration.py,sha256=um31WGN0Ozl-3v5bUYECkJEJ5GMrEnrJO3_syUXgzFc,7263
7
- siibra/configuration/factory.py,sha256=8PoPydqc_4csKF8f-E7Un1QnQ0yKDRgYyO1jbVhKeQU,22627
8
- siibra/core/__init__.py,sha256=907tEZ3HxZSZqqhv0md3Sk8t9iy0-aWtbuo1G1oxN_w,735
9
- siibra/core/assignment.py,sha256=9g2lLOj_ftuS623ZlVauTTLtJGAvDfE10wknJXJA7m4,3819
10
- siibra/core/atlas.py,sha256=BNp96YZ3s6f5MrnuEWL8OktFtM528Dj9Zv6e9FbOAyg,8549
11
- siibra/core/concept.py,sha256=cmWR2PFdWR3pdVa0NSOiPC-EWl0i_WBjyF3JjKt74gc,10889
12
- siibra/core/parcellation.py,sha256=AF7yODxdhZZymFNzQdaL2qzSDwkgsogPs74e603Zl_Q,14506
13
- siibra/core/region.py,sha256=6UDx31FmFYtFQJs5Z0fbpQ2yT9MCh4QCCANIa5GxTXQ,43423
14
- siibra/core/space.py,sha256=0v_7aERZcVNPJmbr_LbeLRkbJj8TGaTrbqnXzr-I5Jg,4586
15
- siibra/core/structure.py,sha256=eHvCRBZEDjTI8xc2UmSgt26ujgDxHTLai8NoGmeUU64,4497
16
- siibra/experimental/__init__.py,sha256=s4bEYpMO4Ox-Xlx3FdnRUNKYs0mTHz5Hu4VnfNXpgxU,791
17
- siibra/experimental/contour.py,sha256=uZOltesITk5t7EbohZtqA8gJRc3UuiqpJdJQhFP1gXo,2454
18
- siibra/experimental/cortical_profile_sampler.py,sha256=JsX0FCJqvozdhWuayYJ-r3kHNsgSUfA00O9D0X6D7Rg,2086
19
- siibra/experimental/patch.py,sha256=0VKVU7F7xMBr1hwtL-Z4K-_1XKw88WImPG4fWaiH5bw,3809
20
- siibra/experimental/plane3d.py,sha256=XgmNemO9peDRDtHE_8joqroGpjCKI5H_vzyIFXDh434,10853
21
- siibra/explorer/__init__.py,sha256=ZEBJlKs3r5tFWWoKvfrASb1M031FPwSVeysaktUnhbQ,781
22
- siibra/explorer/url.py,sha256=1UWJyt18gMKTXuixfO8P1Xa5SJDUUagollow67VYT20,7068
23
- siibra/explorer/util.py,sha256=lAy1pd-ym90H-BZx2X8GMT3qJIsRTgGCz6tW3t1duig,2083
24
- siibra/features/__init__.py,sha256=NMmDmfrzscV-RHHZMoyjlH_bYfjNhGDX72dQ6-JCYXg,3970
25
- siibra/features/anchor.py,sha256=FfeMfJxwApFE0iWo2RJj5_XFr0L5gF76V4ZxaPL2VUc,9130
26
- siibra/features/feature.py,sha256=ls1E7BjRdPOkbtwzU-d01lwTRA_33IlzB44-tL0tg2g,35194
27
- siibra/features/connectivity/__init__.py,sha256=A7fcXqlAtfFmuymfyOl7A7ecaP8nqIBPFaM76qwh4HA,1161
28
- siibra/features/connectivity/functional_connectivity.py,sha256=3UiPpHfbYAOBwMn7TI79wy1fR9lWwI3ePMSRVziJONw,2122
29
- siibra/features/connectivity/regional_connectivity.py,sha256=13uZ-TJBv_J3J-6KuJcKmJMKf7yWy21pzdsyvcWkWXg,18287
30
- siibra/features/connectivity/streamline_counts.py,sha256=OBOQblhsqnfsvf2kdySRAoWxGsFi4Ulr2PNT9wOu1Ls,1064
31
- siibra/features/connectivity/streamline_lengths.py,sha256=B9D6Y7szMRCuHRwisAorgTJfkq-1aTNB08H_HVZHpJs,1067
32
- siibra/features/connectivity/tracing_connectivity.py,sha256=JehDrEEeYl_i-T81AE_AnamlKfzHkZ3nbheRAybFn24,1083
33
- siibra/features/dataset/__init__.py,sha256=KlHddELER_5IQ-xQ1xx5ExcEtqXWI8gpNvzGlC2on-Y,748
34
- siibra/features/dataset/ebrains.py,sha256=G3-jWGBMLyJm3X8g8vTVtXN2Kws3JZ7zIEDkO9jwWxc,2544
35
- siibra/features/image/__init__.py,sha256=HZ5LdR6DzkkkgsftTu314-DAMMLdf6Sfg6ceYVzYjas,1013
36
- siibra/features/image/image.py,sha256=QtFtXBt4rRkFq6AHeUOaQSCOjgBygIJ7lhz1gjsQ4c4,3585
37
- siibra/features/image/sections.py,sha256=oQparLp7Nj5dLBvUAs09rgnSgAxH86wN1SMmwkit0S0,961
38
- siibra/features/image/volume_of_interest.py,sha256=FuYxt-r6YOWN4tLaaZPL3_GAvX_WcZz3jRHxEnWySnQ,2654
39
- siibra/features/tabular/__init__.py,sha256=sldsgKiwpGOk5PvntIO16lJlWiTy68qVI_pLhepqbdI,1176
40
- siibra/features/tabular/bigbrain_intensity_profile.py,sha256=noXtsmQjW75epnpfHex0VAbvz7QLwvlkTn_PLSwASIQ,2708
41
- siibra/features/tabular/cell_density_profile.py,sha256=W1GtrOCacankczxpkz2V3n9zJyf2WCW3W_BpYrEc6yk,10820
42
- siibra/features/tabular/cortical_profile.py,sha256=I3MFsytAjvi6A2GaMhgXnF9-94LnAScIo_GR-HMEAv0,12540
43
- siibra/features/tabular/gene_expression.py,sha256=GbXmsdHCz8eFErTLUd6DXhQaeObftrwl9aIEgzlEdXA,9827
44
- siibra/features/tabular/layerwise_bigbrain_intensities.py,sha256=GIYjX7_Bfs7ywhJBkXd878BZGSiaKUV0BhILr-6D4zc,2117
45
- siibra/features/tabular/layerwise_cell_density.py,sha256=V8c16KdBACUYFxMYh1T9tdlXs_V67iFAZqlYx7y_4RY,3783
46
- siibra/features/tabular/receptor_density_fingerprint.py,sha256=GudVpZ2wWF1yGsDFKz4AEU761qA45rItLOwHYpY4Zcs,7299
47
- siibra/features/tabular/receptor_density_profile.py,sha256=ZYgL-3WxevVFtmEQSbR8Ot24VCMg5xzfXYEPBH1oM6k,3725
48
- siibra/features/tabular/regional_timeseries_activity.py,sha256=vfoEIu92l3wVdUbdnNqZ5nr9oBuahOrIGS5xhA8cW7s,10026
49
- siibra/features/tabular/tabular.py,sha256=NoNexdPJ3nhSsztWdWnnIHcX6PakcjEAOV-f9azqa-s,5323
50
- siibra/livequeries/__init__.py,sha256=yZ2bFYizwF_Z3F9VLNI95IrHcmSO5lqfFML_juifVHs,875
51
- siibra/livequeries/allen.py,sha256=2jj1gMr9mZFaOfRSf9lPzrcRLAoAMuWjvT_N3_KUkHI,14809
52
- siibra/livequeries/bigbrain.py,sha256=V7yRQIx6VLIkA9fwW6PfEw7kSkrwp3oE_-WYXe3bjMk,8365
53
- siibra/livequeries/ebrains.py,sha256=nAIhyPlVeRPNmmMKkGATUSDRoGK7aAg8zOGEKuS-z_w,5820
54
- siibra/livequeries/query.py,sha256=Yh24vRdcSYBTNx61sMoRCyXyNZ7TX1iqoiJ8fxOJ3V8,1849
55
- siibra/locations/__init__.py,sha256=q97HYl9mdBWNuQKvgh1Wi0eAz1TlG_dLSIxpyJuHCZo,3342
56
- siibra/locations/boundingbox.py,sha256=pdLZNyxUD-WvGHNYOvuqZtputCd5tPOxLYTvH6oBBNg,16492
57
- siibra/locations/location.py,sha256=Taw7oUIFBdXTE8C3b2vbGicPusJlad_KI1wW6iLL324,4361
58
- siibra/locations/point.py,sha256=wmtH0Isx1-bsk3TfNxXHFcYUmbsQXBt34l8LpFWxhHU,12863
59
- siibra/locations/pointcloud.py,sha256=61sUvXw5dtKouNKinQNwgGOFd7iwgJLf4D4zYNWo7Js,12474
60
- siibra/retrieval/__init__.py,sha256=bgoasCN6LFDlKVFCJC0q4kfGMZCsxt_NVCcJ5qy0sIo,1062
61
- siibra/retrieval/cache.py,sha256=kVB-hYtvQIQmlCozKlYJPaQxgtCKWOS3jB2qqefCVNc,7832
62
- siibra/retrieval/datasets.py,sha256=Hjai2cSFK1WoMgXp4uMJWBUqlO_APLQ_iDQ__8EpKEI,11031
63
- siibra/retrieval/repositories.py,sha256=L-JrEuKF6Xq7sEIdJ3iPFQPWaf5CiHMt96X1zi-gOVM,29936
64
- siibra/retrieval/requests.py,sha256=oup12LGw-MnSc7c3IwlX9Z5TrVXzCCRfGZFLLLR4jAs,23069
65
- siibra/retrieval/exceptions/__init__.py,sha256=CEY_n-Eh0_EBXYHDPxmIXzO6C_Km0WQFvENAMvRXmYg,875
66
- siibra/vocabularies/__init__.py,sha256=Qn_xBKrFhla7d_PjDgN6gX4gxroeSRP3ntBZ6gNnvtE,1288
67
- siibra/vocabularies/gene_names.json,sha256=i-gnh753GyZtQfX_dWibNYr_d5ccDPHooOwsdeKUYqE,1647972
68
- siibra/vocabularies/receptor_symbols.json,sha256=F6DZIArPCBmJV_lWGV-zDpBBH_GOJOZm67LBE4qzMa4,5722
69
- siibra/vocabularies/region_aliases.json,sha256=T2w1wRlxPNTsPppXn0bzC70tNsb8mOjLsoHuxDSYm2w,8563
70
- siibra/volumes/__init__.py,sha256=j7h6WNQk2juIyxs2OlruWj5VcKxsy1g-wD2Q05rM-wM,935
71
- siibra/volumes/parcellationmap.py,sha256=lgqVjwHdmjmKj_2PguAH4jda3dc-L0p0QzfQ9emPJRg,49774
72
- siibra/volumes/sparsemap.py,sha256=ZHkHh7NNEPZzRE2-XGWWPRaVVL2V4voYYzYdZ7RCxRg,17437
73
- siibra/volumes/volume.py,sha256=-ULibtP5MCy0a3tHqbeFweIUP7sLZGuhj6eW558BRlM,32619
74
- siibra/volumes/providers/__init__.py,sha256=0uDbnsjlAHnxoSdFghzYfhtjVki9721hi7Sp1P6GjNY,934
75
- siibra/volumes/providers/freesurfer.py,sha256=LxPHbfVJLXkP4WVXCYhsildRUZUvzgv6jJOWeNLavw8,4893
76
- siibra/volumes/providers/gifti.py,sha256=mPVFkBFnwbCbMks_ysuNbhe0Pj5ndxONPmq-Xr-ir3w,6231
77
- siibra/volumes/providers/neuroglancer.py,sha256=JH8z6jb7u6nkqtNR3ZFYPrtwexAS6z68pesrLA2lYrk,28712
78
- siibra/volumes/providers/nifti.py,sha256=AXhWvbt78uEvIT6Z8ABWZ6k0zYUEWZKniSxfLAqDE3k,10135
79
- siibra/volumes/providers/provider.py,sha256=jxhOGHrSEeBgN0tAi7p8ju3twtUkhkjrk-e-3-chtxI,3695
80
- siibra-1.0.1a0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
81
- siibra-1.0.1a0.dist-info/METADATA,sha256=jY1qR1aP2er68Kb1URFJ-bE4i8ZXYj8wlLviXdlkxlI,8884
82
- siibra-1.0.1a0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
83
- siibra-1.0.1a0.dist-info/top_level.txt,sha256=NF0OSGLL0li2qyC7MaU0iBB5Y9S09_euPpvisD0-8Hg,7
84
- siibra-1.0.1a0.dist-info/RECORD,,