Exemple #1
0
 def setUp(self):
     self.top = md.load(test_filenames.top_pdb).top
     self.fragments_by_resSeqplus = mdcfragments.get_fragments(
         self.top, method="resSeq+", verbose=False)
     self.fragments_by_resSeq = mdcfragments.get_fragments(self.top,
                                                           method="resSeq",
                                                           verbose=False)
Exemple #2
0
    def test_works_3CAP_vs_1U19_just_runs(self):
        geom_3CAP = md.load(test_filenames.pdb_3CAP)
        geom_1U19 = md.load(test_filenames.pdb_1U19)

        frag_3CAP = get_fragments(geom_3CAP.top,
                                  verbose=True,
                                  atoms=True
                                  )[0]
        frag_1U19 = get_fragments(geom_1U19.top,
                                  verbose=False,
                                  atoms=True
                                  )[0]
        geom_3CAP = geom_3CAP.atom_slice(frag_3CAP)
        geom_1U19 = geom_1U19.atom_slice(frag_1U19)

        seq_3CAP = sequence.top2seq(geom_3CAP.top)
        seq_1U19 = sequence.top2seq(geom_1U19.top)

        ialg = sequence.my_bioalign(seq_3CAP,
                                     seq_1U19,
                                     )[0]

        sequence.alignment_result_to_list_of_dicts(ialg,
                                                   _np.arange(geom_3CAP.n_residues),
                                                   _np.arange(geom_1U19.n_residues),
                                                   topology_0=geom_3CAP.top,
                                                   topology_1=geom_1U19.top,
                                                   #verbose=True
                                                   )
Exemple #3
0
    def test_atoms(self):
        for imethod in _allowed_fragment_methods:
            fragments_residxs = mdcfragments.get_fragments(self.geom.top,
                                                           method=imethod)
            fragments_atom_idxs = mdcfragments.get_fragments(self.geom.top,
                                                             atoms=True,
                                                             method=imethod)

            for rfrag, afrag in zip(fragments_residxs, fragments_atom_idxs):
                ridxs_by_atom = _np.unique(
                    [self.geom.top.atom(aa).residue.index for aa in afrag])
                assert _np.allclose(ridxs_by_atom, rfrag)
Exemple #4
0
    def test_resSeq(self):
        by_resSeq = mdcfragments.get_fragments(self.geom.top, method='resSeq')

        assert _np.allclose(by_resSeq[0], [0, 1, 2])
        assert _np.allclose(by_resSeq[1], [3, 4])
        assert _np.allclose(by_resSeq[2], [5])
        assert _np.allclose(by_resSeq[3], [6, 7])
Exemple #5
0
def sites_to_res_pairs(
    site_dicts,
    top,
    fragments=None,
    **get_fragments_kwargs,
):
    r"""Return the pairs of res_idxs needed to compute
    all the contacts contained in all the input sites.

    The idea is to join all needed pairs of res_idxs
    in one list regardless of where they come from.

    Parameters
    ----------
    site_dicts : list of dicts
        Check :obj:`x2site` for how these dicts look like
    top : :obj:`~mdtraj.Topology`
    fragments : list, default is None
        You can pass along fragment definitions so that
        it's easier to de-duplicate any AA in your input.
        Otherwise, these will be created on-the-fly
        by :obj:`mdciao.fragments.get_fragments`
    get_fragments_kwargs :
        see :obj:`fragments.get_fragments`

    Returns
    -------
    res_idxs_pairs : 2D np.ndarray
        Unique residue pairs contained in the :obj:`site_dicts`,
        expressed as residue indices of :obj:`top`
        [0,1] is considered != [0,1]
    site_maps : list
        For each site, a list with the indices of :obj:`res_idxs_pairs`
        that match the site's pairs.
    """
    if fragments is None:
        fragments = _mdcfrg.get_fragments(top, **get_fragments_kwargs)

    get_pair_lambda = {
        "AAresSeq":
        lambda bond: _mdcu.residue_and_atom.residues_from_descriptors(
            bond, fragments, top)[0],
        "residx":
        lambda bond: bond
    }
    res_idxs_pairs = []
    pair2idx = {}
    site_maps = []
    for ii, site in enumerate(site_dicts):
        imap = []
        for bond_type, bonds in site["pairs"].items():
            for bond in bonds:
                pair = tuple(get_pair_lambda[bond_type](bond))
                if pair not in res_idxs_pairs:
                    res_idxs_pairs.append(pair)
                    pair2idx[pair] = len(res_idxs_pairs) - 1
                imap.append(pair2idx[pair])
        site_maps.append(imap)
    #print(site_maps)
    return _np.vstack(res_idxs_pairs), site_maps
