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'
Esempio n. 4
0
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)
Esempio n. 5
0
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'
Esempio n. 7
0
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)
Esempio n. 8
0
    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
Esempio n. 9
0
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)
Esempio n. 10
0
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)
Esempio n. 11
0
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)
Esempio n. 12
0
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)
Esempio n. 13
0
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)
Esempio n. 14
0
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)
Esempio n. 15
0
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']]
Esempio n. 16
0
 def dhdl():
     bz = load_benzene().data
     dHdl_coul = alchemlyb.concat(
         [extract_dHdl(xvg, T=300) for xvg in bz['Coulomb']])
     return dHdl_coul
Esempio n. 17
0
 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)
Esempio n. 18
0
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'
Esempio n. 19
0
 def dhdl():
     dataset = load_benzene()
     dhdl = extract_dHdl(dataset['data']['Coulomb'][0], 310)
     return dhdl