https://github.com/patrickfuchs/buildH/
Raw File
Tip revision: 9f05672515e1cdb0064eeb34f63844296193bc0d authored by patrickfuchs on 01 September 2021, 09:32:15 UTC
Bump version: 1.5.0 → 1.6.0
Tip revision: 9f05672
test_writers.py
"""
Unit tests for buildH_calcOP.

Test functions from module writers.
"""

import pathlib
import filecmp
import pytest

import pandas as pd
import MDAnalysis as mda

from buildh import lipids
from buildh import init_dics
from buildh import core
from buildh import writers


DIR_DATA = "test_data"
PATH_ROOT_DATA = pathlib.Path(__file__).parent / DIR_DATA

# Ignore some MDAnalysis warnings for this test file
pytestmark = pytest.mark.filterwarnings('ignore::UserWarning')


def test_pandas2pdb():
    """Test for pandasdf2pdb()."""
    # Create a dummy dataframe
    rows = [[1, "C1",   "POPC", 1, 34.42, 46.94, 26.31],
            [2, "H211", "POPC", 1,  1.00,  2.00,  3.00]
    ]
    df = pd.DataFrame(rows, columns=["atnum", "atname", "resname", "resnum",
                                     "x", "y", "z"])

    ref_pdb_lines = ('ATOM      1  C1  POPC    1      34.420  46.940  26.310  1.00  0.00             C\n'
                     'ATOM      2 H211 POPC    1       1.000   2.000   3.000  1.00  0.00             H\n')

    assert writers.pandasdf2pdb(df) == ref_pdb_lines


class TestWriters():
    """Test class for the writing functions."""

    # path for the Berger POPC files
    PATH_DATA = PATH_ROOT_DATA / "Berger_POPC"

    # Method called once per class.
    def setup_class(self):
        """Initialize all data."""
        lipids_tops = lipids.read_lipids_topH([lipids.PATH_JSON/"Berger_POPC.json"])

        # Input parameters
        self.pdb = self.PATH_DATA / "10POPC.pdb"
        self.defop = self.PATH_DATA / "OP_def_BergerPOPC.def"
        self.dic_lipid = lipids_tops["Berger_POPC"]

        self.begin = 0
        self.end = 1

        # attributes
        self.universe_woH = mda.Universe(str(self.pdb))
        self.dic_atname2genericname = init_dics.make_dic_atname2genericname(self.defop)
        self.dic_OP, self.dic_corresp_numres_index_dic_OP = init_dics.init_dic_OP(self.universe_woH,
                                                                                  self.dic_atname2genericname,
                                                                                  self.dic_lipid['resname'])
        self.dic_Cname2Hnames = init_dics.make_dic_Cname2Hnames(self.dic_OP)

        # Compute the order parameter
        core.fast_build_all_Hs_calc_OP(self.universe_woH,self.begin, self.end,
                                       self.dic_OP, self.dic_lipid, self.dic_Cname2Hnames)

    def test_write_OP(self, tmpdir):
        """Test for write_OP().

        Parameters
        ----------
        tmpdir: function
            pytest callback which return a unique directory.
        """
        #Write results of self.dic_OP
        test_file = tmpdir / "test.out"
        writers.write_OP(test_file, self.dic_atname2genericname,
                                self.dic_OP, self.dic_lipid['resname'])

        ref_file = self.PATH_DATA / "ref_10POPC.out"
        assert filecmp.cmp(test_file, ref_file)

    def test_write_OP_alternate(self, tmpdir):
        """Test for write_OP_alternate().

        Parameters
        ----------
        tmpdir: function
            pytest callback which return a unique directory.
        """
        #Write results of self.dic_OP
        test_file = tmpdir / "test.out"
        writers.write_OP_alternate(test_file, self.universe_woH,
                                   self.dic_OP, self.dic_lipid['resname'])

        ref_file = self.PATH_DATA / "ref_10POPC.alternate.out"
        assert filecmp.cmp(test_file, ref_file)
back to top