YARM: Yet Another Relaxation Matrix program
A program for performing nuclear spin relaxation calculations

Sections: Main | Using YARM | Subroutines | Theory | Samples | Resources
Subsections: Introduction | Version | What's New | Future | Authors
27 August, 1999
  • Autogenerated HTML pages has been introduced with the use of the generate_html.pl script.
  • Using perl modules (*.pm) instead of straight perl subroutines (*.pl) this means that YARm scripts begin with "use libYarm;" now, instead of "require XXXX". This will make variable scoping a little more sane.
  • v0.31
    27 August, 1999
  • The ability to calculate F-test and X^2 tables has been added. The program calcStats (run without arguments to see the help page) does this.
  • Introduction of data fitting routines. See the "fitFunction" and "fitMultiFunction" routines. Both use the "odrpack" library, and thus require it is installed.
  • name changes to many of the YARM subroutines to be consistent. The rule is "verbNoun", thus, for example, the subroutine "Angle_Calc" was changed to "calcAngle". Hopefully, this will be the last major subroutine name change.
  • Extensive rewriting of the manual, removed the frames.

  • v0.30
    12 August, 1999
  • The core NMR relaxation routines have been split into a seperate subdirectory from the rest of the YARM code, "src_libNRF". They now consist of a seperately compilable set of routines called the "NMR Relaxation Function library" (libNRF). This code is self contained and can be compiled against by other programs.
  • The concept of the "transition rates" being the code unit of exchange in YARM has been changed to the "spectral density function" to allow more efficient space usage and theory. This changes many of the core functions and allows YARM to work with the libNRF package.
  • Intramolecular dynamics calculations can now be performed using the "SpecDens2Min_Dyn" routine, which employs Monte Carlo simulations to calculate error analysis.
  • Rotational dynamics can be examine using the "Min_Rot_Dyn" routine, which employs Monte Carlo simulations to perform error analysis.
  • New data entry type, the "1D_Hash" file has been created to allow for easy input of experimental data (and errors). See "ReadData_1DHash" for how to use this.

  • v0.22 -> v0.29
    June -> August, 1999
  • Internal code updates, changing over to the "libNRF" methods

  • v0.21
    20 July, 1999
  • Bug fixes, last stable release before the major relaxation code changes

  • v0.19
    20 April, 1999
  • Many, many, many changes to the handling the CSA tensor. See perl/csa.pl, nearly every routine was rewritten. The new CSA methods allow the CSA to be accessed directly from within a YARM script, allow the CSA to be easily manipulated and allow the CSA data files to be much smaller.
  • The Euler angle calculations have been redone, in a hopefully more useful way. The algorithm for back calculating the Euler angles from a rotation matrix (calcEuler) has been reformulated.
  • The routines for calculating contour plots has been rewritten so one program is used for performing R1, R2, R2/R1 calculations, see TransRates2Contour.c
  • Many changes to the Makefile, in runs much cleaner now.
  • Many, many changes to the manual. Most notably, the "main" page has been removed, since it was completely out of date.

  • v0.18
    26 March, 1999
  • Fixed a bug in calculating the sign of interference terms, the sign should be decided by the coupling parameter (delta), not the angular terms. See "clm_interference_rank2" in clm.c, where the absolute value of the angular terms is used.
  • Combined the "TransRates2R1", and "TransRates2R2" programs, now called "TransRates2RelaxRates" and performs both functions.
  • Small matrices (such as the 3x3s involving coordinate transforms) are diagonalized using a Jacobian Rotation algorithm rather than the supplied routines from lapack. The results are "more accurate" for certain types of matrices, and the diagonalization is very fast. See math_functions.c for the code.

  • v0.17
    26 January, 1999
  • YarmModel{cutoff} value is implimented. Determines distance above which to ignore any interaction (dipolar and cross). Set to -1 or to nothing causes all interacions, regardless of distance, to be included.
  • Garcia de la Torre hydrodynamic calculations, see hydrolib.c and Hydro.c
  • Source code resides in subdirectories of "src" now, implimented recursive Makefiles.

  • v0.16
    13 December, 1998
  • Time evolution Iz magnetization can be calculated (see TransRates2Iz)
  • Major updates to the manual.

  • v0.15
    5 December, 1998
  • The fundamental data storage type from build_relax is now the transition rates, not the relaxation matrix rates. This should allow for calculation of either T1 or T2 type relaxation without needing two separate relaxation matrix calculations.
  • T2 relaxation works! See TransRates2T2.
  • A perl script to replicate Goldman's interference equations can be found in the "extra" directory. YARM can calculate the same results, when using isotropic rotation, and axially symmetric and aligned CSA tensors.
  • A new method of examining "axially aligned" CSA tensors has been developed. See "data/axial_dna/*".
  • A new variable "$NmrParams{cross_angle}" can be used to arbitrarily orient the principal axis of a CSA tensor WRT a dipolar vector. Using a value of "-1" will cause the CSA tensor to adopt the "correct" orientation.
  • Major updates to the manual.

  • v0.14
    16 November, 1998
  • The interference effects (cross relaxation) due to dipolar and CSA relaxation are being calculated (see clm.c, calc_clm_interference and yarm_lib.c calc_cross_relax).
  • Major updates to the manual.

  • v0.13
    30 October, 1998
  • New input hashes have been created/defined. %NmrParams now ONLY contains NMR parameter info and %YarmModel contains all the info for defining the Model of the molecule (ie: tumbling dynamics, structure and intermolecular dynamics). Calls to many of the subroutines now want these hashes to be supplied.
  • Orientation of CSA tensor has been added for anisotropic rotation. See "yarm_lib.c (calc_csa_relax)" and "hamiltonians.c (transform_csa_hamiltonian)" in the code if interested.
  • The Gaussian log files can now be used directly by YARM to extract CSA information. See the $yarm_home/data/* directories. Say goodbye to entering TONS of CSA tensor data manually (ala csa_lookup.pl in v0.11 and 0.12)!
  • Lipari-Szabo dynamics has been "re-added" in this now implimentation. It has been broken since v0.10. I am not sure if it is implimented correctly for the full matrix approach. This should be checked. Dyanamics info will be input to the C programs via a "yarm_input.dynamics" file.
  • In an attempt to remove as much LAPACK dependencies as possible, the "lapack_inverse" and "lapack_mat_mul" functions have been rewritten into the YARM code (see math_functions.c). They also perform better, but may not be as generally applicable as their LAPACK bretheren. Now only "lapack_eigen_symm" remains as the only LAPACK dependency... this one will be tough to replace...
  • A minimal "test_suite" program has been written. The idea is that this program will run a few standard tests on YARM, to insure the calculations are working correctly. In this early version of the program, it can calculate transition rate plots vs isotropic correlation times.
  • The rij distance and beta angle calculation has been sped up considerably.

  • v0.11 & 0.12
    30 September, 1998
  • All algorithms were rewritten in a form similar to Speiss (see references). This will allow for cross correlation to be implimented, and for the T2 relaxation matrix to be built, although neither feature has been implimented yet.
  • CSA tables for XTAL DNA monomers were added in "csa_lookup.pl"
  • The diffusion tensor is used to describe molecular tumbling, its input is found in the "yarm_input" file
  • Old versions of YARM are now being saved. Why? I don't know, but why not? The yarm_dev directories will now be named "yarm_dev-VERSION" where VERSION will be the version number, such as 0.11.
  • MANY MANY Makefile changes, such as using "find" for deleting object files, and automating the making of backup tarballs, etc.
  • Manual overhauls, once again. Much work on the CSA theory was added by George Coker.

  • v0.10
    7 September, 1998
  • The entire source was converted from C++ to C.
  • Chemical shift anisotropy was added to the relaxation matrix calcs
  • New "input" file format was introduced for the C programs, allowing for features to be turned "on or off" at will (such as using dipole and/or CSA in relaxation calculation)...
  • The "coutour_t1" and "contour_noe" programs were added to speed up the time required to calculate the often used RMS contour graphs. See Create_Tc_Contour_T1 and Create_Tc_Contour_Noe subroutines.
  • This manual was completely overhauled

  • v0.9
    15 January, 1998
  • Many bug fixes, first actually stable release

  • v0.8
    18 December, 1997
  • Use "Sim_Vol" for all your NOE simulations. It handles iso and aniso molecular tumbling, rigid and order parameter dynamics. I will phase out the "Calc_Vol_Iso" and "Calc_Vol_Aniso" subs, so start converting.
  • This manual was completely overhauled
  • Many minor bug fixes

  • v0.7
    21 November, 1997
  • Structure refinement works!!! See Refine_Iso and Refine_Aniso for how to use these routines. Basically, you feed them a starting structural model (this could even be random atomic coordinates) and your experimental NOE data, the routine returns a %rij hash, which you can then feed to Xplor_Write (or Xplor_Write2) to generate an Xplor Restraint file!
  • Add_Segids subroutine will add segids to molecules that are not symmetrical (Make_Symm_Molecule works for symmetrical molecules).

  • v0.6
    07 November, 1997
  • The installation makefile works on SGIs using the GNU C++ compiler, and the built in libraries "complib.sgimath" and "ftn", which means that the SGIs do NOT need to install the LAPACK and BLAS routines in order to use YARM!
  • C++ routines have been rewritten. These changes are just aesthetic in nature and should not affect the use of YARM.
  • Two class definitions have been added: 1) NmrParams object which calculates and stores all NMR relaxation parameter information (transition rates, etc..) and 2) Structure object which hold coordinates of structures, rij matrices, beta angle matrices, etc...
  • Because of these new class definitions, the C++ programs have become very simple to understand, check them out! The "meat" of the program now resides in the class definitions themselves (structure.c and nmr_relax.c).
  • Memory for matrices and arrays is dynamically allocated correctly. See "myalloc.h and myalloc.c". This is a good thing.

  • v0.5
    24 October, 1997
  • WARNING: Many subroutines have been rewritten, and they may take or return different arguments. YARM scripts from version 0.4 and earlier may not work!
  • Segment IDs can be used in all subroutines (XPLOR type segids)
  • Many subroutines were rewritten to allow for optional use of reference hashes
  • Calc_Merged_Rij_Iso, initial structure refinement subroutines have been added
  • Print_Rij_Comparison
  • Make_Symm_Molecule for converting Felix volume hashes into symmetric molecules with segment IDs (ala XPLOR)
  • Norm_Hash now supports normalizing by summing all atom pairs as well as selected sets
  • Stats supports Q^(1/6) calculations
  • Xplor_Write exports Rij hashes to a XPLOR distance restraint file
  • Dickerson dodecomer PDB files are available: A-form, B-form, NMR structure and the X-Ray structure

  • v0.4
    8 October, 1997
  • Anisotropic rotation works!
  • F95_Read_Merge is all you need for reading felix95 peaks/volumes files and merging them.
  • User_Input does can be used to ask the user for the standard NMR parameters

  • v0.3
    24 September, 1997
  • Rewrote all the linear algebra routines in C++ (see rate2vol.c and vol2rate.c). They take advantage of the "LAPACK" routines available at www.netlib.org which have been installed on bass.chem.yale.edu. If you are interested, notice how the LAPACK routines are accessed in the C++ routines...
  • Added the module comp_vol that allows you to do statistical analysis between volume sets.

  • v0.2
    18 September, 1997
  • Added enough new modules to allow you to calculate a volumes matrix from a model structure.
  • Changes the nomenclature of the subroutines to have capitalized first letters, to make the code more readable.

  • v0.1
    14 September, 1997
  • Rewrote the program called "rate_matrix.pl" into a series of perl subroutines.