[gmx-users] g_principal -- bug or very bad choice of filenames

Antonio Baptista baptista at itqb.unl.pt
Tue Feb 18 23:46:14 CET 2014

On Fri, 7 Feb 2014, Justin Lemkul wrote:

> On 2/7/14, 6:08 PM, Antonio Baptista wrote:
>> Dear all,
>> This is a follow-up to an old thread on g_principal, which continues (as of
>> version 4.6.5) to suffer from what I would call a bug or, at least, a very 
>> bad
>> and misleading choice of output file names. This message is primarily a 
>> further
>> warning to users, but I also hope that it promotes the solution of the 
>> problem
>> (I explicitly indicate below the small required code changes).
>> The program g_principal "calculates the three principal axes of inertia for 
>> a
>> group of atoms" and generates three output files with the default names
>> axis{1,2,3}.dat. Although the content of these files is not explained, 
>> their
>> names naturally suggest that axisN.dat contains the xyz components of the 
>> Nth
>> principal axis (presumably in the conventional major-to-minor order). 
>> Indeed,
>> each of these files contains (besides the time) 3 real values per frame, 
>> and
>> this interpretation also yields three vectors which are orthonormal, as one
>> would expect for the new frame defining the principal axes.
>> However, this "natural" interpretation is wrong, and not because of a 
>> different
>> axes order. As correctly identified by Chris Neale in the message included
>> below, the file axis1.dat contains the x components of the 1st, 2nd and 3rd
>> axes, the file axis2.dat their y components, and the file axis3.dat their z
>> components (he checked with VMD, we did it with in-house programs in C and
>> Octave). I think this a rather convoluted and extremely misleading way to 
>> output
>> the principal axes.
>> My guess is that this problem derives from a simple confusion between the 
>> form
>> of the orthogonal matrix obtained when solving the eigenvalue problem --
>> depending on the adopted algorithm, the vectors defining the new basis (the
>> principal axes) can be either the columns or the rows of this matrix. I 
>> didn't
>> look beyond gmx_principal.c, but the problem can be easily solved there by
>> replacing the current lines
>>          fprintf(axis1, "%15.10f     %15.10f  %15.10f  %15.10f\n", t,
>> axes[XX][XX], axes[YY][XX], axes[ZZ][XX]);
>>          fprintf(axis2, "%15.10f     %15.10f  %15.10f  %15.10f\n", t,
>> axes[XX][YY], axes[YY][YY], axes[ZZ][YY]);
>>          fprintf(axis3, "%15.10f     %15.10f  %15.10f  %15.10f\n", t,
>> axes[XX][ZZ], axes[YY][ZZ], axes[ZZ][ZZ]);
>> with
>>          fprintf(axis1, "%15.10f     %15.10f  %15.10f  %15.10f\n", t,
>> axes[XX][XX], axes[XX][YY], axes[XX][ZZ]);
>>          fprintf(axis2, "%15.10f     %15.10f  %15.10f  %15.10f\n", t,
>> axes[YY][XX], axes[YY][YY], axes[YY][ZZ]);
>>          fprintf(axis3, "%15.10f     %15.10f  %15.10f  %15.10f\n", t,
>> axes[ZZ][XX], axes[ZZ][YY], axes[ZZ][ZZ]);
>> With this change, the file names would make perfect sense, with axisN.dat 
>> simply
>> containing the components of the Nth principal axis. (Note that both the 
>> by-row
>> and by-column readings give orthonormal vectors, because this is an 
>> orthogonal
>> matrix.)
>> The file moi.dat also produced by g_principal is fine, containing the 
>> moments of
>> inertia along the principal axes in the proper order (lowest to highest, 
>> since
>> the inertia _around_ those axes increases as one goes from the major to the 
>> minor).
>> I believe that, as it stands now, g_principal is misleading many users into 
>> the
>> wrong interpretation of its output. Maybe some developer wants to have a 
>> look at
>> this issue and introduce my suggested fix.
> Please file an issue on redmine.gromacs.org with all of the above 
> information. Thanks for the thorough report!

More than a weak later, http://redmine.gromacs.org/login keeps telling me 
that "Your account was created and is now pending administrator approval." 
Is this normal? Or maybe I missed some email message...


> -Justin
> -- 
> ==================================================
> Justin A. Lemkul, Ph.D.
> Postdoctoral Fellow
> Department of Pharmaceutical Sciences
> School of Pharmacy
> Health Sciences Facility II, Room 601
> University of Maryland, Baltimore
> 20 Penn St.
> Baltimore, MD 21201
> jalemkul at outerbanks.umaryland.edu | (410) 706-7441
> http://mackerell.umaryland.edu/~jalemkul
> ==================================================
> -- 
> Gromacs Users mailing list
> * Please search the archive at 
> http://www.gromacs.org/Support/Mailing_Lists/GMX-Users_List before posting!
> * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists
> * For (un)subscribe requests visit
> https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users or send a 
> mail to gmx-users-request at gromacs.org.

More information about the gromacs.org_gmx-users mailing list