New features

Note: New features are listed in reverse chronoligical order not in order of their importance

Version Feature id Feature description Requested by

refmac 5.8 series

5.8.0023 Scaling New function for scaling has been added (by default this function is used for scaling):

sum_h log (cosh (w_h (F_o-Scale F_c))

where w_h = 1/sigma_o or 1
Fc = |F_pr+scale_mask F_mask| - total calculated structure factor

scale is overall scale factor that may include anisotropic B factor as well as bulk solvent contribution.

Keywords to select particular scaling option is:

scale lsscale function l | a sigma u | n

if selected function is l then standard least-squares residual is minimised, if a is selected then above function is minimised. If sigma is selected u then observed sigmas are used in scaling.

scale lsscale function l sigma n # It is default behaviour

Use robust (above equation) estimator, however do not use sigmas.
Local restraint removal Note: You should never use this unless you know exactly what you are doing

Now a user can remove restraints for defined atoms. The following keyword will give signals to refmac to remove all restraints for defined atoms:

restraint exclude residue from [residue] [chain] to [residue] [chain] atoms [atom list]
restraint exclude residue [number] [chain] atoms [atom list]
restraint exclude chain [chain list]
restraint exclude atoms [atom list]

restraint exclude residue from 10 A to 100 A atoms C* OD*
Different weights on hydrogens restraints It is now possible to define differentweights for refined and not-refined (usually hydrogens) atoms for bond and angle restraints. Keyword controlling the weight is:

weight refined_atoms [value]
weight other_atoms [value]

Final weights for bond and angle restraints are calculated using the formula:
w = w_1 w_r (1/sigma^2)
Where w_1 is the weights for refined or other atoms w_r is the contribution from robust (GM estimator) estimator, sigma is the uncertainty defined in the dictionary or defined by the external restraints
Mauro Rinaldelli
Different weights on for peptide and other planes If you define:
plane [value1] [value2]

then poeptide and other planes will have different weights. The final weight for a given planarity restraint is calculated using:
w = w_1 (value_i /sigma)^2 where w_1 is the weight for refined atoms, value_i is the value for non-peptide and peptide planes defined with the above keyword, sigma is the uncertainty defined in the dictionary
Mauro Rinaldelli
Simple outlier removal For map calculation if differences is very large they can be removed. It can be controled using the keyword:
mapcalcute remove_difference [alpha] # (default value is 100)

Map coefficients are be calculated using the formula:
DELFWT = mFo-DFc , if |mFo-DFc| < alpha Sigma and 0 otherwise
Sigma estimation Now refmac uses experimental uncertainties for sigma estimation. It minimises the following formula (Rice distribution with observed sigmas added (this formula is for acentric case. The program uses appropriate formula for centric cases ):

sum_h (Fo^2+D^2Fc^2)/(SS) - log(I_0 (2 D Fo Fc/SS) + log(SS)

where SS = 2 sigma^2 + Sigma , sigma is uncertainty of the observed F, D and Sigma have same meaning as in usual sence.
Multiple ideal angle and bond values Now angles and bonds can have multiple target value (they can be in the dictionary or defined by the external restraints tool). If a bond or angle have more than one target value then REFMAC selects target value that is the closest at every cycle of refinement. -
Auto NCS enhancement Now minimum chain length for alignement and the number of residues used for local RMS can be controlled using the following keywords:

ncsr align mlength [value]

# minumum length of chains that can be aligned. If the length of chain is smaller than this value then no alignmen ti sperformed

ncsr align rmslength [value]

Number of residues used for local alignment.

ncsr align mlength 10
ncsr align rmslength 5

refmac 5.7 series

5.7.0021 Hbond restraints For given external restraints instructions refmac now can select only potential H bond capable atoms. Distances or any other info are not used in selection. Only info used is atoms' Hbond capability. If one of the atoms is acceptor then another one must be donor or donor/acceptor. -
External restraint info Refmac now prints general info about external restraints. For example:
 External restraints group   :            1
 External restraints file    :input_keywords
 Fail if one of the atoms involved in the restraints is missing in the pdb file
 Use potential hydrogen bonds only
 Ignore restraints if abs(dmod-drest) >    50.000000     *sigma
 Ignore retraints if input dist >    4.1999998    
 Weight scale sigmas         :   1.0000000    
 Weight min sigma            :   0.0000000    
 Weight max sigma            :   100.00000    
 GM parameter                :  0.10000000    
 Number of distances         :          54
 Number of angles            :           0
 Number of torsions          :           0
 Number of planes            :           0
 Number of chirals           :           0
 Number of intervals         :           0
Selective jelly body Now different part of the sttructure can have different jelly body parameters (sigmas and maximum distances). The following keywords can be used for this purpose:
ridge distance within chain [chain] residues [res1] [res2] sigma [sigma] dmax [dmax]
If one such instruction is given then it is assumed that only regions of the structure defined by this type instructions should be restrained.
If a user wants to restraints whole structure by default parameters and some parts with user defined parameters then the following instruction should be added:
ridge distance include all
5.7.0020 B only Now it is possible to refine B values only. It can be done using the following:

refinement bonly

Current implemtation is very simple: All calculations are done like normal full refinement and only shifts for B values are applied. Shifts on the positional parameters are ignored. B values refinement as usual can be isotropic, anisotropic or mixed
Lars Goerigk
Residue contacts Print out contacts between residues: include only intermolecular(subunits) and symmetry related contacts. Do not include intramolecular contacts. It can be done if refmac run in command line:

refmac5 xyzin pdbfile nonb_out contact_file << eof
mode calculate
make hydrogens no

In this case refmac will write out file with all contacts between molecules (including symmetry related) and stop
Hydrogens in jelly body Now there is an option to include/exclude hydrogens in jelly body restraints. Default option is to exclude. In the previous version hydrogens were used in jelly body restraints. the keyword to include exlcude hydrogens is:

ridge dist hydrogens incl # include hydrogens
ridge dist hydrogens excl # exclude hydrogens - default option

5.7.0014 Total LS SF It is a long standing feature request (or bug, depending on your point of view). Now refmac writes to the output mtz file total least-squares scaled structure factors with mtz labels F_ALL_LS, PHIC_ALL_LS From my memeory: Phil Evans, James Holton, Ian Tickle and few others
Long range B In the few previous version B values were applied between atoms apart from each other up to 4-6A. Now this number can be controlled by user. Instruction controlling long range B value restraints is:
bfactor dmax [value]
Default value is 3.6A
0 cycle NB outliers For several version the program would not print non-bonded interaction outliers. Now it prints out them Yong Y Wang
5.7.0013 Stop Signal Now program can be terminated during its run. It can either be terminated unconditionally or if one of the conditions is fullfilled: Rfactor is too higher, Rfree is too high, Rfactor jump is too high, Rfree jump is too high, differences between R and Rfree is too high.
Instructions determining termination are:

kill [file_name] # It is a signal that the program can be terminated and termination signals are in the file - file_name
File may contain one of the following instructions

stop # Unconditional termination
rfactor value # if Rfactor > value then terminate
rfree value # if Rfree > value then terminate
delta rfactor value # if rfactor jump > value then terminate
delta rfree value # if rfree jump > value then terminate
delta rrfree value # if Rfree-R > value then terminate
Many pipeline developers and R.Joosten