A few things not working properly. And flicker.


Author
Message
Blackadder
Blackadder
Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)
Group: Forum Members
Posts: 280, Visits: 147

Hi All,


consider the attached script. There are a few things not functional here.



(1) Fixation cross flickers between trials TRIAL_refset and TRIAL_probe.


There is not a single "erase=true" statement in the entire script. However, the fixation cross (or text in this demo script) flickers at the switch between TRIAL_refset and TRIAL_probe. Since we are doing an EEG experiment, the flicker yields EEG activity which we'd rather avoid.



(2) A second port stimulus in trial TRIAL_refset has no effect.


Issue (1) could be circumvented by integrating TRIAL_refset and TRIAL_probe into one trial. The latter should look like


<trial TRIAL_refset>
/ iscorrectresponse = [((values.iIdent==0) && (trial.TRIAL_probe.response==203))||((values.iIdent==1) && (trial.TRIAL_probe.response==205))]
/ responseinterrupt = trial
/ responsetime = 2250
/ responsetrial = (anyresponse, TRIAL_response)
/ responsetrial = (noresponse, TRIAL_response)
/ stimulustimes = [0 = SHAPE_blank,PIC_fix,TEXT_debugstring;
1500=PORT_refset,PIC_ref_p01,PIC_ref_p02,PIC_fix; 3000=SHAPE_blank,PIC_fix; 4500=PORT_probe,SHAPE_blank,PIC_ref_p03; 5250=SHAPE_blank]
/ timeout = 8250
/ validresponse = (203,205,noresponse)
</trial>


Unfortunately, PORT_probe is not set in this case.



(3) Inquisit allows only for some none-consecutive numbers in an <item>.


The port triggers need to be computed at runtime since they encode some important trial properties. Since I wasn't aware of a way to send integer values to a port, I decided to realize a translation table "integer -> binary" via an item. The various integer codes used throughout the script are not consecutive, hence I originally planned to define the <item> like this:


<item ITEM_portsignals>
/  1 = "00000001"
/  2 = "00000010"
/  3 = "00000011"
/ 11 = "00001011"
/ 12 = "00001100"
/ 13 = "00001101"
/ 14 = "00001110"
/ 15 = "00001111"
/ 16 = "00010000"
/ 21 = "00010101"
/ 22 = "00010110"
/ 23 = "00010111"
/ 24 = "00011000"
/ 25 = "00011001"
/ 26 = "00011010"
/ 31 = "01101111"
/ 32 = "01110000"
/ 33 = "01110001"
/ 34 = "01110010"
/ 35 = "01110011"
/ 36 = "01110100"
/ 41 = "01111001"
/ 42 = "01111010"
/ 43 = "01111011"
/ 44 = "01111100"
/ 45 = "01111101"
/ 46 = "01111110"
</item>


Inquisit does not issue an error when I do so. During runtime, while the following expressions work:


getitem(ITEM_portsignals,1)
getitem(ITEM_portsignals,11)
getitem(
ITEM_portsignals,26)


these do not but issue a script error:


getitem(ITEM_portsignals,31)
getitem(ITEM_portsignals,46)



Any clues on any of these?


Bye, Malte.


Attachments
FaceWatch_WorkMem_EEG_test.exp (916 views, 18.00 KB)
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 97K

(1) Fixation cross flickers between trials TRIAL_refset and TRIAL_probe.


There is not a single "erase=true" statement in the entire script. However, the fixation cross (or text in this demo script) flickers at the switch between TRIAL_refset and TRIAL_probe. Since we are doing an EEG experiment, the flicker yields EEG activity which we'd rather avoid.


There is no TRIAL_refset in the script you attached. Also, I'm not seeing any flickers.


(2) A second port stimulus in trial TRIAL_refset has no effect.


Issue (1) could be circumvented by integrating TRIAL_refset and TRIAL_probe into one trial. The latter should look like


<trial TRIAL_refset>
/ iscorrectresponse = [((values.iIdent==0) && (trial.TRIAL_probe.response==203))||((values.iIdent==1) && (trial.TRIAL_probe.response==205))]
/ responseinterrupt = trial
/ responsetime = 2250
/ responsetrial = (anyresponse, TRIAL_response)
/ responsetrial = (noresponse, TRIAL_response)
/ stimulustimes = [0 = SHAPE_blank,PIC_fix,TEXT_debugstring;
1500=PORT_refset,PIC_ref_p01,PIC_ref_p02,PIC_fix; 3000=SHAPE_blank,PIC_fix; 4500=PORT_probe,SHAPE_blank,PIC_ref_p03; 5250=SHAPE_blank]
/ timeout = 8250
/ validresponse = (203,205,noresponse)
</trial>


Unfortunately, PORT_probe is not set in this case.


See response to (1). Offhand though, I'd say introducing a proper <port erase> before sending the second trigger could help.


(3) Inquisit allows only for some none-consecutive numbers in an <item>.


