rapidtide 3.0.11__py3-none-any.whl → 3.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.
Files changed (139) hide show
  1. rapidtide/Colortables.py +492 -27
  2. rapidtide/OrthoImageItem.py +1049 -46
  3. rapidtide/RapidtideDataset.py +1533 -86
  4. rapidtide/_version.py +3 -3
  5. rapidtide/calccoherence.py +196 -29
  6. rapidtide/calcnullsimfunc.py +191 -40
  7. rapidtide/calcsimfunc.py +245 -42
  8. rapidtide/correlate.py +1210 -393
  9. rapidtide/data/examples/src/testLD +56 -0
  10. rapidtide/data/examples/src/testalign +1 -1
  11. rapidtide/data/examples/src/testdelayvar +0 -1
  12. rapidtide/data/examples/src/testfmri +19 -1
  13. rapidtide/data/examples/src/testglmfilt +5 -5
  14. rapidtide/data/examples/src/testhappy +25 -3
  15. rapidtide/data/examples/src/testppgproc +17 -0
  16. rapidtide/data/examples/src/testrolloff +11 -0
  17. rapidtide/data/models/model_cnn_pytorch/best_model.pth +0 -0
  18. rapidtide/data/models/model_cnn_pytorch/loss.png +0 -0
  19. rapidtide/data/models/model_cnn_pytorch/loss.txt +1 -0
  20. rapidtide/data/models/model_cnn_pytorch/model.pth +0 -0
  21. rapidtide/data/models/model_cnn_pytorch/model_meta.json +68 -0
  22. rapidtide/decorators.py +91 -0
  23. rapidtide/dlfilter.py +2225 -108
  24. rapidtide/dlfiltertorch.py +4843 -0
  25. rapidtide/externaltools.py +327 -12
  26. rapidtide/fMRIData_class.py +79 -40
  27. rapidtide/filter.py +1899 -810
  28. rapidtide/fit.py +2004 -574
  29. rapidtide/genericmultiproc.py +93 -18
  30. rapidtide/happy_supportfuncs.py +2044 -171
  31. rapidtide/helper_classes.py +584 -43
  32. rapidtide/io.py +2363 -370
  33. rapidtide/linfitfiltpass.py +341 -75
  34. rapidtide/makelaggedtcs.py +211 -20
  35. rapidtide/maskutil.py +423 -53
  36. rapidtide/miscmath.py +827 -121
  37. rapidtide/multiproc.py +210 -22
  38. rapidtide/patchmatch.py +234 -33
  39. rapidtide/peakeval.py +32 -30
  40. rapidtide/ppgproc.py +2203 -0
  41. rapidtide/qualitycheck.py +352 -39
  42. rapidtide/refinedelay.py +422 -57
  43. rapidtide/refineregressor.py +498 -184
  44. rapidtide/resample.py +671 -185
  45. rapidtide/scripts/applyppgproc.py +28 -0
  46. rapidtide/simFuncClasses.py +1052 -77
  47. rapidtide/simfuncfit.py +260 -46
  48. rapidtide/stats.py +540 -238
  49. rapidtide/tests/happycomp +9 -0
  50. rapidtide/tests/test_dlfiltertorch.py +627 -0
  51. rapidtide/tests/test_findmaxlag.py +24 -8
  52. rapidtide/tests/test_fullrunhappy_v1.py +0 -2
  53. rapidtide/tests/test_fullrunhappy_v2.py +0 -2
  54. rapidtide/tests/test_fullrunhappy_v3.py +1 -0
  55. rapidtide/tests/test_fullrunhappy_v4.py +2 -2
  56. rapidtide/tests/test_fullrunrapidtide_v7.py +1 -1
  57. rapidtide/tests/test_simroundtrip.py +8 -8
  58. rapidtide/tests/utils.py +9 -8
  59. rapidtide/tidepoolTemplate.py +142 -38
  60. rapidtide/tidepoolTemplate_alt.py +165 -44
  61. rapidtide/tidepoolTemplate_big.py +189 -52
  62. rapidtide/util.py +1217 -118
  63. rapidtide/voxelData.py +684 -37
  64. rapidtide/wiener.py +19 -12
  65. rapidtide/wiener2.py +113 -7
  66. rapidtide/wiener_doc.py +255 -0
  67. rapidtide/workflows/adjustoffset.py +105 -3
  68. rapidtide/workflows/aligntcs.py +85 -2
  69. rapidtide/workflows/applydlfilter.py +87 -10
  70. rapidtide/workflows/applyppgproc.py +522 -0
  71. rapidtide/workflows/atlasaverage.py +210 -47
  72. rapidtide/workflows/atlastool.py +100 -3
  73. rapidtide/workflows/calcSimFuncMap.py +294 -64
  74. rapidtide/workflows/calctexticc.py +201 -9
  75. rapidtide/workflows/ccorrica.py +97 -4
  76. rapidtide/workflows/cleanregressor.py +168 -29
  77. rapidtide/workflows/delayvar.py +163 -10
  78. rapidtide/workflows/diffrois.py +81 -3
  79. rapidtide/workflows/endtidalproc.py +144 -4
  80. rapidtide/workflows/fdica.py +195 -15
  81. rapidtide/workflows/filtnifti.py +70 -3
  82. rapidtide/workflows/filttc.py +74 -3
  83. rapidtide/workflows/fitSimFuncMap.py +206 -48
  84. rapidtide/workflows/fixtr.py +73 -3
  85. rapidtide/workflows/gmscalc.py +113 -3
  86. rapidtide/workflows/happy.py +801 -199
  87. rapidtide/workflows/happy2std.py +144 -12
  88. rapidtide/workflows/happy_parser.py +138 -9
  89. rapidtide/workflows/histnifti.py +118 -2
  90. rapidtide/workflows/histtc.py +84 -3
  91. rapidtide/workflows/linfitfilt.py +117 -4
  92. rapidtide/workflows/localflow.py +328 -28
  93. rapidtide/workflows/mergequality.py +79 -3
  94. rapidtide/workflows/niftidecomp.py +322 -18
  95. rapidtide/workflows/niftistats.py +174 -4
  96. rapidtide/workflows/pairproc.py +88 -2
  97. rapidtide/workflows/pairwisemergenifti.py +85 -2
  98. rapidtide/workflows/parser_funcs.py +1421 -40
  99. rapidtide/workflows/physiofreq.py +137 -11
  100. rapidtide/workflows/pixelcomp.py +208 -5
  101. rapidtide/workflows/plethquality.py +103 -21
  102. rapidtide/workflows/polyfitim.py +151 -11
  103. rapidtide/workflows/proj2flow.py +75 -2
  104. rapidtide/workflows/rankimage.py +111 -4
  105. rapidtide/workflows/rapidtide.py +272 -15
  106. rapidtide/workflows/rapidtide2std.py +98 -2
  107. rapidtide/workflows/rapidtide_parser.py +109 -9
  108. rapidtide/workflows/refineDelayMap.py +143 -33
  109. rapidtide/workflows/refineRegressor.py +682 -93
  110. rapidtide/workflows/regressfrommaps.py +152 -31
  111. rapidtide/workflows/resamplenifti.py +85 -3
  112. rapidtide/workflows/resampletc.py +91 -3
  113. rapidtide/workflows/retrolagtcs.py +98 -6
  114. rapidtide/workflows/retroregress.py +165 -9
  115. rapidtide/workflows/roisummarize.py +173 -5
  116. rapidtide/workflows/runqualitycheck.py +71 -3
  117. rapidtide/workflows/showarbcorr.py +147 -4
  118. rapidtide/workflows/showhist.py +86 -2
  119. rapidtide/workflows/showstxcorr.py +160 -3
  120. rapidtide/workflows/showtc.py +159 -3
  121. rapidtide/workflows/showxcorrx.py +184 -4
  122. rapidtide/workflows/showxy.py +185 -15
  123. rapidtide/workflows/simdata.py +262 -36
  124. rapidtide/workflows/spatialfit.py +77 -2
  125. rapidtide/workflows/spatialmi.py +251 -27
  126. rapidtide/workflows/spectrogram.py +305 -32
  127. rapidtide/workflows/synthASL.py +154 -3
  128. rapidtide/workflows/tcfrom2col.py +76 -2
  129. rapidtide/workflows/tcfrom3col.py +74 -2
  130. rapidtide/workflows/tidepool.py +2969 -130
  131. rapidtide/workflows/utils.py +19 -14
  132. rapidtide/workflows/utils_doc.py +293 -0
  133. rapidtide/workflows/variabilityizer.py +116 -3
  134. {rapidtide-3.0.11.dist-info → rapidtide-3.1.dist-info}/METADATA +3 -2
  135. {rapidtide-3.0.11.dist-info → rapidtide-3.1.dist-info}/RECORD +139 -122
  136. {rapidtide-3.0.11.dist-info → rapidtide-3.1.dist-info}/entry_points.txt +1 -0
  137. {rapidtide-3.0.11.dist-info → rapidtide-3.1.dist-info}/WHEEL +0 -0
  138. {rapidtide-3.0.11.dist-info → rapidtide-3.1.dist-info}/licenses/LICENSE +0 -0
  139. {rapidtide-3.0.11.dist-info → rapidtide-3.1.dist-info}/top_level.txt +0 -0
