psychtoolbox: an introduction · 2015-12-24 · 3 introduction to psychtoolbox • psychtoolbox is...

25
1 Psychtoolbox: An introduction Sheraz Khan, PhD TRANSCEND Research, TAL Kenet Group Fellow, MGH

Upload: others

Post on 19-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

1

Psychtoolbox: An introduction

Sheraz Khan, PhD

TRANSCEND Research, TAL Kenet Group

Fellow, MGH

Page 2: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

2

OUTLINE

• Introduction to Psychtoolbox.

• Psychtoolbox by Simple Examples

• Psychtoolbox in practice at Martinos center.

Page 3: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

3

Introduction to Psychtoolbox

• PsychToolbox is a collection of matlab functions written to make

presenting visual stimuli easier. Remember to cite the Toolbox.

"We wrote our experiments in MATLAB, using the Psychophysics

Toolbox extensions (Brainard, 1997; Pelli, 1997)."

• Psychtoolbox is widely used in visual psychophysics and there is

a lot of documentation and knowledge around.

http://psychtoolbox.org

• MAC and Windows version available, MAC version has better

control over hardware.

Page 4: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

4

Introduction to PsychToolbox

• Installation

>> cd ~/Desktop

>> DownloadPsychtoolbox('current')

• To get help

>>Screen OpenWindow?

>>Screen DrawText?

• If screen freezes

ctrl-c % will stop execution

clear Screen % garbage collector of Screen

Cmd + option +escape % Ultimate

Page 5: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

5

Why use PsychToolbox ?

• PsychToolbox is very strict about timing, so if accurate timing is

important in your experiment PsychToolbox is good for that.

• Because PsychToolbox using graphics acceleration you can use

very fast drawing without any pixelation and other image

processing artefacts

• Lots of people in the world use it so it's easy to get help, and

more importantly its FREE.

Page 6: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

6

Programming simple Stimuli

% Testing PsychToolbox

>> ScreenTest

***** ScreenTest: Testing Screen 0 *****

PTB-INFO: This is the OpenGL-Psychtoolbox version 3.0.8. Type

'PsychtoolboxVersion' for more detailed version information.

PTB-INFO: Psychtoolbox is licensed to you under terms of the GNU

General Public License (GPL). See file 'License.txt' in the

PTB-INFO: Psychtoolbox root folder for a copy of the GPL license.

PTB-INFO: OpenGL-Renderer is NVIDIA Corporation :: GeForce Go

7400/PCI/SSE2 :: 2.0.1

PTB-Info: VBL startline = 768 , VBL Endline = -1

TB-Info: Measured monitor refresh interval from VBLsync =

16.712593 ms [59.835118 Hz]. (50 valid samples taken,

stddev=0.044112 ms.)

PTB-Info: Reported monitor refresh interval from operating system

= 16.666667 ms [60.000000 Hz].

PTB-Info: Small deviations between reported values are normal and

no reason to worry.

PTB-INFO: Using NVidia's GL_TEXTURE_RECTANGLE_NV extension for

efficient high-performance texture mapping...

***** ScreenTest: Done With Screen 0 *****

Page 7: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

7

Programming simple Stimuli

% Initializing the program

>>screenNum=1; % Screen 0 is Laptop, Screen 1 will be projector

>>flipSpd=13; % a flip every 13 frames

% Opening Window on Screen, we want to used

>>[wPtr,rect]=Screen('OpenWindow',screenNum);

% wPtr pointer to the screen.

% Getting Screen refresh rate

>>monitorFlipInterval=Screen('GetFlipInterval', wPtr);

% 1/ monitorFlipInterval is the frame rate of the projector

Page 8: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

8

Programming Simple Stimuli

% Finding Black and white

>>black=BlackIndex(wPtr);

>>white=WhiteIndex(wPtr);

% Filling the screen with Black and wait

>>Screen('FillRect',wPtr,black);

>>Screen(wPtr, 'Flip');

>>WaitSecs(2);

Page 9: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

9

Programming Simple Stimuli

% make a rectangle in the middle of the screen flip colors and size

% Fill the screen with Black

>>Screen('FillRect',wPtr,black);

>>vbl=Screen(wPtr, 'Flip'); % collect the time for the first flip with vbl

% Make a rectangle in the middle of the screen flip colors and size

for i=1:10

Screen('FillRect',wPtr,[0 0 255], [100 150 200 250]);

