PsyScript — Introduction to do_trial


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:
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

Leave a Comment