code: def fix_pdb(self):
          '''A function to fix fatal errors in PDB files when they can be automatically fixed. At present, this only runs if
             self.strict is False. We may want a separate property for this since we may want to keep strict mode but still
             allow PDBs to be fixed.
             The only fixes at the moment are for missing chain IDs which get filled in with a valid PDB ID, if possible.'''
          if self.strict:
              return
          chains = set()
          for l in self.lines:
              if l.startswith('ATOM  ') or l.startswith('HETATM'):
                  chains.add(l[21])
          if ' ' in chains:
              fresh_id = None
              allowed_chain_ids = list(string.uppercase) + list(string.lowercase) + map(str, range(10))
              for c in chains:
                  try: allowed_chain_ids.remove(c)
                  except: pass
              if allowed_chain_ids:
                  fresh_id = allowed_chain_ids[0]
              new_lines = []
              if fresh_id:
                  for l in self.lines:
                      if (l.startswith('ATOM  ') or l.startswith('HETATM')) and l[21] == ' ':
                          new_lines.append('%s%s%s' % (l[:21], fresh_id, l[22:]))
                      else:
                          new_lines.append(l)
                  self.lines = new_lines