Hi there,

I was just pointed to this thread and should comment on the discussion, as
actually made the plots for this paper. James has clarified the issue much
better than I could have, and indeed the calculations will fail for larger
Bragg angles if you do not assume a reasonable B-factor (I used B=10 for
the plots).

Doug Rees has pointed out at the time that for large theta the c-term of
the Cromer/Mann approximation becomes dominant, and this is where chaos
comes in, as the Cromer/Mann parameters are only derived from a fit to the
actual HF-calculation. They are numbers without physical meaning, which
becomes particularly obvious if you compare the parameters for C and N:


C:   2.3100  20.8439   1.0200  10.2075   1.5886  0.5687  0.8650  51.6512
 0.2156
N:  12.2126  0.0057   3.1322  9.8933   2.0125  28.9975  1.1663  0.5826
-11.5290

The scattering factors for these are reasonably similar, but the c-values
are entirely different. The B-factor dampens this out and this is an
essential point.



For clarity: I made the plots using Waterloo Maple with the following code:

restart;
SF :=Matrix(17,9,readdata("scatter.dat",float,9));

biso := 10;
e    :=  1;
AFF  := (e)->(SF[e,1]*exp(-SF[e,2]*s^2)+SF[e,3]*exp(-SF[e,4]*s^2)
            +SF[e,5]*exp(-SF[e,6]*s^2)+SF[e,7]*exp(-SF[e,8]*s^2)
            +SF[e,9])*exp(-biso*s^2/4);

H    :=  AFF(1);
C    :=  AFF(2);
N    :=  AFF(3);
Ox   :=  AFF(4);
S    :=  AFF(5);
Fe   :=  AFF(6);
Fe2  :=  AFF(7);
Fe3  :=  AFF(8);
Cu   :=  AFF(9);
Cu1  :=  AFF(10);
Cu2  :=  AFF(11);
Mo   :=  AFF(12);
Mo4  :=  AFF(13);
Mo5  :=  AFF(14);
Mo6  :=  AFF(15);

// Plot scattering factors
 
plot([C,N,Fe,S], s=0..1);


// Figure 1:

rho0 := (r) ->  Int((4*Pi*s^2)*Fe2*sin(2*Pi*s*r)/(2*Pi*s*r), s=0..1/dmax);
dmax := 1.0;
plot (rho0, -5..5);


// Figure 1 (inset): Electron Density Profile

rho := (r,f) ->(Int((4*Pi*s^2)*f*sin(2*Pi*s*r)/(2*Pi*s*r),s=0..1/dmax));
cofactor:= 9*rho(3.3,S) + 6*rho(2.0,Fe2) + 1*rho(3.49,Mo6) +
1*rho(3.51,Fe3);
plot(cofactor, dmax=0.5..3.5);


The file scatter.dat is simply a collection of some form factors, courtesy
of atomsf.lib (see attachment).



Cheers,

Oliver.



Am 9/17/12 11:24 AM schrieb "Tim Gruene" unter <t...@shelx.uni-ac.gwdg.de>:

