most of today 's biological and biochemical studies emphasize molecular function ; this often implies considering molecular motions or interactions .
already in the mid 1960s , cyrus levinthal and his co - workers produced the first molecular movie ( see http://www.umass.edu/molvis/francoeur/movgallery/moviegallery.html ) using their  model - building program ( 1 ) .
since then , a huge effort has been put into developing computer graphics systems and software to investigate macromolecular structure and function .
as imaging has steadily become a major requirement for scientific communication and teaching , the field continues to grow and new software is regularly developed , e.g. swisspdbviewer ( 2 ) , vmd ( 3 ) pymol ( http://pymol.sourceforge.net ) , yasara ( http://www.yasara.org ) , jmol ( http://jmol.sourceforge.net ) and many others .
while quality of software and images produced have been increasing steadily , the complexity of concepts and of software can make the task of producing these high - quality pictures or movies difficult to the inexperienced user . to overcome this difficulty , several online services such as aismig ( 4 ) , indie molecular movies ( http://molbio.info.nih.gov/structbio/indie.html ) , molray ( 5 ) , moviemaker ( 6 ) , pdb2mgif ( 7 ) , polyview-3d ( 8) or protein picture generator ( ppg ) ( 9 ) have been developed .
they are based on various molecular graphics programs , such as pymol , rasmol ( 10 ) , or dino ( http://www.dino3d.org ) , that are coupled to free 3d rendering engines such as molscript ( 11 ) , raster3d ( 12 ) or pov - ray ( http://www.povray.org ) to improve the quality of the pictures in terms of photorealism .
it appears that one sticking point for online imaging services is the design of an interface to supervise image production .
ultimately , it would be desirable for such services to generate complex molecular pictures and animations , while controlling numerous parameters at different stages of image production ( molecular representation , view control , rendering control , scene control including light , camera , background , etc . ) .
the user should then be able to define a storyboard for animation , including cinematic control .
however , in order to propose a comprehensive way for the inexperienced user to generate images , choices and hierarchies must be defined amongst the various possible parameters and selections .
the diversity and quality of the molecular representations produced by the software strongly depend on these design choices .
so far , aismig , molray , pdb2mgif or ppg can produce images , which display several types of representations using various color codes to highlight particular molecular features .
in contrast , moviemaker is more oriented toward the production of animations and can produce short movies illustrating a wide range of protein motions or other dynamic processes .
for instance , there is no control over the illustration of molecular recognition processes involving several partners . in order to address the need to design animation storyboards and to take into account the requirements of multilevel molecular representations
the pmg service relies on concepts previously introduced by the ppg and significantly extends them toward macromolecular movie generation .
namely , it proposes movie generation including several moving molecules for which it is possible to define a scenario considering move order , initial and final positions and/or orientations , as well as several useful camera moves .
since a ray - tracing technique was included in the rendering , pmg can generate images with a good level of photorealism .
nevertheless , the design approach of the pmg form aims to avoid technical considerations for simplicity 's sake .
the pmg service can therefore address quite simply a large number of requirements in molecular imaging , ranging from static pictures to simple animations ( namely rotations or rock ) , and complex animation such as  docking movies , model slideshows and molecular motions or dynamics , while combining various representations and coloring schemes .
the pmg interface is designed with respect to experience acquired from the ppg , and from discussions with users .
some of the wishes expressed by users can prove contradictory , e.g. the ability to produce a movie in a few clicks , and the need to access to as many parameters as possible .
a point often mentioned involved the possibility of having some interactive control over the orientation of the molecule .
finally , since movie generation can be time consuming , it seemed desirable to have some means to produce movies of macromolecular prototype easily and quickly .
as a consequence , technical choices related to the rendering software were driven by several considerations : 
 the need of scriptable rendering , the ability to use different types of molecular representations and coloring schemes at the same time , in order to obtain a high level of scientific information in the images , the ability to produce high - quality image rendering .
the need of scriptable rendering , the ability to use different types of molecular representations and coloring schemes at the same time , in order to obtain a high level of scientific information in the images , the ability to produce high - quality image rendering .
the dino software , which is the core of ppg , can define and manage independent molecular objects using various molecular representations .
since dino is scriptable and can be interfaced with pov - ray , we have chosen to keep using it in pmg .
the overall pmg processing is as follows : the cgi form generates a first level script for dino , which in turn generates a second level script for pov - ray .
in fact , the pmg uses megapov ( http://megapov.inetart.net ) , a clone of pov - ray , which offers interesting features ( see below ) .
pmg allows production of renderings using dino or pov - ray as stand - alone units .
moreover , some ancillary programs are required for some representations , e.g. computation of molecular surfaces [ msms ( 13 ) ] or of secondary structures [ stride ( 14 ) ] . a challenge in setting up an image generation web server
is related to the specification of 3d orientation of molecules by the user . for this purpose
, we have elected jmol as an ancillary tool since its applet version provides interactive 3d visualization .
convert program ( part of the imagemagick package http://www.imagemagick.org/script/index.php ) for title and subtitles setup , and conversion to requested image formats , including animated gif .
however , to produce avi formatted movies , we chose to use the mencoder software , included in the mplayer package at http://www.mplayerhq.hu/design7/news.html ) .
the main service provides access to the various parameters controlling molecular representation , scene , scenarios , etc .
the main interface of the pmg is organized in different sections , addressing various aspects of the movie production task .
the next section , i.e. the main control section , is divided in : ( i ) the default representation for the complete structure ( sphere , cartoon , lines , molecular surface and coloring patterns ) for which parameters can be set independently , ( ii ) the scene section which allows the user to center and focus the scene on some part of the structure , and to include several ready - made backgrounds ( see http://bioserv.rpbs.jussieu.fr/~autin/help/bg.html , based on http://www.f-lohmueller.de/pov_tut/addon/insert0.htm ) , ( iii ) the animation section which proposes pre - defined scenarios and camera behavior ( static or dynamic ) as well as a limited number of animation controls ( number of frames , step and delay ) .
further sections control numerous additional secondary parameters , such as specific selection of atoms , residues and chains by the user .
several types of animations , using the pdb ( 15 ) format , are available , including : four basic types of animation ( rock , xrot , yrot and ztrans ) , visualization of molecular dynamics ( which is accessible by uploading a trajectory file ) , slide shows of models ( for files containing more than one model , such as nmr structures ) and  docking movies .
this latter type of animation covers both docking of protein chains , and ligand docking .
the program offers many more possibilities : model animation can be used for nmr data , but also for visualization of docking results as produced for instance by the cluspro ( 16 ) server , molecular dynamics as accessible in the molecular dynamics extended library ( http://mmb.pcb.ub.es/model ) , molecular motions produced from normal mode analysis [ see ( 17,18 ) for some examples ] or from morphing two structures as stored in the database of macromolecular movements ( 19 ) . for files containing multiple chains , animation is possible for any kind of binding or unbinding process . using the pqs database ( 20 ) or the pita server ( 21 ) ,
both of which compute quaternary structures according the crystallographic symmetry , in combination with pmg , it is therefore possible to illustrate the oligomerization of many proteins stored in the pdb .
finally , to illustrate protein - ligand interactions , the pmg also relies on the definition of a ligand using the hetatm fields of the pdb file format .
further details about these modes are available in the corresponding online help pages of the pmg ( for details see http://bioserv.rpbs.jussieu.fr/pmg.html ) .
three of these are static ( simple , wide and ultra - wide ) and three are dynamic ( zoom , roty and rotz ) .
as illustrated in figure 1a , we chose to virtually split the screen space in a 3  3 matrix .
for each of the cells in this matrix , it is possible to assign particular chain(s ) , or the ligand , and to set for each of these a particular molecular orientation and a rank defining the running order in an event sequence .
hence , it is possible to have control over nine groups of objects ( multiple selection of chains ) , eight of which depict a dynamic state in the animation , and the last one corresponding either to the starting state or the final state of the animation ( defined in the 3  3 matrix by the 
once objects are attributed to each cell , it is possible to use the jmol preview function in order to assign preferred orientation to each group of objects according to their layout in the 3  3 matrix ( see figure 1a and b ) .
for example , figure 1c depicts the oligomerization process defined in figure 1a and b. each object is translated and reoriented according to values in the 3  3 matrix , and then undergoes a movement toward the final state , i.e. in this case the bound oligomer . to make the motion more realistic , object motion is guided by a spline , which is randomly generated around a straight trajectory ( yellow curves in figure 1c ) .
the scene 's center , focus and angle ( which depend on the camera option ) are automatically set by pmg , but can be defined by the user ( see figure 1c ) .
the meaning of these parameters varies according to the type of animation selected ( see the help pages ) . 

the screen is divided into a virtual matrix of 3  3 cells to position objects .
it is possible to assign chains or ligand to each cell and to specify their behavior .
( a ) assignments are propagated to the orientation previewer ( b ) and the rendering engine ( c ) .
this example shows how to use the panel ( a ) in order to produce a trimerization . the final state ( defined by the 
all key word ) is set in the center of the scene ( middle cell 2.2 . ) .
the starting position of each chain is set by assigning each of them to a different cell ( h in 1.3 .
once the chains are assigned to cells , it is possible to specify the starting and final orientations by assigning rotations values for each cell ( xrot , yrot and zrot fields ) . to help , it is possible to launch the previewer ( b ) .
the timeline of the movements is defined by assigning a rank  or priority  to each cell set ( pr fields ) . here
, chain h will move first , then chain b , and finally chain e. these moves are sketched using yellow arrows in ( a ) and yellow splines in ( c ) .
elementary move magnitude is automatically defined by pmg . finally , it is possible to change the angle , center and focus of the camera ( c ) , which leads to possibly focusing on a particular region of the macromolecule .
the screen is divided into a virtual matrix of 3  3 cells to position objects .
it is possible to assign chains or ligand to each cell and to specify their behavior .
( a ) assignments are propagated to the orientation previewer ( b ) and the rendering engine ( c ) .
this example shows how to use the panel ( a ) in order to produce a trimerization .
the final state ( defined by the  all key word ) is set in the center of the scene ( middle cell 2.2 . ) .
the starting position of each chain is set by assigning each of them to a different cell ( h in 1.3 .
once the chains are assigned to cells , it is possible to specify the starting and final orientations by assigning rotations values for each cell ( xrot , yrot and zrot fields ) . to help , it is possible to launch the previewer ( b ) .
the timeline of the movements is defined by assigning a rank  or priority  to each cell set ( pr fields ) . here
, chain h will move first , then chain b , and finally chain e. these moves are sketched using yellow arrows in ( a ) and yellow splines in ( c ) .
elementary move magnitude is automatically defined by pmg . finally , it is possible to change the angle , center and focus of the camera ( c ) , which leads to possibly focusing on a particular region of the macromolecule .
finally , the use of megapov ( a clone of pov - ray ) for movie generation allows sophisticated control over the animation clock ( see http://www.geocities.com/siliconvalley/lakes/1434/clockmod.html ) , which in turn allows non - linear kinematics ( the animation starts slowly , speeds up and then slows down )
. the corresponding parameters are hidden to the user . to summarize the interface , over the 200 parameters set in pmg , only half of these are accessible to the user .
furthermore , using only the 30 main parameters ( covering default representation , scene and animation parameters ) , the user can easily produce images or animations of high quality .
as a consequence , technical choices related to the rendering software were driven by several considerations : 
 the need of scriptable rendering , the ability to use different types of molecular representations and coloring schemes at the same time , in order to obtain a high level of scientific information in the images , the ability to produce high - quality image rendering .
the need of scriptable rendering , the ability to use different types of molecular representations and coloring schemes at the same time , in order to obtain a high level of scientific information in the images , the ability to produce high - quality image rendering .
the dino software , which is the core of ppg , can define and manage independent molecular objects using various molecular representations .
since dino is scriptable and can be interfaced with pov - ray , we have chosen to keep using it in pmg .
the overall pmg processing is as follows : the cgi form generates a first level script for dino , which in turn generates a second level script for pov - ray .
in fact , the pmg uses megapov ( http://megapov.inetart.net ) , a clone of pov - ray , which offers interesting features ( see below ) .
pmg allows production of renderings using dino or pov - ray as stand - alone units .
moreover , some ancillary programs are required for some representations , e.g. computation of molecular surfaces [ msms ( 13 ) ] or of secondary structures [ stride ( 14 ) ] .
a challenge in setting up an image generation web server is related to the specification of 3d orientation of molecules by the user . for this purpose ,
we have elected jmol as an ancillary tool since its applet version provides interactive 3d visualization .
convert program ( part of the imagemagick package http://www.imagemagick.org/script/index.php ) for title and subtitles setup , and conversion to requested image formats , including animated gif .
however , to produce avi formatted movies , we chose to use the mencoder software , included in the mplayer package at http://www.mplayerhq.hu/design7/news.html ) .
the main service provides access to the various parameters controlling molecular representation , scene , scenarios , etc .
the main interface of the pmg is organized in different sections , addressing various aspects of the movie production task .
the top section covers data input . the next section , i.e. the main control section , is divided in : ( i ) the default representation for the complete structure ( sphere , cartoon , lines , molecular surface and coloring patterns ) for which parameters can be set independently , ( ii ) the scene section which allows the user to center and focus the scene on some part of the structure , and to include several ready - made backgrounds ( see http://bioserv.rpbs.jussieu.fr/~autin/help/bg.html , based on http://www.f-lohmueller.de/pov_tut/addon/insert0.htm ) , ( iii ) the animation section which proposes pre - defined scenarios and camera behavior ( static or dynamic ) as well as a limited number of animation controls ( number of frames , step and delay ) . further sections control numerous additional secondary parameters , such as specific selection of atoms , residues and chains by the user .
several types of animations , using the pdb ( 15 ) format , are available , including : four basic types of animation ( rock , xrot , yrot and ztrans ) , visualization of molecular dynamics ( which is accessible by uploading a trajectory file ) , slide shows of models ( for files containing more than one model , such as nmr structures ) and  docking movies .
this latter type of animation covers both docking of protein chains , and ligand docking .
the program offers many more possibilities : model animation can be used for nmr data , but also for visualization of docking results as produced for instance by the cluspro ( 16 ) server , molecular dynamics as accessible in the molecular dynamics extended library ( http://mmb.pcb.ub.es/model ) , molecular motions produced from normal mode analysis [ see ( 17,18 ) for some examples ] or from morphing two structures as stored in the database of macromolecular movements ( 19 ) . for files containing multiple chains
, animation is possible for any kind of binding or unbinding process . using the pqs database ( 20 ) or the pita server ( 21 ) , both of which compute quaternary structures according the crystallographic symmetry , in combination with pmg , it is therefore possible to illustrate the oligomerization of many proteins stored in the pdb .
finally , to illustrate protein - ligand interactions , the pmg also relies on the definition of a ligand using the hetatm fields of the pdb file format .
further details about these modes are available in the corresponding online help pages of the pmg ( for details see http://bioserv.rpbs.jussieu.fr/pmg.html ) .
three of these are static ( simple , wide and ultra - wide ) and three are dynamic ( zoom , roty and rotz ) .
as illustrated in figure 1a , we chose to virtually split the screen space in a 3  3 matrix .
for each of the cells in this matrix , it is possible to assign particular chain(s ) , or the ligand , and to set for each of these a particular molecular orientation and a rank defining the running order in an event sequence .
hence , it is possible to have control over nine groups of objects ( multiple selection of chains ) , eight of which depict a dynamic state in the animation , and the last one corresponding either to the starting state or the final state of the animation ( defined in the 3  3 matrix by the 
once objects are attributed to each cell , it is possible to use the jmol preview function in order to assign preferred orientation to each group of objects according to their layout in the 3  3 matrix ( see figure 1a and b ) .
for example , figure 1c depicts the oligomerization process defined in figure 1a and b. each object is translated and reoriented according to values in the 3  3 matrix , and then undergoes a movement toward the final state , i.e. in this case the bound oligomer . to make the motion more realistic , object motion is guided by a spline , which is randomly generated around a straight trajectory ( yellow curves in figure 1c ) .
the scene 's center , focus and angle ( which depend on the camera option ) are automatically set by pmg , but can be defined by the user ( see figure 1c ) .
the meaning of these parameters varies according to the type of animation selected ( see the help pages ) . 

the screen is divided into a virtual matrix of 3  3 cells to position objects .
it is possible to assign chains or ligand to each cell and to specify their behavior .
( a ) assignments are propagated to the orientation previewer ( b ) and the rendering engine ( c ) .
this example shows how to use the panel ( a ) in order to produce a trimerization .
the final state ( defined by the  all key word ) is set in the center of the scene ( middle cell 2.2 . ) .
the starting position of each chain is set by assigning each of them to a different cell ( h in 1.3 .
once the chains are assigned to cells , it is possible to specify the starting and final orientations by assigning rotations values for each cell ( xrot , yrot and zrot fields ) .
the timeline of the movements is defined by assigning a rank  or priority  to each cell set ( pr fields ) . here
, chain h will move first , then chain b , and finally chain e. these moves are sketched using yellow arrows in ( a ) and yellow splines in ( c ) .
elementary move magnitude is automatically defined by pmg . finally , it is possible to change the angle , center and focus of the camera ( c ) , which leads to possibly focusing on a particular region of the macromolecule .
the screen is divided into a virtual matrix of 3  3 cells to position objects .
it is possible to assign chains or ligand to each cell and to specify their behavior .
( a ) assignments are propagated to the orientation previewer ( b ) and the rendering engine ( c ) .
this example shows how to use the panel ( a ) in order to produce a trimerization .
the final state ( defined by the  all key word ) is set in the center of the scene ( middle cell 2.2 . ) .
the starting position of each chain is set by assigning each of them to a different cell ( h in 1.3 .
once the chains are assigned to cells , it is possible to specify the starting and final orientations by assigning rotations values for each cell ( xrot , yrot and zrot fields ) . to help , it is possible to launch the previewer ( b ) .
the timeline of the movements is defined by assigning a rank  or priority  to each cell set ( pr fields ) . here
, chain h will move first , then chain b , and finally chain e. these moves are sketched using yellow arrows in ( a ) and yellow splines in ( c ) .
finally , it is possible to change the angle , center and focus of the camera ( c ) , which leads to possibly focusing on a particular region of the macromolecule .
finally , the use of megapov ( a clone of pov - ray ) for movie generation allows sophisticated control over the animation clock ( see http://www.geocities.com/siliconvalley/lakes/1434/clockmod.html ) , which in turn allows non - linear kinematics ( the animation starts slowly , speeds up and then slows down )
. the corresponding parameters are hidden to the user . to summarize the interface , over the 200 parameters set in pmg , only half of these are accessible to the user .
furthermore , using only the 30 main parameters ( covering default representation , scene and animation parameters ) , the user can easily produce images or animations of high quality .
data input can be on the form of typical pdb files ( single chains , multichains and multimodels ) , but also on the form of molecular dynamics trajectories in several formats including gromacs ( .xtc ) , charmm ( .dcd ) and cns ( .crd ) .
the pmg can produce static images ( png , jpg or ps format ) as well as animations ( gif and avi format ) .
if this is to be considered , computational cost can increase up to days or weeks . in order not to overload the service , depending on parameters and size of the input ,
the figure 2 presents two examples of static image production , and one example of oligomerization ( only the starting and the final state ) . for further animation examples
see the pmg gallery at http://bioserv.rpbs.jussieu.fr/~autin/help/gallery.html , which provides examples of requests as well as information about cpu - time . 

( a ) photorealism : crambin ( pdb code 1crn ) displayed in a box using atom spheres .
( b ) simultaneous multiple representations : two chains isomerase ( pdb code 1tim ) . the chain a ( bottom ) is displayed using a backbone spline colored according to the secondary structure , and using a 50% transparent gray surface .
a selection of a subset of amino - acids ( asp , glu , asn , gln , lys and his ) is drawn using a different representation ( ball and sticks colored according to atom charge ) .
the chain b is displayed using a backbone trace colored according to the secondary structure and using a 50% transparent gray surface .
a second user selection over different amino - acids ( ala , cys , phe , gly , iso , leu and met ) is displayed as ball and sticks and colored according to hydrophobicity .
( c ) large protein assembly animation : this example depicts the oligomerization of the chaperonin groel  groes complex , pdb code 1aon ( starting position = left image , final position = right image ) .
pmg can handle this large protein assembly ( more than 8.000 residues for 21 chains ) , first by using an ultra wide - angle camera (  ultra - wide option ) , and then by grouping chains as objects , i.e. by assigning several chains to the same cell , for instance in cell 3.3 chains : k , l , m and in cell 2.3 chains : d , e , f. the background is a blue to green sky sphere (  spheresky ) .
( a ) photorealism : crambin ( pdb code 1crn ) displayed in a box using atom spheres .
( b ) simultaneous multiple representations : two chains isomerase ( pdb code 1tim ) . the chain a ( bottom ) is displayed using a backbone spline colored according to the secondary structure , and using a 50% transparent gray surface .
a selection of a subset of amino - acids ( asp , glu , asn , gln , lys and his ) is drawn using a different representation ( ball and sticks colored according to atom charge ) .
the chain b is displayed using a backbone trace colored according to the secondary structure and using a 50% transparent gray surface . a second user selection over different amino - acids ( ala , cys , phe , gly
, iso , leu and met ) is displayed as ball and sticks and colored according to hydrophobicity .
( c ) large protein assembly animation : this example depicts the oligomerization of the chaperonin groel  groes complex , pdb code 1aon ( starting position = left image , final position = right image ) .
pmg can handle this large protein assembly ( more than 8.000 residues for 21 chains ) , first by using an ultra wide - angle camera (  ultra - wide option ) , and then by grouping chains as objects , i.e. by assigning several chains to the same cell , for instance in cell 3.3 chains : k , l , m and in cell 2.3 chains : d , e , f. the background is a blue to green sky sphere (  spheresky ) .
the pmg , via a large number of parameters , can serve the non - specialist as well as the specialist .
one of its main feature is undoubtedly its strong animation capabilities . nevertheless , several limitations appeared during the design of the pmg .
the first , mentioned above , concerns some rendering parameters , which are highly demanding in cpu - time , in particular parameters related to the calculation of light reflection . for this reason
, the pmg does not allow using all the photorealistic capabilities of the pov - ray engine 
although we tried to overcome this limitation using special light functions ( such as the  skysphere light option , see the gallery ) . among the possibilities that have not been explored
are object material modeling , and concepts such as ambient light occlusion which allow even more realistic molecular rendering ( see for instance http://qutemol.sourceforge.net ) , which really requires huge amounts of computational time .
such limitations could be partly addressed since pov - ray has intrinsic capabilities for parallel computation .
. it would be desirable to allow independent rendering schemes for objects , thus escaping the default representation .
this is partly possible using the user selection facilities , but still leaves room for improvement .
finally , more complex camera and object moves could be defined , and some possibilities could be given for scene background , such as the use of user images or textures .
overall , however , the pmg 's present choices will make it easy to use for many scientific or educational applications .
 the protein movie generator ( pmg ) is an online service able to generate high - quality pictures and animations for which one can then define simple storyboards . 
 the pmg can therefore efficiently illustrate concepts such as molecular motion or formation / dissociation of complexes . 
 emphasis is put on the simplicity of animation generation . 
 rendering is achieved using dino coupled to pov - ray . in order to produce highly informative images , 
 the pmg includes capabilities of using different molecular representations at the same time to highlight particular molecular features 
 . moreover , sophisticated rendering concepts including scene definition , as well as modeling light and materials are available . 
 the pmg accepts protein data bank ( pdb ) files as input , which may include series of models or molecular dynamics trajectories and produces images or movies under various formats . 
 pmg can be accessed at http://bioserv.rpbs.jussieu.fr/pmg.html . 
INTRODUCTION
DESIGN OF PMG
Technical choices
User interface
INPUT/OUTPUT
PERFORMANCES
DISCUSSION AND FUTURE WORK