Vision is a visual-programming environment in which a user can interactively build networks describing novel combinations of computational methods, and yielding new visualizations of their data without actually writing code. Nodes encapsulating specific computational methods are organized in libraries and displayed in Vision. The user can drag-and-drop them onto a canvas and connect their input and output ports to define an execution flow. Subnetworks can be encapsulated into macro nodes, allowing nesting of networks. Tooltips and balloon help provide runtime information about a node's function, inputs and outputs. Data flowing through nodes can be interactively monitored and introspected. A data type manager holds a pre-defined set of data type objects and new types can be added to this table interactively through a GUI. Although data types are optional, by declaring one, it is possible to specify the appearance (i.e. the color and shape) of the port's icon. This provides helpful visual hints for connecting the proper outputs with the proper inputs. New nodes can be created interactively during a working session and the computational method of any given node can be changed while the network is running. Vision nodes are essentially lightweight wrappers of functionality that is otherwise available in Python, C and Fortran. This makes Vision useful beyond biological applications. To date, Vision comprises a set of standard nodes including an OpenGL 3D-visualization library. The SymServ library implements a set of nodes defining geometric transformations such as point symmetries, translation, rotation, helical arrangements etc. These nodes allow describing complex hierarchical symmetries such as icosahedral symmetry as tree-like structures. The MolKit library, which is based on our Python MolKit library, allows reading, writing, representing and querying molecular data structures. The Imaging library exposes the Python Image Library thus enabling image processing in Vision. Many more custom nodes have been written to date, including nodes to read electron density maps, to compute isocontour surfaces, to mapping textures onto geometry, to convert a 2-D image to 3-D heightfield, and node to converter molecular data into various 3-D file formats (VRML, STL). Vision has been successfully used to combine in 3-D electron microscopy and atomic fore microscopy data to build and refine models of supramolecular assemblies.
Sanner M.F., Stoffler D. and Olson A.J. (2002). ViPEr, a visual Programming Environment for Python. In Proceedings of thre 10th International Python conference. 103-115. February 4-7, 2002. ISBN 1-930792-05-0.