swcgeom 0.17.0__py3-none-any.whl → 0.17.1__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 swcgeom might be problematic. Click here for more details.

Files changed (47) hide show
  1. swcgeom/_version.py +2 -2
  2. swcgeom/analysis/feature_extractor.py +13 -12
  3. swcgeom/analysis/features.py +4 -4
  4. swcgeom/analysis/lmeasure.py +5 -5
  5. swcgeom/analysis/sholl.py +4 -4
  6. swcgeom/analysis/trunk.py +12 -11
  7. swcgeom/analysis/visualization.py +9 -9
  8. swcgeom/analysis/visualization3d.py +85 -0
  9. swcgeom/analysis/volume.py +4 -4
  10. swcgeom/core/branch.py +4 -3
  11. swcgeom/core/branch_tree.py +3 -4
  12. swcgeom/core/compartment.py +3 -2
  13. swcgeom/core/node.py +2 -2
  14. swcgeom/core/path.py +3 -2
  15. swcgeom/core/population.py +16 -27
  16. swcgeom/core/swc.py +11 -10
  17. swcgeom/core/swc_utils/base.py +8 -17
  18. swcgeom/core/swc_utils/io.py +7 -6
  19. swcgeom/core/swc_utils/normalizer.py +4 -3
  20. swcgeom/core/swc_utils/subtree.py +2 -2
  21. swcgeom/core/tree.py +22 -34
  22. swcgeom/core/tree_utils.py +11 -10
  23. swcgeom/core/tree_utils_impl.py +3 -3
  24. swcgeom/images/augmentation.py +3 -3
  25. swcgeom/images/folder.py +10 -16
  26. swcgeom/images/io.py +19 -30
  27. swcgeom/transforms/image_stack.py +6 -5
  28. swcgeom/transforms/images.py +2 -3
  29. swcgeom/transforms/neurolucida_asc.py +4 -6
  30. swcgeom/transforms/population.py +1 -3
  31. swcgeom/transforms/tree.py +8 -7
  32. swcgeom/transforms/tree_assembler.py +4 -3
  33. swcgeom/utils/ellipse.py +3 -4
  34. swcgeom/utils/neuromorpho.py +17 -16
  35. swcgeom/utils/plotter_2d.py +12 -6
  36. swcgeom/utils/plotter_3d.py +31 -0
  37. swcgeom/utils/renderer.py +6 -6
  38. swcgeom/utils/sdf.py +2 -2
  39. swcgeom/utils/solid_geometry.py +1 -3
  40. swcgeom/utils/transforms.py +1 -3
  41. swcgeom/utils/volumetric_object.py +8 -10
  42. {swcgeom-0.17.0.dist-info → swcgeom-0.17.1.dist-info}/METADATA +1 -1
  43. swcgeom-0.17.1.dist-info/RECORD +67 -0
  44. swcgeom-0.17.0.dist-info/RECORD +0 -65
  45. {swcgeom-0.17.0.dist-info → swcgeom-0.17.1.dist-info}/LICENSE +0 -0
  46. {swcgeom-0.17.0.dist-info → swcgeom-0.17.1.dist-info}/WHEEL +0 -0
  47. {swcgeom-0.17.0.dist-info → swcgeom-0.17.1.dist-info}/top_level.txt +0 -0
swcgeom/utils/renderer.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """Rendering related utils."""
2
2
 
3
3
  from functools import cached_property
4
- from typing import Dict, Literal, Tuple, cast
4
+ from typing import Literal, cast
5
5
 
6
6
  import numpy as np
7
7
  import numpy.typing as npt
