-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Sorry, 6e^-/A^3 (or -6e/A^3 for charge density people) this should have said.
On 09/20/2012 11:39 AM, Tim Gruene wrote: > tg@slartibartfast:~/tmp$ phenix.python run.py 0.001 627.413 > -4.01639e+06 303880 0.1 275.984 275.247 > 435.678 0.5 92.2049 92.206 93.6615 1 > 47.8941 47.8936 47.9421 10 3.54414 > 3.54415 3.5439 100 0.217171 0.21717 > 0.21714 > > weird numbers. A proper description would have 6e/A^3 for a C at > x=(0,0,0) with B=0. How are these numbers 'not inaccurate'? > > Cheers, Tim > > On 09/19/2012 06:47 PM, Pavel Afonine wrote: >> Hi James, > >> using dynamic N-Gaussian approximation to form-factor tables as >> described here (pages 27-29): > >> http://cci.lbl.gov/publications/download/iucrcompcomm_jan2004.pdf > >> and used in Phenix since 2004, avoids both: singularity at B=0 >> and inaccurate density values (compared to the raw forma-factor >> tables) for B->0. > >> Attached is the script that proves this point. To run, simply >> "phenix.python run.py". > >> Pavel > >> On Sun, Sep 16, 2012 at 11:32 PM, James Holton >> <jmhol...@lbl.gov> 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_atomsf.gnuplot> >>> >>> > >>> http://bl831.als.lbl.gov/~**jamesh/pickup/all_atomff.**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<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/ iD8DBQFQWuXFUxlJ7aRr7hoRAgI4AKCfYUEQrXWEu9gxwfRNGpmrFLsi+gCcDQPV zcX9AJ6ua3zj6Dou+1RIPaA= =DgNV -----END PGP SIGNATURE-----