Source code for haddock.clis.restraints.restrain_bodies

"""haddock3-restraints restrain_bodies subcommand.

The restrain_bodies subcommand creates distance restraints to lock several 
chains together. Useful to avoid unnatural flexibility or movement due to
sequence/numbering gaps.

Usage::
	
	haddock3-restraints restrain_bodies <structure> [--exclude] [--verbose]
"""

import logging
import sys
import random

from haddock.libs.librestraints import read_structure, get_bodies, build_restraints, generate_tbl

# Set random seed to have reproducibility
random.seed(917)

[docs]def add_restrain_bodies_arguments(restraint_bodies_subcommand): restraint_bodies_subcommand.add_argument( "structure", help="The PDB structure to be restrained.", ) restraint_bodies_subcommand.add_argument( "-e", "--exclude", help="Chains to exclude from the calculation.", required=False, type=str, ) restraint_bodies_subcommand.add_argument( "-v", "--verbose", help="Tune verbosity of the output.", required=False, default=0, type=int, ) restraint_bodies_subcommand
[docs]def restrain_bodies(structure, exclude=None, verbose=0): # noqa: E501 """Create distance restraints to lock several chains together. Parameters ---------- structure : str The PDB structure to be restrained. exclude : str Chains to exclude from the calculation. verbose : int Tune verbosity of the output. """ if verbose== 1: logging.basicConfig(level=logging.INFO) elif verbose > 1: logging.basicConfig(level=logging.DEBUG) else: logging.basicConfig(level=logging.WARNING) # Main logic atom_lst = read_structure(structure, exclude=exclude) bodies = get_bodies(atom_lst) restraints = build_restraints(bodies) generate_tbl(atom_lst, restraints)