NSLS-II / pyCHX

chx_analysis_codes
BSD 3-Clause "New" or "Revised" License
5 stars 6 forks source link

[v2][_commonspeckle][Two_Time_Correlation_Function] has 2 functions that calculate 1time from 2time. #37

Open ambarb opened 4 years ago

ambarb commented 4 years ago

Need to decide if old version of this function can be eliminated.

In case of norms = None, the output of each are equal, as confirmed by assert.

In the case of norms!=None, the code is slightly re-written.

< def get_one_time_from_two_time_old(g12, norms=None, nopr=None):
---
> def get_one_time_from_two_time(g12, norms=None, nopr=None):
21,35c21,33
<     g2f12 = np.zeros([m, noqs])
<     for q in range(noqs):
<         y = g12[:, :, q]
<         for tau in range(m):
< 
<             if norms is None:
<                 g2f12[tau, q] = np.nanmean(np.diag(y, k=int(tau)))
<             else:
<                 yn = norms[:, q]
<                 yn1 = np.average(yn[tau:])
<                 yn2 = np.average(yn[: m - tau])
<                 g2f12[tau, q] = np.nanmean(np.diag(y, k=int(tau))) / (
<                     yn1 * yn2 * nopr[q]
<                 )
< 
---
>     if norms is None:
>         g2f12 = np.array([np.nanmean(g12.diagonal(i), axis=1) for i in range(m)])
>     else:
>         g2f12 = np.zeros([m, noqs])
>         for q in range(noqs):
>             yn = norms[:, q]
>             g2f12[i, q] = np.array(
>                 [
>                     np.nanmean(g12[:, :, q].diagonal(i))
>                     / (np.average(yn[i:]) * np.average(yn[: m - i]) * nopr[q])
>                     for i in range(m)
>                 ]
>             )
ambarb commented 4 years ago