<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def prep_itasser_modeling(self, itasser_installation, itlib_folder, runtype, create_in_dir=None, execute_from_dir=None, all_genes=False, print_exec=False, **kwargs):
 """Prepare to run I-TASSER homology modeling for genes without structures, or all genes. Args: itasser_installation (str):
 Path to I-TASSER folder, i.e. ``~/software/I-TASSER4.4`` itlib_folder (str):
 Path to ITLIB folder, i.e. ``~/software/ITLIB`` runtype: How you will be running I-TASSER - local, slurm, or torque create_in_dir (str):
 Local directory where folders will be created, if not provided default is the GEM-PRO's ``data_dir`` execute_from_dir (str):
 Optional path to execution directory - use this if you are copying the homology models to another location such as a supercomputer for running all_genes (bool):
 If all genes should be prepped, or only those without any mapped structures print_exec (bool):
 If the execution statement should be printed to run modelling Todo: * Document kwargs - extra options for I-TASSER, SLURM or Torque execution * Allow modeling of any sequence in sequences attribute, select by ID or provide SeqProp? """

        if not create_in_dir:
            if not self.data_dir:
                raise ValueError('Output directory must be specified')
            self.homology_models_dir = op.join(self.data_dir, 'homology_models')
        else:
            self.homology_models_dir = create_in_dir

        ssbio.utils.make_dir(self.homology_models_dir)

        if not execute_from_dir:
            execute_from_dir = self.homology_models_dir

        counter = 0
        for g in self.genes_with_a_representative_sequence:
            repstruct = g.protein.representative_structure
            if repstruct and not all_genes:
                log.debug('{}: representative structure set, skipping homology modeling'.format(g.id))
                continue

            g.protein.prep_itasser_modeling(itasser_installation=itasser_installation,
                                            itlib_folder=itlib_folder, runtype=runtype,
                                            create_in_dir=self.homology_models_dir,
                                            execute_from_dir=execute_from_dir,
                                            print_exec=print_exec, **kwargs)
            counter += 1

        log.info('Prepared I-TASSER modeling folders for {} genes in folder {}'.format(counter,
                                                                                       self.homology_models_dir))