[cctbxbb] correlation function for cctbx.miller.array
Gabor Bunkoczi
gb360 at cam.ac.uk
Thu Oct 24 04:45:13 PDT 2013
For the record, I realized that this can be calculated as:
correlation_map = d1.conjugate() * d2
where d1 and d2 are miller.arrays with complex data. There is possibly
no real need to add a new function to calculate this.
BW, Gabor
On 2013-10-23 10:55, Pavel Afonine wrote:
> 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