docs: def extract_pp_helices(in_pdb):
      """Uses DSSP to find polyproline helices in a pdb file.
  
      Returns a length 3 list with a helix id, the chain id and a dict
      containing the coordinates of each residues CA.
  
      Parameters
      ----------
      in_pdb : string
          Path to a PDB file.
      """
      t_phi = -75.0
      t_phi_d = 29.0
      t_psi = 145.0
      t_psi_d = 29.0
  
      pph_dssp = subprocess.check_output(
          [global_settings['dssp']['path'], in_pdb])
      dssp_residues = []
      go = False
      for line in pph_dssp.splitlines():
          if go:
              res_num = int(line[:5].strip())
              chain = line[11:13].strip()
              ss_type = line[16]
              phi = float(line[103:109].strip())
              psi = float(line[109:116].strip())
              dssp_residues.append((res_num, ss_type, chain, phi, psi))
          else:
              if line[2] == '#':
                  go = True
              pass
      pp_chains = []
      chain = []
      ch_on = False
      for item in dssp_residues:
          if (item[1] == ' ') and (
              t_phi - t_phi_d < item[3] < t_phi + t_phi_d) and (
              t_psi - t_psi_d < item[4] < t_psi + t_psi_d):
              chain.append(item)
              ch_on = True
          else:
              if ch_on:
                  pp_chains.append(chain)
                  chain = []
                  ch_on = False
      pp_chains = [x for x in pp_chains if len(x) > 1]
      pp_helices = []
      with open(in_pdb, 'r') as pdb:
          pdb_atoms = split_pdb_lines(pdb.read())
      for pp_helix in pp_chains:
          chain_id = pp_helix[0][2]
          res_range = [x[0] for x in pp_helix]
          helix = []
          for atom in pdb_atoms:
              if (atom[2] == "CA") and (
                      atom[5] == chain_id) and (
                      atom[6] in res_range):
                  helix.append(tuple(atom[8:11]))
          pp_helices.append(helix)
      return pp_helices