def u_nk(): bz = load_benzene().data u_nk_coul = alchemlyb.concat( [extract_u_nk(xvg, T=300) for xvg in bz['Coulomb']]) u_nk_coul.attrs = extract_u_nk(load_benzene().data['Coulomb'][0], T=300).attrs return u_nk_coul
def test_equilibrium_detection(self, dhdl): '''Test if extract_u_nk assign the attr correctly''' dataset = load_benzene() dhdl = extract_dHdl(dataset['data']['Coulomb'][0], 310) new_dhdl = equilibrium_detection(dhdl) assert new_dhdl.attrs['temperature'] == 310 assert new_dhdl.attrs['energy_unit'] == 'kT'
def test_slicing(self, dhdl): '''Test if extract_u_nk assign the attr correctly''' dataset = load_benzene() u_nk = extract_u_nk(dataset['data']['Coulomb'][0], 310) new_u_nk = slicing(u_nk) assert new_u_nk.attrs['temperature'] == 310 assert new_u_nk.attrs['energy_unit'] == 'kT'
def test_nounit(): '''Test no unit error''' dataset = load_benzene() dhdl = extract_dHdl(dataset['data']['Coulomb'][0], 310) dhdl.attrs.pop('energy_unit', None) with pytest.raises(TypeError): to_kT(dhdl)
def test_plot_convergence_dataframe(): bz = load_benzene().data data_list = [extract_u_nk(xvg, T=300) for xvg in bz['Coulomb']] df = forward_backward_convergence(data_list, 'mbar') ax = plot_convergence(df) assert isinstance(ax, matplotlib.axes.Axes) plt.close(ax.figure)
def test_statistical_inefficiency(self, dhdl): '''Test if extract_u_nk assign the attr correctly''' dataset = load_benzene() dhdl = extract_dHdl(dataset['data']['Coulomb'][0], 310) new_dhdl = statistical_inefficiency(dhdl) assert new_dhdl.attrs['temperature'] == 310 assert new_dhdl.attrs['energy_unit'] == 'kT'
def test_noT(): '''Test no temperature error''' dataset = load_benzene() dhdl = extract_dHdl(dataset['data']['Coulomb'][0], 310) dhdl.attrs.pop('temperature', None) with pytest.raises(TypeError): to_kT(dhdl)
def estimaters(): bz = load_benzene().data dHdl_coul = alchemlyb.concat( [extract_dHdl(xvg, T=300) for xvg in bz['Coulomb']]) ti = TI().fit(dHdl_coul) u_nk_coul = alchemlyb.concat( [extract_u_nk(xvg, T=300) for xvg in bz['Coulomb']]) mbar = MBAR().fit(u_nk_coul) return ti, mbar
def test_dHdl(): """Test that dHdl has the correct form when extracted from files. """ dataset = load_benzene() for leg in dataset['data']: for filename in dataset['data'][leg]: dHdl = extract_dHdl(filename, T=300) assert dHdl.index.names == ['time', 'fep-lambda'] assert dHdl.shape == (4001, 1)
def test_u_nk(): """Test that u_nk has the correct form when extracted from files. """ dataset = load_benzene() for leg in dataset['data']: for filename in dataset['data'][leg]: u_nk = extract_u_nk(filename, T=300) assert u_nk.index.names == ['time', 'fep-lambda'] if leg == 'Coulomb': assert u_nk.shape == (4001, 5) elif leg == 'VDW': assert u_nk.shape == (4001, 16)
def test_plot_dF_state(): '''Just test if the plot runs''' bz = load_benzene().data u_nk_coul = pd.concat([extract_u_nk(xvg, T=300) for xvg in bz['Coulomb']]) dHdl_coul = pd.concat([extract_dHdl(xvg, T=300) for xvg in bz['Coulomb']]) u_nk_vdw = pd.concat([extract_u_nk(xvg, T=300) for xvg in bz['VDW']]) dHdl_vdw = pd.concat([extract_dHdl(xvg, T=300) for xvg in bz['VDW']]) ti_coul = TI().fit(dHdl_coul) ti_vdw = TI().fit(dHdl_vdw) bar_coul = BAR().fit(u_nk_coul) bar_vdw = BAR().fit(u_nk_vdw) mbar_coul = MBAR().fit(u_nk_coul) mbar_vdw = MBAR().fit(u_nk_vdw) dhdl_data = [ (ti_coul, ti_vdw), (bar_coul, bar_vdw), (mbar_coul, mbar_vdw), ] fig = plot_dF_state(dhdl_data, orientation='portrait') assert isinstance(fig, matplotlib.figure.Figure) fig = plot_dF_state(dhdl_data, orientation='landscape') assert isinstance(fig, matplotlib.figure.Figure) fig = plot_dF_state(dhdl_data, labels=['MBAR', 'TI', 'BAR']) assert isinstance(fig, matplotlib.figure.Figure) with pytest.raises(ValueError): fig = plot_dF_state(dhdl_data, labels=[ 'MBAR', 'TI', ]) fig = plot_dF_state(dhdl_data, colors=['#C45AEC', '#33CC33', '#F87431']) assert isinstance(fig, matplotlib.figure.Figure) with pytest.raises(ValueError): fig = plot_dF_state(dhdl_data, colors=['#C45AEC', '#33CC33']) with pytest.raises(NameError): fig = plot_dF_state(dhdl_data, orientation='xxx') fig = plot_dF_state(ti_coul, orientation='landscape') assert isinstance(fig, matplotlib.figure.Figure) fig = plot_dF_state(ti_coul, orientation='portrait') assert isinstance(fig, matplotlib.figure.Figure) fig = plot_dF_state([ti_coul, bar_coul]) assert isinstance(fig, matplotlib.figure.Figure) fig = plot_dF_state([(ti_coul, ti_vdw)]) assert isinstance(fig, matplotlib.figure.Figure)
def test_plot_mbar_omatrix(): '''Just test if the plot runs''' bz = load_benzene().data u_nk_coul = pd.concat([extract_u_nk(xvg, T=300) for xvg in bz['Coulomb']]) mbar_coul = MBAR() mbar_coul.fit(u_nk_coul) assert isinstance(plot_mbar_overlap_matrix(mbar_coul.overlap_matrix), matplotlib.axes.Axes) assert isinstance( plot_mbar_overlap_matrix(mbar_coul.overlap_matrix, [ 1, ]), matplotlib.axes.Axes) # Bump up coverage overlap_maxtrix = mbar_coul.overlap_matrix overlap_maxtrix[0, 0] = 0.0025 overlap_maxtrix[-1, -1] = 0.9975 assert isinstance(plot_mbar_overlap_matrix(overlap_maxtrix), matplotlib.axes.Axes)
def test_plot_ti_dhdl(): '''Just test if the plot runs''' bz = load_benzene().data dHdl_coul = pd.concat([extract_dHdl(xvg, T=300) for xvg in bz['Coulomb']]) ti_coul = TI() ti_coul.fit(dHdl_coul) assert isinstance(plot_ti_dhdl(ti_coul), matplotlib.axes.Axes) fig, ax = plt.subplots(figsize=(8, 6)) assert isinstance(plot_ti_dhdl(ti_coul, ax=ax), matplotlib.axes.Axes) assert isinstance(plot_ti_dhdl(ti_coul, labels=['Coul']), matplotlib.axes.Axes) assert isinstance(plot_ti_dhdl(ti_coul, labels=['Coul'], colors=['r']), matplotlib.axes.Axes) dHdl_vdw = pd.concat([extract_dHdl(xvg, T=300) for xvg in bz['VDW']]) ti_vdw = TI().fit(dHdl_vdw) assert isinstance(plot_ti_dhdl([ti_coul, ti_vdw]), matplotlib.axes.Axes) ti_coul.dhdl = pd.DataFrame.from_dict({ 'fep': range(100) }, orient='index', columns=np.arange(100) / 100).T assert isinstance(plot_ti_dhdl(ti_coul), matplotlib.axes.Axes)
def test_plot_convergence(): bz = load_benzene().data data_list = [extract_u_nk(xvg, T=300) for xvg in bz['Coulomb']] forward = [] forward_error = [] backward = [] backward_error = [] num_points = 10 for i in range(1, num_points + 1): # Do the forward slice = int(len(data_list[0]) / num_points * i) u_nk_coul = alchemlyb.concat([data[:slice] for data in data_list]) estimate = MBAR().fit(u_nk_coul) forward.append(estimate.delta_f_.iloc[0, -1]) forward_error.append(estimate.d_delta_f_.iloc[0, -1]) # Do the backward u_nk_coul = alchemlyb.concat([data[-slice:] for data in data_list]) estimate = MBAR().fit(u_nk_coul) backward.append(estimate.delta_f_.iloc[0, -1]) backward_error.append(estimate.d_delta_f_.iloc[0, -1]) ax = plot_convergence(forward, forward_error, backward, backward_error) assert isinstance(ax, matplotlib.axes.Axes) plt.close(ax.figure)
def gmx_benzene(): dataset = load_benzene() return [gmx.extract_dHdl(dhdl, T=300) for dhdl in dataset['data']['Coulomb']], \ [gmx.extract_u_nk(dhdl, T=300) for dhdl in dataset['data']['Coulomb']]
def dhdl(): bz = load_benzene().data dHdl_coul = alchemlyb.concat( [extract_dHdl(xvg, T=300) for xvg in bz['Coulomb']]) return dHdl_coul
def data(): dhdl = extract_dHdl(load_benzene()['data']['Coulomb'][0], 310) with bz2.open(load_benzene()['data']['Coulomb'][0], "rt") as bz_file: text = bz_file.read() return text, len(dhdl)
def test_extract_dHdl_unit(): '''Test if extract_u_nk assign the attr correctly''' dataset = load_benzene() dhdl = extract_dHdl(dataset['data']['Coulomb'][0], 310) assert dhdl.attrs['temperature'] == 310 assert dhdl.attrs['energy_unit'] == 'kT'
def dhdl(): dataset = load_benzene() dhdl = extract_dHdl(dataset['data']['Coulomb'][0], 310) return dhdl