<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def clean_structure(self, out_suffix='_clean', outdir=None, force_rerun=False, remove_atom_alt=True, keep_atom_alt_id='A',remove_atom_hydrogen=True, add_atom_occ=True, remove_res_hetero=True, keep_chemicals=None, keep_res_only=None, add_chain_id_if_empty='X', keep_chains=None):
 """Clean the structure file associated with this structure, and save it as a new file. Returns the file path. Args: out_suffix (str):
 Suffix to append to original filename outdir (str):
 Path to output directory force_rerun (bool):
 If structure should be re-cleaned if a clean file exists already remove_atom_alt (bool):
 Remove alternate positions keep_atom_alt_id (str):
 If removing alternate positions, which alternate ID to keep remove_atom_hydrogen (bool):
 Remove hydrogen atoms add_atom_occ (bool):
 Add atom occupancy fields if not present remove_res_hetero (bool):
 Remove all HETATMs keep_chemicals (str, list):
 If removing HETATMs, keep specified chemical names keep_res_only (str, list):
 Keep ONLY specified resnames, deletes everything else! add_chain_id_if_empty (str):
 Add a chain ID if not present keep_chains (str, list):
 Keep only these chains Returns: str: Path to cleaned PDB file """


        if not self.structure_file:
            log.error('{}: no structure file, unable to clean'.format(self.id))
            return None

        clean_pdb_file = ssbio.protein.structure.utils.cleanpdb.clean_pdb(self.structure_path, out_suffix=out_suffix,
                                                                          outdir=outdir, force_rerun=force_rerun,
                                                                          remove_atom_alt=remove_atom_alt,
                                                                          remove_atom_hydrogen=remove_atom_hydrogen,
                                                                          keep_atom_alt_id=keep_atom_alt_id,
                                                                          add_atom_occ=add_atom_occ,
                                                                          remove_res_hetero=remove_res_hetero,
                                                                          keep_chemicals=keep_chemicals,
                                                                          keep_res_only=keep_res_only,
                                                                          add_chain_id_if_empty=add_chain_id_if_empty,
                                                                          keep_chains=keep_chains)

        return clean_pdb_file