rapidtide 3.0.10__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 (141) hide show
  1. rapidtide/Colortables.py +492 -27
  2. rapidtide/OrthoImageItem.py +1053 -47
  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 +30 -1
  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/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin2009cAsym_2mm.nii.gz +0 -0
  23. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin2009cAsym_2mm_mask.nii.gz +0 -0
  24. rapidtide/decorators.py +91 -0
  25. rapidtide/dlfilter.py +2225 -108
  26. rapidtide/dlfiltertorch.py +4843 -0
  27. rapidtide/externaltools.py +327 -12
  28. rapidtide/fMRIData_class.py +79 -40
  29. rapidtide/filter.py +1899 -810
  30. rapidtide/fit.py +2004 -574
  31. rapidtide/genericmultiproc.py +93 -18
  32. rapidtide/happy_supportfuncs.py +2044 -171
  33. rapidtide/helper_classes.py +584 -43
  34. rapidtide/io.py +2363 -370
  35. rapidtide/linfitfiltpass.py +341 -75
  36. rapidtide/makelaggedtcs.py +211 -20
  37. rapidtide/maskutil.py +423 -53
  38. rapidtide/miscmath.py +827 -121
  39. rapidtide/multiproc.py +210 -22
  40. rapidtide/patchmatch.py +234 -33
  41. rapidtide/peakeval.py +32 -30
  42. rapidtide/ppgproc.py +2203 -0
  43. rapidtide/qualitycheck.py +352 -39
  44. rapidtide/refinedelay.py +422 -57
  45. rapidtide/refineregressor.py +498 -184
  46. rapidtide/resample.py +671 -185
  47. rapidtide/scripts/applyppgproc.py +28 -0
  48. rapidtide/simFuncClasses.py +1052 -77
  49. rapidtide/simfuncfit.py +260 -46
  50. rapidtide/stats.py +540 -238
  51. rapidtide/tests/happycomp +9 -0
  52. rapidtide/tests/test_dlfiltertorch.py +627 -0
  53. rapidtide/tests/test_findmaxlag.py +24 -8
  54. rapidtide/tests/test_fullrunhappy_v1.py +0 -2
  55. rapidtide/tests/test_fullrunhappy_v2.py +0 -2
  56. rapidtide/tests/test_fullrunhappy_v3.py +1 -0
  57. rapidtide/tests/test_fullrunhappy_v4.py +2 -2
  58. rapidtide/tests/test_fullrunrapidtide_v7.py +1 -1
  59. rapidtide/tests/test_simroundtrip.py +8 -8
  60. rapidtide/tests/utils.py +9 -8
  61. rapidtide/tidepoolTemplate.py +142 -38
  62. rapidtide/tidepoolTemplate_alt.py +165 -44
  63. rapidtide/tidepoolTemplate_big.py +189 -52
  64. rapidtide/util.py +1217 -118
  65. rapidtide/voxelData.py +684 -37
  66. rapidtide/wiener.py +19 -12
  67. rapidtide/wiener2.py +113 -7
  68. rapidtide/wiener_doc.py +255 -0
  69. rapidtide/workflows/adjustoffset.py +105 -3
  70. rapidtide/workflows/aligntcs.py +85 -2
  71. rapidtide/workflows/applydlfilter.py +87 -10
  72. rapidtide/workflows/applyppgproc.py +522 -0
  73. rapidtide/workflows/atlasaverage.py +210 -47
  74. rapidtide/workflows/atlastool.py +100 -3
  75. rapidtide/workflows/calcSimFuncMap.py +294 -64
  76. rapidtide/workflows/calctexticc.py +201 -9
  77. rapidtide/workflows/ccorrica.py +97 -4
  78. rapidtide/workflows/cleanregressor.py +168 -29
  79. rapidtide/workflows/delayvar.py +163 -10
  80. rapidtide/workflows/diffrois.py +81 -3
  81. rapidtide/workflows/endtidalproc.py +144 -4
  82. rapidtide/workflows/fdica.py +195 -15
  83. rapidtide/workflows/filtnifti.py +70 -3
  84. rapidtide/workflows/filttc.py +74 -3
  85. rapidtide/workflows/fitSimFuncMap.py +206 -48
  86. rapidtide/workflows/fixtr.py +73 -3
  87. rapidtide/workflows/gmscalc.py +113 -3
  88. rapidtide/workflows/happy.py +813 -201
  89. rapidtide/workflows/happy2std.py +144 -12
  90. rapidtide/workflows/happy_parser.py +149 -8
  91. rapidtide/workflows/histnifti.py +118 -2
  92. rapidtide/workflows/histtc.py +84 -3
  93. rapidtide/workflows/linfitfilt.py +117 -4
  94. rapidtide/workflows/localflow.py +328 -28
  95. rapidtide/workflows/mergequality.py +79 -3
  96. rapidtide/workflows/niftidecomp.py +322 -18
  97. rapidtide/workflows/niftistats.py +174 -4
  98. rapidtide/workflows/pairproc.py +88 -2
  99. rapidtide/workflows/pairwisemergenifti.py +85 -2
  100. rapidtide/workflows/parser_funcs.py +1421 -40
  101. rapidtide/workflows/physiofreq.py +137 -11
  102. rapidtide/workflows/pixelcomp.py +208 -5
  103. rapidtide/workflows/plethquality.py +103 -21
  104. rapidtide/workflows/polyfitim.py +151 -11
  105. rapidtide/workflows/proj2flow.py +75 -2
  106. rapidtide/workflows/rankimage.py +111 -4
  107. rapidtide/workflows/rapidtide.py +272 -15
  108. rapidtide/workflows/rapidtide2std.py +98 -2
  109. rapidtide/workflows/rapidtide_parser.py +109 -9
  110. rapidtide/workflows/refineDelayMap.py +143 -33
  111. rapidtide/workflows/refineRegressor.py +682 -93
  112. rapidtide/workflows/regressfrommaps.py +152 -31
  113. rapidtide/workflows/resamplenifti.py +85 -3
  114. rapidtide/workflows/resampletc.py +91 -3
  115. rapidtide/workflows/retrolagtcs.py +98 -6
  116. rapidtide/workflows/retroregress.py +165 -9
  117. rapidtide/workflows/roisummarize.py +173 -5
  118. rapidtide/workflows/runqualitycheck.py +71 -3
  119. rapidtide/workflows/showarbcorr.py +147 -4
  120. rapidtide/workflows/showhist.py +86 -2
  121. rapidtide/workflows/showstxcorr.py +160 -3
  122. rapidtide/workflows/showtc.py +159 -3
  123. rapidtide/workflows/showxcorrx.py +184 -4
  124. rapidtide/workflows/showxy.py +185 -15
  125. rapidtide/workflows/simdata.py +262 -36
  126. rapidtide/workflows/spatialfit.py +77 -2
  127. rapidtide/workflows/spatialmi.py +251 -27
  128. rapidtide/workflows/spectrogram.py +305 -32
  129. rapidtide/workflows/synthASL.py +154 -3
  130. rapidtide/workflows/tcfrom2col.py +76 -2
  131. rapidtide/workflows/tcfrom3col.py +74 -2
  132. rapidtide/workflows/tidepool.py +2972 -133
  133. rapidtide/workflows/utils.py +19 -14
  134. rapidtide/workflows/utils_doc.py +293 -0
  135. rapidtide/workflows/variabilityizer.py +116 -3
  136. {rapidtide-3.0.10.dist-info → rapidtide-3.1.dist-info}/METADATA +10 -9
  137. {rapidtide-3.0.10.dist-info → rapidtide-3.1.dist-info}/RECORD +141 -122
  138. {rapidtide-3.0.10.dist-info → rapidtide-3.1.dist-info}/entry_points.txt +1 -0
  139. {rapidtide-3.0.10.dist-info → rapidtide-3.1.dist-info}/WHEEL +0 -0
  140. {rapidtide-3.0.10.dist-info → rapidtide-3.1.dist-info}/licenses/LICENSE +0 -0
  141. {rapidtide-3.0.10.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: