rapidtide 3.0a10__py3-none-any.whl → 3.0a12__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.
- rapidtide/Colortables.py +45 -10
- rapidtide/RapidtideDataset.py +21 -3
- rapidtide/Refiner.py +464 -0
- rapidtide/__init__.py +1 -2
- rapidtide/_version.py +63 -93
- rapidtide/data/examples/src/testfmri +3 -119
- rapidtide/data/examples/src/testhappy +1 -6
- rapidtide/data/examples/src/testinitdelay +19 -0
- rapidtide/data/examples/src/testnewrefine +49 -0
- rapidtide/data/examples/src/testrefineonly +22 -0
- rapidtide/glmpass.py +8 -1
- rapidtide/refinedelay.py +72 -32
- rapidtide/refineregressor.py +38 -24
- rapidtide/tests/test_fastresampler.py +6 -2
- rapidtide/tests/test_fullrunhappy_v1.py +0 -1
- rapidtide/tests/test_fullrunhappy_v4.py +1 -0
- rapidtide/tests/test_runmisc.py +4 -4
- rapidtide/tidepoolTemplate.py +1 -0
- rapidtide/tidepoolTemplate.ui +1 -0
- rapidtide/tidepoolTemplate_alt.py +5 -4
- rapidtide/tidepoolTemplate_alt.ui +3 -2
- rapidtide/tidepoolTemplate_alt_qt6.py +5 -4
- rapidtide/tidepoolTemplate_big.py +1 -0
- rapidtide/tidepoolTemplate_big.ui +1 -0
- rapidtide/tidepoolTemplate_big_qt6.py +1 -0
- rapidtide/tidepoolTemplate_qt6.py +1 -0
- rapidtide/workflows/parser_funcs.py +10 -2
- rapidtide/workflows/rapidtide.py +197 -325
- rapidtide/workflows/rapidtide_parser.py +35 -13
- rapidtide/workflows/retroglm.py +145 -60
- rapidtide/workflows/tidepool.py +34 -15
- {rapidtide-3.0a10.dist-info → rapidtide-3.0a12.dist-info}/METADATA +1 -1
- {rapidtide-3.0a10.dist-info → rapidtide-3.0a12.dist-info}/RECORD +37 -33
- {rapidtide-3.0a10.dist-info → rapidtide-3.0a12.dist-info}/WHEEL +1 -1
- {rapidtide-3.0a10.dist-info → rapidtide-3.0a12.dist-info}/LICENSE +0 -0
- {rapidtide-3.0a10.dist-info → rapidtide-3.0a12.dist-info}/entry_points.txt +0 -0
- {rapidtide-3.0a10.dist-info → rapidtide-3.0a12.dist-info}/top_level.txt +0 -0
|
@@ -80,6 +80,7 @@ DEFAULT_REFINE_PRENORM = "var"
|
|
|
80
80
|
DEFAULT_REFINE_WEIGHTING = "None"
|
|
81
81
|
DEFAULT_REFINE_PCACOMPONENTS = 0.8
|
|
82
82
|
DEFAULT_GLMDERIVS = 0
|
|
83
|
+
DEFAULT_REFINEGLMDERIVS = 1
|
|
83
84
|
|
|
84
85
|
DEFAULT_DENOISING_LAGMIN = -10.0
|
|
85
86
|
DEFAULT_DENOISING_LAGMAX = 10.0
|
|
@@ -309,7 +310,7 @@ def _get_parser():
|
|
|
309
310
|
dest="realtr",
|
|
310
311
|
action="store",
|
|
311
312
|
metavar="TSTEP",
|
|
312
|
-
type=lambda x: pf.is_float(parser, x),
|
|
313
|
+
type=lambda x: pf.is_float(parser, x, minval=0.0),
|
|
313
314
|
help=(
|
|
314
315
|
"Set the timestep of the data file to TSTEP. "
|
|
315
316
|
"This will override the TR in an "
|
|
@@ -395,7 +396,7 @@ def _get_parser():
|
|
|
395
396
|
"--detrendorder",
|
|
396
397
|
dest="detrendorder",
|
|
397
398
|
action="store",
|
|
398
|
-
type=
|
|
399
|
+
type=lambda x: pf.is_int(parser, x, minval=0),
|
|
399
400
|
metavar="ORDER",
|
|
400
401
|
help=(f"Set order of trend removal (0 to disable). Default is {DEFAULT_DETREND_ORDER}."),
|
|
401
402
|
default=DEFAULT_DETREND_ORDER,
|
|
@@ -514,7 +515,7 @@ def _get_parser():
|
|
|
514
515
|
"--confoundpowers",
|
|
515
516
|
dest="confound_power",
|
|
516
517
|
metavar="N",
|
|
517
|
-
type=
|
|
518
|
+
type=lambda x: pf.is_int(parser, x, minval=1),
|
|
518
519
|
help=(
|
|
519
520
|
"Include powers of each confound regressor up to order N. Default is 1 (no expansion). "
|
|
520
521
|
),
|
|
@@ -580,7 +581,7 @@ def _get_parser():
|
|
|
580
581
|
"--numskip",
|
|
581
582
|
dest="preprocskip",
|
|
582
583
|
action="store",
|
|
583
|
-
type=
|
|
584
|
+
type=lambda x: pf.is_int(parser, x, minval=0),
|
|
584
585
|
metavar="SKIP",
|
|
585
586
|
help=(
|
|
586
587
|
"SKIP TRs were previously deleted during "
|
|
@@ -672,7 +673,7 @@ def _get_parser():
|
|
|
672
673
|
"--regressorfreq",
|
|
673
674
|
dest="inputfreq",
|
|
674
675
|
action="store",
|
|
675
|
-
type=lambda x: pf.is_float(parser, x),
|
|
676
|
+
type=lambda x: pf.is_float(parser, x, minval=0.0),
|
|
676
677
|
metavar="FREQ",
|
|
677
678
|
help=(
|
|
678
679
|
"Probe regressor in file has sample "
|
|
@@ -888,7 +889,7 @@ def _get_parser():
|
|
|
888
889
|
"--despecklepasses",
|
|
889
890
|
dest="despeckle_passes",
|
|
890
891
|
action=pf.IndicateSpecifiedAction,
|
|
891
|
-
type=
|
|
892
|
+
type=lambda x: pf.is_int(parser, x, minval=0),
|
|
892
893
|
metavar="PASSES",
|
|
893
894
|
help=(
|
|
894
895
|
"Detect and refit suspect correlations to "
|
|
@@ -943,7 +944,7 @@ def _get_parser():
|
|
|
943
944
|
"--passes",
|
|
944
945
|
dest="passes",
|
|
945
946
|
action=pf.IndicateSpecifiedAction,
|
|
946
|
-
type=
|
|
947
|
+
type=lambda x: pf.is_int(parser, x, minval=1),
|
|
947
948
|
metavar="PASSES",
|
|
948
949
|
help=("Set the number of processing passes to PASSES. " f"Default is {DEFAULT_PASSES}."),
|
|
949
950
|
default=DEFAULT_PASSES,
|
|
@@ -1157,7 +1158,7 @@ def _get_parser():
|
|
|
1157
1158
|
"--maxpasses",
|
|
1158
1159
|
dest="maxpasses",
|
|
1159
1160
|
action="store",
|
|
1160
|
-
type=
|
|
1161
|
+
type=lambda x: pf.is_int(parser, x, minval=1),
|
|
1161
1162
|
metavar="MAXPASSES",
|
|
1162
1163
|
help=(
|
|
1163
1164
|
"Terminate refinement after MAXPASSES passes, whether or not convergence has occurred. "
|
|
@@ -1203,7 +1204,7 @@ def _get_parser():
|
|
|
1203
1204
|
"--glmderivs",
|
|
1204
1205
|
dest="glmderivs",
|
|
1205
1206
|
action="store",
|
|
1206
|
-
type=
|
|
1207
|
+
type=lambda x: pf.is_int(parser, x, minval=0),
|
|
1207
1208
|
metavar="NDERIVS",
|
|
1208
1209
|
help=(
|
|
1209
1210
|
f"When doing final GLM, include derivatives up to NDERIVS order. Default is {DEFAULT_GLMDERIVS}"
|
|
@@ -1221,7 +1222,9 @@ def _get_parser():
|
|
|
1221
1222
|
"--refinedelay",
|
|
1222
1223
|
dest="dummy",
|
|
1223
1224
|
action="store_true",
|
|
1224
|
-
help=(
|
|
1225
|
+
help=(
|
|
1226
|
+
"Calculate a refined delay map using GLM information. ***DEPRECATED*** - this is now on by default."
|
|
1227
|
+
),
|
|
1225
1228
|
default=True,
|
|
1226
1229
|
)
|
|
1227
1230
|
glm.add_argument(
|
|
@@ -1297,7 +1300,7 @@ def _get_parser():
|
|
|
1297
1300
|
"--histlen", # was -h
|
|
1298
1301
|
dest="histlen",
|
|
1299
1302
|
action="store",
|
|
1300
|
-
type=
|
|
1303
|
+
type=lambda x: pf.is_int(parser, x, minval=5),
|
|
1301
1304
|
metavar="HISTLEN",
|
|
1302
1305
|
help=(f"Change the histogram length to HISTLEN. Default is {DEFAULT_HISTLEN}."),
|
|
1303
1306
|
default=DEFAULT_HISTLEN,
|
|
@@ -1349,7 +1352,7 @@ def _get_parser():
|
|
|
1349
1352
|
"--mklthreads",
|
|
1350
1353
|
dest="mklthreads",
|
|
1351
1354
|
action="store",
|
|
1352
|
-
type=
|
|
1355
|
+
type=lambda x: pf.is_int(parser, x, minval=1),
|
|
1353
1356
|
metavar="MKLTHREADS",
|
|
1354
1357
|
help=(
|
|
1355
1358
|
"If mkl library is installed, use no more than MKLTHREADS worker "
|
|
@@ -1463,6 +1466,25 @@ def _get_parser():
|
|
|
1463
1466
|
experimental = parser.add_argument_group(
|
|
1464
1467
|
"Experimental options (not fully tested, or not tested at all, may not work). Beware!"
|
|
1465
1468
|
)
|
|
1469
|
+
experimental.add_argument(
|
|
1470
|
+
"--refineglmderivs",
|
|
1471
|
+
dest="refineglmderivs",
|
|
1472
|
+
action="store",
|
|
1473
|
+
type=lambda x: pf.is_int(parser, x, minval=1),
|
|
1474
|
+
metavar="NDERIVS",
|
|
1475
|
+
help=(
|
|
1476
|
+
f"When doing GLM for delay refinement, include derivatives up to NDERIVS order. Must be 1 or more. "
|
|
1477
|
+
f"Default is {DEFAULT_REFINEGLMDERIVS}"
|
|
1478
|
+
),
|
|
1479
|
+
default=DEFAULT_REFINEGLMDERIVS,
|
|
1480
|
+
)
|
|
1481
|
+
experimental.add_argument(
|
|
1482
|
+
"--dofinalrefine",
|
|
1483
|
+
dest="dofinalrefine",
|
|
1484
|
+
action="store_true",
|
|
1485
|
+
help=("Do regressor refinement on the final pass."),
|
|
1486
|
+
default=False,
|
|
1487
|
+
)
|
|
1466
1488
|
experimental.add_argument(
|
|
1467
1489
|
"--territorymap",
|
|
1468
1490
|
dest="territorymap",
|
|
@@ -1542,7 +1564,7 @@ def _get_parser():
|
|
|
1542
1564
|
"--noisefreq",
|
|
1543
1565
|
dest="noisefreq",
|
|
1544
1566
|
action="store",
|
|
1545
|
-
type=lambda x: pf.is_float(parser, x),
|
|
1567
|
+
type=lambda x: pf.is_float(parser, x, minval=0.0),
|
|
1546
1568
|
metavar="FREQ",
|
|
1547
1569
|
help=(
|
|
1548
1570
|
"Noise timecourse in file has sample "
|
rapidtide/workflows/retroglm.py
CHANGED
|
@@ -57,6 +57,7 @@ DEFAULT_REFINEDELAYMINDELAY = -5.0
|
|
|
57
57
|
DEFAULT_REFINEDELAYMAXDELAY = 5.0
|
|
58
58
|
DEFAULT_REFINEDELAYNUMPOINTS = 501
|
|
59
59
|
DEFAULT_DELAYOFFSETSPATIALFILT = -1
|
|
60
|
+
DEFAULT_REFINEGLMDERIVS = 1
|
|
60
61
|
|
|
61
62
|
|
|
62
63
|
def _get_parser():
|
|
@@ -91,7 +92,7 @@ def _get_parser():
|
|
|
91
92
|
"--glmderivs",
|
|
92
93
|
dest="glmderivs",
|
|
93
94
|
action="store",
|
|
94
|
-
type=
|
|
95
|
+
type=lambda x: pf.is_int(parser, x, minval=0),
|
|
95
96
|
metavar="NDERIVS",
|
|
96
97
|
help=(
|
|
97
98
|
f"When doing final GLM, include derivatives up to NDERIVS order. Default is {DEFAULT_GLMDERIVS}"
|
|
@@ -115,7 +116,7 @@ def _get_parser():
|
|
|
115
116
|
"--numskip",
|
|
116
117
|
dest="numskip",
|
|
117
118
|
action="store",
|
|
118
|
-
type=
|
|
119
|
+
type=lambda x: pf.is_int(parser, x, minval=0),
|
|
119
120
|
metavar="NUMSKIP",
|
|
120
121
|
help=("Skip NUMSKIP points at the beginning of the fmri file."),
|
|
121
122
|
default=0,
|
|
@@ -213,6 +214,21 @@ def _get_parser():
|
|
|
213
214
|
help=("Output lots of helpful information on a limited subset of operations."),
|
|
214
215
|
default=False,
|
|
215
216
|
)
|
|
217
|
+
experimental = parser.add_argument_group(
|
|
218
|
+
"Experimental options (not fully tested, or not tested at all, may not work). Beware!"
|
|
219
|
+
)
|
|
220
|
+
experimental.add_argument(
|
|
221
|
+
"--refineglmderivs",
|
|
222
|
+
dest="refineglmderivs",
|
|
223
|
+
action="store",
|
|
224
|
+
type=lambda x: pf.is_int(parser, x, minval=1),
|
|
225
|
+
metavar="NDERIVS",
|
|
226
|
+
help=(
|
|
227
|
+
f"When doing GLM for delay refinement, include derivatives up to NDERIVS order. Must be 1 or more. "
|
|
228
|
+
f"Default is {DEFAULT_REFINEGLMDERIVS}"
|
|
229
|
+
),
|
|
230
|
+
default=DEFAULT_REFINEGLMDERIVS,
|
|
231
|
+
)
|
|
216
232
|
|
|
217
233
|
return parser
|
|
218
234
|
|
|
@@ -430,7 +446,7 @@ def retroglm(args):
|
|
|
430
446
|
print(f"{numvalidspatiallocs=}")
|
|
431
447
|
internalvalidspaceshape = numvalidspatiallocs
|
|
432
448
|
if args.refinedelay:
|
|
433
|
-
derivaxissize = np.max([
|
|
449
|
+
derivaxissize = np.max([args.refineglmderivs + 1, args.glmderivs + 1])
|
|
434
450
|
else:
|
|
435
451
|
derivaxissize = args.glmderivs + 1
|
|
436
452
|
internalvalidspaceshapederivs = (
|
|
@@ -505,6 +521,7 @@ def retroglm(args):
|
|
|
505
521
|
threshval = therunoptions["glmthreshval"]
|
|
506
522
|
except KeyError:
|
|
507
523
|
threshval = 0.0
|
|
524
|
+
therunoptions["glmthreshval"] = threshval
|
|
508
525
|
mode = "glm"
|
|
509
526
|
|
|
510
527
|
if args.debug or args.focaldebug:
|
|
@@ -579,54 +596,94 @@ def retroglm(args):
|
|
|
579
596
|
glmmean,
|
|
580
597
|
rvalue,
|
|
581
598
|
r2value,
|
|
582
|
-
fitNorm[:, :
|
|
583
|
-
fitcoeff[:, :
|
|
599
|
+
fitNorm[:, : (args.refineglmderivs + 1)],
|
|
600
|
+
fitcoeff[:, : (args.refineglmderivs + 1)],
|
|
584
601
|
movingsignal,
|
|
585
602
|
lagtc,
|
|
586
603
|
filtereddata,
|
|
587
604
|
LGR,
|
|
588
605
|
TimingLGR,
|
|
589
606
|
therunoptions,
|
|
607
|
+
glmderivs=args.refineglmderivs,
|
|
590
608
|
debug=args.debug,
|
|
591
609
|
)
|
|
592
610
|
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
611
|
+
if args.refineglmderivs == 1:
|
|
612
|
+
medfiltglmderivratios, filteredglmderivratios, delayoffsetMAD = (
|
|
613
|
+
tide_refinedelay.filterderivratios(
|
|
614
|
+
glmderivratios,
|
|
615
|
+
(xsize, ysize, numslices),
|
|
616
|
+
validvoxels,
|
|
617
|
+
(xdim, ydim, slicedim),
|
|
618
|
+
gausssigma=args.delayoffsetgausssigma,
|
|
619
|
+
patchthresh=args.delaypatchthresh,
|
|
620
|
+
fileiscifti=False,
|
|
621
|
+
textio=False,
|
|
622
|
+
rt_floattype=rt_floattype,
|
|
623
|
+
debug=args.debug,
|
|
624
|
+
)
|
|
625
|
+
)
|
|
626
|
+
|
|
627
|
+
# find the mapping of glm ratios to delays
|
|
628
|
+
tide_refinedelay.trainratiotooffset(
|
|
629
|
+
genlagtc,
|
|
630
|
+
initial_fmri_x,
|
|
631
|
+
outputname,
|
|
632
|
+
args.outputlevel,
|
|
633
|
+
mindelay=args.mindelay,
|
|
634
|
+
maxdelay=args.maxdelay,
|
|
635
|
+
numpoints=args.numpoints,
|
|
604
636
|
debug=args.debug,
|
|
605
637
|
)
|
|
606
|
-
|
|
638
|
+
TimingLGR.info("Refinement calibration end")
|
|
639
|
+
|
|
640
|
+
# now calculate the delay offsets
|
|
641
|
+
TimingLGR.info("Calculating delay offsets")
|
|
642
|
+
delayoffset = np.zeros_like(filteredglmderivratios)
|
|
643
|
+
if args.focaldebug:
|
|
644
|
+
print(f"calculating delayoffsets for {filteredglmderivratios.shape[0]} voxels")
|
|
645
|
+
for i in range(filteredglmderivratios.shape[0]):
|
|
646
|
+
delayoffset[i] = tide_refinedelay.ratiotodelay(filteredglmderivratios[i])
|
|
647
|
+
"""delayoffset[i] = tide_refinedelay.coffstodelay(
|
|
648
|
+
np.asarray([filteredglmderivratios[i]]),
|
|
649
|
+
mindelay=args.mindelay,
|
|
650
|
+
maxdelay=args.maxdelay,
|
|
651
|
+
)"""
|
|
652
|
+
|
|
653
|
+
refinedvoxelstoreport = filteredglmderivratios.shape[0]
|
|
654
|
+
else:
|
|
655
|
+
medfiltglmderivratios = np.zeros_like(glmderivratios)
|
|
656
|
+
filteredglmderivratios = np.zeros_like(glmderivratios)
|
|
657
|
+
delayoffsetMAD = np.zeros(args.refineglmderivs, dtype=float)
|
|
658
|
+
for i in range(args.refineglmderivs):
|
|
659
|
+
medfiltglmderivratios[i, :], filteredglmderivratios[i, :], delayoffsetMAD[i] = (
|
|
660
|
+
tide_refinedelay.filterderivratios(
|
|
661
|
+
glmderivratios[i, :],
|
|
662
|
+
(xsize, ysize, numslices),
|
|
663
|
+
validvoxels,
|
|
664
|
+
(xdim, ydim, slicedim),
|
|
665
|
+
gausssigma=args.delayoffsetgausssigma,
|
|
666
|
+
patchthresh=args.delaypatchthresh,
|
|
667
|
+
fileiscifti=False,
|
|
668
|
+
textio=False,
|
|
669
|
+
rt_floattype=rt_floattype,
|
|
670
|
+
debug=args.debug,
|
|
671
|
+
)
|
|
672
|
+
)
|
|
673
|
+
|
|
674
|
+
# now calculate the delay offsets
|
|
675
|
+
delayoffset = np.zeros_like(filteredglmderivratios[0, :])
|
|
676
|
+
if args.debug:
|
|
677
|
+
print(f"calculating delayoffsets for {filteredglmderivratios.shape[1]} voxels")
|
|
678
|
+
for i in range(filteredglmderivratios.shape[1]):
|
|
679
|
+
delayoffset[i] = tide_refinedelay.coffstodelay(
|
|
680
|
+
filteredglmderivratios[:, i],
|
|
681
|
+
mindelay=args.mindelay,
|
|
682
|
+
maxdelay=args.maxdelay,
|
|
683
|
+
)
|
|
684
|
+
refinedvoxelstoreport = filteredglmderivratios.shape[1]
|
|
607
685
|
|
|
608
|
-
# find the mapping of glm ratios to delays
|
|
609
|
-
tide_refinedelay.trainratiotooffset(
|
|
610
|
-
genlagtc,
|
|
611
|
-
initial_fmri_x,
|
|
612
|
-
outputname,
|
|
613
|
-
args.outputlevel,
|
|
614
|
-
mindelay=args.mindelay,
|
|
615
|
-
maxdelay=args.maxdelay,
|
|
616
|
-
numpoints=args.numpoints,
|
|
617
|
-
debug=args.debug,
|
|
618
|
-
)
|
|
619
|
-
TimingLGR.info("Refinement calibration end")
|
|
620
|
-
|
|
621
|
-
# now calculate the delay offsets
|
|
622
|
-
TimingLGR.info("Calculating delay offsets")
|
|
623
|
-
delayoffset = filteredglmderivratios * 0.0
|
|
624
|
-
if args.focaldebug:
|
|
625
|
-
print(f"calculating delayoffsets for {filteredglmderivratios.shape[0]} voxels")
|
|
626
|
-
for i in range(filteredglmderivratios.shape[0]):
|
|
627
|
-
delayoffset[i] = tide_refinedelay.ratiotodelay(filteredglmderivratios[i])
|
|
628
686
|
namesuffix = "_desc-delayoffset_hist"
|
|
629
|
-
|
|
630
687
|
tide_stats.makeandsavehistogram(
|
|
631
688
|
delayoffset,
|
|
632
689
|
therunoptions["histlen"],
|
|
@@ -641,7 +698,7 @@ def retroglm(args):
|
|
|
641
698
|
TimingLGR.info(
|
|
642
699
|
"Delay offset calculation done",
|
|
643
700
|
{
|
|
644
|
-
"message2":
|
|
701
|
+
"message2": refinedvoxelstoreport,
|
|
645
702
|
"message3": "voxels",
|
|
646
703
|
},
|
|
647
704
|
)
|
|
@@ -824,28 +881,56 @@ def retroglm(args):
|
|
|
824
881
|
]
|
|
825
882
|
|
|
826
883
|
if args.refinedelay:
|
|
884
|
+
if args.refineglmderivs > 1:
|
|
885
|
+
for i in range(args.refineglmderivs):
|
|
886
|
+
maplist += [
|
|
887
|
+
(
|
|
888
|
+
glmderivratios[i, :],
|
|
889
|
+
f"glmderivratios_{i}",
|
|
890
|
+
"map",
|
|
891
|
+
None,
|
|
892
|
+
f"Ratio of derivative {i+1} of delayed sLFO to the delayed sLFO",
|
|
893
|
+
),
|
|
894
|
+
(
|
|
895
|
+
medfiltglmderivratios[i, :],
|
|
896
|
+
f"medfiltglmderivratios_{i}",
|
|
897
|
+
"map",
|
|
898
|
+
None,
|
|
899
|
+
f"Median filtered version of the glmderivratios_{i} map",
|
|
900
|
+
),
|
|
901
|
+
(
|
|
902
|
+
filteredglmderivratios[i, :],
|
|
903
|
+
f"filteredglmderivratios_{i}",
|
|
904
|
+
"map",
|
|
905
|
+
None,
|
|
906
|
+
f"glmderivratios_{i}, with outliers patched using median filtered data",
|
|
907
|
+
),
|
|
908
|
+
]
|
|
909
|
+
else:
|
|
910
|
+
maplist += [
|
|
911
|
+
(
|
|
912
|
+
glmderivratios,
|
|
913
|
+
"glmderivratios",
|
|
914
|
+
"map",
|
|
915
|
+
None,
|
|
916
|
+
"Ratio of the first derivative of delayed sLFO to the delayed sLFO",
|
|
917
|
+
),
|
|
918
|
+
(
|
|
919
|
+
medfiltglmderivratios,
|
|
920
|
+
"medfiltglmderivratios",
|
|
921
|
+
"map",
|
|
922
|
+
None,
|
|
923
|
+
"Median filtered version of the glmderivratios map",
|
|
924
|
+
),
|
|
925
|
+
(
|
|
926
|
+
filteredglmderivratios,
|
|
927
|
+
"filteredglmderivratios",
|
|
928
|
+
"map",
|
|
929
|
+
None,
|
|
930
|
+
"glmderivratios, with outliers patched using median filtered data",
|
|
931
|
+
),
|
|
932
|
+
]
|
|
827
933
|
maplist += [
|
|
828
|
-
(
|
|
829
|
-
glmderivratios,
|
|
830
|
-
"glmderivratios",
|
|
831
|
-
"map",
|
|
832
|
-
None,
|
|
833
|
-
"Ratio of the first derivative of delayed sLFO to the delayed sLFO",
|
|
834
|
-
),
|
|
835
|
-
(
|
|
836
|
-
medfiltglmderivratios,
|
|
837
|
-
"medfiltglmderivratios",
|
|
838
|
-
"map",
|
|
839
|
-
None,
|
|
840
|
-
"Median filtered version of the glmderivratios map",
|
|
841
|
-
),
|
|
842
|
-
(
|
|
843
|
-
filteredglmderivratios,
|
|
844
|
-
"filteredglmderivratios",
|
|
845
|
-
"map",
|
|
846
|
-
None,
|
|
847
|
-
"glmderivratios, with outliers patched using median filtered data",
|
|
848
|
-
),
|
|
849
934
|
(
|
|
850
935
|
delayoffset,
|
|
851
936
|
"delayoffset",
|
rapidtide/workflows/tidepool.py
CHANGED
|
@@ -87,7 +87,7 @@ def _get_parser():
|
|
|
87
87
|
"--dataset",
|
|
88
88
|
nargs="*",
|
|
89
89
|
help=(
|
|
90
|
-
"
|
|
90
|
+
"Specify one or more dataset root names (skip initial selection step). The root name is the entire path "
|
|
91
91
|
"to the rapidtide output data (including the underscore) that precedes 'desc-maxtime_map.nii.gz'"
|
|
92
92
|
),
|
|
93
93
|
dest="datafileroot",
|
|
@@ -106,8 +106,12 @@ def _get_parser():
|
|
|
106
106
|
"--uistyle",
|
|
107
107
|
action="store",
|
|
108
108
|
type=str,
|
|
109
|
-
choices=["normal", "
|
|
110
|
-
help=
|
|
109
|
+
choices=["normal", "big"],
|
|
110
|
+
help=(
|
|
111
|
+
"Set the window layout style. The 'normal' uistyle loads 8 data maps into display panes, "
|
|
112
|
+
"and fits comfortably on the screen of a 14in MacbookPro screen. The 'big' uistyle has 16 display "
|
|
113
|
+
"panes, and fits on a 16in MBP screen. Default is 'normal'."
|
|
114
|
+
),
|
|
111
115
|
default="normal",
|
|
112
116
|
)
|
|
113
117
|
parser.add_argument(
|
|
@@ -120,7 +124,7 @@ def _get_parser():
|
|
|
120
124
|
)
|
|
121
125
|
parser.add_argument(
|
|
122
126
|
"--ignoredimmatch",
|
|
123
|
-
help="Do not check to see if dataset sizes match",
|
|
127
|
+
help="Do not check to see if dataset sizes match. This is almost certainly a terrible idea.",
|
|
124
128
|
dest="ignoredimmatch",
|
|
125
129
|
action="store_true",
|
|
126
130
|
default=False,
|
|
@@ -1114,6 +1118,7 @@ def setMask(maskname):
|
|
|
1114
1118
|
}
|
|
1115
1119
|
print(maskinfodicts[maskname]["msg"])
|
|
1116
1120
|
ui.setMask_Button.setText(maskinfodicts[maskname]["label"])
|
|
1121
|
+
currentdataset.setFuncMaskName(maskname)
|
|
1117
1122
|
for themap in currentdataset.loadedfuncmaps:
|
|
1118
1123
|
if maskname == "nomask":
|
|
1119
1124
|
overlays[themap].setFuncMask(None)
|
|
@@ -1149,16 +1154,19 @@ def overlay_radioButton_clicked(which, enabled):
|
|
|
1149
1154
|
thedispmin = overlays[currentdataset.focusmap].dispmin
|
|
1150
1155
|
thedispmax = overlays[currentdataset.focusmap].dispmax
|
|
1151
1156
|
if verbosity > 1:
|
|
1152
|
-
print("currentdataset.focusmap set to
|
|
1153
|
-
|
|
1157
|
+
print(f"currentdataset.focusmap set to {currentdataset.focusmap}")
|
|
1158
|
+
print(
|
|
1159
|
+
f"overlays[currentdataset.focusmap].LUTname set to {overlays[currentdataset.focusmap].LUTname}"
|
|
1160
|
+
)
|
|
1161
|
+
if overlays[currentdataset.focusmap].LUTname == "gray":
|
|
1154
1162
|
ui.gray_radioButton.setChecked(True)
|
|
1155
|
-
elif overlays[currentdataset.focusmap].
|
|
1163
|
+
elif overlays[currentdataset.focusmap].LUTname == "thermal":
|
|
1156
1164
|
ui.thermal_radioButton.setChecked(True)
|
|
1157
|
-
elif overlays[currentdataset.focusmap].
|
|
1165
|
+
elif overlays[currentdataset.focusmap].LUTname == "plasma":
|
|
1158
1166
|
ui.plasma_radioButton.setChecked(True)
|
|
1159
|
-
elif overlays[currentdataset.focusmap].
|
|
1167
|
+
elif overlays[currentdataset.focusmap].LUTname == "viridis":
|
|
1160
1168
|
ui.viridis_radioButton.setChecked(True)
|
|
1161
|
-
elif overlays[currentdataset.focusmap].
|
|
1169
|
+
elif overlays[currentdataset.focusmap].LUTname == "turbo":
|
|
1162
1170
|
ui.turbo_radioButton.setChecked(True)
|
|
1163
1171
|
else:
|
|
1164
1172
|
ui.rainbow_radioButton.setChecked(True)
|
|
@@ -1563,9 +1571,10 @@ def activateDataset(currentdataset, ui, win, defaultdict, overlayGraphicsViews,
|
|
|
1563
1571
|
overlays["atlas"].setGeomMask(thegeommask)
|
|
1564
1572
|
overlays["atlas"].setFuncMask(overlays["atlasmask"].data)
|
|
1565
1573
|
|
|
1566
|
-
if
|
|
1567
|
-
|
|
1568
|
-
overlays
|
|
1574
|
+
if not panesinitialized:
|
|
1575
|
+
if verbosity > 0:
|
|
1576
|
+
for theoverlay in overlays:
|
|
1577
|
+
overlays[theoverlay].summarize()
|
|
1569
1578
|
|
|
1570
1579
|
if verbosity > 1:
|
|
1571
1580
|
print("focusmap is:", currentdataset.focusmap, "bgmap is:", bgmap)
|
|
@@ -1668,6 +1677,11 @@ def activateDataset(currentdataset, ui, win, defaultdict, overlayGraphicsViews,
|
|
|
1668
1677
|
updateRegressor()
|
|
1669
1678
|
updateRegressorSpectrum()
|
|
1670
1679
|
|
|
1680
|
+
# update the mask menu
|
|
1681
|
+
if currentdataset.funcmaskname is not None:
|
|
1682
|
+
print(f"updating the mask menu to {currentdataset.funcmaskname}")
|
|
1683
|
+
setMask(currentdataset.funcmaskname)
|
|
1684
|
+
|
|
1671
1685
|
|
|
1672
1686
|
def loadpane(
|
|
1673
1687
|
themap,
|
|
@@ -1968,13 +1982,13 @@ def tidepool(args):
|
|
|
1968
1982
|
"funcmask": "p_lt_0p050_mask",
|
|
1969
1983
|
},
|
|
1970
1984
|
"lagsigma": {
|
|
1971
|
-
"colormap":
|
|
1985
|
+
"colormap": gen_plasma_state(),
|
|
1972
1986
|
"label": "Similarity width",
|
|
1973
1987
|
"display": True,
|
|
1974
1988
|
"funcmask": "p_lt_0p050_mask",
|
|
1975
1989
|
},
|
|
1976
1990
|
"MTT": {
|
|
1977
|
-
"colormap":
|
|
1991
|
+
"colormap": gen_plasma_state(),
|
|
1978
1992
|
"label": "MTT",
|
|
1979
1993
|
"display": extramaps,
|
|
1980
1994
|
"funcmask": "p_lt_0p050_mask",
|
|
@@ -2457,4 +2471,9 @@ def tidepool(args):
|
|
|
2457
2471
|
updateRegressorSpectrum()
|
|
2458
2472
|
uiinitialized = True
|
|
2459
2473
|
|
|
2474
|
+
# for profiling
|
|
2475
|
+
"""for i in range(20):
|
|
2476
|
+
selectDataset((i + 1) % 2)
|
|
2477
|
+
sys.exit(0)"""
|
|
2478
|
+
|
|
2460
2479
|
QtWidgets.QApplication.instance().exec()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: rapidtide
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.0a12
|
|
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>
|