vbl=Screen(wPtr, 'Flip', vbl+(flipSpd*monitorFlipInterval));

% flip 13 frames after vbl

Screen('FillRect',wPtr,[255 0 0], [100 150 400 450]);

vbl=Screen(wPtr, 'Flip', vbl+(flipSpd*monitorFlipInterval));

End

% Color; Left, Right, Top, Bottom

Page 10: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

10

Programming Simple Stimuli

% Fill the screen with Black

>>Screen('FillRect',wPtr,black);

>>vbl=Screen(wPtr, 'Flip');

% Make circles flip colors & size

for i=1:10

Screen('FillOval',wPtr,[0 180 255], [ 500 500 600 600]);

vbl=Screen(wPtr, 'Flip', vbl+(flipSpd*monitorFlipInterval));

Screen('FillOval',wPtr,[0 255 0], [ 400 400 900 700]);

vbl=Screen(wPtr, 'Flip', vbl+(flipSpd*monitorFlipInterval));

end

% Color; Starting Horizontal, Starting Vertical; Ending Horizontal,

Ending Vertical

Page 11: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

11

Programming Simple Stimuli

% Fill the screen with Black

>>Screen('FillRect',wPtr,black);

>>vbl=Screen(wPtr, 'Flip');

% make lines that flip colors size & position

>>for i=1:10

Screen('DrawLine',wPtr,[0 255 255], 500, 200, 700 ,600, 5);

vbl=Screen(wPtr, 'Flip', vbl+(flipSpd*monitorFlipInterval));

Screen('DrawLine',wPtr,[255 255 0], 100, 600, 600 ,100, 5);

vbl=Screen(wPtr, 'Flip', vbl+(flipSpd*monitorFlipInterval));

>>end

% Color; Starting Horizontal, Starting Vertical; Ending Horizontal,

Ending Vertical

Page 12: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

12

Programming Simple Stimuli

% Fill the screen with Black

>>Screen('FillRect',wPtr,black);

>>vbl=Screen(wPtr, 'Flip');

% Texture is the great way of storing Images

>>image2D=255*rand(100, 100);

>>textureIndex=Screen('MakeTexture', wPtr, image2D);

>>Screen('DrawTexture', wPtr, textureIndex);

>>Screen(wPtr, 'Flip');

>>WaitSecs(2);

Page 13: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

13

Programming Simple Stimuli

% Fill the screen with Black

>>Screen('FillRect',wPtr,black);

>>vbl=Screen(wPtr, 'Flip');

% Initialize the Keyboard input

>>KbName('UnifyKeyNames'); % Unify Max OS X, OS 9

>>[sec keyCode]=KbPressWait; % wait for the key press

>>keyCode=find(keyCode~=0);

% Drawing Test

>>Screen('TextSize', wPtr , 150);% font size

>>Screen('DrawText', wPtr, num2str(keyCode), 200, 20, [255 50 255]);

>>vbl=Screen(wPtr, 'Flip'); % Starting Horizontal vertical position

>>WaitSecs(2);

Page 14: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

14

Programming Simple Stimuli

% Fill the screen with Black

>>Screen('FillRect',wPtr,black);

>>vbl=Screen(wPtr, 'Flip');

% Combining the stimuli

>>for i=1:10

Screen('FillRect',wPtr,[0 0 255], [100 150 200 250]);

Screen('DrawLine',wPtr,[0 255 255], 500, 200, 700 ,600, 5);

Screen('FillOval',wPtr,[0 180 255], [ 500 500 600 600]);

Screen('TextSize', wPtr , 150);

Screen('DrawText', wPtr, 'FUNKY!!', 200, 20, [255 50 255]);

vbl=Screen(wPtr, 'Flip', vbl+(flipSpd*monitorFlipInterval));

>>end

Page 15: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

15

Programming Real Stimuli

Local Connectivity in the visual cortex:

From Polat and Norcia (Polat and Norcia, 1996), who discovered the

paradigm (Polat and Sagi, 1993), and were the first to investigate it using

VEPs. They showed that responses to b and d deviated from the linear sum of

responses to (a+c) and (e+c) respectively, the difference being attributable to

local connectivity.

Page 16: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

16

Programming Real Stimuli

Specifications:

Size of the objects: Size of the Gabors, visual separation between them

L, 55 cm

H, 41 cm

Size of the Screen Distance from the Screen

D, 120 cm

Page 17: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

