Introduction to the do trial command
The key thing in psychological experiments is control over stimuli and responses.
After reading this section you understand how PsyScript controls the events
of a trial and you will be ready to learn how to generate the event sequence
you need for your experiments.
In Psyscript you execute a trial by calling do
trial followed by a simple string of text symbols describing the events
you want in the trial.
Each event has its own symbol: for instance the symbol to wait for some time
is “#” followed by the number of milliseconds you want to wait for.
So to do a trial that consisted of waiting for 100 msecs, you would say
do trial ” #100 “
A trial is simply a list of events like this. For instance, to start the reaction
time clock, you write “!t”.
To erase the screen, you type “!e”.
There is much more that you can do, but already you know enough to impress yourself.
Copy (or type) this into Script Debugger or Script Editor (If you don’t know
where your script editor is, find it using Sherlock.)
tellapplication
“PsyScript”
activate
reset all
begin experiment
do trial
” + #500 ‘Hello world – I just did this myself’
!t “
end experiment
endtell
nb: When you hit compile, you may be asked to find Psyscript
if it is not already running
You can run this script to see how it works. You will see a fixation cross
for half a second, followed bythe hello world phrase in the centre of the screen.
This will remain until you press any key to complete the trial.
I snuck a couple of new things in there. The “+”
sign is the code for a fixation point – pretty easy. By putting the phrase “Hello
world – I just did this myself” inside single quotes, I forced it
to be treated as one word and displayed as such.
What if you want to show that phrase some particular place? Easy. Change the
do trial line in your script to read like this:
do trial
” + #500 ‘Hello world – I am in the top left'(250
300) !t ” –it
will be shown centred 250 pixels in from the left and 300 down from the top
of the screen
What if you want to show those words one at a time? Easy.
do
trial ” + #500
I #500 just #500 did #500 this #500 ‘press any key’ !t “
Can you guess what will happen? each word will display for half a second. Type
it into your script and run it to see what happens.
See the problem? The screen is not being erased between words. In PsyScript,
you describe explicitly every event you want to occur, including erasing the
screen, and starting the reaction timer.
We can easily erase the screen after each word:
do
trial ” + #500
I #500 !e just #500 !e did #500 !e this #500 !e ‘press any key’ !t “
Let’s start using AppleScript better.
A key insight to PsyScript is the idea of storing information in variables.
Read this script, maybe think what it might do, then run it from the script
editor:
tellapplication
“PsyScript”
activate
begin experiment
setmyTrialto ”
Hello #500 !e Good-bye !t “
do trialmyTrial
end experiment
endtell
You can see that we have learned: We can set a variable to hold our trial string
so we don’t have to type it over and over and so it is quickly changed. You
have just made a “trial template”
The advanced power of do trial with variables
Nearly always all the trials of an experiment are similar to each other, but
sucessive trials vary in their specific contents. In PsyScript, this is done
by coding for the variable trial elements using a “?” symbol and then
passing the value for the variable into the do trial event on each trial.
Let’s take the example of a trial which shows a word for 500 msecs and then
masks it and waits for a response. This is described in the following template:
setmyTrialto ”
!e ?theWord #500 !e ‘####’ !t “
What we need now is for “?theword”
to be replaced by a real stimulus word on each trial.
Now you can call the trial template, and pass in the stimulus word using the
given parameter
do trial myTrial
given {theword:”dog”}
do trial myTrial
given {theword:”cat”}
PsyScript will replace “?theword”
with “dog” on the first trial, and then cat” on the next trial.
Try it out:
tellapplication
“PsyScript”
activate
begin experiment
setmyTrialto ”
!e ?theWord #500 !e ‘####’ !t “
do trialmyTrial
end experiment
endtell
nb: see how “dog” is nested inside a squiggly brackets?
the given parameter of do
trial expects a LIST
Here’s another example:
Of course, in most experiments, you have a list of trials: and list processing
is what PsyScript excels at.
tellapplication
“PsyScript”
activate
begin experiment
setmyTrialto ”
!e + #1000 !e !v ?theWord #500 !e ‘####’ !t
“
settrialListto {{”
dog “}, {”
cat “}}
repeatwithmyWordintrialList
do
trialmyTrialgiven{theWord:myWord}
endrepeat
end experiment
endtell
This script will iterate through trialList
showing each stimulus in succession
Well, you can do a lot of great stuff now. Plus, there is lots more you can
do with trial syntax. From here, you can go to the trials
reference section of the manual or check out some advanced
examples here.
| MACCS | Documentation | Downloads | FAQ | Mailing List | Last change: echo date( "F d Y.", getlastmod() ); ?> |
| Advanced Search |
| Applescript in a Nutshell : A Desktop Quick Reference | AppleScript for Applications: Visual QuickStart Guide | AppleScript For Dummies | Applescript for the Internet Visual Quickstart Guide | Applescript Language Guide; English Dialect | Danny Goodman’s Applescript Handbook |