MSMS

Residue depths

Description

MSMS computes solvent excluded surfaces on a protein structure. Generally, MSMS is used to calculate residue depths (in Angstroms) from the surface of a protein, using a PDB file as an input. ssbio provides wrappers through Biopython to run MSMS as well as store the depths in an associated StructProp object.

Installation instructions (Unix)

Note

These instructions were created on an Ubuntu 17.04 system.

  1. Head to the Download page, and under the header “MSMS 2.6.X - Current Release” download the “Unix/Linux i86_64” version - if this doesn’t work though you’ll want to try the “Unix/Linux i86” version later.

  2. Download it, unarchive it to your library path:

    sudo mkdir /usr/local/lib/msms
    cd /usr/local/lib/msms
    tar zxvf /path/to/your/downloaded/file/msms_i86_64Linux2_2.6.1.tar.gz
    
  3. Symlink the binaries (or alternatively, add the two locations to your PATH):

    sudo ln -s /usr/local/lib/msms/msms.x86_64Linux2.2.6.1 /usr/local/bin/msms
    sudo ln -s /usr/local/lib/msms/pdb_to_xyzr* /usr/local/bin
    
  4. Fix a bug in the pdb_to_xyzr file (see: http://mailman.open-bio.org/pipermail/biopython/2015-November/015787.html):

    sudo vi /usr/local/lib/msms/pdb_to_xyzr
    

    at line 34, change:

    numfile = "./atmtypenumbers"
    

    to:

    numfile = "/usr/local/lib/msms/atmtypenumbers"
    
  5. Repeat step 5 for the file /usr/local/lib/msms/pdb_to_xyzrn

  6. Now try running msms in the terminal, it should say:

    $ msms
    MSMS 2.6.1 started on structure
    Copyright M.F. Sanner (1994)
    Compilation flags -O2 -DVERBOSE -DTIMING
    MSMS: No input stream specified
    

Program execution

In the shell

To run the program on its own in the shell…

<code>

With ssbio

To run the program using the ssbio Python wrapper, see: ssbio.protein.path.to.wrapper()

FAQs

  • How do I cite MSMS?

  • How long does it take to run?

    • Depending on the size of the protein structure, the program can take up to a couple minutes to execute.
  • I’m having issues running MSMS…

    • See the ssbio wiki for (hopefully) some solutions - or add yours in when you find the answer!

API

ssbio.protein.structure.properties.msms.get_msms_df(model, pdb_file, outfile=None, outdir=None, outext='_msms.df', force_rerun=False)[source]

Run MSMS (using Biopython) on a Biopython Structure Model and the path to the actual PDB file.

Returns a dictionary of:
{chain_id: {resnum1_id: (res_depth, ca_depth)},
{resnum2_id: (res_depth, ca_depth)} }

Depths are in units Angstroms. 1A = 10^-10 m = 1nm

Parameters:
  • model – Biopython Structure Model
  • pdb_file – Path to PDB file
Returns:

ResidueDepth property_dict, reformatted

Return type:

Pandas DataFrame

ssbio.protein.structure.properties.msms.get_msms_df_on_file(pdb_file, outfile=None, outdir=None, outext='_msms.df', force_rerun=False)[source]

Run MSMS (using Biopython) on a PDB file.

Saves a CSV file of:
chain: chain ID resnum: residue number (PDB numbering) icode: residue insertion code res_depth: average depth of all atoms in a residue ca_depth: depth of the alpha carbon atom

Depths are in units Angstroms. 1A = 10^-10 m = 1nm

Parameters:
  • pdb_file – Path to PDB file
  • outfile – Optional name of output file (without extension)
  • outdir – Optional output directory
  • outext – Optional extension for the output file
  • outext – Suffix appended to json results file
  • force_rerun – Rerun MSMS even if results exist already
Returns:

ResidueDepth property_dict, reformatted

Return type:

Pandas DataFrame