\lstdefinelanguage{relax}{
    alsoletter={.>|},
    morekeywords={and,assert,break,continue,del,else,exec,global,help,if,in,is,for,not,or,pass,print,raise,return,while,yield,},
    morekeywords=[2]{as,from,import,},
    morekeywords=[3]{class,def,},
    morekeywords=[4]{relax>,relax|},
    morekeywords=[5]{align_tensor.copy,align_tensor.delete,align_tensor.display,align_tensor.fix,align_tensor.init,align_tensor.matrix_angles,align_tensor.reduction,align_tensor.set_domain,align_tensor.svd,angles.diff_frame,bmrb.citation,bmrb.display,bmrb.read,bmrb.script,bmrb.software,bmrb.software_select,bmrb.thiol_state,bmrb.write,bruker.read,chemical_shift.read,consistency_tests.set_frq,dasha.create,dasha.execute,dasha.extract,deselect.all,deselect.interatom,deselect.read,deselect.reverse,deselect.spin,diffusion_tensor.copy,diffusion_tensor.delete,diffusion_tensor.display,diffusion_tensor.init,domain,dx.execute,dx.map,eliminate,error_analysis.covariance_matrix,fix,frame_order.average_position,frame_order.num_int_pts,frame_order.pdb_model,frame_order.pivot,frame_order.quad_int,frame_order.ref_domain,frame_order.select_model,grace.view,grace.write,interatom.copy,interatom.define,interatom.read_dist,interatom.set_dist,interatom.unit_vectors,j_coupling.copy,j_coupling.delete,j_coupling.display,j_coupling.read,j_coupling.write,jw_mapping.set_frq,minimise.calculate,minimise.execute,minimise.grid_search,minimise.grid_zoom,model_free.create_model,model_free.delete,model_free.remove_tm,model_free.select_model,model_selection,molecule.copy,molecule.create,molecule.delete,molecule.display,molecule.name,molecule.type,molmol.clear_history,molmol.command,molmol.macro_apply,molmol.macro_run,molmol.macro_write,molmol.ribbon,molmol.tensor_pdb,molmol.view,monte_carlo.create_data,monte_carlo.error_analysis,monte_carlo.initial_values,monte_carlo.off,monte_carlo.on,monte_carlo.setup,n_state_model.CoM,n_state_model.cone_pdb,n_state_model.elim_no_prob,n_state_model.number_of_states,n_state_model.ref_domain,n_state_model.select_model,noe.read_restraints,noe.spectrum_type,palmer.create,palmer.execute,palmer.extract,paramag.centre,pcs.back_calc,pcs.calc_q_factors,pcs.copy,pcs.corr_plot,pcs.delete,pcs.display,pcs.read,pcs.set_errors,pcs.structural_noise,pcs.weight,pcs.write,pipe.bundle,pipe.change_type,pipe.copy,pipe.create,pipe.current,pipe.delete,pipe.display,pipe.hybridise,pipe.switch,pymol.cartoon,pymol.clear_history,pymol.command,pymol.cone_pdb,pymol.frame_order,pymol.macro_apply,pymol.macro_run,pymol.macro_write,pymol.tensor_pdb,pymol.vector_dist,pymol.view,rdc.back_calc,rdc.calc_q_factors,rdc.copy,rdc.corr_plot,rdc.delete,rdc.display,rdc.read,rdc.set_errors,rdc.weight,rdc.write,relax_data.back_calc,relax_data.copy,relax_data.delete,relax_data.display,relax_data.peak_intensity_type,relax_data.read,relax_data.temp_calibration,relax_data.temp_control,relax_data.type,relax_data.write,relax_disp.catia_execute,relax_disp.catia_input,relax_disp.cluster,relax_disp.cpmg_setup,relax_disp.cpmgfit_execute,relax_disp.cpmgfit_input,relax_disp.exp_type,relax_disp.insignificance,relax_disp.nessy_input,relax_disp.parameter_copy,relax_disp.plot_disp_curves,relax_disp.plot_exp_curves,relax_disp.r1_fit,relax_disp.r20_from_min_r2eff,relax_disp.r2eff_err_estimate,relax_disp.r2eff_read,relax_disp.r2eff_read_spin,relax_disp.relax_time,relax_disp.select_model,relax_disp.sherekhan_input,relax_disp.spin_lock_field,relax_disp.spin_lock_offset,relax_disp.write_disp_curves,relax_fit.relax_time,relax_fit.select_model,reset,residue.copy,residue.create,residue.delete,residue.display,residue.name,residue.number,results.display,results.read,results.write,script,select.all,select.display,select.domain,select.interatom,select.read,select.reverse,select.spin,sequence.attach_protons,sequence.copy,sequence.display,sequence.read,sequence.write,spectrometer.frequency,spectrometer.temperature,spectrum.baseplane_rmsd,spectrum.delete,spectrum.error_analysis,spectrum.integration_points,spectrum.read_intensities,spectrum.read_spins,spectrum.replicated,spin.copy,spin.create,spin.create_pseudo,spin.delete,spin.display,spin.element,spin.isotope,spin.name,spin.number,state.load,state.save,structure.add_atom,structure.add_model,structure.align,structure.com,structure.connect_atom,structure.create_diff_tensor_pdb,structure.create_rotor_pdb,structure.create_vector_dist,structure.delete,structure.displacement,structure.find_pivot,structure.get_pos,structure.load_spins,structure.mean,structure.read_gaussian,structure.read_pdb,structure.read_xyz,structure.rmsd,structure.rotate,structure.superimpose,structure.translate,structure.web_of_motion,structure.write_pdb,sys_info,time,value.copy,value.display,value.read,value.set,value.write,vmd.view,},
    moreprocnamekeys={def,class},
    sensitive=true,
    morecomment=[l]{\#},
    morestring=[b]',
    morestring=[b]",
    morestring=[b]""",
}
\lstdefinelanguage{relax_log}{
    alsoletter={.>|},
    morekeywords=[4]{relax>,relax|},
    morekeywords=[5]{align_tensor.copy,align_tensor.delete,align_tensor.display,align_tensor.fix,align_tensor.init,align_tensor.matrix_angles,align_tensor.reduction,align_tensor.set_domain,align_tensor.svd,angles.diff_frame,bmrb.citation,bmrb.display,bmrb.read,bmrb.script,bmrb.software,bmrb.software_select,bmrb.thiol_state,bmrb.write,bruker.read,chemical_shift.read,consistency_tests.set_frq,dasha.create,dasha.execute,dasha.extract,deselect.all,deselect.interatom,deselect.read,deselect.reverse,deselect.spin,diffusion_tensor.copy,diffusion_tensor.delete,diffusion_tensor.display,diffusion_tensor.init,domain,dx.execute,dx.map,eliminate,error_analysis.covariance_matrix,fix,frame_order.average_position,frame_order.num_int_pts,frame_order.pdb_model,frame_order.pivot,frame_order.quad_int,frame_order.ref_domain,frame_order.select_model,grace.view,grace.write,interatom.copy,interatom.define,interatom.read_dist,interatom.set_dist,interatom.unit_vectors,j_coupling.copy,j_coupling.delete,j_coupling.display,j_coupling.read,j_coupling.write,jw_mapping.set_frq,minimise.calculate,minimise.execute,minimise.grid_search,minimise.grid_zoom,model_free.create_model,model_free.delete,model_free.remove_tm,model_free.select_model,model_selection,molecule.copy,molecule.create,molecule.delete,molecule.display,molecule.name,molecule.type,molmol.clear_history,molmol.command,molmol.macro_apply,molmol.macro_run,molmol.macro_write,molmol.ribbon,molmol.tensor_pdb,molmol.view,monte_carlo.create_data,monte_carlo.error_analysis,monte_carlo.initial_values,monte_carlo.off,monte_carlo.on,monte_carlo.setup,n_state_model.CoM,n_state_model.cone_pdb,n_state_model.elim_no_prob,n_state_model.number_of_states,n_state_model.ref_domain,n_state_model.select_model,noe.read_restraints,noe.spectrum_type,palmer.create,palmer.execute,palmer.extract,paramag.centre,pcs.back_calc,pcs.calc_q_factors,pcs.copy,pcs.corr_plot,pcs.delete,pcs.display,pcs.read,pcs.set_errors,pcs.structural_noise,pcs.weight,pcs.write,pipe.bundle,pipe.change_type,pipe.copy,pipe.create,pipe.current,pipe.delete,pipe.display,pipe.hybridise,pipe.switch,pymol.cartoon,pymol.clear_history,pymol.command,pymol.cone_pdb,pymol.frame_order,pymol.macro_apply,pymol.macro_run,pymol.macro_write,pymol.tensor_pdb,pymol.vector_dist,pymol.view,rdc.back_calc,rdc.calc_q_factors,rdc.copy,rdc.corr_plot,rdc.delete,rdc.display,rdc.read,rdc.set_errors,rdc.weight,rdc.write,relax_data.back_calc,relax_data.copy,relax_data.delete,relax_data.display,relax_data.peak_intensity_type,relax_data.read,relax_data.temp_calibration,relax_data.temp_control,relax_data.type,relax_data.write,relax_disp.catia_execute,relax_disp.catia_input,relax_disp.cluster,relax_disp.cpmg_setup,relax_disp.cpmgfit_execute,relax_disp.cpmgfit_input,relax_disp.exp_type,relax_disp.insignificance,relax_disp.nessy_input,relax_disp.parameter_copy,relax_disp.plot_disp_curves,relax_disp.plot_exp_curves,relax_disp.r1_fit,relax_disp.r20_from_min_r2eff,relax_disp.r2eff_err_estimate,relax_disp.r2eff_read,relax_disp.r2eff_read_spin,relax_disp.relax_time,relax_disp.select_model,relax_disp.sherekhan_input,relax_disp.spin_lock_field,relax_disp.spin_lock_offset,relax_disp.write_disp_curves,relax_fit.relax_time,relax_fit.select_model,reset,residue.copy,residue.create,residue.delete,residue.display,residue.name,residue.number,results.display,results.read,results.write,script,select.all,select.display,select.domain,select.interatom,select.read,select.reverse,select.spin,sequence.attach_protons,sequence.copy,sequence.display,sequence.read,sequence.write,spectrometer.frequency,spectrometer.temperature,spectrum.baseplane_rmsd,spectrum.delete,spectrum.error_analysis,spectrum.integration_points,spectrum.read_intensities,spectrum.read_spins,spectrum.replicated,spin.copy,spin.create,spin.create_pseudo,spin.delete,spin.display,spin.element,spin.isotope,spin.name,spin.number,state.load,state.save,structure.add_atom,structure.add_model,structure.align,structure.com,structure.connect_atom,structure.create_diff_tensor_pdb,structure.create_rotor_pdb,structure.create_vector_dist,structure.delete,structure.displacement,structure.find_pivot,structure.get_pos,structure.load_spins,structure.mean,structure.read_gaussian,structure.read_pdb,structure.read_xyz,structure.rmsd,structure.rotate,structure.superimpose,structure.translate,structure.web_of_motion,structure.write_pdb,sys_info,time,value.copy,value.display,value.read,value.set,value.write,vmd.view,},
    moreprocnamekeys={def,class},
    sensitive=true,
    morecomment=[l]{\#},
    morestring=[b]',
    morestring=[b]",
    morestring=[b]""",
}
