FPD CHANGE LOG
==============

8 December 2004

v1.2: QI screen now handles V5 queues, identification of urea, a few obscure bugs.

1. The code which produces the QI screen has been brought up to date with the latest version of "qd".  It now properly handles queues produced by the V5 FAH client.  It also picks up the progress properly from the new Core_82 AMBER client.

2. It is now possible to identify and eliminate urea molecules from the display, just as it could previously also eliminate water molecules and hydrogen atoms.  The code for identifying bond patterns has been rewritten slightly to handle this more easily.

3. Two bugs were fixed in picking up the current unit name and progress when less than a frame has been completed.

4. The code which frees the OpenGL Pixmap storage when the window is resized has been changed a little, with the hope that it will improve the behavior of some systems on which "X" crashes.  In particular, the new code assigns new maps before it frees the old ones.  The old code freed the old ones first.

5. In the QI screen, if updating it causes the positions of the queue index entries to shift their position, the program will no longer require the mouse to be moved before it realizes the pointer might be over a different selection.  It still might require an extra mouse click, however.

6. When "fpd" was recompiled with the "NOPMAP=1" flag set, the yellow lines separating the halves of the stereo molecule display used to overlap the buttons at the top of the window.  This has been fixed.

7. When switching between rendering the 3-D molecule with OpenGL calls, and lines and text with ordinary X calls, the program now calls "glXWaitGL()" for synchronization.  It used to use "glFinish()".

==============

23 October 2003

v1.1: added automatic queue type detection, slightly improved model selection buttons.

1. The code in "qd" which automatically guesses what system type produced queue.dat has been transplanted into "fpd".  It should now be more suitable for monitoring remote clients accessed through shared directories.  A new argument "-systype" has been added to specify the type explicitly, in case "fpd" guesses wrong.

2. The behavior of the menu buttons which select the display model has been changed very slightly.  The screen will no longer be redrawn if the same model is deselected then reselected, and the gray button background now more closely indicates whether clicking on a button will do anything.

3. A bug has been fixed in the queue information screen, which could have caused a program crash if the queue file specified a negative current index.

4. The current work unit progress shown on the QI screen is now more resistant to being fooled by garbage values in the queue file.

==============

7 October 2003

v1.0: added backbone display, automatic bond detection, dragging molecule, stereo while zoomed in, many updates and improvements.

1. A bug has been fixed in which the display code used to assign a new quadric object each time it rendered the molecule, but it never freed the old one.

2. A new option has been added for displaying just the atoms in the protein backbone.  This includes the alpha carbon, and the imino and carbonyl groups of the peptide bond.

3. Code has been added to determine all bonds from the atom XYZ positions, ignoring any bond information which may be present in the XYZ file.  This mode is now the default, but it can be turned off on the OPTIONS screen.

4. The right mouse button can now be used to drag the molecule position without rotating it.

5. The stereo mode now clips each image separately and draws yellow lines to separate them.  This makes it possible to zoom in while in stereo mode.

6. To make the stereo depth more likely to be about right, the default in [R L] mode has been increased by a factor of 1.5.

7. The QI screen functions now recognize the latest queue.dat formats.

8. On the QI screen, the fraction complete and speed factor are now printed to the right of the beginning and expected completion times.

9. The help screen text has been rewritten slightly.

10. Three new compiler flags have been added:
NOGLU - 1 if no GLU functions are available (local sphere and cylinder functions are supplied)
NOPMAP - 1 if OpenGL can't render into a Pixmap (it will draw directly to the screen)
DLIST - 1 if OpenGL should create a display list (this possibly runs faster over slow networks)
11. Several OpenGL rendering modes which just made the display slower have been shut off.

12. Atoms out of the field of view or not selected in the display model are now eliminated from the display list.  This speeds up the display slightly.

13. A debug level 2 message has been added giving the total number of atoms in the display list.

14. A debug level 3 message has been added giving the number of explicit water molecules in the display.

15. The debug printout of all of the atoms and their XYZ positions now has the bond information added, and it has been changed from debug level 3 to level 5.

16. The code which finds the alpha carbon chain has been slightly simplified.

==============

13 December 2002

v0.9: fixed problems with reading Genome XYZ files, added lots of new options and features

