MSMS¶
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.
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.
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
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
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"
Repeat step 5 for the file
/usr/local/lib/msms/pdb_to_xyzrn
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¶
With ssbio¶
To run the program using the ssbio Python wrapper, see: ssbio.protein.path.to.wrapper()
FAQs¶
How do I cite MSMS?
- Sanner MF, Olson AJ & Spehner J-C (1996) Reduced surface: an efficient way to compute molecular surfaces. Biopolymers 38: 305–320. Available at: http://mgl.scripps.edu/people/sanner/html/papers/msmsTextAndFigs.pdf
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_id, outfile=None, outdir=None, outext='_msms.df', force_rerun=False)[source]¶ Run MSMS (using Biopython) on a Biopython Structure Model.
Depths are in units Angstroms. 1A = 10^-10 m = 1nm. Returns a dictionary of:
{ chain_id:{ resnum1_id: (res_depth, ca_depth), resnum2_id: (res_depth, ca_depth) } }
Parameters: model – Biopython Structure Model 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