rapidtide 3.1.3__py3-none-any.whl → 3.1.4__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.
@@ -19,6 +19,7 @@
19
19
  """
20
20
  A widget for orthographically displaying 3 and 4 dimensional data
21
21
  """
22
+
22
23
  import os
23
24
  from typing import Any
24
25
 
rapidtide/_version.py CHANGED
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2026-01-21T11:49:41-0500",
11
+ "date": "2026-02-04T10:41:13-0500",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "63ac9a63f9549380f07bf90d8c5f0d80db38bb53",
15
- "version": "3.1.3"
14
+ "full-revisionid": "a9659df53b25bd79da32ef7d9377c0396b03983b",
15
+ "version": "3.1.4"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -89,7 +89,7 @@ def _procOneVoxelCoherence(
89
89
  options.update(kwargs)
90
90
  alt = options["alt"]
91
91
  debug = options["debug"]
92
- (theCoherer, fmritc) = voxelargs
92
+ theCoherer, fmritc = voxelargs
93
93
  if debug:
94
94
  print(f"{alt=}")
95
95
  if alt:
rapidtide/calcsimfunc.py CHANGED
@@ -109,7 +109,7 @@ def _procOneVoxelCorrelation(
109
109
  debug = options["debug"]
110
110
  if debug:
111
111
  print(f"{oversampfactor=} {interptype=}")
112
- (thetc, theCorrelator, fmri_x, fmritc, os_fmri_x, theglobalmaxlist, thexcorr_y) = voxelargs
112
+ thetc, theCorrelator, fmri_x, fmritc, os_fmri_x, theglobalmaxlist, thexcorr_y = voxelargs
113
113
  if oversampfactor >= 1:
114
114
  thetc[:] = tide_resample.doresample(fmri_x, fmritc, os_fmri_x, method=interptype)
115
115
  else:
rapidtide/correlate.py CHANGED
@@ -17,6 +17,7 @@
17
17
  #
18
18
  #
19
19
  """Functions for calculating correlations and similar metrics between arrays."""
20
+
20
21
  import logging
21
22
  import warnings
22
23
  from typing import Any, Callable, Optional, Tuple, Union
@@ -90,7 +90,15 @@
90
90
  happy \
91
91
  sub-HAPPYTEST.nii.gz \
92
92
  sub-HAPPYTEST.json \
93
- ../dst/happy_attention \
93
+ ../dst/happy_temporal \
94
+ --temporalregression \
95
+ --nprocs -1
96
+
97
+ happy \
98
+ sub-HAPPYTEST.nii.gz \
99
+ sub-HAPPYTEST.json \
100
+ ../dst/happy_spatial \
101
+ --spatialregression \
94
102
  --nprocs -1
95
103
 
96
104
  #happy \
@@ -3183,7 +3183,7 @@ def _procOneSliceSmoothing(slice, sliceargs, **kwargs):
3183
3183
  }
3184
3184
  options.update(kwargs)
3185
3185
  debug = options["debug"]
3186
- (validlocslist, rawapp_byslice, appsmoothingfilter, phaseFs, derivatives_byslice) = sliceargs
3186
+ validlocslist, rawapp_byslice, appsmoothingfilter, phaseFs, derivatives_byslice = sliceargs
3187
3187
  # now smooth the projected data along the time dimension
3188
3188
  validlocs = validlocslist[slice]
3189
3189
  if len(validlocs) > 0:
@@ -144,6 +144,7 @@ def linfitfiltpass(
144
144
  datatoremove: NDArray | None,
145
145
  filtereddata: NDArray | None,
146
146
  nprocs: int = 1,
147
+ validmask: NDArray = None,
147
148
  alwaysmultiproc: bool = False,
148
149
  constantevs: bool = False,
149
150
  confoundregress: bool = False,
@@ -260,19 +261,23 @@ def linfitfiltpass(
260
261
  else:
261
262
  indexaxis = 1
262
263
  procunit = "timepoints"
263
- if threshval is None:
264
- themask = None
265
- else:
266
- if procbyvoxel:
267
- meanim = np.mean(fmri_data, axis=1)
268
- stdim = np.std(fmri_data, axis=1)
269
- else:
270
- meanim = np.mean(fmri_data, axis=0)
271
- stdim = np.std(fmri_data, axis=0)
272
- if np.mean(stdim) < np.mean(meanim):
273
- themask = np.where(meanim > threshval, 1, 0)
264
+ if validmask is None:
265
+ if threshval is None:
266
+ themask = None
274
267
  else:
275
- themask = np.where(stdim > threshval, 1, 0)
268
+ if procbyvoxel:
269
+ meanim = np.mean(fmri_data, axis=1)
270
+ stdim = np.std(fmri_data, axis=1)
271
+ else:
272
+ meanim = np.mean(fmri_data, axis=0)
273
+ stdim = np.std(fmri_data, axis=0)
274
+ if np.mean(stdim) < np.mean(meanim):
275
+ themask = np.where(meanim > threshval, 1, 0)
276
+ else:
277
+ themask = np.where(stdim > threshval, 1, 0)
278
+ else:
279
+ themask = validmask
280
+
276
281
  if (
277
282
  nprocs > 1 or alwaysmultiproc
278
283
  ): # temporary workaround until I figure out why nprocs > 1 is failing
@@ -365,6 +370,7 @@ def linfitfiltpass(
365
370
  itemstotal += 1
366
371
  else:
367
372
  for voxel in data_out:
373
+
368
374
  meanvalue[voxel[0]] = voxel[1]
369
375
  rvalue[voxel[0]] = voxel[2]
370
376
  r2value[voxel[0]] = voxel[3]
@@ -567,6 +573,11 @@ def linfitfiltpass(
567
573
  itemstotal += 1
568
574
  if showprogressbar:
569
575
  print()
576
+ if debug:
577
+ print("At end of linfitfiltpass:")
578
+ print(f"\t{datatoremove.shape=}, {np.min(datatoremove)=}, {np.max(datatoremove)=}")
579
+ print(f"\t{filtereddata.shape=}, {np.min(filtereddata)=}, {np.max(filtereddata)=}")
580
+ print(f"\t{fitcoeff.shape=}, {np.min(fitcoeff)=}, {np.max(fitcoeff)=}")
570
581
  return itemstotal
571
582
 
572
583
 
@@ -88,7 +88,7 @@ def _procOneVoxelMakelagtc(
88
88
  options.update(kwargs)
89
89
  rt_floattype = options["rt_floattype"]
90
90
  debug = options["debug"]
91
- (lagtcgenerator, thelag, timeaxis) = voxelargs
91
+ lagtcgenerator, thelag, timeaxis = voxelargs
92
92
  if debug:
93
93
  print(f"{vox=}, {thelag=}, {timeaxis=}")
94
94
 
@@ -371,7 +371,7 @@ def calctexticc(args: Any) -> None:
371
371
  measlist = tide_io.readvecs(args.measurementlist, thedtype=str)
372
372
 
373
373
  print(f"measurementlist shape: {measlist.shape}")
374
- (nummeas, numsubjs) = measlist.shape[0], measlist.shape[1]
374
+ nummeas, numsubjs = measlist.shape[0], measlist.shape[1]
375
375
 
376
376
  print(f"numsubjs: {numsubjs}, nummeas: {nummeas}")
377
377
 
@@ -893,7 +893,7 @@ def delayvar(args: Any) -> None:
893
893
  f"calculating delayoffsets for {windowedfilteredregressderivratios.shape[0]} voxels"
894
894
  )
895
895
  for i in range(windowedfilteredregressderivratios.shape[0]):
896
- (windoweddelayoffset[i, thewin], windowedclosestoffset[i, thewin]) = (
896
+ windoweddelayoffset[i, thewin], windowedclosestoffset[i, thewin] = (
897
897
  tide_refinedelay.ratiotodelay(
898
898
  windowedfilteredregressderivratios[i, thewin],
899
899
  offset=lagstouse_valid[i],
@@ -230,10 +230,10 @@ def happy_main(argparsingfunc: Any) -> None:
230
230
  }
231
231
 
232
232
  # decide if we need to use shared memory
233
- if args.nprocs > 1:
234
- infodict["sharedmem"] = True
235
- else:
233
+ if args.nprocs == 1:
236
234
  infodict["sharedmem"] = False
235
+ else:
236
+ infodict["sharedmem"] = True
237
237
 
238
238
  # save the information file
239
239
  if args.saveinfoasjson:
@@ -356,7 +356,7 @@ def happy_main(argparsingfunc: Any) -> None:
356
356
  order=args.motfilt_order,
357
357
  )
358
358
  tide_util.disablemkl(args.nprocs)
359
- (motionregressors, motionregressorlabels, filtereddata, confoundr2) = (
359
+ motionregressors, motionregressorlabels, filtereddata, confoundr2 = (
360
360
  tide_linfitfiltpass.confoundregress(
361
361
  confoundregressors,
362
362
  confoundregressorlabels,
@@ -2383,26 +2383,53 @@ def happy_main(argparsingfunc: Any) -> None:
2383
2383
  tide_util.disablemkl(args.nprocs)
2384
2384
  tide_linfitfiltpass.linfitfiltpass(
2385
2385
  timepoints,
2386
- fmri_data[validlocs, :],
2386
+ fmri_data - (np.mean(fmri_data, axis=1))[:, None],
2387
2387
  threshval,
2388
- cardiacnoise[validlocs, :],
2388
+ cardiacnoise,
2389
2389
  meanvals,
2390
2390
  rvals,
2391
2391
  r2vals,
2392
2392
  fitcoffs,
2393
2393
  fitNorm,
2394
- datatoremove[validlocs, :],
2395
- filtereddata[validlocs, :],
2394
+ datatoremove,
2395
+ filtereddata,
2396
2396
  chunksize=10,
2397
2397
  procbyvoxel=False,
2398
2398
  nprocs=args.nprocs,
2399
2399
  )
2400
2400
  tide_util.enablemkl(args.mklthreads)
2401
- datatoremove[validlocs, :] = np.multiply(cardiacnoise[validlocs, :], fitcoffs[None, :])
2402
- print(f"{datatoremove.shape=}, {np.min(datatoremove)=}, {np.max(datatoremove)=}")
2403
- print(f"{cardiacnoise.shape=}, {np.min(cardiacnoise)=}, {np.max(cardiacnoise)=}")
2404
- print(f"{fitcoffs.shape=}, {np.min(fitcoffs)=}, {np.max(fitcoffs)=}")
2405
- filtereddata = fmri_data - datatoremove
2401
+ # we have to do this because we demeaned the data to get a valid R2
2402
+ filtereddata[validlocs, :] = fmri_data[validlocs, :] - datatoremove[validlocs, :]
2403
+ if args.focaldebug:
2404
+ print("After returning from linfitfiltpass:")
2405
+ print(f"\t{infodict['sharedmem']=}")
2406
+ print(f"\t{datatoremove.shape=}, {np.min(datatoremove)=}, {np.max(datatoremove)=}")
2407
+ print(f"\t{cardiacnoise.shape=}, {np.min(cardiacnoise)=}, {np.max(cardiacnoise)=}")
2408
+ print(f"\t{fitcoffs.shape=}, {np.min(fitcoffs)=}, {np.max(fitcoffs)=}")
2409
+ tide_io.writebidstsv(
2410
+ outputroot + "_desc-cardfilterCoeffs_timeseries",
2411
+ fitcoffs,
2412
+ mrsamplerate,
2413
+ columns=["fitcoeffs"],
2414
+ append=False,
2415
+ debug=args.debug,
2416
+ )
2417
+ tide_io.writebidstsv(
2418
+ outputroot + "_desc-cardfilterR_timeseries",
2419
+ rvals,
2420
+ mrsamplerate,
2421
+ columns=["R"],
2422
+ append=False,
2423
+ debug=args.debug,
2424
+ )
2425
+ tide_io.writebidstsv(
2426
+ outputroot + "_desc-cardfilterR2_timeseries",
2427
+ r2vals,
2428
+ mrsamplerate,
2429
+ columns=["R2"],
2430
+ append=False,
2431
+ debug=args.debug,
2432
+ )
2406
2433
  timings.append(
2407
2434
  [
2408
2435
  "Cardiac signal spatial regression finished",
@@ -2447,29 +2474,28 @@ def happy_main(argparsingfunc: Any) -> None:
2447
2474
  print("Running temporal regression on", numvalidspatiallocs, "voxels")
2448
2475
  tide_util.disablemkl(args.nprocs)
2449
2476
  tide_linfitfiltpass.linfitfiltpass(
2450
- numvalidspatiallocs,
2451
- fmri_data[validlocs, :],
2477
+ numspatiallocs,
2478
+ fmri_data,
2452
2479
  threshval,
2453
- cardiacnoise[validlocs, :],
2454
- meanvals[validlocs],
2455
- rvals[validlocs],
2456
- r2vals[validlocs],
2457
- fitcoffs[validlocs],
2458
- fitNorm[validlocs],
2459
- datatoremove[validlocs, :],
2460
- filtereddata[validlocs, :],
2480
+ cardiacnoise,
2481
+ meanvals,
2482
+ rvals,
2483
+ r2vals,
2484
+ fitcoffs,
2485
+ fitNorm,
2486
+ datatoremove,
2487
+ filtereddata,
2488
+ validmask=projmask.reshape(xsize * ysize * numslices),
2461
2489
  procbyvoxel=True,
2462
2490
  nprocs=args.nprocs,
2463
2491
  debug=args.focaldebug,
2464
2492
  )
2465
2493
  tide_util.enablemkl(args.mklthreads)
2466
- datatoremove[validlocs, :] = np.multiply(
2467
- cardiacnoise[validlocs, :], fitcoffs[validlocs, None]
2468
- )
2469
- print(f"{datatoremove.shape=}, {np.min(datatoremove)=}, {np.max(datatoremove)=}")
2470
- print(f"{cardiacnoise.shape=}, {np.min(cardiacnoise)=}, {np.max(cardiacnoise)=}")
2471
- print(f"{fitcoffs.shape=}, {np.min(fitcoffs)=}, {np.max(fitcoffs)=}")
2472
- filtereddata[validlocs, :] = fmri_data[validlocs, :] - datatoremove[validlocs, :]
2494
+ if args.focaldebug:
2495
+ print("After returning from linfitfiltpass:")
2496
+ print(f"\t{datatoremove.shape=}, {np.min(datatoremove)=}, {np.max(datatoremove)=}")
2497
+ print(f"\t{cardiacnoise.shape=}, {np.min(cardiacnoise)=}, {np.max(cardiacnoise)=}")
2498
+ print(f"\t{fitcoffs.shape=}, {np.min(fitcoffs)=}, {np.max(fitcoffs)=}") #filtereddata[validlocs, :] = fmri_data[validlocs, :] - datatoremove[validlocs, :]
2473
2499
  timings.append(
2474
2500
  [
2475
2501
  "Cardiac signal temporal regression finished",
@@ -2482,25 +2508,32 @@ def happy_main(argparsingfunc: Any) -> None:
2482
2508
  maplist = [
2483
2509
  (
2484
2510
  fitcoffs.reshape((xsize, ysize, numslices)),
2485
- "cardfiltCoeffs",
2511
+ "cardfilterCoeffs",
2486
2512
  "map",
2487
2513
  None,
2488
2514
  "Coefficients for temporal cardiac noise regression",
2489
2515
  ),
2490
2516
  (
2491
2517
  meanvals.reshape((xsize, ysize, numslices)),
2492
- "cardfiltMean",
2518
+ "cardfilterMean",
2493
2519
  "map",
2494
2520
  None,
2495
2521
  "Mean values after temporal cardiac noise regression",
2496
2522
  ),
2497
2523
  (
2498
2524
  rvals.reshape((xsize, ysize, numslices)),
2499
- "cardfiltR",
2525
+ "cardfilterR",
2500
2526
  "map",
2501
2527
  None,
2502
2528
  "R values for temporal cardiac noise regression",
2503
2529
  ),
2530
+ (
2531
+ r2vals.reshape((xsize, ysize, numslices)),
2532
+ "cardfilterR2",
2533
+ "map",
2534
+ None,
2535
+ "R2 values for temporal cardiac noise regression",
2536
+ ),
2504
2537
  ]
2505
2538
  tide_io.savemaplist(
2506
2539
  outputroot,
@@ -2517,14 +2550,14 @@ def happy_main(argparsingfunc: Any) -> None:
2517
2550
  maplist = [
2518
2551
  (
2519
2552
  filtereddata.reshape((xsize, ysize, numslices, timepoints)),
2520
- "cardfiltResult",
2553
+ "cardfilterCleaned",
2521
2554
  "bold",
2522
2555
  None,
2523
2556
  f"Cardiac filtered BOLD data after {regressiontype} regression",
2524
2557
  ),
2525
2558
  (
2526
2559
  datatoremove.reshape((xsize, ysize, numslices, timepoints)),
2527
- "cardfiltRemoved",
2560
+ "cardfilterRemoved",
2528
2561
  "bold",
2529
2562
  None,
2530
2563
  f"Cardiac noise removed with {regressiontype} regression",
@@ -498,7 +498,12 @@ def _get_parser() -> Any:
498
498
  )
499
499
 
500
500
  # Output processing
501
- output_proc = parser.add_argument_group("Output processing")
501
+ output_proc = parser.add_argument_group(
502
+ title="Output processing - mutually exclusive options",
503
+ description=(
504
+ "Optional cardiac noise removal. You can do either spatial or temporal regression, but not both."
505
+ ),
506
+ ).add_mutually_exclusive_group()
502
507
  output_proc.add_argument(
503
508
  "--spatialregression",
504
509
  dest="dospatialregression",
@@ -909,7 +914,8 @@ def process_args(inputargs: Optional[Any] = None) -> Any:
909
914
  args.modelname = DEFAULT_PT_DL_MODEL
910
915
  else:
911
916
  args.modelname = DEFAULT_TF_DL_MODEL
912
- print(f"No model specified. {args.usepytorch=}, so using {args.modelname}")
917
+ if args.debug:
918
+ print(f"No model specified. {args.usepytorch=}, so using {args.modelname}")
913
919
 
914
920
  if args.debug:
915
921
  print()
@@ -940,7 +946,7 @@ def process_args(inputargs: Optional[Any] = None) -> Any:
940
946
 
941
947
  # process motionfile information
942
948
  if args.motionfilespec is not None:
943
- (args.motionfilename, args.motionfilecolspec) = tide_io.parsefilespec(args.motionfilespec)
949
+ args.motionfilename, args.motionfilecolspec = tide_io.parsefilespec(args.motionfilespec)
944
950
  else:
945
951
  args.motionfilename = None
946
952
 
@@ -411,7 +411,7 @@ def niftistats_main(calctype: str = "icc") -> None:
411
411
  if calctype == "icc":
412
412
  measlist = tide_io.readvecs(args.measurementlist, thedtype=str)
413
413
  print(f"measurementlist shape: {measlist.shape}")
414
- (nummeas, numsubjs) = measlist.shape[0], measlist.shape[1]
414
+ nummeas, numsubjs = measlist.shape[0], measlist.shape[1]
415
415
  if nummeas < 2:
416
416
  print(
417
417
  "ICC requires at least two measurements per subject - specify at least two measurements."
@@ -19,6 +19,7 @@
19
19
  """
20
20
  Functions for parsers.
21
21
  """
22
+
22
23
  import argparse
23
24
  import os.path as op
24
25
  import sys
@@ -2171,7 +2171,7 @@ def process_args(inputargs: Optional[Any] = None) -> Tuple[Any, object]:
2171
2171
 
2172
2172
  # motion processing
2173
2173
  if args["motionfilespec"] is not None:
2174
- (args["motionfilename"], args["motionfilecolspec"]) = tide_io.parsefilespec(
2174
+ args["motionfilename"], args["motionfilecolspec"] = tide_io.parsefilespec(
2175
2175
  args["motionfilespec"]
2176
2176
  )
2177
2177
  else:
@@ -17,6 +17,7 @@
17
17
  #
18
18
  #
19
19
  """Utility functions for rapidtide workflows."""
20
+
20
21
  import logging
21
22
  import os
22
23
  from typing import Any, Optional
@@ -17,6 +17,7 @@
17
17
  #
18
18
  #
19
19
  """Utility functions for rapidtide workflows."""
20
+
20
21
  import logging
21
22
  import os
22
23
  from typing import Any, Optional
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rapidtide
3
- Version: 3.1.3
3
+ Version: 3.1.4
4
4
  Summary: Tools for performing correlation analysis on fMRI data.
5
5
  Author: Taylor Salo, Daniel M. Drucker, Ph.D., Jeffrey N Stout, Yaroslav O. Halchenko, Derek Monroe
6
6
  Author-email: "Blaise deB. Frederick" <blaise.frederick@gmail.com>
@@ -7,14 +7,14 @@ cloud/rapidtide-HCPYA,sha256=kqW8ENbOQhvVqZGz-HqiVbrbzHy4cfyy1rk8ejpJor0,963
7
7
  cloud/rapidtide-cloud-test,sha256=SATOwGo4QYLvt-6hE0e3wyK9JjuDU5XzfLrfMoybvcY,466
8
8
  cloud/simple-cp-test,sha256=5ef8wmLfcKdny59BV6_DnAPj7O_mi0rOHdFZVN2iiLA,421
9
9
  rapidtide/Colortables.py,sha256=wKglfM9bOoHDlD_neHoATk29TP0auQBM7dw_qxsDyr4,22131
10
- rapidtide/OrthoImageItem.py,sha256=Y2koDe9bUK6v9xMSXbF9pIgQQMMuBH3GwunFvHQtOP4,58060
10
+ rapidtide/OrthoImageItem.py,sha256=ytmCgUHvmT1ZvVIPU3uLsb2_95FoeEWNKWQoxNEYBEw,58061
11
11
  rapidtide/RapidtideDataset.py,sha256=qlINqWdOGhfTIHko9MRsmHM_KjGUsXStq1haj0Z7HDA,107160
12
12
  rapidtide/__init__.py,sha256=cECnPfGNIWXETiummGLjKcNXLROSDiFlLp-RpZSavwc,97
13
- rapidtide/_version.py,sha256=iXBvjT-8d3K6VYulbrepYf8IKkij-EQok2VgCniK-ko,497
14
- rapidtide/calccoherence.py,sha256=RT7wgof_4ldoIukhTdyVBr6-GZhhUI9zNX2dTEBVvVg,9926
13
+ rapidtide/_version.py,sha256=yrAQ1sJEROq7QVbETO_zYO1mOLbG1_0kwC4PrmvodCI,497
14
+ rapidtide/calccoherence.py,sha256=2Z9pfKxW2masJmArl77DqhP5tIWQGuJnWCehq9A2ZiQ,9924
15
15
  rapidtide/calcnullsimfunc.py,sha256=bfEMRUVdnwfe-Zr6a2xF_gikOimLtqSky2K5Zm_lsbA,10625
16
- rapidtide/calcsimfunc.py,sha256=1nNm6k07J99ofrqE0GRGptC1kDqqI1O-PZbBQ61iqlM,13094
17
- rapidtide/correlate.py,sha256=xearAVKYDvFtJl7lRIEi23ejGZo1udi2bvOFeYnrcGQ,70231
16
+ rapidtide/calcsimfunc.py,sha256=LiP4E_tEfOumX5ct0oN5vlzAgCXth7U-TqxrOZ7SMpk,13092
17
+ rapidtide/correlate.py,sha256=3ZDvw7K8F45Zl_yIl7UF3uSeVCwyMpts56-fmW4EiAQ,70232
18
18
  rapidtide/decorators.py,sha256=k-83nDT1sv6q6tP-xDqfqQdMh1d7V4mRJNBz7uZ3rkk,2628
19
19
  rapidtide/dlfilter.py,sha256=xgOVJ5hpl_sNVEUj1McJKQ5KTv_skJ90cePAzcJn4zc,141199
20
20
  rapidtide/dlfiltertorch.py,sha256=rO81PVMKTLa1oRwGktnCM_RlMwqmgPxFL8RXL-pnd_0,189471
@@ -24,11 +24,11 @@ rapidtide/ffttools.py,sha256=eJHgT-vCzX0CkCol3FcvQODIHwzJeNwxRciJTkm5ftA,5105
24
24
  rapidtide/filter.py,sha256=oN8n2RwjHrQ5Su-vL9Zuu-wJNbmA0VzmWEKJ5hM6lBo,114829
25
25
  rapidtide/fit.py,sha256=7jRIq2vvzEB_Y1yCezdOW3vWqZic5yk-ApRop7BhMRc,151494
26
26
  rapidtide/genericmultiproc.py,sha256=MxwYMhBHbrzZke5NUKTcpkM38DG63yvdkSv2ckvA8HA,6490
27
- rapidtide/happy_supportfuncs.py,sha256=2dUszUsBcMQecjBI0ZmpfEfaBeGl_-Jx8P_NyFlQFKI,138039
27
+ rapidtide/happy_supportfuncs.py,sha256=rikNuHMoIKxPEGUX2RxhOcH6xiNKevrQ83zNgJ6iUKc,138037
28
28
  rapidtide/helper_classes.py,sha256=or_AFYrqskn0ezv0NtlZGXp0P23CsQgz97Spqz80hPU,30042
29
29
  rapidtide/io.py,sha256=Z4x28heuKzh1EvP7t-hp5aRi1z7V4RzKm7anqbm8ARU,155029
30
- rapidtide/linfitfiltpass.py,sha256=N_MLrD2D_oz_9TgICfh1Vi8lt4tXotWPpO0lPaQb1U4,30567
31
- rapidtide/makelaggedtcs.py,sha256=neSLAOZVsCttxQyFz8m3SwsGbsWXq7Ia0Svtsti_8So,9804
30
+ rapidtide/linfitfiltpass.py,sha256=DTre1LlGWbo7GKAmofWxsPONDjcYt2pnlqn_KGfrcxU,31037
31
+ rapidtide/makelaggedtcs.py,sha256=PWYmaK-Hmvy12WQKVVJJluG81vMoKG0GcKWzl94FEgY,9802
32
32
  rapidtide/maskutil.py,sha256=PuWKC7qVGUp1IjnUgtfUJBPzEv60U0atBaIcqorI07Y,26511
33
33
  rapidtide/miscmath.py,sha256=OWGAbxh8ReW3OVMXD6isRYQI17dYvolB7jcciWvkH7o,42192
34
34
  rapidtide/multiproc.py,sha256=c_kmcFu669etEaeWZ3rK6Gg6uka_X4LDibCbWSOAIe4,13091
@@ -77,7 +77,7 @@ rapidtide/data/examples/src/testfmridocker,sha256=jjL7bK29rrcog6uO9BtvcyAU3Sv8_5
77
77
  rapidtide/data/examples/src/testfrozen,sha256=K3qUWDRKPPiCXRgIFuPdwUUjUTzf4QBW8UUhR75NzDM,283
78
78
  rapidtide/data/examples/src/testfuncs,sha256=B-6dZTos7kW1hpkXoBwlj3j2Wf4F4nut-jy3y10wkF8,1569
79
79
  rapidtide/data/examples/src/testglmfilt,sha256=HHGBjj5X-IQGQxBX_AvsIp5CXjKRok0ovCmg0hB3S_Y,3363
80
- rapidtide/data/examples/src/testhappy,sha256=19PwvJhfmhwONdjmo6xnSYTtm4kYAZfyN2erc4TVehY,2099
80
+ rapidtide/data/examples/src/testhappy,sha256=t0-jat3rIskQFSFeztUmrBPx0ZmeOLkFqH-NsvTROqs,2255
81
81
  rapidtide/data/examples/src/testinitdelay,sha256=ts_r5WZBLJDQ3UfPmJ9sfXlO0arO9dhGCQ_Y1wYvjMk,559
82
82
  rapidtide/data/examples/src/testlinfit,sha256=oPnkHJ6lcwsuJhnSMMK7Gx3DHSCf6JK7CIYuIMHbyNA,471
83
83
  rapidtide/data/examples/src/testlocalflow,sha256=hEwstisbWVuALr_29fBJ2nHETKkEF_9qK8wJ4kzuiJk,596
@@ -325,10 +325,10 @@ rapidtide/workflows/applyppgproc.py,sha256=Nl1kjOq-A1_Q6WlUHzKftlcBNo6nvgScF0oNQ
325
325
  rapidtide/workflows/atlasaverage.py,sha256=YRjwcugpN8u-QlYE9XnC3MVTWeh9i3AYd4FskzjZeKk,23586
326
326
  rapidtide/workflows/atlastool.py,sha256=vG5MxpLQnEzcYhAcw1fIiPGxNYiTajM1mDBRF27SLz4,19663
327
327
  rapidtide/workflows/calcSimFuncMap.py,sha256=cSWb2UNo6iO69pNFTfq4Ctd5geJOxUd031mDD14WFs4,17374
328
- rapidtide/workflows/calctexticc.py,sha256=Ot05uFtz6w2_q4cXitXhqwt_8tqZmElKLey6cIvGxAY,17470
328
+ rapidtide/workflows/calctexticc.py,sha256=kll-PCDPWYH7YWSVNO98FttEX8095pXTLewh1Xdn6GE,17468
329
329
  rapidtide/workflows/ccorrica.py,sha256=N7LLfdZ3L2mmRtXvWGrxW5aG7cUKFL009a4aNi9UTJc,14223
330
330
  rapidtide/workflows/cleanregressor.py,sha256=Ozkn6zWjCIf02Y-sgnFs-YCsTbHL7j2yuJfh83UGtHI,15534
331
- rapidtide/workflows/delayvar.py,sha256=cKEcg_2PuJO396Cj2Seo93EDgnxIcGp-xeO99cSPxe0,44581
331
+ rapidtide/workflows/delayvar.py,sha256=ZwygIp_9qw2b5MAoBnhKKpIQJ9leQVgXlcAkRX7aydI,44579
332
332
  rapidtide/workflows/diffrois.py,sha256=uB_go8wnEScVzyKplpzZazcnyaWIWHEPUYqemCuivMg,8446
333
333
  rapidtide/workflows/endtidalproc.py,sha256=MLuLWa2eoyZGxWIyO-gZXnntw40eAP86qhHizfaqQPI,9555
334
334
  rapidtide/workflows/fdica.py,sha256=sSVBrc_bBvFFK1E5-62Kgk4DmGC3iW1aFYGkBtEZcZU,21434
@@ -337,19 +337,19 @@ rapidtide/workflows/filttc.py,sha256=7m1Rm3wwR0RQWI5L-Eclrx4KUopL0V50NT6fDUaomss
337
337
  rapidtide/workflows/fitSimFuncMap.py,sha256=kjmLGP80VDOBYzkTa7y1yA1tNqepAwDLaI2-kKcR3D4,21845
338
338
  rapidtide/workflows/fixtr.py,sha256=W-XViiHn2OOSy1MuSJxgbMsYyBsI6GykB9CxBFgfHSA,4406
339
339
  rapidtide/workflows/gmscalc.py,sha256=7XsqUQDCousfaqdYiDKz5IO8FodyCbam6gIfB8m1w6o,10084
340
- rapidtide/workflows/happy.py,sha256=5l3UslpZLRKaxA3oIuZIqeU_baqTBqnDLcLldlpezpk,96716
340
+ rapidtide/workflows/happy.py,sha256=oIx6N_zYqKNvl2C76nxgVdUwO4daAPKemc2LEiq-eXk,97876
341
341
  rapidtide/workflows/happy2std.py,sha256=yuRodhqlzwQg4ew7xtlKoQaJbECbZa4vNssd8jUJlzw,13501
342
- rapidtide/workflows/happy_parser.py,sha256=K_IW92JVPH0QdD-QlphPaK-viKva-qOE9lO-t0FDDMY,32624
342
+ rapidtide/workflows/happy_parser.py,sha256=JYPtovR53xOcUOMhLqS6Kr8rsg6NyzLWotkMxIGi_XI,32874
343
343
  rapidtide/workflows/histnifti.py,sha256=CfMzTUrYfvB3O1-ichu65cJLjnkQRueHYBC3ptRoUSM,15722
344
344
  rapidtide/workflows/histtc.py,sha256=zgLLKYyhuQSw4TfJhIjrmsEuFgF4cSFjig90HNTN-5o,7424
345
345
  rapidtide/workflows/linfitfilt.py,sha256=pAqv6L6Iniw6sjZeED0C6etuSPlWj7qh8XWohHjo3eo,13894
346
346
  rapidtide/workflows/localflow.py,sha256=s11r9b_T_IKU3P2jce4ZOlRUuKIwvlPFucbzsp_uc4k,34401
347
347
  rapidtide/workflows/mergequality.py,sha256=FPItpGKlgXbLoyBBQZJ5G5HOd38wPGUQZa7X78_jz3s,18344
348
348
  rapidtide/workflows/niftidecomp.py,sha256=Dv3PqSEW5_2AEoMlQm-U4FkABKASSoT1OS6ExwzMBv8,26116
349
- rapidtide/workflows/niftistats.py,sha256=wtTy4gv6_qOkHjuyYMAM1ovexdPvMJszkHFW1nOYKmk,24364
349
+ rapidtide/workflows/niftistats.py,sha256=85wrzsN8KyCiUuNRmj0Rn3q1K1XNzfMfHV15TBNyyqM,24362
350
350
  rapidtide/workflows/pairproc.py,sha256=nfzyBcjiiogaEB9fdzZqqkNN1iUf0mWaB8W3-z6tsrU,10063
351
351
  rapidtide/workflows/pairwisemergenifti.py,sha256=JETsEp3mrIRSF3f68rKBB0a8gNprr3VHOn0isEXUh9w,6624
352
- rapidtide/workflows/parser_funcs.py,sha256=cjTi16T009zZOydDIinzJZuVqN4vxNIC6NyWcVDk5mo,75799
352
+ rapidtide/workflows/parser_funcs.py,sha256=-d7dng7n_kKHXBMqy-hL3Hq1ycJ93IpRV7L8V1ISIWo,75800
353
353
  rapidtide/workflows/physiofreq.py,sha256=k5oWYpxh9JZ1bcgc_9l2oSs9650gdA_WjtqZyCtnyAM,10113
354
354
  rapidtide/workflows/pixelcomp.py,sha256=6Nf-UNsq6Z_UWajMa_QsRqZEkWVxZSq8TVihe9RFzrY,13819
355
355
  rapidtide/workflows/plethquality.py,sha256=CWoWuaInEycuZYxLPsa2EF79Uf0oXKO_p6C28-Ue7Do,7028
@@ -358,7 +358,7 @@ rapidtide/workflows/proj2flow.py,sha256=ifp5Uc4pUijKggP2fr0prrE72i01r4OXBNMwTkRR
358
358
  rapidtide/workflows/rankimage.py,sha256=CvECpIIo6KQkgZN1nAiu5xcxPeWbM-UxQpvi2o3XIho,7129
359
359
  rapidtide/workflows/rapidtide.py,sha256=ksQrwM3NGv4Aqk2__yrgx05jaKhikePUq7sb3saaMiY,144261
360
360
  rapidtide/workflows/rapidtide2std.py,sha256=Wo1wGeW-4z-Mwm1-5zTJGQc7Mwks6Y2byPhI250hKWU,14330
361
- rapidtide/workflows/rapidtide_parser.py,sha256=GdJU4rGnLSH0YjV3SsjsxIKYlZcjoyFcNtocrqZgSAg,81581
361
+ rapidtide/workflows/rapidtide_parser.py,sha256=AUW9ZUcO7uellfRtUjqJlR0asUjT8Fk1506IeZOl4B4,81579
362
362
  rapidtide/workflows/refineDelayMap.py,sha256=pO1K9v9z4Y29RTXQcSUTbG25CKstu0zUOSfJvvvWojo,7941
363
363
  rapidtide/workflows/refineRegressor.py,sha256=ySyH1fQUeiTRUemEhxQybRtqLs7F89foTH8lWwL14mo,47154
364
364
  rapidtide/workflows/regressfrommaps.py,sha256=xhAgQYkKy3SOhpdhT12U9qMtXeXXSc3VbEuFM8OkNQE,10216
@@ -382,12 +382,12 @@ rapidtide/workflows/synthASL.py,sha256=4YY9AvFfyVDrSHKvU6Uc0eTQMzvxhBqvpjK1jDblS
382
382
  rapidtide/workflows/tcfrom2col.py,sha256=aK-EaFu1HP0NqK_SUd9N9O2-aBeJ0eiFZ44QJa2FZLM,4428
383
383
  rapidtide/workflows/tcfrom3col.py,sha256=mb1d7-B67Hht0EDASfJBbjNEETPSn26tHMpwY541emY,4405
384
384
  rapidtide/workflows/tidepool.py,sha256=wIUknTWvr0u5wfPC_gPGQva064qK-xLV7mCb_pIUsz4,188244
385
- rapidtide/workflows/utils.py,sha256=ZHERuhotw_KB2Jxf8JtbKgpInbM20rX9uixTIldk7Tg,5612
386
- rapidtide/workflows/utils_doc.py,sha256=7WZ_E_4mnVO3iDynZ8Gd6FUBC9pz-Csz2TmNHT-72zA,10283
385
+ rapidtide/workflows/utils.py,sha256=l_bD899y9Lf_lrjqVN5ejeYzQ9cE5QfzqBa94scEV50,5613
386
+ rapidtide/workflows/utils_doc.py,sha256=mWmUsqhz2ZWTFOuIphDIqDw7QHNJhHo3-BqPZLmr_OU,10284
387
387
  rapidtide/workflows/variabilityizer.py,sha256=v25jKiWjwt9e2sBOfLrqG5eLEK7hiQ_zdWbNVW2Gpis,7585
388
- rapidtide-3.1.3.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
389
- rapidtide-3.1.3.dist-info/METADATA,sha256=XGuU65vjv6YsGQc81jtRAuRH8ZWAzkcJhKJpCzeX5sQ,15797
390
- rapidtide-3.1.3.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
391
- rapidtide-3.1.3.dist-info/entry_points.txt,sha256=dVXEEfqnv_eUNdn02PfZTTd5KK4vZwumP8HCfhUVhag,3380
392
- rapidtide-3.1.3.dist-info/top_level.txt,sha256=MnNXGfbrIBc9RnAqzBHOWd3GQO-aIUDnRTz4_5VjH5g,16
393
- rapidtide-3.1.3.dist-info/RECORD,,
388
+ rapidtide-3.1.4.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
389
+ rapidtide-3.1.4.dist-info/METADATA,sha256=6G2G3BonUdbMK8MKVJNtFthoz46Yjt4V93cP4ADxpfM,15797
390
+ rapidtide-3.1.4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
391
+ rapidtide-3.1.4.dist-info/entry_points.txt,sha256=dVXEEfqnv_eUNdn02PfZTTd5KK4vZwumP8HCfhUVhag,3380
392
+ rapidtide-3.1.4.dist-info/top_level.txt,sha256=MnNXGfbrIBc9RnAqzBHOWd3GQO-aIUDnRTz4_5VjH5g,16
393
+ rapidtide-3.1.4.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.10.1)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5