Star anise (Illicium verum) contains anethole, the same organic compound that gives the unrelated aniseed its flavour.  Recently, star anise has come into use in the West as a less expensive substitute for aniseed in baking as well as in liqueur production, most distinctively in the production of the liqueur Galliano.  It is also used in the production of sambuca, pastis, and many types of absinthe.  Star anise enhances the flavour of meat.  It is used as a spice in preparation of biryani and masala chai all over the Indian subcontinent.  It is widely used in both Chinese and Indian cuisine where it is a major component of garam masala, also in Malay and Indonesian cuisine.  It is widely grown for commercial use in China, India, and most other countries in Asia.  Star anise is an ingredient of the traditional 5-spice powder of Chinese cooking.  It is also a major ingredient in the making of phσ, a Vietnamese noodle soup.  [Source: Wikipedia].


This program determines two related but potentially quite different anisotropies of the reflection data:
  1. The anisotropy of the I/σ(I) distribution; this is determined by taking the local average of I/σ(I), weighted inversely by reciprocal distance from the reflection whose mean I/σ(I) is to be determined.

    No assumptions whatsoever are made about the functional form of the anisotropy of the I/σ(I) distribution: it is likely to be totally arbitrary (and not even necessarily ellipsoidal), since it will depend on the reflection redundancy which in practice will vary arbitrarily throughout reciprocal space, depending on the data collection strategy.

  2. The anisotropy of the I/<I> distribution, where <I> is the expected value of I based on the idealized isotropic I distribution.  This anisotropy is determined by optimization of either the likelihood function proposed by Popov & Bourenkov (2003) or one obtained by marginalising out the true intensity from the French & Wilson (1978) posterior likelihood function.  The important difference is that the P & B function does not account for experimental errors whereas the F & W one does.

    In contrast to the distribution of I/σ(I) it is assumed that the anisotropy of the I/<I> distribution may be represented by a smoothly varying ellipsoidal function of the same form as the standard anisotropic temperature factor (but constrained to the point-group symmetry in the case of merged data).  An optimal collection strategy will be one in which the σ(I) are varied in such a way as to remove as much of the anisotropy of I/σ(I) as possible.  However any anisotropy of the I/<I> distribution will always remain since it is a property of the crystal and does not depend on the collection strategy.

If the distribution of I is anisotropic then the standard uncertainty of I, i.e. σ(I), will normally also have an anisotropic distribution since under default data collection conditions σ(I) is positively correlated with I.  Hence in this situation the anisotropy of I/σ(I), which determines the anisotropic diffraction cut-off, will be different (in fact less) than the anisotropy of I/<I> which is used to determine the anisotropy correction of I and/or <I>.

STARANISO also perform Bayesian estimation of structure amplitudes by the method of French & Wilson [1978], but using the anisotropic prior in place of the traditional isotropic prior originally suggested by F & W.  STARANISO incorporates subroutines from the Netlib repository, in place of the approximate look-up tables used in TRUNCATE, to compute high-accuracy parabolic cylinder functions (scaled to avoid numerical under/overflow issues: Gil et al. [2006]) and thereby obtain all the required moments.

Intensities used in averaging are corrected for the symmetry enhancement factor ε.  However only reflections in lines containing systematic absences due to screw axes (or zones in the case of glide planes) are corrected for the symmetry factor; any absent reflections present in the input file are ignored and are not included in the averages.  Reflections lying on pure rotation axes or mirror planes are not corrected when taking averages (for the explanation of why it's not correct to do so see Wilson, 1987).  Note that the CCP4 library routines for calculating ε do not distinguish properly between these cases.


Blessing, R.H, Guo, D.Y. & Langs, D.A. (1996) "Statistical expectation value of the Debye-Waller factor and Ehkl values for macromolecular crystals". Acta Cryst. D52, 257-66.

French, S. & Wilson, K.S. (1978) "On the treatment of negative intensity observations". Acta Cryst. A34, 517-525.  See also: "Bayesian treatment of negative intensity measurements in crystallography".

Gil, A., Segura, J. & Temme, N.M. (2006) "Algorithm 850: Real parabolic cylinder functions U(a,x), V(a,x)." ACM Transactions on Mathematical Software (TOMS). 32, 102-12.  See also: "Computing the real parabolic cylinder functions U(a,x), V(a,x)".

Morris, R.J., Blanc, E. & Bricogne, G. (2003) "On the interpretation and use of <|E|2>(d*) profiles." Acta Cryst. D60, 227-40.

Popov, A.N. & Bourenkov, G.P. (2003) "Choice of data-collection parameters based on statistical modelling". Acta Cryst. D59, 1145-53.

Wilson, A.J.C. (1987) "Treatment of enhanced zones and rows in normalizing intensities". Acta Cryst. A43, 250-2.



Example 1

This uses all default settings.
echo |staraniso HKLIN in.mtz HKLOUT out.mtz >run.log

Example 2

This demonstrates setting multiple options, including changing the output MTZ labels for non-anomalous data (normally this should not be necessary, unless there are already labels 'F' & 'SIGF').  Note that the 'SIGF_new' label is automatically generated; it cannot be changed independently of the 'F_new' label.
echo DISP=t,LABF=F_new |staraniso HKLIN in.mtz HKLOUT out.mtz >run.log

Example 3

This demonstrates how to change the output MTZ labels for anomalous data; again this should be unnecessary unless there are duplicate labels.  The labels constitute a text array with elements separated by spaces.  Note also the quoting of labels containing special characters, in this case '(' & ')' to avoid interception by the shell which would generate a message like "Badly placed ()'s".  Paired single or double quotes may be used, the difference being that in Unix shells double quotes do not escape $ or `.  In Unix shells all the following characters have special meanings when appearing unescaped or unquoted on the command line: `!"$%^&*()[]{};:'#~\|<>? and multiple spaces.  Note that the shell removes the outer quotes and passes the remaining strings to the program.  This means that if the program itself requires quotes in its input (e.g. because = , and multiple spaces are special in the NAMELIST input), then nested quotes ("'...'" or '"..."') must be used.
echo LABF=F_new 'F(+)_new' 'F(-)_new' DANO_new ISYM_new \
|staraniso HKLIN in.mtz HKLOUT out.mtz >run.log

Example 4

This demonstrates what may be a simpler alternative to the previous examples if special characters are present in the input.  In this example options are read from a 'here' document (indicated by <<); in this case quotes are unnecessary because the brackets & many other special characters in a 'here' document are not interpreted by Unix shells.  For example only $ and ` are special in an unquoted 'here' document, and there are no special characters in a quoted 'here' document (i.e.using <<'EOF')..  Note that 'key=value' pairs may be comma-separated (as in the previous example) or they may be given on separate lines.
staraniso HKLIN in.mtz HKLOUT out.mtz <<EOF >run.log
LABF=F_new F(+)_new F(-)_new DANO_new ISYM_new