code: def extract_solvent_accessibility_dssp(in_dssp, path=True):
      
      if path:
          with open(in_dssp, 'r') as inf:
              dssp_out = inf.read()
      else:
          dssp_out = in_dssp[:]
      dssp_residues = []
      go = False
      for line in dssp_out.splitlines():
          if go:
              try:
                  res_num = int(line[5:10].strip())
                  chain = line[10:12].strip()
                  residue = line[13]
                  acc = int(line[35:38].strip())
                  # It is IMPORTANT that acc remains the final value of the
                  # returned list, due to its usage in
                  # isambard.ampal.base_ampal.tag_dssp_solvent_accessibility
                  dssp_residues.append([res_num, chain, residue, acc])
              except ValueError:
                  pass
          else:
              if line[2] == '#':
                  go = True
              pass
      return dssp_residues
docs: Uses DSSP to extract solvent accessibilty information on every residue.
  
      Notes
      -----
      For more information on the solvent accessibility metrics used in dssp, see:
      http://swift.cmbi.ru.nl/gv/dssp/HTML/descrip.html#ACC
      In the dssp files value is labeled 'ACC'.
  
      Parameters
      ----------
      in_dssp : str
          Path to DSSP file.
      path : bool
          Indicates if in_dssp is a path or a string.
  
      Returns
      -------
      dssp_residues : list
          Each internal list contains:
              [0] int Residue number
              [1] str Chain identifier
              [2] str Residue type
              [3] int dssp solvent accessibilty