@@ -21,7 +21,7 @@ def analyse_hf_observables(means, covariances, nsamples):
21
21
22
22
Returns
23
23
-------
24
- results : :class:`pandas.DataFrame `
24
+ results : :class:`pandas.Series `
25
25
Averaged Hartree-Fock estimates along with error estimates.
26
26
'''
27
27
@@ -31,24 +31,24 @@ def analyse_hf_observables(means, covariances, nsamples):
31
31
('U_HF' , r'Tr(H\rho_HF)' ),
32
32
])
33
33
34
- num = pd .DataFrame ( )
35
- trace = pd .DataFrame ()
36
- results = pd . DataFrame ()
37
- trace [ 'mean' ] = [ means [ r'Tr(\rho_HF)' ]]
38
- trace [ 'standard error' ] = (
39
- [ np . sqrt ( covariances [ r'Tr(\rho_HF)' ][ r'Tr(\rho_HF)' ] / nsamples )])
34
+ num = pd .Series ({ 'mean' : 0.0 , 'standard error' : 0.0 } )
35
+ trace = pd .Series ({
36
+ 'mean' : means [ r'Tr(\rho_HF)' ],
37
+ 'standard error' : np . sqrt ( covariances [ r'Tr(\rho_HF)' ][ r'Tr(\rho_HF)' ]/ nsamples )
38
+ })
39
+ results = {}
40
40
41
41
for (k , v ) in observables .items ():
42
- num ['mean' ] = [ means [v ] ]
43
- num ['standard error' ] = [ np .sqrt (covariances [v ][v ]/ nsamples )]
42
+ num ['mean' ] = means [v ]
43
+ num ['standard error' ] = np .sqrt (covariances [v ][v ]/ nsamples )
44
44
cov_ab = covariances [v ][r'Tr(\rho_HF)' ]
45
45
46
46
stats = pyblock .error .ratio (num , trace , cov_ab , nsamples )
47
47
48
48
results [k ] = stats ['mean' ]
49
49
results [k + '_error' ] = stats ['standard error' ]
50
50
51
- return results
51
+ return pd . Series ( results )
52
52
53
53
54
54
def estimates (metadata , data ):
@@ -64,7 +64,7 @@ def estimates(metadata, data):
64
64
65
65
Returns
66
66
-------
67
- results : :class:`pandas.DataFrame `
67
+ results : :class:`pandas.Series `
68
68
Averaged estimates.
69
69
'''
70
70
@@ -95,31 +95,35 @@ def estimates(metadata, data):
95
95
xm = data .sub (means , axis = 1 )
96
96
covariances = 1.0 / (1.0 - w2 ) * xm .mul (w , axis = 0 ).T .dot (xm )
97
97
98
- results = pd .DataFrame ()
99
98
if 'beta' in metadata :
100
99
# New, richer JSON-based metadata.
101
- results [ 'Beta' ] = [ metadata ['beta' ] ]
100
+ beta = metadata ['beta' ]
102
101
else :
103
102
# Hope to find it in the input file...
104
- results ['Beta' ] = pyhande .legacy .extract_input (metadata , 'beta' )
105
- # Free estimates contain no denominator so the error is
106
- # just the standard error.
107
- results ['U_0' ] = [means ['U_0' ]]
108
- results ['U_0_error' ] = [np .sqrt (covariances ['U_0' ]['U_0' ]/ ncycles )]
109
- results ['T_0' ] = [means ['<T>_0' ]]
110
- results ['T_0_error' ] = [np .sqrt (covariances ['<T>_0' ]['<T>_0' ]/ ncycles )]
111
- results ['V_0' ] = [means ['<V>_0' ]]
112
- results ['V_0_error' ] = [np .sqrt (covariances ['<V>_0' ]['<V>_0' ]/ ncycles )]
103
+ beta = pyhande .legacy .extract_input (metadata , 'beta' )
104
+ results = {
105
+ 'Beta' : beta ,
106
+ # Free estimates contain no denominator so the error is
107
+ # just the standard error.
108
+ 'U_0' : means ['U_0' ],
109
+ 'U_0_error' : np .sqrt (covariances ['U_0' ]['U_0' ]/ ncycles ),
110
+ 'T_0' : means ['<T>_0' ],
111
+ 'T_0_error' : np .sqrt (covariances ['<T>_0' ]['<T>_0' ]/ ncycles ),
112
+ 'V_0' : means ['<V>_0' ],
113
+ 'V_0_error' : np .sqrt (covariances ['<V>_0' ]['<V>_0' ]/ ncycles ),
114
+ }
113
115
if 'N_ACC/N_ATT' in data .columns :
114
- results ['N_ACC/N_ATT' ] = [means ['N_ACC/N_ATT' ]]
115
- results ['N_ACC/N_ATT_error' ] = (
116
- [np .sqrt (covariances ['N_ACC/N_ATT' ]['N_ACC/N_ATT' ]/ ncycles )]
117
- )
118
116
if metadata ['fermi_temperature' ]:
119
- beta = results ['Beta' ][ 0 ] / metadata ['system' ]['ueg' ]['E_fermi' ]
117
+ beta = results ['Beta' ] / metadata ['system' ]['ueg' ]['E_fermi' ]
120
118
else :
121
- beta = results ['Beta' ][0 ]
122
- correction = [metadata ['free_energy_corr' ]]
119
+ beta = results ['Beta' ]
120
+ correction = metadata ['free_energy_corr' ]
121
+ results .update ({
122
+ 'N_ACC/N_ATT' : means ['N_ACC/N_ATT' ],
123
+ 'N_ACC/N_ATT_error' : (
124
+ np .sqrt (covariances ['N_ACC/N_ATT' ]['N_ACC/N_ATT' ]/ ncycles )
125
+ ),
126
+ })
123
127
results ['F_0' ] = (
124
128
(- 1.0 / beta )* np .log (results ['N_ACC/N_ATT' ]) + correction
125
129
)
@@ -135,11 +139,10 @@ def estimates(metadata, data):
135
139
results ['F_0_error' ]** 2.0 -
136
140
2.0 * covariances ['N_ACC/N_ATT' ]['<T>_0' ] /
137
141
(ncycles * results ['N_ACC/N_ATT' ]* beta )))
142
+ results = pd .Series (results )
138
143
139
144
# Take care of the correlation between numerator and denominator
140
145
# in Hartree-Fock estimates.
141
- results = (
142
- results .join (analyse_hf_observables (means , covariances , ncycles ))
143
- )
146
+ results = results .append (analyse_hf_observables (means , covariances , ncycles ))
144
147
145
148
return results
0 commit comments