docs: def _representative_structure_setter(self, structprop, keep_chain, clean=True, keep_chemicals=None,
                                           out_suffix='_clean', outdir=None, force_rerun=False):
          """Set the representative structure by 1) cleaning it and 2) copying over attributes of the original structure.
  
          The structure is copied because the chains stored may change, and cleaning it makes a new PDB file.
  
          Args:
              structprop (StructProp): StructProp object to set as representative
              keep_chain (str): Chain ID to keep
              clean (bool): If the PDB file should be cleaned (see ssbio.structure.utils.cleanpdb)
              keep_chemicals (str, list): Keep specified chemical names
              out_suffix (str): Suffix to append to clean PDB file
              outdir (str): Path to output directory
  
          Returns:
              StructProp: representative structure
  
          """
  
          # Set output directory for cleaned PDB file
          if not outdir:
              outdir = self.structure_dir
              if not outdir:
                  raise ValueError('Output directory must be specified')
  
          # Create new ID for this representative structure, it cannot be the same as the original one
          new_id = 'REP-{}'.format(structprop.id)
  
          # Remove the previously set representative structure if set to force rerun
          if self.structures.has_id(new_id):
              if force_rerun:
                  existing = self.structures.get_by_id(new_id)
                  self.structures.remove(existing)
  
          # If the structure is to be cleaned, and which chain to keep
          if clean:
              final_pdb = structprop.clean_structure(outdir=outdir, out_suffix=out_suffix,
                                                     keep_chemicals=keep_chemicals, keep_chains=keep_chain,
                                                     force_rerun=force_rerun)
              log.debug('{}: cleaned structure and saved new file at {}'.format(structprop.id, final_pdb))
          else:
              final_pdb = structprop.structure_path
  
          self.representative_structure = StructProp(ident=new_id, chains=keep_chain, mapped_chains=keep_chain,
                                                     structure_path=final_pdb, file_type='pdb')
          self.representative_chain = keep_chain
  
          self.representative_structure.update(structprop.get_dict_with_chain(chain=keep_chain),
                                               only_keys=self.__representative_structure_attributes,
                                               overwrite=True)
  
          # Save the original structure ID as an extra attribute
          self.representative_structure.original_structure_id = structprop.id
  
          # Also need to parse the clean structure and save its sequence..
          self.representative_structure.parse_structure()
  
          # And finally add it to the list of structures
          self.structures.append(self.representative_structure)