Bernhard,
Sounds like you are plotting something similar to what I was tinkering
with once. A script you may find useful is this one:
https://bl831.als.lbl.gov/~jamesh/bin_stuff/map_func.com
I wrote this because although mapmask, maprot, etc have very useful
functionalities I found I wanted additional features, such as dividing
one map by another, or taking a square root. These are important if you
are trying to derive the "signal-to-noise ratio", for example.
Once you have a map of rho/sigma(rho) you can convert that into a
"pobability" by passing it through the "erf()" and "pow()" functions.
This can be a good way of estimating the "probability something is
there" or P(rho) for a given map voxel. Specifically:
P(rho) = 1-pow(erf(abs(rho/sigma(rho))/sqrt(2)),V/2/d^3)
where:
rho is the electron density map value (preferably from a Fo-Fc map)
sigma(rho) is the error on that voxel
V is the unit cell volume (A^3)
d is the resolution in A
erf() is called the "error function"
pow(m,e) is the raise-to-a-power function: m^e
The erf() function by itself turns a rho/sigma(rho)=3 peak into 0.997,
and a 1-sigma peak into 0.683. What that means is: assuming the noise is
Gaussian, you expect voxels in the range -1-sigma to +1-sigma to be
~68.3% of the total. The "probability it isn't noise" (sometimes called
a "p-value") is then 1-0.683 = 0.32. Seems like a pretty high
probability to give to a 1-sigma peak, but now remember that the map is
not just a single observation but thousands. So, the question you
really want to ask is: if I generate 100x100x100 = 1e6 Gaussian-random
numbers, what are the odds that a 4-sigma peak occurred at random? The
answer is: pretty much garanteed. In any collection of 1 million
Gaussian-random numbers with rms=1 it is virtually impossible to not
have at least one of them > 4. Trust me, I have tried. This is where the
"pow()" function comes in. You need to multiply all the individual
voxel probabilities together to get the probability of at least one
>4-sigma peak happening at random.
But, then again, map voxels are hardly independent observations. Finite
resolution means that neighboring pixels are highly correlated. So,
rather than map grid points, we should be considering "Shannon voxels".
All this is is the number of blobs of diameter d, where d is the
resolution, that can fit into the volume of the map. For example, if we
have a 100 A edge on a cubic cell and 3 A resolution, then we have about
3.7e4 independent "observations" of density, so the probability of a
random 4-sigma peak is:
P(rho) = erf(4/sqrt(2))**(((100./3)**3)/2) = 0.31
That is, if you make a zillion maps of random data using different seeds
each time, 3.7e4 voxels each, and draw from a Gaussian distribution with
rms=1, you expect 31% of these maps to have a 4-sigma peak. Randomly.
The other 69% will not have anything > 4. So, if you see a 4-sigma peak
in a map with 3.7e4 Shannon voxels I'd say it is real about 69% of the
time. You might consider 0.69 to be a decent "weight" you should give
such a 4-sigma peak. A 5-sigma peak under the same circumstances gets
P(rho) = 0.989, and a 3-sigma peak gets P(rho) = 1e-22. aka: probaby
noise. It is perhaps worth remembering that at a given resolution
large-sigma noise peaks are more common in bigger cells than small ones.
So, how do you get sigma(rho)? To be honest, the rms value of the
mFo-DFc map is a pretty good estimate. The rms value of the 2mFo-DFc
map is not (Lang et al. PNAS 2013). I usually get sigma(rho)
empirically. That is, by making a stack of maps: start with your
favorite refined structure and introduce random noise from whatever
source you want to test. I.E. Gaussian error proprotional to SigI is an
obvious one. A more realistic on is the Fo-Fc difference itself. After
adding this "extra" noise to the data, re-refine the structure and
generate a 2mFo-DFc map. Do this ~50 times with different random number
seeds. Then take those 50 maps and compute the mean and standard
deviation of "rho" at every voxel. You can do this with mapmask's ADD,
MULT and SCALE features, but you can't do the last step, which is taking
the square root of the variance. Hence: map_func.com
There are lots of other functions supported, including random number
genration, etc. Run the script with no arguments to get a list.
Oh, but don't try it on an mtz file! mtz files are not maps.
-James Holton
MAD Scientist
On 5/28/2020 12:11 PM, Bernhard Rupp wrote:
Yes I have already pilfered useful parts of it in the scripts…
Thx, BR
*From:* Boaz Shaanan <bshaa...@bgu.ac.il>
*Sent:* Thursday, May 28, 2020 11:59
*To:* b...@hofkristallamt.org
*Cc:* CCP4BB@JISCMAIL.AC.UK
*Subject:* Re: [ccp4bb] visual mask editor - why
Hi Bernhard,
Did you consider trying 'polder' in the phenix package?
Boaz
Boaz Shaanan, Ph.D.
Department of Life Sciences
Ben Gurion University of the Negev
Beer Sheva
Israel
On May 28, 2020 21:17, Bernhard Rupp <hofkristall...@gmail.com
<mailto:hofkristall...@gmail.com>> wrote:
Maybe I should explain an example: Say coot detects an unmodelled blob
(maybe a ligand). Now, I would like to do
a number of things without biasing towards a model. Like comparing
these map regions, excluding
intrusion of a solvent mask, etc.
Now could coot for example just generate a mask around what it already
knows are blobs?
Possible useful items could be a solvent mask not including that
regions, or a density map
that includes only features with a certain boundary around that blob.
I pilfered some kludges together from different sources, but let’s
just say inelegant would be a compliment.
Best, BR
------------------------
Brief question: Does something like a visual density mask editor exist?
Thx, BR
------------------------------------------------------
Bernhard Rupp
http://www.hofkristallamt.org/
b...@hofkristallamt.org <mailto:b...@hofkristallamt.org>
+1 925 209 7429
+43 676 571 0536
------------------------------------------------------
Many plausible ideas vanish
at the presence of thought
------------------------------------------------------
------------------------------------------------------------------------
To unsubscribe from the CCP4BB list, click the following link:
https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1
------------------------------------------------------------------------
To unsubscribe from the CCP4BB list, click the following link:
https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1
########################################################################
To unsubscribe from the CCP4BB list, click the following link:
https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=CCP4BB&A=1
This message was issued to members of www.jiscmail.ac.uk/CCP4BB, a mailing list
hosted by www.jiscmail.ac.uk, terms & conditions are available at
https://www.jiscmail.ac.uk/policyandsecurity/