@@ -1035,18 +1035,38 @@ def get_one_time_from_two_time(g12, norms=None, nopr=None):
10351035 m , n , noqs = g12 .shape
10361036 if norms is None :
10371037 g2f12 = np .array ([np .nanmean (g12 .diagonal (i ), axis = 1 ) for i in range (m )])
1038+ g2f12_error = np .array (
1039+ [np .std (g12 .diagonal (i ), axis = 1 ) / np .sqrt (m - i ) for i in range (m )]
1040+ )
1041+ # propagate error to the last point
1042+ g2f12_error [- 1 , :] = g2f12_error [- 2 , :]
1043+
10381044 else :
1045+ if nopr is None :
1046+ print ("Error: normalization option must have nopr" )
1047+ return np .nan , np .nan
1048+
10391049 g2f12 = np .zeros ([m , noqs ])
1050+ g2f12_error = np .zeros ([m , noqs ])
10401051 for q in range (noqs ):
10411052 yn = norms [:, q ]
1042- g2f12 [i , q ] = np .array (
1053+ scale = np .array (
1054+ [np .mean (yn [i :]) * np .mean (yn [: m - i ]) * nopr [q ] for i in range (m )]
1055+ )
1056+ g2f12 [:, q ] = np .array (
1057+ [np .nanmean (g12 [:, :, q ].diagonal (i )) / scale [i ] for i in range (m )]
1058+ )
1059+
1060+ g2f12_error [:, q ] = np .array (
10431061 [
1044- np .nanmean (g12 [:, :, q ].diagonal (i ))
1045- / (np .average (yn [i :]) * np .average (yn [: m - i ]) * nopr [q ])
1062+ np .std (g12 [:, :, q ].diagonal (i )) / np .sqrt (m - i ) / scale [i ]
10461063 for i in range (m )
10471064 ]
10481065 )
1049- return g2f12
1066+ # propagate error to the last point
1067+ g2f12_error [- 1 , :] = g2f12_error [- 2 , :]
1068+
1069+ return g2f12 , g2f12_error
10501070
10511071
10521072def get_four_time_from_two_time (g12 , g2 = None , rois = None ):
0 commit comments