[cctbxbb] correlation function for cctbx.miller.array

Pavel Afonine pafonine at lbl.gov
Wed Oct 23 02:55:27 PDT 2013


Hi Gabor,

I'm slightly confused with terminology... The existing function 
(map_correlation) computes standard correlation coefficient between two 
maps. Lunin and Woolfson showed that to do so you do not need to compute 
actual maps but you can use Fourier map coefficients instead and the 
formula from the paper I mentioned before.
This works if you have matching sets of miller indices. If miller 
indices are different (for instance, because of different resolution or 
completeness), then you need to compute actual maps using identical 
gridding (let me know if you need an example of how to do this), and 
then use a standard general function from scitbx to compute correlation 
coefficient between two arrays:

cc = flex.linear_interpolation(x,y).coefficient()

 From a quick look I could not see a difference between 
http://en.wikipedia.org/wiki/Cross_correlation and usual correlation 
coefficient that everyone uses... though I did not look very carefully..

All the best,
Pavel

On 10/23/13 12:12 AM, Gabor Bunkoczi wrote:
> On 2013-10-22 18:25, Pavel Afonine wrote:
>> Hi Gabor,
>>
>> I coded "map_correlation" method in
>> cctbx_project/cctbx/miller/__init__.py based on (if I recall it
>> correctly):
>>
>> Acta Cryst. (1993). D49, 530-533
>> Mean phase error and the map-correlation coefficient
>> Lunin and Woolfson
>>
>> I'm not aware of functionality you described...
>>
>> I guess you can create a clone of "map_correlation" with modifications
>> you want, and add a corresponding method with some (long)
>> self-explicable name and a regression test along with it.
>
> Thanks for confirming this. I go ahead and add it, since this is a
> generic operation between two functions. I will possibly call it
> "cross_correlation_map".
>
> http://en.wikipedia.org/wiki/Cross_correlation
>
> BW, Gabor
>
>
>>
>> Pavel
>>
>>
>> On 10/22/13 10:01 AM, Gabor Bunkoczi wrote:
>>> Hi,
>>>
>>> I need to calculate the correlation function between two maps, both of
>>> them are stored as miller.array objects. There is a map_correlation
>>> method, which does something similar to what I want, but this calculates
>>> the total correlation coefficient, while what I need is another
>>> miller.array with amplitudes = f1*f2 and phases = p2-p1 (where f1, f2
>>> are amplitudes and p1, p2 are phases of map1 and map2, respectively),
>>> i.e. not just the sum of these. Is this available somewhere?
>>>
>>> There is the additional complication that the hkl-list for map1 and map2
>>> may not be fully identical, but the intersect of the two maps could be
>>> taken.
>>>
>>> Thanks, Gabor
>>>
>>> _______________________________________________
>>> cctbxbb mailing list
>>> cctbxbb at phenix-online.org
>>> http://phenix-online.org/mailman/listinfo/cctbxbb
>


More information about the cctbxbb mailing list