1. The program is now more tolerant of the awful amount of garbage in Genome XYZ files, which contain duplicate bonds, bonds going to the same atom they come from, bonds going only one way, and extraneous lines of text at the end of the file.  Some of these things previously made "fpd" just give up.  The result of this greater tolerance can be disconnected fragments in the display floating near the rest of the molecule and occasional bonds going where they simply shouldn't go at all, but it at least makes a more valiant effort.

2. The XYZ reader will now accept a file which appears to have as many as eight bond pointers, even though current molecules should never have more than four.  It differentiates Genome and Tinker files, which have an extra column giving an atom type, by noticing that most of these numbers don't work as bonds, so it eliminates the column entirely.

3. The XYZ reader now calls "stat" on the file before attempting to open it, and will only load the file data if the file has changed since the last time it was read.

4. The XYZ reader now detects bonds which are clearly too long relative to the atom sizes, and removes them.  Both Tinker and Gromacs seem to use fake bonds to prop open water and hydroxyl groups to the proper bond angles, rather than calculating the electrostatic repulsion of the positive charge regions.  These "bonds" are now removed in the display.

5. The maximum allowed number of atoms in the XYZ file has been raised from 3000 to 100000.  To keep from using a much larger static allocation of the data structures, the program now assigns the memory dynamically.

6. The configuration screen has been made much more compact.  The display quality and stereo depth adjustments now use slider widgets.

7. A new configuration slider allows adjustment of the relative sizes of the balls and sticks in the BS model display.

8. The configuration screen now allows selection of what models are eligible for selection, and what other modes can be changed, by the NEW VIEW button.

9. The configuration screen now allows selection of display modes in which all hydrogen atoms, or all water molecules, are removed from the display.  This is useful with XYZ files containing water solvent.

10. Some queue information changes supported in the latest version of "qd" are also reflected in the "fpd" QI screen.  The work deadline is shown if it is available, and processing speed relative to the deadline is also shown after at least one frame is completed.  Also, the client benchmark value is printed.

11. There was a bug in the display quality adjustment when in STEREO mode, which has been fixed.

12. The program now simply prints the version number and stops if it is given the "-version" flag.  It used to print the version number and then run normally.

13. A few display messages which would produce large amounts of output have been moved from debug level 2 to level 3.

14. The atom size scaling was slightly off in the last version.  It had been erroneously keying to the N-H bond instead of C-H.

==============

29 November 2002

v0.82: fixed "QI" screen compatibility problem introduced in v0.81

1. This was just a dumb bug.  I forgot to adjust the check for reading enough of the queue.dat file so it would still pass with the old shorter file.

==============

29 November 2002

v0.81: fixed "QI" screen to handle FAH v3.24 queue.dat file

1. In the FAH client version 3.24beta, the queue.dat file has had 16 bytes added to each entry, evidently at the very end.  This caused the "QI" screen in "fpd" to stop working.  This temporary version 0.81 of "fpd" compensates for the added bytes, but until I gather more information, it doesn't attempt to interpret them.

2. As always, there have been a few text changes, this time only affecting comments.

==============

26 November 2002

v0.8: automatic scaling of all XYZ files, general code cleanup

1. The XYZ file reader now automatically calculates the proper atomic scale factor, based on the length of the C-H bond.  This has become necessary not only because there are different scaling standards for Genome, Tinker, and Gromacs, but because recent Gromacs files have themselves had scale factors differing by a ratio of over two to one.

2. The C-H bond messages have been shifted from debug level 1 to level 2.

3. The debug level 1 message giving the molecule size scaling now also gives the atom size scaling.

4. Storage use has been reduced slightly by storing some data as (short) instead of (int).

5. The screen is now cleared at the end of "qd()" instead of at the beginning, which will reduce screen flicker if the file accesses take a noticeable time.

6. "qd()" has been partially rewritten to make it smaller and simpler.

7. The code overall has been cleaned up in various minor ways.

==============

16 November 2002

v0.7: improved handling of Genome XYZ files, fixed misidentifications in "AT" model display, tweaked text appearance

1. The XYZ file reader now stops after the number of atoms shown on the first line of the file (plus one atom for a Tinker file).  If it continues to EOF, the program will reject some Genome files, which often contain additional lines, sometimes with confusing information.

2. The last alpha carbon at the carboxyl end of the protein backbone was not properly identified, and was not displayed at all in the "AT" display model.  This has been fixed.

3. The identifying colors on the amino and carboxyl ends of the alpha carbon (protein backbone) chain were reversed.