@@ -15,9 +15,9 @@ from swcgeom.utils.transforms import (
15
15
 
16
16
  __all__ = ["CameraOptions", "Camera", "SimpleCamera", "palette"]
17
17
 
18
- CameraOption = Vec3f | Tuple[Vec3f, Vec3f] | Tuple[Vec3f, Vec3f, Vec3f]
18
+ CameraOption = Vec3f | tuple[Vec3f, Vec3f] | tuple[Vec3f, Vec3f, Vec3f]
19
19
  CameraPreset = Literal["xy", "yz", "zx", "yx", "zy", "xz"]
20
- CameraPresets: Dict[CameraPreset, Tuple[Vec3f, Vec3f, Vec3f]] = {
20
+ CameraPresets: dict[CameraPreset, tuple[Vec3f, Vec3f, Vec3f]] = {
21
21
  "xy": ((0.0, 0.0, 0.0), (+0.0, +0.0, -1.0), (+0.0, +1.0, +0.0)),
22
22
  "yz": ((0.0, 0.0, 0.0), (-1.0, +0.0, +0.0), (+0.0, +0.0, +1.0)),
23
23
  "zx": ((0.0, 0.0, 0.0), (+0.0, -1.0, +0.0), (+1.0, +0.0, +0.0)),
@@ -77,7 +77,7 @@ class SimpleCamera(Camera):
77
77
  if isinstance(camera[0], tuple):
78
78
  return cls((0, 0, 0), cast(Vec3f, camera), (0, 1, 0))
79
79
 
80
- return cls(*cast(Tuple[Vec3f, Vec3f, Vec3f], camera))
80
+ return cls(*cast(tuple[Vec3f, Vec3f, Vec3f], camera))
81
81
 
82
82
 
83
83
  class Palette:
@@ -85,8 +85,8 @@ class Palette:
85
85
 
86
86
  # pylint: disable=too-few-public-methods
87
87
 
88
- default: Dict[int, str]
89
- vaa3d: Dict[int, str]
88
+ default: dict[int, str]
89
+ vaa3d: dict[int, str]
90
90
 
91
91
  def __init__(self):
92
92
  default = [
swcgeom/utils/sdf.py CHANGED
@@ -10,7 +10,7 @@ the future, use `sdflit` instead.
10
10
 
11
11
  import warnings
12
12
  from abc import ABC, abstractmethod
13
- from typing import Iterable, Tuple
13
+ from collections.abc import Iterable
14
14
 
15
15
  import numpy as np
16
16
  import numpy.typing as npt
@@ -29,7 +29,7 @@ __all__ = [
29
29
  ]
30
30
 
31
31
  # Axis-aligned bounding box, tuple of array of shape (3,)
32
- AABB = Tuple[npt.NDArray[np.float32], npt.NDArray[np.float32]]
32
+ AABB = tuple[npt.NDArray[np.float32], npt.NDArray[np.float32]]
33
33
 
34
34
 
35
35
  class SDF(ABC):
@@ -1,7 +1,5 @@
1
1
  """Solid Geometry."""
2
2
 
3
- from typing import List, Tuple
4
-
5
3
  import numpy as np
6
4
  import numpy.typing as npt
7
5
 
@@ -31,7 +29,7 @@ def find_sphere_line_intersection(
31
29
  sphere_radius: float,
32
30
  line_point_a: npt.NDArray,
33
31
  line_point_b: npt.NDArray,
34
- ) -> List[Tuple[float, npt.NDArray[np.float64]]]:
32
+ ) -> list[tuple[float, npt.NDArray[np.float64]]]:
35
33
  A = np.array(line_point_a)
36
34
  B = np.array(line_point_b)
37
35
  C = np.array(sphere_center)
@@ -1,7 +1,5 @@
1
1
  """3D geometry transformations."""
2
2
 
3
- from typing import Tuple
4
-
5
3
  import numpy as np
6
4
  import numpy.typing as npt
7
5
 
@@ -19,7 +17,7 @@ __all__ = [
19
17
  "orthographic_projection_simple",
20
18
  ]
21
19
 
22
- Vec3f = Tuple[float, float, float]
20
+ Vec3f = tuple[float, float, float]
23
21
 
24
22
 
25
23
  def angle(a: npt.ArrayLike, b: npt.ArrayLike) -> float:
@@ -16,7 +16,7 @@ computations.
16
16
 
17
17
  import warnings
18
18
  from abc import ABC, abstractmethod
19
- from typing import Generic, Optional, Tuple, TypeVar
19
+ from typing import Generic, Optional, TypeVar
20
20
 
21
21
  import numpy as np
22
22
  import numpy.typing as npt
@@ -95,7 +95,7 @@ class VolMCObject(VolObject, ABC):
95
95
  self.n_samples = n_samples
96
96
 
97
97
  @abstractmethod
98
- def sample(self, n: int) -> Tuple[npt.NDArray[np.float32], float]:
98
+ def sample(self, n: int) -> tuple[npt.NDArray[np.float32], float]:
99
99
  """Sample points.
100
100
 
101
101
  Parameters
@@ -172,7 +172,7 @@ class VolSDFObject(VolMCObject):
172
172
  super().__init__(**kwargs)
173
173
  self.sdf = sdf
174
174
 
175
- def sample(self, n: int) -> Tuple[npt.NDArray[np.float32], float]:
175
+ def sample(self, n: int) -> tuple[npt.NDArray[np.float32], float]:
176
176
  (min_x, min_y, min_z), (max_x, max_y, max_z) = self.sdf.bounding_box()
177
177
  samples = np.random.uniform(
178
178
  (min_x, min_y, min_z), (max_x, max_y, max_z), size=(n, 3)
@@ -186,17 +186,17 @@ class VolSDFObject(VolMCObject):
186
186
  def union(self, obj: VolObject) -> VolObject:
187
187
  if isinstance(obj, VolSDFObject):
188
188
  return VolSDFUnion(self, obj)
189
- return super().union(obj)
189
+ raise NotImplementedError()
190
190
 
191
191
  def intersect(self, obj: VolObject) -> VolObject:
192
192
  if isinstance(obj, VolSDFObject):
193
193
  return VolSDFIntersection(self, obj)
194
- return super().intersect(obj)
194
+ raise NotImplementedError()
195
195
 
196
196
  def subtract(self, obj: VolObject) -> VolObject:
197
197
  if isinstance(obj, VolSDFObject):
198
198
  return VolSDFDifference(self, obj)
199
- return super().subtract(obj)
199
+ raise NotImplementedError()
200
200
 
201
201
 
202
202
  T = TypeVar("T", bound=VolSDFObject)
@@ -386,9 +386,7 @@ class VolSphere2Intersection(VolSDFIntersection[VolSphere, VolSphere]):
386
386
  return VolSphere.calc_volume(min(r1, r2))
387
387
 
388
388
  part1 = (np.pi / (12 * d)) * (r1 + r2 - d) ** 2
389
- part2 = (
390
- d**2 + 2 * d * r1 - 3 * r1**2 + 2 * d * r2 - 3 * r2**2 + 6 * r1 * r2
391
- )
389
+ part2 = d**2 + 2 * d * r1 - 3 * r1**2 + 2 * d * r2 - 3 * r2**2 + 6 * r1 * r2
392
390
  return part1 * part2
393
391
 
394
392
 
@@ -497,7 +495,7 @@ class VolSphereFrustumConeUnion(VolSDFUnion[VolSphere, VolFrustumCone]):
497
495
  )
498
496
 
499
497
 
500
- def _tp3f(x: npt.NDArray) -> Tuple[float, float, float]:
498
+ def _tp3f(x: npt.NDArray) -> tuple[float, float, float]:
501
499
  """Convert to tuple of 3 floats."""
502
500
 
503
501
  assert len(x) == 3
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: swcgeom
3
- Version: 0.17.0
3
+ Version: 0.17.1
4
4
  Summary: Neuron geometry library for swc format
5
5
  Author-email: yzx9 <yuan.zx@outlook.com>
6
6
  License: Apache-2.0
@@ -0,0 +1,67 @@
1
+ swcgeom/__init__.py,sha256=z88Zwcjv-ii7c7dYd9QPg9XrUVorQjtrgGbQCsEnQhc,265
2
+ swcgeom/_version.py,sha256=_lgKa5p_bLODIZJPNplciMDP-zYDU8I4ZC5LbeKWQ08,413
3
+ swcgeom/analysis/__init__.py,sha256=NurxIAyjsxjYv9rbzNf65y2sv-iBcGTmLap645hYq9Y,280
4
+ swcgeom/analysis/feature_extractor.py,sha256=Sx9jiRWNEssFJtivrgjUSRfcVxj04KZ2AbR62PuINTU,13956
5
+ swcgeom/analysis/features.py,sha256=7VfCadvlEDhMoLF7NqfZ4St2GGI4yZgaJ60IfUDv-7o,5959
6
+ swcgeom/analysis/lmeasure.py,sha256=as34yoFQz-aNcM1qUpkheRH6-Otwy38Y-_1aWP_h4xs,27552
7
+ swcgeom/analysis/sholl.py,sha256=w9c4OQYf2VIHtLZi6bXT1znmUdm-I_PVNCDeR760WIY,7236
8
+ swcgeom/analysis/trunk.py,sha256=fMHnLDxm2jP_bKBM8ATbTQvBVS5G92ITbgMAm1pIK20,5566
9
+ swcgeom/analysis/visualization.py,sha256=C18J45btqM8kikXyIEZODk4PYgAK1-9pN2Hf6j3QCzs,5635
10
+ swcgeom/analysis/visualization3d.py,sha256=CTUcWBa2cMyDdKimMEtDBmbVzYf3-cTp-6UskPP6Erg,2513
11
+ swcgeom/analysis/volume.py,sha256=y-GVlK8gB7JPS4DpBq1jIjl9Wd-0zryZ9qo8zHGE6_k,4616
12
+ swcgeom/core/__init__.py,sha256=BEfFBnpaKnJOBID5G5kpGcL7_E1Fj0eZZDITDVwvmRY,445
13
+ swcgeom/core/branch.py,sha256=Jwv30pF5bfdZ7B9pl1yP2IYGczdzQtdHKYT2qNmxigE,4183
14
+ swcgeom/core/branch_tree.py,sha256=D8Yb4sz2TniQyeUIqoYW78ZBxLFXyumPuhgmQdff0yI,1843
15
+ swcgeom/core/compartment.py,sha256=5ZLlbsgHouwiRxtl9xLKD02IvsyjlvmIyaXG7IySAZ0,3269
16
+ swcgeom/core/node.py,sha256=alMZENhDQ3wYg6OYElTqS3dz19_y9_C4F2Jj38MNZ3k,3340
17
+ swcgeom/core/path.py,sha256=oS4gIW6LC--vcvCOacNzTxpmWXnxLqAusZaOc5z6t4I,4600
18
+ swcgeom/core/population.py,sha256=DRzHMh7G6sMcmvp_zYan74Qu4N2sQ_3HXomrAMW61cA,9790
19
+ swcgeom/core/swc.py,sha256=sq9-Fg5-d8Yxc2-ITu__LzN5k1hxQNkVTdmee1gpGME,6803
20
+ swcgeom/core/tree.py,sha256=5hynlhuHFdyOmm-2R2fHHQFi5SGGLGcW5_92t1Oecak,12138
21
+ swcgeom/core/tree_utils.py,sha256=Adxggh6tusPRAxEIcwoWbMstojZVKcgGOWPhTFJYjoM,7757
22
+ swcgeom/core/tree_utils_impl.py,sha256=MFCrd34VZE1oSJjt9xo5L7Oyf5-ERS8ifW8zUw6isNE,1597
23
+ swcgeom/core/swc_utils/__init__.py,sha256=qghRxjtzvq5KKfN4HhvLpZNsGPfZQu-Jj2x62_5-TbQ,575
24
+ swcgeom/core/swc_utils/assembler.py,sha256=XtjEWz_iAOMpQzLnErCiCjbnqrbB7JA4t2-LLi2R4rQ,889
25
+ swcgeom/core/swc_utils/base.py,sha256=CJWQioScS1L17KIJlpZMDgu68ZTCF_82nJeg25z7SRI,4731
26
+ swcgeom/core/swc_utils/checker.py,sha256=yuLPRoSt9c7No4GGePa05kxjGFCs0zYS7oB1HadNeMI,2852
27
+ swcgeom/core/swc_utils/io.py,sha256=xA5zvpM4gccsodKCruD-XInlC3NfvA1SgEDnqI5cjY8,6458
28
+ swcgeom/core/swc_utils/normalizer.py,sha256=BN4UOatAo869L1EqXM8IGz0oy0bXPu9KJfZwCGz_PkM,5097
29
+ swcgeom/core/swc_utils/subtree.py,sha256=iX0K90d4iEDdLx6NZ-4HJ-kY_NPE4XkcKn8xwXnYhQo,1988
30
+ swcgeom/images/__init__.py,sha256=QBP1ZGGo2nWAcV7Krz-vbvW_jN4ChqXrrpoScXcUURs,96
31
+ swcgeom/images/augmentation.py,sha256=DfSaEs57aY50O6IKDNupmLI8fHyOvNVmH8uXtdd45iQ,4167
32
+ swcgeom/images/contrast.py,sha256=ViZVW6XI-l2sLVTODLRLtHinv_7lVgtH-xZmaw1nQLw,2160
33
+ swcgeom/images/folder.py,sha256=-EYx_uZ4wwzoCsh9KjFsTl3Hr8aIDgfY76vi-3JeZcc,6749
34
+ swcgeom/images/io.py,sha256=6ITCUB3wtV96UHpfSPewnbeNacBQ9WTfGc9gA8eTDNw,20669
35
+ swcgeom/transforms/__init__.py,sha256=1rr4X--qY_lBi7l7_NHyvvkoWpQOQOqkioRT8I20olI,562
36
+ swcgeom/transforms/base.py,sha256=gN5Iqi-OHkYrsjllSOdxI6Yzav3jJGoi6kUPy-38FAs,4101
37
+ swcgeom/transforms/branch.py,sha256=R0rVti--u70IiUKyHSx6MsDYJyy6zSCf18Uia2Cmh28,5410
38
+ swcgeom/transforms/geometry.py,sha256=XR73fO_8T7otUFIllqKOWW0OnrsXBc7yA01oDT99yMc,7385
39
+ swcgeom/transforms/image_preprocess.py,sha256=ZVPpRoO69dmLF5K7CWsGaQJXB2G5gxdvA-FcDmfz4yQ,3662
40
+ swcgeom/transforms/image_stack.py,sha256=Pb2AwSB_ecnd747Z2aQm5l0CcaiSO8BtHw51j_uWtc0,5789
41
+ swcgeom/transforms/images.py,sha256=L4WSinFQsB9RJ5f2UhLlmKiEEhJtH5hlJ1DrXA_1H8Q,5735
42
+ swcgeom/transforms/mst.py,sha256=Oc_HnaXjg5EXC7ZnOPneHX0-rXizDAEUcjq63GTj-ac,6251
43
+ swcgeom/transforms/neurolucida_asc.py,sha256=zxXZ_LltO1BTILWGU9yZKoXbMPW6ldXpZZryYf3X6Jw,14120
44
+ swcgeom/transforms/path.py,sha256=Gk2iunGQMX7vE83bdo8xoDO-KAT1Vvep0iZs7oFLzFQ,1089
45
+ swcgeom/transforms/population.py,sha256=UHLjqZE1gO72p_nFHD-FSM6EFUEyfEm4v3KxHqk0O1M,808
46
+ swcgeom/transforms/tree.py,sha256=ZddI3o7OP99tesZQxSOM8zxAYPw3MnC--khvOD3sTpU,6347
47
+ swcgeom/transforms/tree_assembler.py,sha256=juqU3moMdKhlr09fsj6FYfZV7lCjgN3bALU19trPI50,5135
48
+ swcgeom/utils/__init__.py,sha256=LXL0wqq6-ggNweZrftp2lrNHCmVJ6LHIto3DuwlYz3c,466
49
+ swcgeom/utils/debug.py,sha256=qay2qJpViLX82mzxdndxQFn-pi1vaEj9CbLGuGt8Y9k,465
50
+ swcgeom/utils/download.py,sha256=By2qZezo6h1Ke_4YpSIhDgcisOrpjVqRmNzbhynC2xs,2834
51
+ swcgeom/utils/dsu.py,sha256=3aCbtpnl_D0OXnowTS8-kuwnCS4BKBYL5ECiFQ1fUW8,1435
52
+ swcgeom/utils/ellipse.py,sha256=hmoaPvff1QiW6Z_QvpKgXEHYRDzjGp6eUpkOOOJStF0,3234
53
+ swcgeom/utils/file.py,sha256=1hchQDsPgn-i-Vz5OQtcogxav_ajCQ_OaEZCLmqczRg,2515
54
+ swcgeom/utils/neuromorpho.py,sha256=HfZx3pqtQrZHklTJhpgaIROUY5ysJTPhYHbvbDxx_Ws,19115
55
+ swcgeom/utils/numpy_helper.py,sha256=xuvXpZgP-ZeuwTvPFD3DIxwJ5BK4fMCU7k5_5fUHaWE,1425
56
+ swcgeom/utils/plotter_2d.py,sha256=743BPwx4hpxNsIdUmjOnL6iuln4-pf2xyuGbQFYIts0,3869
57
+ swcgeom/utils/plotter_3d.py,sha256=EPB1BPyhJZD5IMarJrV-fvpclu1XjAJNZTDZCsUx7ZM,863
58
+ swcgeom/utils/renderer.py,sha256=3fjs9L_c6nJ1-pQzGT7meD0-XHZeKeW0WWqBfMx9c1s,4220
59
+ swcgeom/utils/sdf.py,sha256=64o-Nm2-x759-n5sEMIsYg4GW61l2krsEmcNkD8TkPQ,10686
60
+ swcgeom/utils/solid_geometry.py,sha256=Dn8b4A6TnM--EMoMVDPBSuOA_nworvbZL9gbm6EGMTY,2399
61
+ swcgeom/utils/transforms.py,sha256=wwNNkMZz3Bsac3Dx2B_k8M0tEgd_QKKd4VWFTOsxoD4,6957
62
+ swcgeom/utils/volumetric_object.py,sha256=213DCz-d99ZwEZJv6SLKb0Nkj9uo5oOBnPsG50Miwz8,15102
63
+ swcgeom-0.17.1.dist-info/LICENSE,sha256=JPtohhZ4XURqoKI0ZqnMYb7dobCOoZR_n5EpnaLTp3E,11344
64
+ swcgeom-0.17.1.dist-info/METADATA,sha256=kKscYNeLYexfe30yFy4tzF_TrmoTJ1Hz0zYPM7dp_z4,2332
65
+ swcgeom-0.17.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
66
+ swcgeom-0.17.1.dist-info/top_level.txt,sha256=hmLyUXWS61Gxl07haswFEKKefYPBVJYlUlol8ghNkjY,8
67
+ swcgeom-0.17.1.dist-info/RECORD,,
@@ -1,65 +0,0 @@
1
- swcgeom/__init__.py,sha256=z88Zwcjv-ii7c7dYd9QPg9XrUVorQjtrgGbQCsEnQhc,265
2
- swcgeom/_version.py,sha256=kBQrirg2HABnJUda1U0a6ZmIqeCqRLaPZOws884sTW8,413
3
- swcgeom/analysis/__init__.py,sha256=NurxIAyjsxjYv9rbzNf65y2sv-iBcGTmLap645hYq9Y,280
4
- swcgeom/analysis/feature_extractor.py,sha256=MBhnE6JbgCMhfTO8jEXqbLkVIiQh2WvVH2C4JR0IcpI,13948
5
- swcgeom/analysis/features.py,sha256=meUXUOIqV1PgiRtgYQdFrVuTmyPYQRSJ0C1Ll97XDhU,5965
6
- swcgeom/analysis/lmeasure.py,sha256=GI5HoIXkRp_GEDHd_JXJOMeAtZ26HP6lbSfF_0L-2r8,27559
7
- swcgeom/analysis/sholl.py,sha256=KeUyEXLatHjmn4hOSs8y_0o8UKDq9VoIufJ_81SOtgw,7249
8
- swcgeom/analysis/trunk.py,sha256=L2tjUIUmrRQpah_W3ZETGWd16bDXJ5F8Sk2XBNGms0Q,5558
9
- swcgeom/analysis/visualization.py,sha256=mKOpzTPkLpr1ggGL1MZPZRTG92GEg4idLT4eN5z5KOs,5654
10
- swcgeom/analysis/volume.py,sha256=nWPR7wGOk3Wl5eh97YMws0X-2jk8K7lmFp4-03wL3lY,4628
11
- swcgeom/core/__init__.py,sha256=BEfFBnpaKnJOBID5G5kpGcL7_E1Fj0eZZDITDVwvmRY,445
12
- swcgeom/core/branch.py,sha256=NchxRgXpFv_ImShvQBPU_9xNzufTrPMvEYmx7d46JNA,4162
13
- swcgeom/core/branch_tree.py,sha256=Ece6q1VNCRLLMj29N_MjXmmlHT8h4tpWCuDE0uSgKJo,1873
14
- swcgeom/core/compartment.py,sha256=-2EYkGfqN12he2dsrtO1afC52Bk_fMD5aRLO_useGCQ,3248
15
- swcgeom/core/node.py,sha256=Kwqoh_WMBLIt2WNDwF-7EwS-C8lONG5krGPmmdHwhvY,3329
16
- swcgeom/core/path.py,sha256=mxexT7eEHpRaCapE4t0dzfQGgW_zPPzn6N1MkD-jLgI,4579
17
- swcgeom/core/population.py,sha256=MVVAgGki9SQYMuEJpWyG0eBX4ImR2wpfvWxMqAnXRa8,9824
18
- swcgeom/core/swc.py,sha256=lSYxAa25l6O8WZ9JtSSET-RZMr6EA1Tq_aXL_x0H9Rc,6795
19
- swcgeom/core/tree.py,sha256=fQM_Z5-bWsh55hS1pde52tSjKE9-aZY75wbKmDOOQcQ,12195
20
- swcgeom/core/tree_utils.py,sha256=WWh7uizkyG0u7Zs6ZmkSLPYBsU4XC-gqPeOiVGyaqGE,7749
21
- swcgeom/core/tree_utils_impl.py,sha256=kN2ByjqqQtZUfmC_ac25tXOaE-CMiV2lP58VxFphLEU,1616
22
- swcgeom/core/swc_utils/__init__.py,sha256=qghRxjtzvq5KKfN4HhvLpZNsGPfZQu-Jj2x62_5-TbQ,575
23
- swcgeom/core/swc_utils/assembler.py,sha256=XtjEWz_iAOMpQzLnErCiCjbnqrbB7JA4t2-LLi2R4rQ,889
24
- swcgeom/core/swc_utils/base.py,sha256=6jNf1EeMz7yJQr3rYSi5EuU2ZPjeefB9vIRFaY53PbA,4788
25
- swcgeom/core/swc_utils/checker.py,sha256=yuLPRoSt9c7No4GGePa05kxjGFCs0zYS7oB1HadNeMI,2852
26
- swcgeom/core/swc_utils/io.py,sha256=6_--Qoe8kDja4PWsjwqRAvPJZNMFILFgauHaeWeGikU,6444
27
- swcgeom/core/swc_utils/normalizer.py,sha256=_Ysi8bSJ2JBnIGB8o6BvAg2mcz6xuJp9rgNLZqpLuR8,5083
28
- swcgeom/core/swc_utils/subtree.py,sha256=43QITYvgXu3b_kfIod2Irrj3dSfrA-gTFev5VxzRafI,1995
29
- swcgeom/images/__init__.py,sha256=QBP1ZGGo2nWAcV7Krz-vbvW_jN4ChqXrrpoScXcUURs,96
30
- swcgeom/images/augmentation.py,sha256=cV4k4KR_WcsRajyr0DuhHVDRRZcN4FQ7OIzB_rb2FUo,4173
31
- swcgeom/images/contrast.py,sha256=ViZVW6XI-l2sLVTODLRLtHinv_7lVgtH-xZmaw1nQLw,2160
32
- swcgeom/images/folder.py,sha256=YY9YjF17nDwOQEXhzFe-Dj0zPTcG0WP1-gisscImmYg,6674
33
- swcgeom/images/io.py,sha256=05VlDcrtt3Un7M2hFddV0aWopgj55TuukSBjHLYwLHg,20704
34
- swcgeom/transforms/__init__.py,sha256=1rr4X--qY_lBi7l7_NHyvvkoWpQOQOqkioRT8I20olI,562
35
- swcgeom/transforms/base.py,sha256=gN5Iqi-OHkYrsjllSOdxI6Yzav3jJGoi6kUPy-38FAs,4101
36
- swcgeom/transforms/branch.py,sha256=R0rVti--u70IiUKyHSx6MsDYJyy6zSCf18Uia2Cmh28,5410
37
- swcgeom/transforms/geometry.py,sha256=XR73fO_8T7otUFIllqKOWW0OnrsXBc7yA01oDT99yMc,7385
38
- swcgeom/transforms/image_preprocess.py,sha256=ZVPpRoO69dmLF5K7CWsGaQJXB2G5gxdvA-FcDmfz4yQ,3662
39
- swcgeom/transforms/image_stack.py,sha256=RIldGAOI3QeoeBtr0VKeBKJVg-fWSmzWll63SvsaTfI,5775
40
- swcgeom/transforms/images.py,sha256=3j8X8L9q0nSMJ_fP-73jL-zYtgi3fn3Erti9Ej1UZYo,5760
41
- swcgeom/transforms/mst.py,sha256=Oc_HnaXjg5EXC7ZnOPneHX0-rXizDAEUcjq63GTj-ac,6251
42
- swcgeom/transforms/neurolucida_asc.py,sha256=O4fK1OMropPnIEVdMenbyT_sV39gEGIv_6vIl6yUOVg,14146
43
- swcgeom/transforms/path.py,sha256=Gk2iunGQMX7vE83bdo8xoDO-KAT1Vvep0iZs7oFLzFQ,1089
44
- swcgeom/transforms/population.py,sha256=EmZ6ntuOKe8mXJxMW7nCUA-w2DVlEVe2n0IOVz49tCY,833
45
- swcgeom/transforms/tree.py,sha256=YzLvKUwTOj92286jHah0CtRYQIxHiNiMGKcgsc_dB0E,6333
46
- swcgeom/transforms/tree_assembler.py,sha256=vi_X9CNo5IxHP5J7bRl2z91PWufU6HmYlz1iyfdPUxE,5121
47
- swcgeom/utils/__init__.py,sha256=LXL0wqq6-ggNweZrftp2lrNHCmVJ6LHIto3DuwlYz3c,466
48
- swcgeom/utils/debug.py,sha256=qay2qJpViLX82mzxdndxQFn-pi1vaEj9CbLGuGt8Y9k,465
49
- swcgeom/utils/download.py,sha256=By2qZezo6h1Ke_4YpSIhDgcisOrpjVqRmNzbhynC2xs,2834
50
- swcgeom/utils/dsu.py,sha256=3aCbtpnl_D0OXnowTS8-kuwnCS4BKBYL5ECiFQ1fUW8,1435
51
- swcgeom/utils/ellipse.py,sha256=LB3q5CIy75GEUdTauIpKySwIHaDrwXzzkBhOCnjJ8Vw,3259
52
- swcgeom/utils/file.py,sha256=1hchQDsPgn-i-Vz5OQtcogxav_ajCQ_OaEZCLmqczRg,2515
53
- swcgeom/utils/neuromorpho.py,sha256=xfQ5npDsI_3UHMFbzrBNU453ZG6C6Y271NvU6cExfuc,19107
54
- swcgeom/utils/numpy_helper.py,sha256=xuvXpZgP-ZeuwTvPFD3DIxwJ5BK4fMCU7k5_5fUHaWE,1425
55
- swcgeom/utils/plotter_2d.py,sha256=R34_cLfcx_ycPuXS4D0n6ERse7mmzcnhMlkz8KU4yk4,3740
56
- swcgeom/utils/renderer.py,sha256=yGEu2SBvUQCVwsU8MT273HHgQ9uk5R0Pmo_bJaTN5yU,4233
57
- swcgeom/utils/sdf.py,sha256=zNDgwXKRNIVcV4ORMmDXup6Bhf_vlHqwa-b3WZn6KhE,10684
58
- swcgeom/utils/solid_geometry.py,sha256=TV02jhcoCLCqtYA9hfE50LFD_VRfixMiOSiHB5Jb2_U,2431
59
- swcgeom/utils/transforms.py,sha256=PmP5fL_iVguq4GR2aqXhM0TeCsiFVnrPZMZG6zLohrE,6983
60
- swcgeom/utils/volumetric_object.py,sha256=DVRGGmQrAL0oaW6hbNtp5TStbic9DfyJdCzsv2FNw2c,15134
61
- swcgeom-0.17.0.dist-info/LICENSE,sha256=JPtohhZ4XURqoKI0ZqnMYb7dobCOoZR_n5EpnaLTp3E,11344
62
- swcgeom-0.17.0.dist-info/METADATA,sha256=wtsF7F3P38QJtBXm0wpsAQRofs2sjXAbNHrlrFDLM-4,2332
63
- swcgeom-0.17.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
64
- swcgeom-0.17.0.dist-info/top_level.txt,sha256=hmLyUXWS61Gxl07haswFEKKefYPBVJYlUlol8ghNkjY,8
65
- swcgeom-0.17.0.dist-info/RECORD,,