Exemple #6
0
    def test_resSeqplus(self):
        by_resSeqplus = mdcfragments.get_fragments(self.geom.top,
                                                   verbose=True,
                                                   method='resSeq+')

        assert _np.allclose(by_resSeqplus[0], [0, 1, 2])
        assert _np.allclose(by_resSeqplus[1], [3, 4, 5, 6, 7])
Exemple #7
0
    def test_bonds(self):
        by_bonds = mdcfragments.get_fragments(self.geom.top, method='bonds')

        assert _np.allclose(by_bonds[0], [0, 1, 2])
        assert _np.allclose(by_bonds[1], [3, 4, 5])
        assert _np.allclose(by_bonds[2], [6])
        assert _np.allclose(by_bonds[3], [7])
Exemple #8
0
    def test_resSeq_file(self):
        by_resSeq = mdcfragments.get_fragments(test_filenames.small_monomer,
                                               method='resSeq')

        assert _np.allclose(by_resSeq[0], [0, 1, 2])
        assert _np.allclose(by_resSeq[1], [3, 4])
        assert _np.allclose(by_resSeq[2], [5])
        assert _np.allclose(by_resSeq[3], [6, 7])
Exemple #9
0
 def test_join_fragments_normal(self):
     by_bonds = mdcfragments.get_fragments(self.geom.top,
                                           join_fragments=[[1, 2]],
                                           verbose=True,
                                           method='bonds')
     assert _np.allclose(by_bonds[0], [0, 1, 2])
     assert _np.allclose(by_bonds[1], [3, 4, 5, 6])
     assert _np.allclose(by_bonds[2], [7])
Exemple #10
0
    def test_join_fragments_special_cases(self):
        # Checking if redundant fragment ids are removed from the inner list for the argument "join_fragments"
        by_bonds = mdcfragments.get_fragments(self.geom.top,
                                              join_fragments=[[1, 2, 2]],
                                              verbose=True,
                                              method='bonds')

        assert _np.allclose(by_bonds[0], [0, 1, 2])
        assert _np.allclose(by_bonds[1], [3, 4, 5, 6])
        assert _np.allclose(by_bonds[2], [7])

        # Checking for error from the overlapping ids in the argument "join_fragments"
        with pytest.raises(AssertionError):
            mdcfragments.get_fragments(self.geom.top,
                                       join_fragments=[[1, 2], [2, 3]],
                                       verbose=True,
                                       method='bonds')
Exemple #11
0
    def test_resSeq_bonds(self):
        by_both = mdcfragments.get_fragments(
            self.geom.top, method='resSeq_bonds')  #method is both

        assert _np.allclose(by_both[0], [0, 1, 2])
        assert _np.allclose(by_both[1], [3, 4])
        assert _np.allclose(by_both[2], [5])
        assert _np.allclose(by_both[3], [6])
        assert _np.allclose(by_both[4], [7])
Exemple #12
0
    def setUpClass(cls):
        BW_file = path.relpath(test_filenames.adrb2_human_xlsx,
                               test_filenames.RSCB_pdb_path)

        cls.BW_local_w_pdb = nomenclature.LabelerBW(
            BW_file,
            ref_PDB="3SN6",
            local_path=test_filenames.RSCB_pdb_path,
            format="%s",
        )
        cls.fragments = get_fragments(cls.BW_local_w_pdb.top, verbose=False)
Exemple #13
0
 def test_break_fragments_special_cases_breaker_not_present(self):
     # No new fragments are created if residue id is not present anywhere
     by_bonds = mdcfragments.get_fragments(
         self.geom.top,
         fragment_breaker_fullresname=["Glu30"],  # not a valid id
         verbose=True,
         method='bonds')
     assert _np.allclose(by_bonds[0], [0, 1, 2])
     assert _np.allclose(by_bonds[1], [3, 4, 5])
     assert _np.allclose(by_bonds[2], [6])
     assert _np.allclose(by_bonds[3], [7])
Exemple #14
0
 def test_with_BW(self):
     fragments = mdcfragments.get_fragments(self.geom.top)
     input_values = (val for val in [""])
     option = test_filenames.adrb2_human_xlsx
     with mock.patch('builtins.input', lambda *x: next(input_values)):
         residx2conlab, lblr = cli._parse_consensus_option(option, "BW",
                                                           self.geom.top,
                                                           fragments,
                                                           return_Labeler=True,
                                                           try_web_lookup=False)
         self.assertIsInstance(lblr, LabelerBW)
         self.assertIsInstance(residx2conlab,list)
Exemple #15
0
 def test_break_fragments_special_cases_already_breaker_passed_as_string(
         self):
     # Also works if input is a string instead of an iterable of strings
     by_bonds = mdcfragments.get_fragments(
         self.geom.top,
         fragment_breaker_fullresname=
         "GLU30",  # GLU30 is already a fragment breaker
         verbose=True,
         method='bonds')
     assert _np.allclose(by_bonds[0], [0, 1, 2])
     assert _np.allclose(by_bonds[1], [3, 4, 5])
     assert _np.allclose(by_bonds[2], [6])
     assert _np.allclose(by_bonds[3], [7])
Exemple #16
0
 def test_break_fragments_special_cases_already_breaker(self):
     # No new fragments are created if an existing fragment breaker is passed
     by_bonds = mdcfragments.get_fragments(
         self.geom.top,
         fragment_breaker_fullresname=[
             "GLU30"
         ],  # GLU30 is already a fragment breaker
         verbose=True,
         method='bonds')
     assert _np.allclose(by_bonds[0], [0, 1, 2])
     assert _np.allclose(by_bonds[1], [3, 4, 5])
     assert _np.allclose(by_bonds[2], [6])
     assert _np.allclose(by_bonds[3], [7])
Exemple #17
0
    def test_with_BW_already_instantiated(self):
        fragments = mdcfragments.get_fragments(self.geom.top)
        BW = LabelerBW(test_filenames.adrb2_human_xlsx)
        input_values = (val for val in [""])
        with mock.patch('builtins.input', lambda *x: next(input_values)):

            residx2conlab, lblr = cli._parse_consensus_option(BW, "BW",
                                                              self.geom.top,
                                                              fragments,
                                                              return_Labeler=True)
            self.assertIsInstance(lblr, LabelerBW)
            self.assertEqual(lblr,BW)
            self.assertIsInstance(residx2conlab,list)
Exemple #18
0
 def test_break_fragments(self):
     # Checking if the fragments are breaking correctly for the argument "fragment_breaker_fullresname"
     by_bonds = mdcfragments.get_fragments(
         self.geom.top,
         fragment_breaker_fullresname=["VAL31", "GLU27"
                                       ],  # two fragment breakers passed
         verbose=True,
         method='bonds')
     assert _np.allclose(by_bonds[0], [0])
     assert _np.allclose(by_bonds[1], [1, 2])
     assert _np.allclose(by_bonds[2], [3])
     assert _np.allclose(by_bonds[3], [4, 5])
     assert _np.allclose(by_bonds[4], [6])
     assert _np.allclose(by_bonds[5], [7])
Exemple #19
0
    def test_chains(self):
        by_chains = mdcfragments.get_fragments(self.geom.top, method="chains")

        assert _np.allclose(by_chains[0], [0, 1, 2])
        assert _np.allclose(by_chains[1], [3, 4, 5])
        assert _np.allclose(by_chains[2], [6, 7]), by_chains
Exemple #20
0
 def setUp(self):
     self.top = md.load(test_filenames.small_monomer).top
     self.fragments = _mdcfrg.get_fragments(self.top, method="resSeq+",
                                                 verbose=False)
Exemple #21
0
    def setUp(self):
        self.geom2frags = md.load(test_filenames.small_dimer)

        self.by_bonds_geom2frags = _mdcfrg.get_fragments(self.geom2frags.top,
                                                              verbose=True,
                                                              method='bonds')
Exemple #22
0
 def test_Nonestr(self):
     nonefrags = mdcfragments.get_fragments(self.geom.top, method="None")
     _np.testing.assert_array_equal(nonefrags[0],
                                    _np.arange(self.geom.top.n_residues))
     self.assertEqual(len(nonefrags), 1)
Exemple #23
0
 def setUp(self):
     self.geom = md.load(test_filenames.top_pdb)
     self.fragments = mdcfragments.get_fragments(self.geom.top,
                                                 verbose=False)
Exemple #24
0
 def test_dont_know_method(self):
     with pytest.raises(AssertionError):
         mdcfragments.get_fragments(self.geom.top, method='xyz')
Exemple #25
0
 def test_ions_and_water(self):
     geom = md.load(test_filenames.ions_and_water)
     frags = mdcfragments.get_fragments(geom.top, verbose=False)
     assert len(frags) == 3
     assert len(frags[1]) == 5
     assert len(frags[2]) == 10
Exemple #26
0
 def test_molecule_resSeqplus_raises_not_imp(self):
     with pytest.raises(NotImplementedError):
         mdcfragments.get_fragments(self.geom.top,
                                    method="molecules_resSeq+")
Exemple #27
0
 def test_completeness(self):
     for imethod in _allowed_fragment_methods:
         frags = mdcfragments.get_fragments(self.geom.top, method=imethod)
         assert _np.allclose(_np.hstack(frags),
                             _np.arange(self.geom.top.n_residues))