[visionegg] Dimstim

Hello,

I've created an alternative to the EPhys module which comes with VisionEgg, and now I'd like to release it back to the VisionEgg community. I've been calling it "Dimstim". For any given stimulus type, you can specify which stimulus attributes you want to be dimensions, that is, which attributes you want to change on each stimulus "sweep". There can be multiple attributes per dimension (this forces those attributes to covary with each other). The order of presentation of each dimension can be as specified, shuffled (without replacement), or randomized (with replacement). You can independently set the order of presentation for all of the dimensions you've chosen to control. Sweeps can have arbitrary duration. In fact sweep duration can itself be a dimension.

Dimstim has no GUI. It's completely script based. The only exception is a mouse and keyboard controlled manual bar stimulus, which lets you roughly locate and save the receptive field and preferred orientation of a visually responsive cell (or at least the best trade-off for a group of many simultaneously recorded cells). This information is saved to a config file and is then used to correctly locate, size, and orient all subsequent stimuli that are run. Everything is described and controlled in degrees of visual field, degrees per second, cycles per degree, etc. This means that the distance and size of the monitor must be entered.

We managed to buy ourselves a pair of hard-to-find 200Hz Iiyama monitors (HM903DTB and HM204DTA) which we drive with an ATI Radeon 9800 video card, on a PC running Windows 2000. We've been using a vga splitter (made by Aten) to display the same signal on both monitors. Dimstim uses custom vsync loops instead of the presentation loop in VisionEgg, and great pains were taken (photodiodes, oscilloscopes) to ensure that at no point is a 5ms frame ever dropped. Keith Godfrey and I created a Python C extension that interfaces with Data Translation's digital boards, in our case a DT340. Dimstim writes a digital word to the port on every frame, recorded by our electrophysiology rig (called "Surf") which is triggered by the vsync signal coming from the video card. This gives us 5 ms temporal precision in relating the state of the screen to our spike data. A header that describes the stimulus is sent before the experiment starts.

For now, the Dimstim module and example "Experiment" scripts that use it can be downloaded from:

http://www.ece.ualberta.ca/~mspacek/Dimstim_2005-06-08.zip

I hope some of you will find this useful. The C extension for interfacing with Data Translations boards is probably the most broadly useful.

Cheers,

--
Martin Spacek
PhD student, Graduate Program in Neuroscience
Swindale lab
Dept. of Ophthalmology and Visual Sciences
University of British Columbia, Vancouver, BC, Canada
+1-604-875-4555 ext. 66282
mspacek@xxxxxxxxxxxxxxx | http://swindale.ecc.ubc.ca

======================================
The Vision Egg mailing list
Archives: http://www.freelists.org/archives/visionegg
Website: http://www.visionegg.org/mailinglist.html

Other related posts: