ppi scripting questions

hello hello.

these aren’t afni questions per se, but the answers will allow afni to run without exiting because one run’s timing file is too short. i’ve pasted the commands from the demo first, and the output i’m getting below them.

The problem i’m having is that for cmd2 in the data6 ppi scripts, i run into a problem with unequal run lengths. the error (see below) is that a time series file is too short when afni tries to run 1deval after recenvolving (1deval -a p3.ROI_neuro.r2.1D -b p1.ROI.01.R.TH_r02.1D -expr a*b).

the questions are:

  1. do the commands below from cmd2 in the data6 ppi demo to partition the seed into runs need to be adapted to allow for unequal run lengths (143 46 143)? it seems to read the correct number of time points for each run, but in the output below, run two begin at time point 46 and not 189.

  2. do i need to generate 2 separate HRF files, one for each run length (143, 46)? i ran 3dDeocnvolve using -concat, but that output didn’t look right.

thanks for your help!
jill

break into n runs

@ runstart = -$NT[1]
	@ runend   = - 1
foreach runind ( `count -digits 1 1 $#NT` )
    @ runstart += $NT[$runind]
    @ runend += $NT[$runind]
1dcat $seed"{$runstart..$runend}" | 1dUpsample $TRnup stdin: \
     > $prefix.seed.$TRnup.r$runind.1D
end

set seed_up = $prefix.seed.$TRnup.rall.1D
cat $prefix.seed.$TRnup.r[0-3]*.1D > $seed_up

foreach rind ( count -digits 1 1 $#NT )
set neuro_seed = $neuro_prefix.neuro.r$rind.1D
set rind2 = ccalc -form '%02d' $rind
@ nt = $NT[$rind] * $TRnup
set stim_part = $timing_prefix.${slab}_r$rind2.1D
set neuro_part = $prefix.a.$slab.r$rind.neuro_part.1D
set recon_part = $prefix.b.$slab.r$rind.reBOLD.1D
1deval -a $neuro_seed -b $stim_part -expr ‘a*b’ > $neuro_part
waver -FILE $TRup $hrf_file -input $neuro_part -numout $nt > $recon_part
end


3dDeconvolve -nodata 332 0.1 -polort -1 -concat ‘1D: 0 143 189’ -num_stimts 1 -stim_times 1 1D:0 “BLOCK(0.1,1)” -x1D x.BLOCK.1D -x1D_stop


Output 1 :

@ runstart = -143
@ runend = - 1
foreach runind ( count -digits 1 1 $#NT )
count -digits 1 1 3
@ runstart += 143
@ runend += 143
1dcat ppi.ROI.seed.1D{0…142}
1dUpsample 20 stdin:
end
@ runstart += 46
@ runend += 46
1dcat ppi.ROI.seed.1D{46…188}

WHY DOES RUN TWO START AT 46 AND NOT AT 143?

1dUpsample 20 stdin:
end
@ runstart += 143
@ runend += 143
1dcat ppi.ROI.seed.1D{189…331}
1dUpsample 20 stdin:
end


Output 2: later on i get:

== RECONVOLVING PPI REGRESSOR FOR SUBJECT ABN006
waver -FILE 0.1 x.BLOCK.1D -input p4.R_Amy.a.01.R.TH.r1.neuro_part.1D -numout 2860
end
set neuro_seed = p3.ROI.neuro.r2.1D
set runind2 = ccalc -form '%02d' $runind
ccalc -form %02d 2
@ nt = 46 * 20
set stim_part = p1.ROI.01.R.TH_r02.1D
set neuro_part = p4.ROI.a.01.R.TH.r2.neuro_part.1D
set recon_part = p4.ROI.b.01.R.TH.r2.reBOLD.1D
1deval -a p3.ROI.neuro.r2.1D -b p1.R_Amy.01.R.TH_r02.1D -expr a*b
** Time series file p1.ROI.01.R.TH_r02.1D is too short!

Hi Jill,

  1. They were certainly intended to handle different
    run lengths, but there is indeed a mistake there.

Try replacing “@ runstart += $NT[$runind]” with
“@ runstart = $runend + 1”. That seems correct.
I will make this change in the demo script.

  1. If you are talking about when 3dDeconvolve is
    run to create x.BLOCK.1D, that step should only be
    modified if you change the upsampled TR ($TRup),
    as it simply creates an impulse response function.
    It looks like you should leave that as is.

Thanks,

  • rick

perfect - thanks rick!