>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1
>
>Dear James et al.,
>
>so to summarise, the answer to Niu's question is that he must add a
>factor of e^(-Bs^2) to the formula of Cromer/Mann and then adjust the
>value of B until it matches the inset. Given that you claim
>rho=0.025e/A^3 (I assume for 1/dmax approx. 0) for B=12 and the inset
>shows a value of about 0.6, a somewhat higher B-value should work.
>
>Cheers,
>Tim
>
>On 09/17/2012 08:32 AM, James Holton wrote:
>> Yes, the constant term in the "5-Gaussian" structure factor tables does
>> become annoying when you try to plot electron density in real space, but
>> only if you try to make the B factor zero.  If the B factors are ~12
>> (like they are in 1m1n), then the electron density 2.0 A from an Fe atom
>> is not -0.2 e-/A^3, it is 0.025 e-/A^3. This is only 1% of the electron
>> density at the center of a nitrogen atom with the same B factor.
>> 
>> But if you do set the B factor to zero, then the electron density at the
>> center of any atom (using the 5-Gaussian model) is infinity.  To put it
>> in gnuplot-ish, the structure factor of Fe (in reciprocal space) can be
>> plotted with this function:
>> 
>>Fe_sf(s)=Fe_a1*exp(-Fe_b1*s*s)+Fe_a2*exp(-Fe_b2*s*s)+Fe_a3*exp(-Fe_b3*s*s
>>)+Fe_a4*exp(-Fe_b4*s*s)+Fe_c
>> 
>> 
>> where:
>> Fe_c = 1.036900;
>> Fe_a1 = 11.769500; Fe_a2 = 7.357300; Fe_a3 = 3.522200; Fe_a4 = 2.304500;
>> Fe_b1 = 4.761100; Fe_b2 = 0.307200; Fe_b3 = 15.353500; Fe_b4 =
>>76.880501;
>> and "s" is sin(theta)/lambda
>> 
>> applying a B factor is then just multiplication by exp(-B*s*s)
>> 
>> 
>> Since the terms are all Gaussians, the inverse Fourier transform can
>> actually be done analytically, giving the real-space version, or the
>> expression for electron density vs distance from the nucleus (r):
>> 
>> Fe_ff(r,B) = \
>>   +Fe_a1*(4*pi/(Fe_b1+B))**1.5*safexp(-4*pi**2/(Fe_b1+B)*r*r) \
>>   +Fe_a2*(4*pi/(Fe_b2+B))**1.5*safexp(-4*pi**2/(Fe_b2+B)*r*r) \
>>   +Fe_a3*(4*pi/(Fe_b3+B))**1.5*safexp(-4*pi**2/(Fe_b3+B)*r*r) \
>>   +Fe_a4*(4*pi/(Fe_b4+B))**1.5*safexp(-4*pi**2/(Fe_b4+B)*r*r) \
>>   +Fe_c *(4*pi/(B))**1.5*safexp(-4*pi**2/(B)*r*r);
>> 
>> Where here applying a B factor requires folding it into each Gaussian
>> term.  Notice how the Fe_c term blows up as B->0? This is where most of
>> the series-termination effects come from. If you want the above
>> equations for other atoms, you can get them from here:
>> http://bl831.als.lbl.gov/~jamesh/pickup/all_atomsf.gnuplot
>> http://bl831.als.lbl.gov/~jamesh/pickup/all_atomff.gnuplot
>> 
>> This "infinitely sharp spike problem" seems to have led some people to
>> conclude that a zero B factor is non-physical, but nothing could be
>> further from the truth!  The scattering from mono-atomic gasses is an
>> excellent example of how one can observe the B=0 structure factor.   In
>> fact, gas scattering is how the quantum mechanical self-consistent field
>> calculations of electron clouds around atoms was experimentally
>> verified.  Does this mean that there really is an infinitely sharp
>> "spike" in the middle of every atom?  Of course not.  But there is a
>> "very" sharp spike.
>> 
>> So, the problem of "infinite density" at the nucleus is really just an
>> artifact of the 5-Gaussian formalism.  Strictly speaking, the
>> "5-Gaussian" structure factor representation you find in
>> ${CLIBD}/atomsf.lib (or Table 6.1.1.4 in the International Tables volume
>> C) is nothing more than a curve fit to the "true" values listed in ITC
>> volume C tables 6.1.1.1 (neutral atoms) and 6.1.1.3 (ions).  These
>> latter tables are the Fourier transform of the "true" electron density
>> distribution around a particular atom/ion obtained from quantum
>> mechanical self-consistent field calculations (like those of Cromer,
>> Mann and many others).
>> 
>> The important thing to realize is that the fit was done in _reciprocal_
>> space, and if you look carefully at tables 6.1.1.1 and 6.1.1.3, you can
>> see that even at REALLY high angle (sin(theta)/lambda = 6, or 0.083 A
>> resolution) there is still significant elastic scattering from the
>> heavier atoms.  The purpose of the "constant term" in the 5-Gaussian
>> representation is to try and capture this high-angle "tail", and for the
>> really heavy atoms this can be more than 5 electron equivalents.  In
>> real space, this is equivalent to saying that about 5 electrons are
>> located within at least ~0.03 A of the nucleus.  That's a very short
>> distance, but it is also not zero.  This is because the first few shells
>> of electrons around things like a Uranium nucleus actually are very
>> small and dense.  How, then, can we have any hope of modelling heavy
>> atoms properly without using a map grid sampling of 0.01A ?  Easy!  The
>> B factors are never zero.
>> 
>> Even for a truly infinitely sharp peak (aka a single electron), it
>> doesn't take much of a B factor to spread it out to a reasonable size.
>> For example, applying a B factor of 9 to a point charge will give it a
>> full-width-half max (FWHM) of 0.8 A, the same as the "diameter" of a
>> carbon atom.  A carbon atom with B=12 has FWHM = 1.1 A, the same as a
>> "point" charge with B=16.  Carbon at B=80 and a point with B=93 both
>> have FWHM = 2.6 A.  As the B factor becomes larger and larger, it tends
>> to dominate the atomic shape (looks like a single Gaussian).  This is
>> why it is so hard to assign atom types from density alone.  In fact,
>> with B=80, a Uranium atom at 1/100th occupancy is essentially
>> indistinguishable from a hydrogen atom. That is, even a modest B factor
>> pretty much "washes out" any sharp features the atoms might have.
>> Sometimes I wonder why we bother with "form factors" at all, since at
>> modest resolutions all we really need is Z (the atomic number) and the B
>> factor.  But, then again, I suppose it doesn't hurt either.
>> 
>> 
>> So, what does this have to do with series termination?  Series
>> termination arises in the inverse Fourier transform (making a map from
>> structure factors).  Technically, the "tails" of a Gaussian never reach
>> zero, so any sort of "resolution cutoff" always introduces some error
>> into the electron density calculation.  That is, if you create an
>> arbitrary electron-density map, convert it into structure factors and
>> then "fft" it back, you do _not_ get the same map that you started
>> with!  How much do they differ? Depends on the RMS value of the
>> high-angle structure factors that have been cut off (Parseval's
>> theorem).  The "infinitely sharp spike" problem exacerbates this,
>> because the B=0 structure factors do not tend toward zero as fast as a
>> Gaussian with the "atomic width" would.
>> 
>> So, for a given resolution, when does the B factor get "too sharp"?
>> Well, for "protein" atoms, the following B factors will introduce an rms
>> error in the electron density map equal to about 5% of the peak height
>> of the atoms when the data are cut to the following resolution:
>> d     B
>> 1.0 <5
>> 1.5 8
>> 2.0 27
>> 2.5 45
>> 3.0 65
>> 3.5 86
>> 4.0 >99
>> 
>> smaller B factors than this will introduce more than 5% error at each of
>> these resolutions.  Now, of course, one is often not nearly as concerned
>> with the average error in the map as you are with the error at a
>> particular point of interest, but the above numbers can serve as a rough
>> guide.  If you want to see the series-termination error at a particular
>> point in the map, you will have to calculate the "true" map of your
>> model (using a program like SFALL), and then run the map back and forth
>> through the Fourier transform and resolution cutoff (such as with SFALL
>> and FFT).  You can then use MAPMAN or Chimera to probe the electron
>> density at the point of interest.
>> 
>> But, to answer the OP's question, I would not recommend trying to do
>> fancy map interpretation to identify a mystery atom.  Instead, just
>> refine the occupancy of the mystery atom and see where that goes.
>> Perhaps jiggling the rest of the molecule with "kick maps" to see how
>> stable the occupancy is.  Since refinement only does forward-FFTs, it is
>> formally insensitive to series termination errors.  It is only map
>> calculation where series termination can become a problem.
>> 
>> Thanks to Garib for clearing up that last point for me!
>> 
>> -James Holton
>> MAD Scientist
>> 
>> 
>> On 9/15/2012 3:12 AM, Tim Gruene wrote:
>> Dear Ian,
>> 
>> provided that f(s) is given by the formula in the Cromer/Mann article,
>> which I believe we have agreed on, the inset of Fig.1 of the Science
>> article we are talking about is claimed to be the graph of the
>> function g, which I added as pdf to this email for better readability.
>> 
>> Irrespective of what has been plotted in any other article meantioned
>> throughout this thread, this claim is incorrect, given a_i, b_i, c > 0.
>> 
>> I am sure you can figure this out yourself. My argument was not
>> involving mathematical programs but only one-dimensional calculus.
>> 
>> Cheers,
>> Tim
>> 
>> On 09/14/2012 04:46 PM, Ian Tickle wrote:
>>>>> On 14 September 2012 15:15, Tim Gruene <t...@shelx.uni-ac.gwdg.de>
>>>>> wrote:
>>>>>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
>>>>>>
>>>>>> Hello Ian,
>>>>>>
>>>>>> your article describes f(s) as sum of four Gaussians, which is
>>>>>> not the same f(s) from Cromer's and Mann's paper and the one used
>>>>>> both by Niu and me. Here, f(s) contains a constant, as I pointed
>>>>>> out to in my response, which makes the integral oscillate between
>>>>>> plus and minus infinity as the upper integral border (called
>>>>>> 1/dmax in the article Niu refers to) goes to infinity).
>>>>>>
>>>>>> Maybe you can shed some light on why your article uses a
>>>>>> different f(s) than Cromer/Mann. This explanation might be the
>>>>>> answer to Nius question, I reckon, and feed my curiosity, too.
>>>>> Tim & Niu, oops yes a small slip in the paper there, it should
>>>>> have read "4 Gaussians + constant term": this is clear from the
>>>>> ITC reference given and the $CLIBD/atomsf.lib table referred to.
>>>>> In practice it's actually rendered as a sum of 5 Gaussians after
>>>>> you multiply the f(s) and atomic Biso factor terms, so unless Biso
>>>>> = 0 (very unphysical!) there is actually no constant term.  My
>>>>> integral for rho(r) certainly doesn't oscillate between plus and
>>>>> minus infinity as d_min -> zero.  If yours does then I suspect that
>>>>> either the Biso term was forgotten or if not then a bug in the
>>>>> integration routine (e.g. can it handle properly the point at r = 0
>>>>> where the standard formula for the density gives 0/0?).  I used
>>>>> QUADPACK
>>>>> (http://people.sc.fsu.edu/~jburkardt/f_src/quadpack/quadpack.html)
>>>>> which seems pretty good at taking care of such singularities
>>>>> (assuming of course that the integral does actually converge).
>>>>>
>>>>> Cheers
>>>>>
>>>>> -- Ian
>>>>>
>> -- - --
>> Dr Tim Gruene
>> Institut fuer anorganische Chemie
>> Tammannstr. 4
>> D-37077 Goettingen
>> 
>> GPG Key ID = A46BEE1A
>> 
>> 
>
>- -- 
>- --
>Dr Tim Gruene
>Institut fuer anorganische Chemie
>Tammannstr. 4
>D-37077 Goettingen
>
>GPG Key ID = A46BEE1A
>
>-----BEGIN PGP SIGNATURE-----
>Version: GnuPG v1.4.12 (GNU/Linux)
>Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
>iD8DBQFQVuxEUxlJ7aRr7hoRAoUcAKD6v7hHaQqigX3HLZy/rHJ97zPoeACeM5Cp
>XWoDIX07jHlKPC7eDcQAfq0=
>=lTl4
>-----END PGP SIGNATURE-----

Attachment: scatter.dat
Description: scatter.dat

Reply via email to