@@ -18,31 +18,106 @@
18
18
  #
19
19
  import gc
20
20
  import logging
21
+ from typing import Any, Callable
21
22
 
22
- import numpy as np
23
+ from numpy.typing import NDArray
23
24
  from tqdm import tqdm
24
25
 
25
26
  import rapidtide.multiproc as tide_multiproc
26
27
 
27
28
 
28
29
  def run_multiproc(
29
- voxelfunc,
30
- packfunc,
31
- unpackfunc,
32
- voxelargs,
33
- voxelproducts,
34
- inputshape,
35
- voxelmask,
36
- LGR,
37
- nprocs,
38
- alwaysmultiproc,
39
- showprogressbar,
40
- chunksize,
41
- indexaxis=0,
42
- procunit="voxels",
43
- debug=False,
44
- **kwargs,
45
- ):
30
+ voxelfunc: Callable,
31
+ packfunc: Callable,
32
+ unpackfunc: Callable,
33
+ voxelargs: list,
34
+ voxelproducts: list,
35
+ inputshape: tuple,
36
+ voxelmask: NDArray,
37
+ LGR: logging.Logger | None,
38
+ nprocs: int,
39
+ alwaysmultiproc: bool,
40
+ showprogressbar: bool,
41
+ chunksize: int,
42
+ indexaxis: int = 0,
43
+ procunit: str = "voxels",
44
+ debug: bool = False,
45
+ **kwargs: Any,
46
+ ) -> int:
47
+ """
48
+ Execute voxel-wise processing with optional multiprocessing support.
49
+
50
+ This function performs voxel-wise computations using the provided functions
51
+ for processing, packing, and unpacking data. It supports both single-threaded
52
+ and multi-process execution depending on the input parameters.
53
+
54
+ Parameters
55
+ ----------
56
+ voxelfunc : callable
57
+ Function to be applied to each voxel. It should accept a voxel index,
58
+ packed arguments, and optional debug and keyword arguments.
59
+ packfunc : callable
60
+ Function to pack voxel arguments for use in `voxelfunc`. It takes a voxel
61
+ index and `voxelargs` as input.
62
+ unpackfunc : callable
63
+ Function to unpack results from `voxelfunc` and store them in `voxelproducts`.
64
+ voxelargs : list
65
+ List of arguments to be passed to `packfunc`.
66
+ voxelproducts : list
67
+ List of arrays or data structures to be updated with results from `unpackfunc`.
68
+ inputshape : tuple
69
+ Shape of the input data, used to determine the number of voxels to process.
70
+ voxelmask : ndarray
71
+ Boolean or integer mask indicating which voxels to process.
72
+ LGR : logging.Logger or None
73
+ Logger instance for logging messages. If None, no logging is performed.
74
+ nprocs : int
75
+ Number of processes to use for multiprocessing. If 1, single-threaded execution is used.
76
+ alwaysmultiproc : bool
77
+ If True, forces multiprocessing even when `nprocs` is 1.
78
+ showprogressbar : bool
79
+ If True, displays a progress bar during processing.
80
+ chunksize : int
81
+ Size of chunks to process in each step for multiprocessing.
82
+ indexaxis : int, optional
83
+ Axis along which to iterate over voxels, default is 0.
84
+ procunit : str, optional
85
+ Unit of processing for progress bar, default is "voxels".
86
+ debug : bool, optional
87
+ If True, prints debug information, default is False.
88
+ **kwargs : dict
89
+ Additional keyword arguments passed to `voxelfunc`.
90
+
91
+ Returns
92
+ -------
93
+ int
94
+ Total number of voxels processed.
95
+
96
+ Notes
97
+ -----
98
+ - If `nprocs` > 1 or `alwaysmultiproc` is True, multiprocessing is used.
99
+ - Otherwise, a single-threaded loop is used with optional progress bar.
100
+ - The function uses `tide_multiproc.run_multiproc` internally for multiprocessing.
101
+ - Garbage collection is performed after processing.
102
+
103
+ Examples
104
+ --------
105
+ >>> run_multiproc(
106
+ ... voxelfunc=my_voxel_func,
107
+ ... packfunc=pack_voxel_args,
108
+ ... unpackfunc=unpack_results,
109
+ ... voxelargs=[arg1, arg2],
110
+ ... voxelproducts=[output_array],
111
+ ... inputshape=(100, 100, 100),
112
+ ... voxelmask=mask_array,
113
+ ... LGR=None,
114
+ ... nprocs=4,
115
+ ... alwaysmultiproc=False,
116
+ ... showprogressbar=True,
117
+ ... chunksize=10,
118
+ ... )
119
+ 1000
120
+ """
46
121
  if debug:
47
122
  print(f"{len(voxelproducts)=}, {voxelproducts[0].shape}")
48
123
  if nprocs > 1 or alwaysmultiproc: