docs: def get_msms_df_on_file(pdb_file, outfile=None, outdir=None, outext='_msms.df', force_rerun=False):
      """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
  
      Args:
          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:
          Pandas DataFrame: ResidueDepth property_dict, reformatted
  
      """
      # Create the output file name
      outfile = ssbio.utils.outfile_maker(inname=pdb_file, outname=outfile, outdir=outdir, outext=outext)
  
      if ssbio.utils.force_rerun(flag=force_rerun, outfile=outfile):
          # Load the structure
          my_structure = StructureIO(pdb_file)
          model = my_structure.first_model
          df = get_msms_df(model, pdb_id=op.splitext(op.basename(pdb_file))[0],
                           outfile=outfile, outdir=outdir, outext=outext, force_rerun=force_rerun)
      else:
          log.debug('{}: already ran MSMS and force_rerun={}, loading results'.format(outfile, force_rerun))
          df = pd.read_csv(outfile, index_col=0)
  
      return df