[visionegg] Vision Egg 0.9.9 released

The Vision Egg 0.9.9 is here!

There are several major improvements. (The few changes that may break old code are detailed in the release notes included in this email).

There is nothing more I intend to add before I release Version 1.0 -- this is a release candidate subject to final testing and bug fixing, so I would appreciate all the abuse you can put it through. In particular, test/conform.py runs many tests on your system and reports the output.

Changes for 0.9.9
=================

Screen.put_pixels() method for "blitting" of raw pixel data
Support for QuickTime movies (currently Mac OS X only)
Redesign of type check system for accuracy and clarity
TrueType font rendering with SDL_ttf2
Textures with alpha--bugfixes and examples
Positioning of viewports and 2D stimuli can use relative positioning anchors
Now requires Python 2.2 -- new style classes used to restrict attribute acccess
Now requires pygame 1.5
Renamed timing_func() to time_func()
EPhysGUI saves absolute time a trial was started (to recontruct all stimuli)
Allow use of pygame Surfaces as source of texture data
Mipmaps of sphere-mapped sinusoidal grating to prevent spatial aliasing
De-emphasis on Presentation and Controller classes (moved to FlowControl module)
Changed orientations such that 0 degrees is right and 90 degrees is up.
Bugfix in SphereMap module -- gaussian formula produced windows too wide by 2/sqrt(2)
Allow conversion of 3D vertices into 2D screen coordinates
Added wireframe azimuth/elevation grid with text labels
Allow arbitrary orientation of textures and text with angle parameter
FrameTimer class now available for use in your own main loops
Use Python 2.3 logging module (copy included for use with Python 2.2)
No installation of demos or documentation (get source or demo package)
Many small enhancements and bugfixes


New tests:
high-voltage regulation test for displays (Brainard et al., 2002)
incomplete DC restoration test for displays (Brainard et al., 2002)
unit-test suite: among many other things, pixel accuracy of textures

New demos:
mpeg.py plays MPEG movies (currently seeking a free movie to include)
quicktime.py plays QuickTime movies (currently Mac OS X only)
convert3d_to_2d.py converts 3D positions to 2D positions
dots_simple_loop.py uses own loop rather than Presentation class
makeMovie2.py makes a movie with get_framebuffer_as_image() function
mouse_gabor_2d.py shows a gabor wavelet under mouse and keyboard control
mouse_gabor_perspective.py is sphereGratingWindowed.py improved and renamed
mouseTarget_user_loop.py uses own loop rather than Presentation class
multi_stim.py shows many stimuli at once


Release notes
=============

There are only a few non-backwards compatible changes. Here is a detailed description. Most of the demos released with 0.9.4 run fine as-is. With this information, the few demos that break should be straightforward to fix.

0) Python 2.2 required. (2.3 works great, too.)

1) Better error checking.

Some things will generate errors now that never used to. For example, if you try to assign "grating.contrast = 1.0" instead of "grating.parameters.contrast = 1.0", you will now get an error. Previously, this didn't generate an error, but it would cause confusion because contrast was not modified. (You can also now do "grating.set(contrast=1.0)", which will also perform type-checking.)

2) Redesign of the type-checking system.

If you've subclassed the Stimulus class for your own stimuli, you'll need to update the parameter definitions. See any of the Stimulus subclasses in the source code for examples

If you have controllers which specify the return_type parameter, you'll need to update this return type so that it's an instance of ParameterTypeDef in ve_types (VisionEgg.ParameterTypes). The simplest way to do this is call ve_types.get_type(some_value).

3) Use of conventional definitions for direction.

Directions and orientations are now specified such that 0 degrees is right and 90 degrees is up.

4) Bugfix of 3D Gaussian Window width.

The wrong formula was used in VisionEgg.SphereMap.SphereWindow when calculated gaussian windows. Sigma was actually sqrt(2)/2 times the radius parameter. This bug did not affect the 2D gaussian window.

5) Use Python logging system.

This doesn't actually break backwards compatibility, but to see the logs that your script generates, you must add the following to the beginning of your scripts. (You could also set the environment or configuration file variable VISIONEGG_ALWAYS_START_LOGGING.)

import VisionEgg
VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()

Other related posts: