コード例 #1
0
def test_mbar_computeEntropyAndEnthalpy():
    """Can MBAR calculate f_k, <u_k> and s_k ??"""

    for system_generator in system_generators:
        name, test = system_generator()
        x_n, u_kn, N_k_output, s_n = test.sample(N_k, mode='u_kn')
        eq(N_k, N_k_output)
        mbar = MBAR(u_kn, N_k)
        results = mbar.computeEntropyAndEnthalpy(u_kn)
        f_ij = results['Delta_f']
        df_ij = results['dDelta_f']
        u_ij = results['Delta_u']
        du_ij = results['dDelta_u']
        s_ij = results['Delta_s']
        ds_ij = results['dDelta_s']

        fa = test.analytical_free_energies()
        ua = test.analytical_observable('potential energy')
        sa = test.analytical_entropies()

        fa_ij = np.array(np.matrix(fa) - np.matrix(fa).transpose())
        ua_ij = np.array(np.matrix(ua) - np.matrix(ua).transpose())
        sa_ij = np.array(np.matrix(sa) - np.matrix(sa).transpose())

        z = convert_to_differences(f_ij, df_ij, fa)
        eq(z / z_scale_factor, np.zeros(np.shape(z)), decimal=0)
        z = convert_to_differences(u_ij, du_ij, ua)
        eq(z / z_scale_factor, np.zeros(np.shape(z)), decimal=0)
        z = convert_to_differences(s_ij, ds_ij, sa)
        eq(z / z_scale_factor, np.zeros(np.shape(z)), decimal=0)
コード例 #2
0
ファイル: test_mbar.py プロジェクト: jpthompson17/pymbar
def test_mbar_computeEntropyAndEnthalpy():

    """Can MBAR calculate f_k, <u_k> and s_k ??"""

    for system_generator in system_generators:
        name, test = system_generator()
        x_n, u_kn, N_k_output, s_n = test.sample(N_k, mode='u_kn')
        eq(N_k, N_k_output)
        mbar = MBAR(u_kn, N_k)
        f_ij, df_ij, u_ij, du_ij, s_ij, ds_ij = mbar.computeEntropyAndEnthalpy(u_kn)

        fa = test.analytical_free_energies()
        ua = test.analytical_observable('potential energy')
        sa = test.analytical_entropies()

        fa_ij = np.array(np.matrix(fa) - np.matrix(fa).transpose())
        ua_ij = np.array(np.matrix(ua) - np.matrix(ua).transpose())
        sa_ij = np.array(np.matrix(sa) - np.matrix(sa).transpose())

        z = convert_to_differences(f_ij,df_ij,fa)
        eq(z / z_scale_factor, np.zeros(np.shape(z)), decimal=0)
        z = convert_to_differences(u_ij,du_ij,ua)
        eq(z / z_scale_factor, np.zeros(np.shape(z)), decimal=0)
        z = convert_to_differences(s_ij,ds_ij,sa)
        eq(z / z_scale_factor, np.zeros(np.shape(z)), decimal=0)
コード例 #3
0
                                               compute_covariance=True)
    A_i = results['mu']
    dA_ij = results['sigma']
    Ca_ij = results['covariances']
    print("Averages for state %d" % (i))
    print(A_i)
    print("Uncertainties for state %d" % (i))
    print(dA_ij)
    print("Correlation matrix between observables for state %d" % (i))
    print(Ca_ij)

print("============================================")
print("      Testing computeEntropyAndEnthalpy")
print("============================================")

results = mbar.computeEntropyAndEnthalpy(u_kn=u_kln, verbose=True)
Delta_f_ij = results['Delta_f']
dDelta_f_ij = results['dDelta_f']
Delta_u_ij = results['Delta_u']
dDelta_u_ij = results['dDelta_u']
Delta_s_ij = results['Delta_s']
dDelta_s_ij = results['dDelta_s']

print("Free energies")
print(Delta_f_ij)
print(dDelta_f_ij)
diffs1 = Delta_f_ij - Delta_f_ij_estimated
print(
    "maximum difference between values computed here and in computeFreeEnergies is %g"
    % (numpy.max(diffs1)))
if (numpy.max(numpy.abs(diffs1)) > 1.0e-10):
コード例 #4
0
A_ikn = numpy.zeros([len(observables_single), K, N_k.max()], numpy.float64)
for i,observe in enumerate(observables_single):
  A_ikn[i,:,:] = A_kn_all[observe]
for i in range(K):
  [A_i,d2A_ij] = mbar.computeMultipleExpectations(A_ikn, u_kln[:,i,:])
  print "Averages for state %d" % (i)
  print A_i
  print "Correlation matrix between observables for state %d" % (i)
  print d2A_ij

print "============================================"
print "      Testing computeEntropyAndEnthalpy"
print "============================================"

(Delta_f_ij, dDelta_f_ij, Delta_u_ij, dDelta_u_ij, Delta_s_ij, dDelta_s_ij) = mbar.computeEntropyAndEnthalpy(verbose = True)
print "Free energies"
print Delta_f_ij
print dDelta_f_ij
diffs1 = Delta_f_ij - Delta_f_ij_estimated
print "maximum difference between values computed here and in computeFreeEnergies is %g" % (numpy.max(diffs1))
if (numpy.max(numpy.abs(diffs1)) > 1.0e-10):
  print "Difference in values from computeFreeEnergies"
  print diffs1
diffs2 = dDelta_f_ij - dDelta_f_ij_estimated
print "maximum difference between uncertainties computed here and in computeFreeEnergies is %g" % (numpy.max(diffs2))
if (numpy.max(numpy.abs(diffs2)) > 1.0e-10):
  print "Difference in expectations from computeFreeEnergies"
  print diffs2

print "Energies"
コード例 #5
0
A_ikn = numpy.zeros([len(observables_single), K, N_k.max()], numpy.float64)
for i, observe in enumerate(observables_single):
    A_ikn[i, :, :] = A_kn_all[observe]
for i in range(K):
    [A_i, d2A_ij] = mbar.computeMultipleExpectations(A_ikn, u_kln[:, i, :])
    print "Averages for state %d" % (i)
    print A_i
    print "Correlation matrix between observables for state %d" % (i)
    print d2A_ij

print "============================================"
print "      Testing computeEntropyAndEnthalpy"
print "============================================"

(Delta_f_ij, dDelta_f_ij, Delta_u_ij, dDelta_u_ij, Delta_s_ij,
 dDelta_s_ij) = mbar.computeEntropyAndEnthalpy(verbose=True)
print "Free energies"
print Delta_f_ij
print dDelta_f_ij
diffs1 = Delta_f_ij - Delta_f_ij_estimated
print "maximum difference between values computed here and in computeFreeEnergies is %g" % (
    numpy.max(diffs1))
if (numpy.max(numpy.abs(diffs1)) > 1.0e-10):
    print "Difference in values from computeFreeEnergies"
    print diffs1
diffs2 = dDelta_f_ij - dDelta_f_ij_estimated
print "maximum difference between uncertainties computed here and in computeFreeEnergies is %g" % (
    numpy.max(diffs2))
if (numpy.max(numpy.abs(diffs2)) > 1.0e-10):
    print "Difference in expectations from computeFreeEnergies"
    print diffs2
コード例 #6
0
  results = mbar.computeMultipleExpectations(A_ikn, u_kln[:,i,:], compute_covariance=True)
  A_i = results['mu']
  dA_ij = results['sigma']
  Ca_ij = results['covariances']
  print("Averages for state %d" % (i))
  print(A_i)
  print("Uncertainties for state %d" % (i))
  print(dA_ij)
  print("Correlation matrix between observables for state %d" % (i))
  print(Ca_ij)

print("============================================")
print("      Testing computeEntropyAndEnthalpy")
print("============================================")

results = mbar.computeEntropyAndEnthalpy(u_kn = u_kln, verbose = True)
Delta_f_ij = results['Delta_f']
dDelta_f_ij = results['dDelta_f']
Delta_u_ij = results['Delta_u']
dDelta_u_ij = results['dDelta_u']
Delta_s_ij = results['Delta_s']
dDelta_s_ij = results['dDelta_s']

print("Free energies")
print(Delta_f_ij)
print(dDelta_f_ij)
diffs1 = Delta_f_ij - Delta_f_ij_estimated
print("maximum difference between values computed here and in computeFreeEnergies is %g" % (numpy.max(diffs1)))
if (numpy.max(numpy.abs(diffs1)) > 1.0e-10):
  print("Difference in values from computeFreeEnergies")
  print(diffs1)
コード例 #7
0
for i,observe in enumerate(observables_single):
  A_ikn[i,:,:] = A_kn_all[observe]
for i in range(K):
  [A_i,dA_ij,Ca_ij] = mbar.computeMultipleExpectations(A_ikn, u_kln[:,i,:], compute_covariance=True)
  print "Averages for state %d" % (i)
  print A_i
  print "Uncertainties for state %d" % (i)
  print dA_ij
  print "Correlation matrix between observables for state %d" % (i)
  print Ca_ij

print "============================================"
print "      Testing computeEntropyAndEnthalpy"
print "============================================"

(Delta_f_ij, dDelta_f_ij, Delta_u_ij, dDelta_u_ij, Delta_s_ij, dDelta_s_ij) = mbar.computeEntropyAndEnthalpy(u_kn = u_kln, verbose = True)
print "Free energies"
print Delta_f_ij
print dDelta_f_ij
diffs1 = Delta_f_ij - Delta_f_ij_estimated
print "maximum difference between values computed here and in computeFreeEnergies is %g" % (numpy.max(diffs1))
if (numpy.max(numpy.abs(diffs1)) > 1.0e-10):
  print "Difference in values from computeFreeEnergies"
  print diffs1
diffs2 = dDelta_f_ij - dDelta_f_ij_estimated
print "maximum difference between uncertainties computed here and in computeFreeEnergies is %g" % (numpy.max(diffs2))
if (numpy.max(numpy.abs(diffs2)) > 1.0e-10):
  print "Difference in expectations from computeFreeEnergies"
  print diffs2

print "Energies"