def generate_pymol_session(self, pymol_executable = 'pymol', settings = {}):
        ''' Generates the PyMOL session for the scaffold, model, and design structures.
            Returns this session and the script which generated it.'''
        b = BatchBuilder(pymol_executable = pymol_executable)

        if self.scaffold_pdb:
            structures_list = [
                ('Scaffold', self.scaffold_pdb.pdb_content, self.get_differing_scaffold_residue_ids()),
                ('Model', self.model_pdb.pdb_content, self.get_differing_model_residue_ids()),
                ('ExpStructure', self.design_pdb.pdb_content, self.get_differing_design_residue_ids ()),
            ]
        else:
            structures_list = [
                ('Model', self.model_pdb.pdb_content, self.get_differing_model_residue_ids()),
                ('ExpStructure', self.design_pdb.pdb_content, self.get_differing_design_residue_ids ()),
            ]

        PSE_files = b.run(ScaffoldModelDesignBuilder, [PDBContainer.from_content_triple(structures_list)], settings = settings)

        return PSE_files[0], b.PSE_scripts[0]