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
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
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
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
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
8. On the QI screen, the fraction complete and speed factor are
now printed to the right of the beginning and expected completion
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)
11. Several OpenGL rendering modes which just made the display
slower have been shut off.
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)
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
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
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
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
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
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
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
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
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
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
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
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.
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
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.