17

Programming Real Stimuli

• Normally in visual stimuli things are described in visual angle, so

what it is ?

Size is 1 degree, separation is 3 degrees

Width=tand(1)*D, Width in screen percent=(Size/L)*100

Separation=tand(3)*D, Separation in screen percent=(Separation)/H*100

Page 18: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

18

Programming Real Stimuli

% Setting Parameters

>> nTrials = 40;

>>soa = 1.5; % Stimulus-Onset Asynchrony (SOA)

>>displayTime = 0.3; jitter = 0.1;

>>WidthOfGrid=4.88; Separation=20.25;

>>gratingMatrix=Gabors;

% Location of three gabors

>>L1=[50 50]; L2=[50 50-Separation]; L3=[50 50+Separation];

% Configuring triggers

>>di = DaqDeviceIndex;

>>DaqDConfigPort(di,0,0);

>>DaqDOut(di,0,0);

Page 19: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

19

Programming Real Stimuli

% Setting Screen

>>whichScreen = max(Screen('Screens'));

>>rect=Screen(whichScreen,'Rect'); % Gets Screen dimensions

>>HideCursor;

>>window = Screen('OpenWindow', whichScreen);

% Color Setup

% Retrieves color codes for black and white and gray.

>>black = BlackIndex(window);

>>white = WhiteIndex(window);

>>gray = (black + white) / 2; % Computes the color code for gray.

Page 20: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

20

Programming Real Stimuli

% Giving Instruction to Subject

Screen('FillRect',window,gray);

Screen(window,'TextSize',txtSz);

Screen(window,'DrawText','Remember to keep your eyes',rect(3)/4,rect(4)/2-50);

Screen(window,'DrawText','on the + at the center',rect(3)/3.3,rect(4)/2);

Screen('Flip',window);

% Click to proceed

GetClick;

% Putting Cross in the center

Screen('FillRect',window,gray);

Screen(window,'TextFont',centerFont);

Screen(window,'TextSize',centerTxtSz);

Screen(window,'DrawText',centerChar,rect(3)/2,rect(4)/2,centerColour);

Screen('Flip',window);

Page 21: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

21

Programming Real Stimuli

[sourceRect targetRect]=rectGeneration(location,WidthOfGrid,rect)

% Decoding percent to actual screen

WidthOfGrid=round(max(rect)*WidthOfGrid/100);

halfWidthOfTgt=WidthOfGrid/2;

% sourceRect:: image area

sourceRect = [1 1 widthOfGrid widthOfGrid];

% targetRect :: Actual Screen place and size

locationl = round(rect(3)*location(1)/100 - halfWidthOfTgt);

locationt = round(rect(4)*location(2)/100 - halfWidthOfTgt);

locationr = round(rect(3)*location(1)/100 + halfWidthOfTgt);

locationb = round(rect(4)*location(2)/100 + halfWidthOfTgt);

targetRect = [locationl locationt locationr locationb];

Page 22: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

22

Programming Real Stimuli

% Putting Three gabors on the Screen

[sourceRect targetRect]=rectGeneration(L1,WidthOfGrid,rect);

tex = Screen('MakeTexture',window,ceil((gray+gratingMatrix)));

Screen('DrawTextures', window, tex,sourceRect,targetRect);

[sourceRect targetRect]=rectGeneration(L2,WidthOfGrid,rect);

texu = Screen('MakeTexture',window,ceil((gray+gratingMatrix)));

Screen('DrawTextures', window, texu,sourceRect,targetRect,90);

[sourceRect targetRect]=rectGeneration(L3,WidthOfGrid,rect);

texd = Screen('MakeTexture',window,ceil((gray+gratingMatrix)));

Screen('DrawTextures', window, texd,sourceRect,targetRect,90);

Screen('Flip', window);

Page 23: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

23

Programming Real Stimuli

% Sending triggers

DaqDOut(di,0,4); %send trigger

DaqDOut(di,0,0); %clear trig

Page 24: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

24

Conclusion

• All the source code for this talk is available on why n how wiki.

• Best way to learn Pschytoolbox is to use it on the projector.

• Always test the timing of your protocol.

• Photo diode and oscilloscope is available in MEG.

Page 25: Psychtoolbox: An introduction · 2015-12-24 · 3 Introduction to Psychtoolbox • PsychToolbox is a collection of matlab functions written to make presenting visual stimuli easier

25

Thank you.