Changes Under Consideration NOTE: Some of these are mutually exclusive, and many of them will never be carried out -- they are listed here so that I don't forget about them and so that you can see ways in which core PyMOL might evolve. * Allow multiple, parallel transformation matrices for each object * Create a Rasmol translator in Python * IO routine for a generic volume data object (to supplement bricks and maps) * Support mapping of additional dimensions into volume data sets for use in coloring all PyMOL geometries according to electrostatic potential and the like. * "Fragment" wizard, tied into the fragments subsystem. * "Batchmin" wizard ? * Real Edit Menu in Tk * CTRL and CTRL/SHIFT numbers should add aromatic and aliphatic ring systems in the builder respectively within the molecular editor. * support anisotropic B-factor renditions (ellipsoids) * support reading and writing of XPLOR PSF/PDB files to enable direct use of NAMD with PyMOL. Note that this will require integration of basic force-field structures into PyMOL...not a lightweight task, but something I think should be done in a general way to facilitate use of PyMOL as a molecular modeling tool... * support direct reading of DCD, Amber, and/or Gromacs trajectory files * support output of Amber input files so that we can bypass xleap altogether * support MOL2 and multi-MOL2 file formats * fold MMTK into the main PyMOL distribution, and merge the two programs in a way which allow the user to "see" into MMTK's internal data structures using PyMOL while calculations are being performed. * create a VRML->CGO converter so that VRML can be displayed inside of PyMOL * create a VRML writer to facilitate export of PyMOL geometries. * support CML via some "swallowable" python XML parser * add in support for CGL's annotated PDB file format * make PyMOL a compliant extension for the Chimera environment * add a dynamic 3-D based tutorial * finish abstracting GLUT away from PyMOL and wrap it inside of TOGL so that Chimera and PyMOL can share a context Specific Requests from Users * Get label support into the raytracer (build a 3D character set) * Enable specific xyz positioning of labels (w/ mouse?) * Cutting of images to the MS Window's clipboard for easy pasting into Powerpoint Current and Ongoing Goals * make an ActiveX control which contains the core PyMOL viewer for use in web browsers and many other crazy contexts. * clean up return values in the API and qualify exceptions. Include the source module name in messages, and provide proper feedback conditionals * update 'expand' and 'attach' to take an atom name as well as an element symbol * complete first-round test-cases. * complete matrix-based object translation and rotation * place feedback conditionals around all error output. * create alter_state_atom command (combine PAlter and PAlterState into one function) Main Goals for 1.0 Release * Side-by-side stereo support: cross-eye and wall-eye * MOL2 and CML file formats * Generalized volumetric rendering: (1) mesh (2) solid (3) colormaps * Integrated tutorial/demonstration system * Fully consistent API (defined and correct return values) * Complete GLUT independence (internal character sets) * Basic building support for biological polymers & small molecules with and w/o hydrogens Current Bugs to Fix * superposition system fails with degenerate sets (planer systems, etc). sometimes it just fails period Changes up to 0.82 * modified "cmd.system" to take an argument for asynchronous execution * flag command no longer indicates atoms by default -- set "auto_indicate_flags" * cross-eye side-by-side stereo support * fixed bug in valency display code * fixed major bug in "create" * raytracing bugfix for bond with zero length * complicated workaround for mouse atom selections with Radeon 8500 and WinXP PyMOL may now be somewhat resistant to broken OpenGL ReadPixels implementations * improved water handling for "non-canonical" situations (i.e. real life muck) * moved configuration files to a subdirectory "setup" * mpng now can support a range in order to enable coarse-grained parallelism (distributed movie rendering) * "within" operator added to selection language * visible selection operator no longer hits disabled objects * origin, zoom, and orient now take "state" as optional argument with special handling for 0 (all states) and -1 (current state) * eigensolve output now considered blather * important bug-fix on rotate and translate commands * "present" operator in selection language and tests for "state" operator Changes up to 0.81 * fixed bug in bg_color API function Changes up to 0.80 * major bug fix to "carve" in isomesh * "command ?" now gives a list of arguments * fix spurious bugs reading files under unix * added support for alternate residue id codes in secondary structure records * cylinders have become sausages, and... ...we now have flat-capped cylinders (0203)! * fixed duplicate logging with Run command * create a simple vector-based font (0203) * 3D text in CGOs * linear constraints in molecular sculpting engine * acetylene buidling block Changes up to 0.79 * internal character set * solid isosurface rendering algorithm: "isosurface" command * parser updated to handle selections like "resi 10 and (name c,n,o) and chain A" which lack surrounding parentheses, but which have delimiters inside * parser updated to handle (alt A+'') and similar constructs (previously DOA). * fixed ribbon & cartoon display when N-terminal atom is the CA * changes to support MacOSX port (0203) * ALIGN command Changes up to 0.78 * revamped Makefiles for better portability and dependency handling. Changes up to 0.77 * sculpting information now cached between changes to molecular structures * optimized sculpting for small regions of large proteins * FINALLY, modes for two-button mice Changes up to 0.76 * VDW radii adjusted. Use "set legacy_vdw_radii=1" on start-up for old values. * Sculpt functionality. Who needs gummy bears when you can have gummy molecules? * Numerous back-end bugs addressed. * transparent spheres Changes up to 0.75 * enabled automatic completion in the tcl/tk command window * altered settings for dot representation * created stop_on_exception and raise_exceptions settings. WARNING: stop_on_exceptions is NOT set by default (this is so that log files which contain errors will continue to function). * gutted cmd.py, and created a bunch of sub-modules which contain the code previously in cmd.py. * superposition bugs fixed with multi-state objects (fit and intra_fit) * cmd.set_key can now be used to redefine ALT and CTRL keys in addition to function keys and other specials. Changes up to 0.74 * very minor bug/doc fixes Changes up to 0.73 * improved fragment and residue building capabilities Changes up to 0.72 * fixed some logging issues with dragging pieces * now possible to create empty objects, fixed mutagenesis wizard in response * all readable files are shown by default in the Tkinter file dialogs. Changes up to 0.71 * seg. fault bug fix in ObjectMoleculeConnect * two_sided_lighting option to help Jun at CCI project * fixed triangle rendering on lower-end graphics cards * revamped PyMOL's internal bond handling data structure. I've done my best to insure that this doesn't break anything, but it is a major change and has the potential to create huge problems... * empirically synchronized PyMOL and PovRay's perspective transformations... Changes up to 0.70 * fixed symmetry bug with multiple state objects * symmetry now carried through create operations Changes up to 0.69 * PNG reading * First generation PovRay interface...whoopee! * Tweaked util.ray_shadow and added some new settings Changes up to 0.68 * HETATMS are no longer surfaced by default. Clear the "ignore" flag or set surface_mode=1 to restore their surfaces. * flag command now takes name arguments and can now reset, set, and clear flags * established some standard flag names and conventions * Upgrading OpenGL Pop-up menus, since it looks like the internal GUI will be widely used despite its original limited role (oh well...) * Fixed element name guessing * added ray_improve_shadows setting for improving shadows by projecting outward from triangles. * Fixed a major bug in the raytracer which was causing bogus shadows to appear on surfaces * Fixed a huge bug in surfacing of subsets. That function was totally whacked, but no one had noticed or complained!!! Revised the function of the surface_proximity setting * by default, PDB HETATMs are no longer surfaced -- if you want them to be, then please "set surface_mode=1" * "transparent" renamed to "transparency" * switched to a three-pass OpenGL rendering model in order to properly display opaque, transparent, and antialiased objects * OpenGL transparency now works too! See "help transparency". * nonbonded spheres are now pickable * surface_color and mesh_color override the default atom colors for uniform surface coloring -- added support for color names into the settings module * flags 24 and 25 now work with surfaces and meshes. See "help flags" Changes up to 0.67 * Transparency support in rendering has been added, but it doesn't yet exist yet in opengl mode. Changes up to 0.66 * numerous bug-fixes Changes up to 0.65 * numerous bug-fixes Changes up to 0.64 * stage 1 API enhancements -- consistent return conventions adopted (many will not follow conventions until stage 2 though) * more surface_qualities: -3 to 2, surface_quality=1 is now even better * click-and-drag a box to select atoms * PyMOL now builds w/o warning in VC++6 * LOG FILE CAPABILITIES: logging of both PyMOL scripts (.pml) and PyMOL program files (.pym). The "resume" command allows propagation of session-like behavior. This makes a huge difference in PyMOL user-friendliness. * autocompletion bug fixed, generalized autocompletion added * mesh_radius cut in half, for better default density figures * carve command on isomesh * pymolrc support * isosurface speed boosted by about 33% using C-oriented field object. * fixed bugs with internal_gui options * internal_feedback setting * simple cartoon ribbon for DNA/RNA * selection language now supports '+' as substitute for commas, and '-' as substitute for ':' in residue identifiers (more user friendly) * selections no longer require parentheses unless they have commas or semicolons * unit cell display for molecules and meshes Changes up to 0.63 * Density wizard * isomesh meshes now use mesh_width instead of line_width * fixed rendering background color bug on BigEndian machines * fixed fatal bug with symexp * first attempt at support for CCP4's binary maps -- it works with my test maps, but will it work with others? Changes up to 0.62 * tuned up the util.ray_shadows function, added a "matte" mode for better definition of ribbons... * integrated workaround for an apparent GCC serial optimizer bug on x86. Changes up to 0.61 * bg_color command for easier background adjustments... * depth cue menu item and ray_trace_fog linked * cartoon_discrete_colors hack for coloring secondary structure properly * (ss ...) primitive in selector for selecting helices, etc. * many cartoon ribbons improvements -- flat fancy sheets now VERY nice. Changes up to 0.60 * third generation fancy helices complete -- revamped interpolation code. * ray now takes dimensions for rendering larger than screen * unpick and hide selection buttons * various new menu items... * preparing for GLUT independence on selected platforms... * choice of lighting modes for ray-tracing (improved shadows, contrast) * settings renames (gl_ambient, dot_radius) * settings changes (hash_max) and ray-tracing feedback * "help faster" * fixed minor glitch with fancy helices Changes up to 0.59 * fixed valency display bug... Changes up to 0.58 * second generation cartoon ribbons are in -- Goodbye Molscript! * fixed half-decade old logic bug in MemoryDebug (blush!). * "alter" and "alter_state" given a 50% performance boost * added a coarse hydrogen-bond assessment feature (internal) * added phi/psi measuring capability * fixed selector memory leak on errors * added first-generation cartoon riboons (higher-quality to come later) * added more specific settings for mesh and ribbon width, etc. * add more settings-change side-effects * fix bugs with saving pkl files for state > 1 * added a concise notation into the selection language model/segment/chain/residue/name */name residue/ residue/name chain/ / chain/residue/ chain/ /name chain/residue/name segment/ / segment/ / /name segment/ /residue segment/ /residue/name segment/chain/ / segment/chain/ /name segment/chain/residue/ segment/chain/residue/name /model /model/ / / /name /model/ / /residue /model/ / /residue/name /model/ /chain /model/ /chain/ /name /model/ /chain/residue /model/ /chain/residue/name /model/segment /model/segment/ / /name /model/segment/ /residue /model/segment/ /residue/name /model/segment/chain /model/segment/chain/ /name /model/segment/chain/residue Changes up to 0.57 * mutagenesis module * finished the set_dihedral command Changes up to 0.56 * fixed a serious parser bug with the mdo command Changes up to 0.55 * fixed and enhanced util.mroll, util.mrock Changes up to 0.54 * ID and elem fields in alter, iterate Changes up to 0.53 * change order of drawing within object to improve the interaction with antialiased lines. * thread safety improvements (fixed bug involving serial manipulations of the same object) * bug fix with stick representations * fixed minor goof with cmd.dist retval in 0.52 Changes up to 0.52 * many improvements to online help * fixed discrete objects created from PDB files * prevented deadlock condition with re-entrant API locks * fixed couple of logic-bugs in threading * changed output format from mouse click to a valid selection * finished retrofit of the parser. * formal charge now read from MOL files -- need to consider full implementation of MOL file reading capability (incl stereo) Changes up to 0.51 * Tcl/Tk GUI now contains a save molecule option * Tcl/Tk GUI help improved * performance/quality options in the display menu * sphere quality setting * depth_cue toggle setting (important for low-end PC hardware) * specular reflections * fog setting Changes up to 0.50 * can now "pick" C-alphas in the ribbon * can now "pick" atoms and bonds in the stick representation * improved clipping plane control command "clip" * pym file extension support, for PyMOL-specific .py files * better windows NT compatibility * settings browser * view, view_get, view_set commands * Parser now contains a general shortcut handling module to further help in reducing typing * Slight tweak of the virtual trackball * Saving and restoring matrix, center, origin, zoom, clip * Internal program output no longer includes python's stderr * New thread management solution -- simple and stable -- plus it even works (I've even got test cases to prove it)! * Fixed memory-trashing bug in the selector * Found a workaround for KDE/Gnome/Tkinter/Tcl/Tk problems under linux * Created Save option on the Tkinter menu, and added additional file types. * TAB-activated filename and command completion (CTRL-D too) * Former TAB functionality moved to ESC (text/graphics toggle) * Auto-detection of stereo capability * Created a robust Feedback control mechanism * Eliminated hangs and crashes upon program termination with Win2k/NT. * "Distances" wizard (internal gui;replace with external version later) * "Pair Fit" wizard (internal gui; replace with external version later) * Mesh objects now have states, and new meshes are appended. * Modified raytrace antialiasing transfer function to improve sharpness. * Created alias and extend commands so that python scripts can extend the pymol language on the fly. * Additional test cases. * Parser improved with a new argument parsing subsystem which has a better mapping to standard Python arguments. This has significant potential to break existing code if there are any bugs, but I am shooting for 100% backwards compatibility. Changes up to 0.49 * Improved editor, hydrogens now auto-deleted. * Visible selections. * Default mouse actions changed for editing and atom selecting. * Callback objects (for use with PyOpenGL) now have extents. * get_state and get_frame API functions Important Changes 0.42-0.48 Too numerous to list them all... * Addition of support for PyOpenGL-based GL calls with callback objects * Wizard feature, for grabbing mouse input -- still needs flushing out.