cuslines 2.2.1__tar.gz → 2.2.3__tar.gz

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.
Files changed (76) hide show
  1. {cuslines-2.2.1 → cuslines-2.2.3}/PKG-INFO +1 -1
  2. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/generic_tracker.py +58 -5
  3. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines.egg-info/PKG-INFO +1 -1
  4. {cuslines-2.2.1 → cuslines-2.2.3}/run_gpu_streamlines.py +1 -1
  5. {cuslines-2.2.1 → cuslines-2.2.3}/.github/workflows/dockerbuild.yml +0 -0
  6. {cuslines-2.2.1 → cuslines-2.2.3}/.github/workflows/publish_pypi.yml +0 -0
  7. {cuslines-2.2.1 → cuslines-2.2.3}/.gitignore +0 -0
  8. {cuslines-2.2.1 → cuslines-2.2.3}/.pre-commit-config.yaml +0 -0
  9. {cuslines-2.2.1 → cuslines-2.2.3}/CLAUDE.md +0 -0
  10. {cuslines-2.2.1 → cuslines-2.2.3}/Dockerfile +0 -0
  11. {cuslines-2.2.1 → cuslines-2.2.3}/LICENSE +0 -0
  12. {cuslines-2.2.1 → cuslines-2.2.3}/README.md +0 -0
  13. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/__init__.py +0 -0
  14. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/boot_utils.py +0 -0
  15. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_c/boot.cu +0 -0
  16. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_c/cudamacro.h +0 -0
  17. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_c/cuwsort.cuh +0 -0
  18. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_c/disc.h +0 -0
  19. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_c/generate_streamlines_cuda.cu +0 -0
  20. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_c/globals.h +0 -0
  21. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_c/ptt.cu +0 -0
  22. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_c/ptt.cuh +0 -0
  23. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_c/ptt_init.cu +0 -0
  24. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_c/tracking_helpers.cu +0 -0
  25. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_c/utils.cu +0 -0
  26. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_python/__init__.py +0 -0
  27. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_python/_globals.py +0 -0
  28. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_python/cu_direction_getters.py +0 -0
  29. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_python/cu_propagate_seeds.py +0 -0
  30. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_python/cu_tractography.py +0 -0
  31. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/cuda_python/cutils.py +0 -0
  32. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal/README.md +0 -0
  33. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal/__init__.py +0 -0
  34. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal/mt_direction_getters.py +0 -0
  35. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal/mt_propagate_seeds.py +0 -0
  36. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal/mt_tractography.py +0 -0
  37. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal/mutils.py +0 -0
  38. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal_shaders/boot.metal +0 -0
  39. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal_shaders/disc.h +0 -0
  40. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal_shaders/generate_streamlines_metal.metal +0 -0
  41. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal_shaders/globals.h +0 -0
  42. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal_shaders/philox_rng.h +0 -0
  43. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal_shaders/ptt.metal +0 -0
  44. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal_shaders/tracking_helpers.metal +0 -0
  45. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal_shaders/types.h +0 -0
  46. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal_shaders/utils.metal +0 -0
  47. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/metal_shaders/warp_sort.metal +0 -0
  48. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/numba/__init__.py +0 -0
  49. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/numba/nu_globals.py +0 -0
  50. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/numba/nu_tractography.py +0 -0
  51. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/numba_njit/generate_streamlines_numba.py +0 -0
  52. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/numba_njit/num_streamlines_numba.py +0 -0
  53. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/numba_njit/tracking_helpers.py +0 -0
  54. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/webgpu/README.md +0 -0
  55. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/webgpu/__init__.py +0 -0
  56. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/webgpu/benchmark.py +0 -0
  57. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/webgpu/wg_direction_getters.py +0 -0
  58. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/webgpu/wg_propagate_seeds.py +0 -0
  59. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/webgpu/wg_tractography.py +0 -0
  60. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/webgpu/wgutils.py +0 -0
  61. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/wgsl_shaders/boot.wgsl +0 -0
  62. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/wgsl_shaders/disc.wgsl +0 -0
  63. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/wgsl_shaders/generate_streamlines.wgsl +0 -0
  64. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/wgsl_shaders/globals.wgsl +0 -0
  65. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/wgsl_shaders/philox_rng.wgsl +0 -0
  66. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/wgsl_shaders/ptt.wgsl +0 -0
  67. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/wgsl_shaders/tracking_helpers.wgsl +0 -0
  68. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/wgsl_shaders/types.wgsl +0 -0
  69. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/wgsl_shaders/utils.wgsl +0 -0
  70. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines/wgsl_shaders/warp_sort.wgsl +0 -0
  71. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines.egg-info/SOURCES.txt +0 -0
  72. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines.egg-info/dependency_links.txt +0 -0
  73. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines.egg-info/requires.txt +0 -0
  74. {cuslines-2.2.1 → cuslines-2.2.3}/cuslines.egg-info/top_level.txt +0 -0
  75. {cuslines-2.2.1 → cuslines-2.2.3}/pyproject.toml +0 -0
  76. {cuslines-2.2.1 → cuslines-2.2.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuslines
3
- Version: 2.2.1
3
+ Version: 2.2.3
4
4
  Summary: GPU-accelerated tractography package
5
5
  Project-URL: Homepage, https://github.com/dipy/GPUStreamlines
6
6
  Requires-Python: >=3.7
@@ -3,6 +3,7 @@ import numpy as np
3
3
  from tqdm import tqdm
4
4
  from trx.trx_file_memmap import TrxFile
5
5
  from dipy.io.stateful_tractogram import Space, StatefulTractogram
6
+ from dipy.tracking.streamlinespeed import compress_streamlines
6
7
  from nibabel.streamlines.array_sequence import ArraySequence
7
8
  from nibabel.streamlines.tractogram import Tractogram
8
9
 
@@ -16,11 +17,55 @@ class GenericTracker:
16
17
  def __exit__(self, exc_type, exc, tb):
17
18
  return False
18
19
 
20
+ def set_compression_parameters(self, pos_dtype=np.float32, linearize=False, tol_error=0.1, max_segment_length=10):
21
+ """
22
+ Set compression parameters to compress generated streamlines.
23
+ Only works with TRX.
24
+
25
+ Parameters
26
+ ----------
27
+ pos_dtype : dtype, optional
28
+ Data type to use for the positions of the streamlines.
29
+ Default: np.float32
30
+
31
+ linearize : bool, optional
32
+ Whether to linearize the streamlines using [1].
33
+ Default: False
34
+
35
+ tol_error : float, optional
36
+ If linearize is true, tolerance error in mm.
37
+ Default: 0.1
38
+
39
+ max_segment_length : float, optional
40
+ If linearize is true, maximum length in mm of any given segment produced by the compression.
41
+ Default: 10
42
+
43
+ References
44
+ ----------
45
+ [1] Caroline Presseau, Pierre-Marc Jodoin, Jean-Christophe Houde, and Maxime Descoteaux.
46
+ A new compression format for fiber tracking datasets.
47
+ NeuroImage, 109:73-83, 2015. URL: 10.1016/j.neuroimage.2014.12.058
48
+ """
49
+ self.pos_dtype = pos_dtype
50
+ self.linearize = linearize
51
+ self.tol_error = tol_error
52
+ self.max_segment_length = max_segment_length
53
+
54
+
19
55
  def _ngpus(self):
20
- if hasattr(self, "ngpus"):
21
- return self.ngpus
22
- else:
23
- return 1
56
+ return getattr(self, "ngpus", 1)
57
+
58
+ def _pos_dtype(self):
59
+ return getattr(self, "pos_dtype", np.float32)
60
+
61
+ def _linearize(self):
62
+ return getattr(self, "linearize", False)
63
+
64
+ def _tol_error(self):
65
+ return getattr(self, "tol_error", 0.1)
66
+
67
+ def _max_segment_length(self):
68
+ return getattr(self, "max_segment_length", 10)
24
69
 
25
70
  def _divide_chunks(self, seeds):
26
71
  global_chunk_sz = self.chunk_size * self._ngpus()
@@ -58,7 +103,7 @@ class GenericTracker:
58
103
  # trx files use memory mapping
59
104
  trx_reference = TrxFile(reference=ref_img)
60
105
  trx_reference.streamlines._data = trx_reference.streamlines._data.astype(
61
- np.float32
106
+ self._pos_dtype()
62
107
  )
63
108
  trx_reference.streamlines._offsets = trx_reference.streamlines._offsets.astype(
64
109
  np.uint64
@@ -87,6 +132,14 @@ class GenericTracker:
87
132
  tractogram.to_world()
88
133
  sls = tractogram.streamlines
89
134
 
135
+ if self._linearize():
136
+ sls = ArraySequence(compress_streamlines(
137
+ sls,
138
+ tol_error=self._tol_error(),
139
+ max_segment_length=self._max_segment_length(),
140
+ ))
141
+ sls._data = sls._data.astype(self._pos_dtype())
142
+
90
143
  new_offsets_idx = offsets_idx + len(sls._offsets)
91
144
  new_sls_data_idx = sls_data_idx + len(sls._data)
92
145
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuslines
3
- Version: 2.2.1
3
+ Version: 2.2.3
4
4
  Summary: GPU-accelerated tractography package
5
5
  Project-URL: Homepage, https://github.com/dipy/GPUStreamlines
6
6
  Requires-Python: >=3.7
@@ -127,7 +127,7 @@ parser.add_argument(
127
127
  parser.add_argument(
128
128
  "--ngpus", type=int, default=1, help="number of GPUs to use if using gpu"
129
129
  )
130
- parser.add_argument("--write-method", type=str, default="trk", help="Can be trx or trk")
130
+ parser.add_argument("--write-method", type=str, default="trx", help="Can be trx or trk")
131
131
  parser.add_argument(
132
132
  "--max-angle", type=float, default=60, help="max angle (in degrees)"
133
133
  )
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes