# `main`

Perform functions related to _main_ execution of PDB2PQR.

This module is intended for functions that directly touch arguments provided at the invocation of PDB2PQR. It was created to avoid cluttering the __init__.py file.

Code author: Nathan Baker (et al.)

pdb2pqr.main.build_main_parser()

  Build an argument parser.

  Todo

  Need separate argparse groups for PDB2PKA and PROPKA. These exist but need real options.

  Returns:

    argument parser

  Return type:

    argparse.ArgumentParser

pdb2pqr.main.check_files(args)

  Check for other necessary files.

  Parameters:

    args (argparse.Namespace) – command-line arguments

  Raises:

    - FileNotFoundError – necessary files not found

    - RuntimeError – input argument or file parsing problems

pdb2pqr.main.check_options(args)

  Sanity check options.

  Parameters:

    args (argparse.Namespace) – command-line arguments

  Raises:

    RuntimeError – silly option combinations were encountered.

pdb2pqr.main.drop_water(pdblist)

  Drop waters from a list of PDB records.

  Todo

  this module is already too long but this function fits better here. Other possible place would be utilities.

  Parameters:

    pdb_list ([str]) – list of PDB records as returned by io.get_molecule

  Returns:

    new list of PDB records with waters removed.

  Return type:

    [str]

pdb2pqr.main.dx_to_cube()

  Convert DX file format to Cube file format.

  The OpenDX file format is defined at <https://www.idvbook.com/wp-content/uploads/2010/12/opendx.pdf` and the Cube file format is defined at <https://docs.chemaxon.com/display/Gaussian_Cube_format.html>.

  Todo

  This function should be moved into the APBS code base.

pdb2pqr.main.is_repairable(biomolecule, has_ligand)

  Determine if the biomolecule can be (or needs to be) repaired.

  Parameters:

    - biomolecule (biomol.Biomolecule) – biomolecule object

    - has_ligand (bool) – does the system contain a ligand?

  Returns:

    indication of whether biomolecule can be repaired

  Return type:

    bool

  Raises:

    ValueError – if there are insufficient heavy atoms or a significant part of the biomolecule is missing

pdb2pqr.main.main()

  Hook for command-line usage.

pdb2pqr.main.main_driver(args)

  Main driver for running program from the command line.

  Validate inputs, launch PDB2PQR, handle output.

  Parameters:

    args (argparse.Namespace) – command-line arguments

pdb2pqr.main.non_trivial(args, biomolecule, ligand, definition, is_cif)

  Perform a non-trivial PDB2PQR run.

  Todo

  These routines should be generalized to biomolecules; none of them are specific to biomolecules.

  Parameters:

    - args (argparse.Namespace) – command-line arguments

    - biomolecule (Biomolecule) – biomolecule

    - ligand (Mol2Molecule) – ligand object or None

    - definition (Definition) – topology definition

    - is_cif (bool) – indicates whether file is CIF format

  Raises:

    ValueError – for missing atoms that prevent debumping

  Returns:

    dictionary with results

  Return type:

    dict

pdb2pqr.main.print_pdb(args, pdb_lines, header_lines, missing_lines, is_cif)

  Print PDB-format output to specified file

  Todo

  Move this to another module (io)

  Parameters:

    - args (argparse.Namespace) – command-line arguments

    - pdb_lines ([str]]) – output lines (records)

    - header_lines ([str]) – header lines

    - missing_lines ([str]) – lines describing missing atoms (should go in header)

    - is_cif (bool) – flag indicating CIF format

pdb2pqr.main.print_pqr(args, pqr_lines, header_lines, missing_lines, is_cif)

  Print PQR-format output to specified file

  Todo

  Move this to another module (io)

  Parameters:

    - args (argparse.Namespace) – command-line arguments

    - pqr_lines ([str]) – output lines (records)

    - header_lines ([str]) – header lines

    - missing_lines ([str]) – lines describing missing atoms (should go in header)

    - is_cif (bool) – flag indicating CIF format

pdb2pqr.main.print_splash_screen(args)

  Print argument overview and citation information.

  Parameters:

    args (argparse.Namespace) – command-line arguments

pdb2pqr.main.run_propka(args, biomolecule)

  Run a PROPKA calculation.

  Parameters:

    - args (argparse.Namespace) – command-line arguments

    - biomolecule (Biomolecule) – biomolecule object

  Returns:

    (DataFrame-convertible table of assigned pKa values, pKa information from PROPKA)

  Return type:

    (list, str)

pdb2pqr.main.setup_molecule(pdblist, definition, ligand_path)

  Set up the molecular system.

  Parameters:

    - pdblist (list) – list of PDB records

    - definition (Definition) – topology definition

    - ligand_path (str) – path to ligand (may be None)

  Returns:

    (biomolecule object, definition object–revised if ligand was parsed, ligand object–may be None)

  Return type:

    (Biomolecule, Definition, Ligand)

pdb2pqr.main.transform_arguments(args)

  Transform arguments with logic not provided by argparse.

  Todo

  I wish this could be done with argparse.

  Parameters:

    args (argparse.Namespace) – command-line arguments

  Returns:

    modified arguments

  Return type:

    argparse.Namespace