4. There was a bug if both the folding directory and the XYZ file name were specified on the command line, and the file name began with a slash.  It will no longer prepend the directory name in this case, as it will in all others.

5. The protein name can now be terminated with either CR or LF on the first line of the XYZ file.  This fixes a bug in the window name when displaying an XYZ file imported unchanged from a Windows environment.

6. There is now a debug level 2 message warning about non-reciprocal bond information in the XYZ file.  Normally the bond information should be shown for both of the bonded atoms.  Such information will be discarded by "fpd" if it goes only one way, since these hanging bonds never seem to show anything sensible.

7. A debug level 1 message has been added which prints out the bond length of any explicit C - H bond identified in the molecule.  This is useful in checking the relative scaling of the molecule sizes in XYZ files from different sources.

8. The scaling of atom sizes relative to the interatom distances given in the XYZ file has been adjusted very slightly.  Assuming 1.000 for Genome, a factor of 0.991 is now used for Tinker, and 0.700 for Gromacs.  Without this, especially with a Gromacs file, the carbon atoms tend to swallow up the other atoms surrounding them in the display.

9. Text display has been adjusted in a few places to align printed characters better inside the areas sensitive to mouse motion.

==============

13 November 2002

v0.6: sped up the space-filling display, shrank alpha-trace objects slightly, and rescaled display quality.

1. The OpenGL rendering is now ordered so the nearest objects are drawn first.  This causes many later objects to be hidden, which is much faster than having to fully calculate them to overwrite the pixels.  The space-filling display can be faster by a factor of three to five if it is zoomed in so the molecule fills the screen.  Other displays are sped up somewhat, but not by so large an amount.

2. The spheres representing the alpha carbon atoms in the alpha-trace display, and the pseudo-bonds linking them, have all been made a little smaller and thinner.  This makes it a little easier to see the whole protein backbone.

3. The display quality selector has been rescaled so its normal range will be from -10 to +10, and because of the faster drawing, +10 is now set to produce even more accurate spheres.

4. A level 2 debug message has been added when the protein is found to have been capped at the amino end so the amino group is actually missing from the last alpha carbon atom.

==============

11 November 2002

v0.5: fixed bug in '%t' parameter in window title.

1. I forgot that "ctime" puts a newline at the end of its string.  With some window managers this messes up the "-title '%t'" display.  Fixed.

==============

10 November 2002

v0.4: added window title options and did a little more cleanup.

1. The window title can now be customized.  The old window name which was simply the protein name has been replaced with a function which formats the title according to a specification which can be supplied by the user.  The command-line argument to the new "-title" flag is a text which will be used literally as the window title, except that the sequence "%p" will be replaced by the protein name, "%h" by the host name of the machine "fpd" is running on, and "%t" by the current time.  The default title specification, which will be used if the "-title" flag isn't given, is "%p %t".

2. The text has been rearranged in a few places to simplify it.

3. One more call to "sprintf", and a call to "strcpy" have been fixed to protect against buffer overruns.

==============

9 November 2002

v0.3: no added features -- still trying to make it more likely to run in different environments.

1. My system makes no distinction in resource ID between an X Pixmap and a GLXPixmap, but possibly some environments do.  Three XCopyArea calls which were erroneously using the GLXPixmap ID have been changed to use the X Pixmap ID instead.

2. A small amount of cosmetic textual cleanup has been done, and a few loops have been recoded to run marginally faster.

3. Several calls to "sprintf" have been fixed to protect against buffer overruns.

4. The default debug level when the command-line parameter was out of range too large has been corrected from 0 to 9.

5. A bug in clearing a small region of the window when it is exposed at the top has been fixed.  The code was clearly wrong, but the misbehavior did not seem to be observable.

==============

9 November 2002

v0.2: no added features -- just trying to make it more likely to run in different environments.

1. Double buffered visuals supported.  Evidently on some systems that's the only kind available.

2. Changed the glXCreateContext call so it no longer asks for a direct rendering context if possible on a local machine.  Not all X environments support pixmaps in such contexts.

3. Added command-line flag "-version", to print out the "fpd" version string in case it doesn't run well enough to display it at the bottom of the options screen.

4. "No possible OpenGL visual" message changed to "Can't choose visual", because the error doesn't come from OpenGL but just the GLX extensions to X.

==============

8 November 2002

v0.1: first release.

==============