AFNI Message Board

Dear AFNI users-

We are very pleased to announce that the new AFNI Message Board framework is up! Please join us at:

https://discuss.afni.nimh.nih.gov

Existing user accounts have been migrated, so returning users can login by requesting a password reset. New users can create accounts, as well, through a standard account creation process. Please note that these setup emails might initially go to spam folders (esp. for NIH users!), so please check those locations in the beginning.

The current Message Board discussion threads have been migrated to the new framework. The current Message Board will remain visible, but read-only, for a little while.

Sincerely, AFNI HQ

History of AFNI updates  

|
October 25, 2017 05:03PM
Hi Rick,

I get a weird error when I try to run your make_stim_times.txt program (see below) that has all the variables and scripting and the make_random_timing.py call.

The error says: set Variable name must begin with a letter.

In your code all the set commands are following by variable names that begin with a letter so I am thinking that something else must be going on.

Can you offer any guidance?


Christine

#!/bin/tcsh

# try to find reasonable random event related timing given the experimental
# parameters

# ---------------------------------------------------------------------------
# some experiment parameters (most can be inserted directly into the
# make_random_timing.py command)

set num_stim = 9
set num_runs = 5
set pre_rest = 12 # min rest before first stim (for magnet steady state)
set post_rest = 9 # min rest after last stim (for trailing BOLD response)
set min_rest = 0 # minimum rest after each stimulus
set tr = 0.75 # used in 3dDeconvolve, if not make_random_timing.py
set stim_durs = 15.5 15.5 15.5 15.5 15.5 15.5 15.5 15.5 3
set stim_reps = 4 4 4 4 4 4 4 4 50
set run_lengths = 890
set labels = "label1 label2 label3 label4 label5 label6 label7 label8 baseline"

# ---------------------------------------------------------------------------
# execution parameters
set iterations = 100 # number of iterations to compare
set seed = 1234567 # initial random seed
set outdir = stim_results # directory that all results are under
set LCfile = NSD_sums # file to store norm. std. dev. sums in

# set pattern = LC # search pattern for LC[0], say
set pattern = 'norm. std.' # search pattern for normalized stdev vals


# ===========================================================================
# start the work
# ===========================================================================

# ------------------------------------------------------------
# recreate $outdir each time

if ( -d $outdir ) then
echo "** removing output directory, $outdir ..."
\rm -fr $outdir
endif

echo "++ creating output directory, $outdir ..."
mkdir $outdir
if ( $status ) then
echo "failure, cannot create output directory, $outdir"
exit
endif

# move into the output directory and begin work
cd $outdir

# create empty LC file
echo -n "" > $LCfile

echo -n "iteration (of $iterations): 0000"

# ------------------------------------------------------------
# run the test many times

foreach iter (`count -digits 4 1 $iterations`)

# make some other random seed

@ seed = $seed + 1


# create randomly ordered stimulus timing files
# (consider: -tr_locked -save_3dd_cmd tempfile)

make_random_timing.py -num_stim $num_stim -stim_dur $stim_durs \
-num_runs $num_runs -run_time $run_lengths \
-num_reps $stim_reps -prefix stimes.$iter \
-pre_stim_rest $pre_rest -post_stim_rest $post_rest \
-min_rest $min_rest \
-stim_labels $labels \
-seed $seed \
-tr $tr \
-show_timing_stats \
-save_3dd_cmd cmd.3dd.$iter \
>& out.mrt.$iter

# consider: sed 's/GAM/"TENT(0,15,7)"/' tempfile > cmd.3dd.$iter
# rm -f tempfile

# now evaluate the stimulus timings

tcsh cmd.3dd.$iter >& out.3dD.$iter

# save the sum of the 3 LC values
set nums = ( `awk -F= '/'"$pattern"'/ {print $2}' out.3dD.${iter}` )

# make a quick ccalc command
set sstr = $nums[1]
foreach num ( $nums[2-] )
set sstr = "$sstr + $num"
end
set num_sum = `ccalc -expr "$sstr"`

echo -n "$num_sum = $sstr : " >> $LCfile
echo "iteration $iter, seed $seed" >> $LCfile

echo -n "\b\b\b\b$iter"
end

echo ""
echo "done, results are in '$outdir', LC sums are in '$LCfile'"
echo consider the command: "sort -n $outdir/$LCfile | head -1"

# note that if iter 042 seems to be the best, consider these commands:
#
# cd stim_results
# set iter = 042
# timing_tool.py -multi_timing stimes.${iter}_0* \
# -run_len $run_lengths -multi_stim_dur $stim_durs \
# -multi_show_isi_stats
# tcsh cmd.3dd.$iter
# 1dplot X.xmat.1D'[6..$]'
# 1dplot sum_ideal.1D
#
# - timing_tool.py will give useful statistics regarding ISI durations
# (should be similar to what is seen in output file out.mrt.042)
# - run cmd.3dd.$iter to regenerate that X martix (to create actual regressors)
# - the first 1dplot command will show the actual regressors
# (note that 6 = 2*$num_runs)
# - the second will plot the sum of the regressor (an integrity check)
# (note that sum_ideal.1D is produced by cmd.3dd.$iter, along with X.xmat.1D)
Subject Author Posted

'active' baseline task and make_random_timing.py

Christine Smith October 16, 2017 07:21PM

Re: 'active' baseline task and make_random_timing.py

rick reynolds October 18, 2017 09:28AM

Re: 'active' baseline task and make_random_timing.py

Christine Smith October 18, 2017 05:30PM

Re: 'active' baseline task and make_random_timing.py

Christine Smith October 25, 2017 05:03PM

Re: 'active' baseline task and make_random_timing.py

rick reynolds October 25, 2017 06:29PM

Re: 'active' baseline task and make_random_timing.py

Christine Smith October 26, 2017 03:15PM

Re: 'active' baseline task and make_random_timing.py

rick reynolds November 03, 2017 11:41AM

Re: 'active' baseline task and make_random_timing.py

Christine Smith November 06, 2017 09:27PM

Re: 'active' baseline task and make_random_timing.py

rick reynolds November 09, 2017 10:43AM

Re: 'active' baseline task and make_random_timing.py

Christine Smith November 20, 2017 08:24PM

Re: 'active' baseline task and make_random_timing.py

rick reynolds November 21, 2017 11:25AM

Re: 'active' baseline task and make_random_timing.py

rick reynolds November 22, 2017 08:29AM

Re: 'active' baseline task and make_random_timing.py

Christine Smith November 29, 2017 03:19PM

Re: 'active' baseline task and make_random_timing.py

rick reynolds November 29, 2017 03:46PM