The port triggers need to be computed at runtime since they encode some important trial properties. Since I wasn't aware of a way to send integer values to a port, I decided to realize a translation table "integer -> binary" via an item. The various integer codes used throughout the script are not consecutive, hence I originally planned to define the <item> like this:


<item ITEM_portsignals>
/  1 = "00000001"
/  2 = "00000010"
/  3 = "00000011"
/ 11 = "00001011"
/ 12 = "00001100"
/ 13 = "00001101"
/ 14 = "00001110"
/ 15 = "00001111"
/ 16 = "00010000"
/ 21 = "00010101"
/ 22 = "00010110"
/ 23 = "00010111"
/ 24 = "00011000"
/ 25 = "00011001"
/ 26 = "00011010"
/ 31 = "01101111"
/ 32 = "01110000"
/ 33 = "01110001"
/ 34 = "01110010"
/ 35 = "01110011"
/ 36 = "01110100"
/ 41 = "01111001"
/ 42 = "01111010"
/ 43 = "01111011"
/ 44 = "01111100"
/ 45 = "01111101"
/ 46 = "01111110"
</item>


Inquisit does not issue an error when I do so. During runtime, while the following expressions work:


getitem(ITEM_portsignals,1)
getitem(ITEM_portsignals,11)
getitem(
ITEM_portsignals,26)


these do not but issue a script error:


getitem(ITEM_portsignals,31)
getitem(ITEM_portsignals,46)


AFAIK, the  '/ 1', etc. in your <item> element doesn't actually mean anything to Inquisit's parser -- it will simply construct sequential item indexes based on the total number of item entries contained in the <item> element. This means 'getitem(ITEM_portsignals,4)' will return your '/ 11',  while 'getitem(ITEM_portsignals,11)' will return your '/ 22'. The latter expressions fail because they're out of index (i.e. there is no item no. 46). Workaround: Fill in the blank spots with empty entries.


Cheers,


~Dave



Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 97K

P.S.: BTW, you do realize that '/ erase = true' is actually the default setting, don't you? I.e. you have to *explicitly* declare '/ erase = false' for all your stims.


~Dave


Blackadder
Blackadder
Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)
Group: Forum Members
Posts: 280, Visits: 147

Script has been fixed, trial TRIAL_refset was erroneously named TRIAL_main.


Blackadder
Blackadder
Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)
Group: Forum Members
Posts: 280, Visits: 147

Dave, you've once again been helpful. Amending all stimuli (except the <port> stimuli, of course) with /erase=false did the trick - no more flickering.


I am not quite sure, however, what you mean by sending a proper <port erase> command.



And for the item issue: filling the item with dummy entries was what I eventually came up with. Thank god lpt is only 8 bits.



Bye, Malte.


Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 97K

Dave, you've once again been helpful


I live to serve...;-)


I am not quite sure, however, what you mean by sending a proper <port erase> command.


For the case of 'PORT_Probe' not being sent out, I'd try introducing yet another port signal in between 'PORT_refset' and 'PORT_probe' which would set all bits to low again


<port PORT_erase>
/ items = ("00000000")
[...]
</port>


yielding something like


<trial
TRIAL_refset>
/ iscorrectresponse = [((values.iIdent==0)
&& (trial.TRIAL_probe.response==203))||((values.iIdent==1)
&& (trial.TRIAL_probe.response==205))]
/ responseinterrupt =
trial
/ responsetime = 2250
/ responsetrial = (anyresponse,
TRIAL_response)
/ responsetrial = (noresponse, TRIAL_response)
/
stimulustimes = [0 = SHAPE_blank,PIC_fix,TEXT_debugstring;
1500=PORT_refset,PIC_ref_p01,PIC_ref_p02,PIC_fix;
3000=SHAPE_blank,PIC_fix,PORT_erase; 4500=PORT_probe,SHAPE_blank,PIC_ref_p03;
5250=SHAPE_blank]
/ timeout = 8250
/ validresponse =
(203,205,noresponse)
</trial>


Make sense?


~Dave


Blackadder
Blackadder
Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)
Group: Forum Members
Posts: 280, Visits: 147

Perfectly, I'll try that and let you know. But since this is coming from you, I have good faith [I]


Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 97K

But since this is coming from you, I have good faith


BAD mistake. Everyone knows I can't be trusted. But seriously, I'm not sure my suggestion will do the trick. Troubleshooting port issues is a major pain, IMO.


~Dave


Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 97K

Any progress / new insights regarding the port issue?


~Dave


Blackadder
Blackadder
Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)Supreme Being (25K reputation)
Group: Forum Members
Posts: 280, Visits: 147

Hi Dave,


not yet. I got no access to the gadget that's recording the lpt signals and the colleague who has will not be in before Monday, I'll report as soon as I know something. Let's hope the best, I'm off to Serbia until Tuesday.


Bye, Malte.


GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search