(Short) Inquisit wishlist


Author
Message
Blackadder
Blackadder
Supreme Being (26K reputation)Supreme Being (26K reputation)Supreme Being (26K reputation)Supreme Being (26K reputation)Supreme Being (26K reputation)Supreme Being (26K reputation)Supreme Being (26K reputation)Supreme Being (26K reputation)Supreme Being (26K reputation)
Group: Forum Members
Posts: 280, Visits: 147
Dear Millisecond team,

in our daily work with Inquisit we encountered a few cumbersome issues that probably could be assessed quite easily and would provide a much smoother operation. These are:

(1) Save name of exp file in output file. We often conduct experiments where subjects need to complete an experiment multiple times, with slightly modified and individual stimulus parameters/timings/instructions. We usually code these changes in the name of the exp-file to be able to quickly identify what has been altered for the said run. Unfortunately, Inquisit won't store the name of the exp file in the output file, which can become nasty if the connection between an output file and the generating exp file cannot be made upon data analysis (which may happen weeks after the experiment finished).

(2) New output file per run. We usually conduct data analysis on a per-subject basis before merging all data together. Since Inquisit will not allow single data files for each experimental run, data sets for individual subjects need to be extracted from the full file manually, which is error-prone and unnecessary. Although there is a workaround by connecting a local drive as a network share, it would be beneficial to have a simple boolean switch "individualfile" to be specified in the data element of the exp file.

(3) Warning/Save option if save path is unavailable. This is connected to the previous point. We always save on network shares to have individual output files per subject and experimental run. Unfortunately, network shares are not always reliable due to connection problems, timeouts or other unforseen forces. Inquisit will not issue an error if a network share is unavailable, worse still, even if the network share is unavailable at the beginning of an experimental run, Inquisit will happily excute the whole experiment, terminate correctly but just not save the data. This happened to us quite a few times, we lost hours of subject generated data only due to such incidents. It would be nice to have Inquisit at least issue a warning prior to the experiment or - even better - open a save dialog at the end of an experimental run in case the target output location is unavailable.

(4) Use ISIs instead of SOAs. We'd be very happy if you'd consider implementing an ISI based timing control scheme. Depending on SOAs means that you always need to change the complete series of timings in a trial, which can sensibly only be accomplished with the help of some spreadsheet program or self-written software. Using ISIs would make things much easier, since the dependency between the timings would allow for changing only selected timings and automatically adjusting all subsequent timings.

(5) Introduce user-defines. Typically, our experiments comprise numerous trials (accounting for presentation order, experimental condition, stimulus pairings, asf.), where settings need to be customized for each subject in order to match subject ability and difficulty level. Having many trials often compels us to change the same value over and over again, which is laborious and not especially fail-safe. Providing "defines" (like in C) or named constants, which require only a simple search-replace operation on the exp file prior to interpretation of the file, would significantly alleviate things.

We'd be very happy if you considered our suggestions valuable and compatible with the existing codebase of Inquisit.

Kind regards,
  Malte Persike

seandr
seandr
Supreme Being (142K reputation)Supreme Being (142K reputation)Supreme Being (142K reputation)Supreme Being (142K reputation)Supreme Being (142K reputation)Supreme Being (142K reputation)Supreme Being (142K reputation)Supreme Being (142K reputation)Supreme Being (142K reputation)
Group: Administrators
Posts: 1.3K, Visits: 5.6K

Malte,


Thanks much for taking the time to write up these suggestions. I agree that all would be quite useful. You'll have the ability to do (1) in our next release. I've added the rest to our todo list.


I'm not sure I understand number (4), but I'll follow up with you to make sure I do.


Regards,
Sean


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

thanks for replying so fast. Agreeably, (4) has been stated somewhat nebulous, so I'll try to rephrase that.

Say, you'd want to have a trial set up like this

0 ms:blank - 40ms:firstpic -140ms:mask - 240ms:blank - 280ms:secondpic - 380ms:mask - 480ms:blank

Currently, one has to specify such a trial this way:

/ stimulustimes = [0=blank; 40=firstpic; 140=mask; 240=blank; 280=secondpic; 380=mask; 480=blank]

which is intuitively clear and a direct translation of the demanded trial course. However, suppose you want to measure psychometric functions dependent on time, meaning you'll need to adjust the timings individually for every subject. Changing, for example, the presentation time of "firstpic" and "secondpic" from 100ms to 150ms thus requires changing all timings after firstpic, like this:

/ stimulustimes = [0=blank; 40=firstpic; 190=mask; 290=blank; 330=secondpic; 480=mask; 580=blank]

Plus, a quick inspection about correctness of the specified timings is not the most pleasent thing to do because you have to go through a lot of mental subtracting.

Instead, I propose the ability to specify ISIs (inter stimulus intervals), like so:

/ stimulustimes = [40*blank; 100*firstpic; 100*mask; 40*blank; 100*secondpic; 100*mask; 40*blank]

The two advantages here are apparent: a) modifications to the time course require only a change of the specific timing parameter in question, not of anything else, and b) even a short glimpse at the code readily informs you about how long firstpic and mask are presented. I'd in any case prefer such a timing definition scheme over the SOA logic implemented by Inquisit. But that may be only because I'm from the psychophysics department...

Best wishes,
  Malte

seandr
seandr
Supreme Being (142K reputation)Supreme Being (142K reputation)Supreme Being (142K reputation)Supreme Being (142K reputation)Supreme Being (142K reputation)Supreme Being (142K reputation)Supreme Being (142K reputation)Supreme Being (142K reputation)Supreme Being (142K reputation)
Group: Administrators
Posts: 1.3K, Visits: 5.6K

Malte,


Thanks, I your explanation clarifies both the request and the reasoning behind it. I'll have to give some thought to the syntax for the command, but my first intution would be to do something like the following:


/ interstimulusintervals = [blank; 40; firstpic; 100; mask; 100; blank; 40; secondpic; 100; mask; 100; blank]


Inquisit scans the sequence, and when it encounters a stimulus, it presents it, and when it encounters a number, it waits for that interval (or the closest interval falling near a vertical redraw of the screen. That way everything is in cronological order.


Thanks again for the feedback.


Regards,
Sean



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: 98K
Dear Malte,

(1) Save name of exp file in output file. We often conduct experiments where subjects need to complete an experiment multiple times, with slightly modified and individual stimulus parameters/timings/instructions. We usually code these changes in the name of the exp-file to be able to quickly identify what has been altered for the said run. Unfortunately, Inquisit won't store the name of the exp file in the output file, which can become nasty if the connection between an output file and the generating exp file cannot be made upon data analysis (which may happen weeks after the experiment finished).


Upon re-reading this listing, it occured to me that the above is *already* possible with Inquisit 3. There's a script.filename property that will return the full filename of the script currently running. Just add this property to the '/ columns' listing in your <data> element and - lo and behold - the filename will be logged to the datafile. Example:

<data>
/ columns=[subject, blockcode, trialcode,
trialnum, latency, response, stimulusitem, script.filename]
...
</data>


Hope this helps,
~Dave

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search