I'm a grad student in Nick Swindale's lab in the Dept. of Ophthalmology and Visual Sciences at UBC in Vancouver, Canada. We do extracellular electrophysiology using multichannel silicon electrode arrays ("polytrodes") in cat primary visual cortex.

I took on VisionEgg around Sept 2004, and we're very happy with it. We now use it exclusively to generate all of our visual stimuli, including drift gratings, drift bars, sparse bars, flashed bars, and various stimuli to examine extra-classical receptive field effects. We also use it to play back msequence movies, natural scene movies, and noise movies with various spatial and temporal distributions.

I've created an alternative to the EPhys module which comes with VisionEgg. 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 (running custom acquisition software 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.

Much of the behaviour and many of the features are based on "Display", a DOS-based (Fortran) stimulus program that Nicholas Swindale developed. Tim Blanche developed "Surf", and much of the functionality of "Dimstim" and its interoperability with "Surf" came about with his help.

For now Dimstim can be downloaded from: http://www.ece.ualberta.ca/~mspacek/Dimstim_2005-06-08.zip

lab homepage: http://www.swindale.ecc.ubc.ca

my homepage: http://www.ece.ualberta.ca/~mspacek

MartinSpacek (last edited 2008-01-04 11:10:53 by localhost)