def prepare_run(self, log, info): wd = info[Keys.WORKDIR] exe = info.get(Keys.EXECUTABLE, 'tandem') # need to create a working copy to prevent replacement with app specific definitions app_info = info.copy() app_info = self._define_score(app_info, log) app_info["STATIC_MODS"], app_info["VARIABLE_MODS"], app_info[ 'TERMINAL_MODS'] = genmodstr_to_engine(info["STATIC_MODS"], info["VARIABLE_MODS"], 'XTandem') app_info['ENZYME'], app_info[ 'XTANDEM_SEMI_CLEAVAGE'] = enzymestr_to_engine( info['ENZYME'], 'XTandem') #files required and written app_info['XTANDEM_PARAMS'] = os.path.join(wd, 'xtandem.params') templates.read_mod_write(app_info, templates.get_tpl_of_class(self), app_info['XTANDEM_PARAMS']) app_info['XTANDEM_INPUT'] = os.path.join(wd, 'xtandem.input') app_info['XTANDEM_TAXONOMY'] = os.path.join(wd, 'xtandem.taxonomy') app_info['XTANDEM_RESULT'] = os.path.join(wd, 'xtandem.result') self._write_input_files(app_info) #integrated tandem2xml XTANDEM_RESULT conversion info[Keys.PEPXML] = os.path.join(wd, 'xtandem.pep.xml') command = '%s %s && Tandem2XML %s %s ' % ( exe, app_info['XTANDEM_INPUT'], app_info['XTANDEM_RESULT'], info[Keys.PEPXML]) return info, command
def prepare_run(self, log, info): """ -OI PI -Ow INSTRWARN -dDECOY_ -OAPdlIw (dummy) """ # XTINERACT # TODO check if this is needed #info['XINTERACT'] = '-dDECOY_ -OAPdlIw' result = os.path.join(info[Keys.WORKDIR], 'interact.pep.xml') enz, _ = enzymestr_to_engine(info['ENZYME'], 'InteractParser') command = [] tpp_dir = info['TPPDIR'] command.append("{exe} {result} {pepxml} -E{enzyme}".format( exe=os.path.join(info['TPPDIR'], "InteractParser"), result=result, pepxml=info[Keys.PEPXML], enzyme=enz)) command.append("{exe} {result} {database}".format( exe=os.path.join(info['TPPDIR'], "RefreshParser"), result=result, pepxml=info[Keys.PEPXML], enzyme=enz, database=info['DBASE'])) command.append( "{exe} {result} DECOY={decoy} ACCMASS NONPARAM DECOYPROBS LEAVE PI INSTRWARN" .format(exe=os.path.join(info['TPPDIR'], "PeptideProphetParser"), result=result, decoy=info['DECOY'])) info[Keys.PEPXML] = result return info, command
def prepare_run(self, log, info): """ -OI PI -Ow INSTRWARN -dDECOY_ -OAPdlIw (dummy) """ # XTINERACT # TODO check if this is needed #info['XINTERACT'] = '-dDECOY_ -OAPdlIw' result = os.path.join(info[Keys.WORKDIR], 'interact.pep.xml') enz, _ = enzymestr_to_engine(info['ENZYME'], 'InteractParser') command = [] tpp_dir = info['TPPDIR'] command.append( "{exe} {result} {pepxml} -E{enzyme}".format(exe=os.path.join(info['TPPDIR'],"InteractParser"),result=result,pepxml=info[Keys.PEPXML],enzyme=enz) ) command.append( "{exe} {result} {database}".format( exe=os.path.join(info['TPPDIR'],"RefreshParser"), result=result, pepxml=info[Keys.PEPXML],enzyme=enz,database=info['DBASE']) ) command.append( "{exe} {result} DECOY={decoy} ACCMASS NONPARAM DECOYPROBS LEAVE PI INSTRWARN".format( exe = os.path.join(info['TPPDIR'],"PeptideProphetParser"), result=result, decoy=info['DECOY']) ) info[Keys.PEPXML] = result return info, command
def prepare_run(self, log, info): wd = info[Keys.WORKDIR] basename = os.path.splitext(os.path.split(info[Keys.MZXML])[1])[0] info[Keys.PEPXML] = os.path.join(wd, basename + ".pepXML") #myrimatch default is pepXML NOT pep.xml # need to create a working copy to prevent replacement or generic definitions # with app specific definitions app_info = info.copy() app_info['ENZYME'], app_info['MYRIMATCH_MINTERMINICLEAVAGES'] = enzymestr_to_engine(info['ENZYME'], 'Myrimatch') app_info["STATIC_MODS"], app_info["VARIABLE_MODS"], _ = genmodstr_to_engine(info["STATIC_MODS"], info["VARIABLE_MODS"], 'Myrimatch') if app_info['FRAGMASSUNIT'] == 'Da': app_info['FRAGMASSUNIT'] = 'daltons' #link DB to cwd app_info['DBASE'] = os.path.join(wd, os.path.basename(info['DBASE'])) os.symlink(info['DBASE'], app_info['DBASE']) #tpl = os.path.join(wd, 'myrimatch.cfg') tpl = 'myrimatch.cfg' tplfile = os.path.join(wd, tpl) read_mod_write(app_info, get_tpl_of_class(self), tplfile) exe_path = app_info['MYRIMATCH_DIR'] exe = app_info['MYRIMATCH_EXE'] command = "{exe} -cpus {threads} -cfg {tpl} -workdir {workdir} -ProteinDatabase {dbase} {mzxml}".format( exe=os.path.join(exe_path, exe), threads=app_info['THREADS'], tpl=tpl, workdir=app_info[Keys.WORKDIR], dbase=app_info['DBASE'], mzxml=app_info[Keys.MZXML]) # update original info object with new keys from working copy #info = DictUtils.merge(log, info, app_info, priority='left') return info, command
def prepare_run(self, log, info): wd = info[Keys.WORKDIR] basename = os.path.join(wd, os.path.splitext(os.path.split(info[Keys.MZXML])[1])[0]) info[Keys.PEPXML] = basename + '.pep.xml' # need to create a working copy to prevent replacement or generic definitions # with app specific definitions app_info = info.copy() if info['PRECMASSUNIT'] == 'Da': app_info['PRECMASSUNIT'] = '0' elif info['PRECMASSUNIT'] == 'ppm': app_info['PRECMASSUNIT'] = '2' else: raise RuntimeError("Precmassunit %s unknown" % info['PRECMASSUNIT']) if info['FRAGMASSUNIT'] == 'ppm': raise RuntimeError("Comet does not support frag mass error unit PPM") if not 0.01 < float(app_info['FRAGMASSERR']) < 1.1: log.warn('Very high or low fragmasserror ' + app_info['FRAGMASSERR']) app_info["STATIC_MODS"], app_info["VARIABLE_MODS"], _ = genmodstr_to_engine(info["STATIC_MODS"], info["VARIABLE_MODS"], 'Comet') app_info['ENZYME'], app_info['NUM_TERM_CLEAVAGES'] = enzymestr_to_engine(info['ENZYME'], 'Comet') tplfile = os.path.join(wd, "comet.params") template = get_tpl_of_class(self) read_mod_write(app_info,template, tplfile) exe_path = app_info['COMET_DIR'] exe = app_info['COMET_EXE'] command = "{exe} -N{basename} -P{tplfile} {mzxml}".format(exe=os.path.join(exe_path, exe), basename=basename, tplfile=tplfile, mzxml=info[Keys.MZXML]) return info, command
def prepare_run(self, log, info): wd = info[Keys.WORKDIR] exe = info.get(Keys.EXECUTABLE, 'tandem') # need to create a working copy to prevent replacement with app specific definitions app_info = info.copy() app_info = self._define_score(app_info, log) app_info["STATIC_MODS"], app_info["VARIABLE_MODS"], app_info['TERMINAL_MODS'] = genmodstr_to_engine(info["STATIC_MODS"], info["VARIABLE_MODS"], 'XTandem') app_info['ENZYME'], app_info['XTANDEM_SEMI_CLEAVAGE'] = enzymestr_to_engine(info['ENZYME'], 'XTandem') #files required and written app_info['XTANDEM_PARAMS'] = os.path.join(wd, 'xtandem.params') templates.read_mod_write(app_info, templates.get_tpl_of_class(self), app_info['XTANDEM_PARAMS']) app_info['XTANDEM_INPUT'] = os.path.join(wd, 'xtandem.input') app_info['XTANDEM_TAXONOMY'] = os.path.join(wd, 'xtandem.taxonomy') app_info['XTANDEM_RESULT'] = os.path.join(wd, 'xtandem.result') self._write_input_files(app_info) #integrated tandem2xml XTANDEM_RESULT conversion info[Keys.PEPXML] = os.path.join(wd, 'xtandem.pep.xml') command = '%s %s && Tandem2XML %s %s ' % ( exe, app_info['XTANDEM_INPUT'], app_info['XTANDEM_RESULT'], info[Keys.PEPXML]) return info, command
def prepare_run(self, log, info): wd = info[Keys.WORKDIR] #add in blast and mzxml2mgf conversion omssadbase = os.path.join(wd, os.path.basename(info['DBASE'])) os.symlink(info['DBASE'], omssadbase) mzxmlbase = os.path.basename(info[Keys.MZXML]) mzxmllink = os.path.join(wd, mzxmlbase) mgffile = os.path.join(wd, os.path.splitext(mzxmlbase)[0] + '.mgf') os.symlink(info[Keys.MZXML], mzxmllink) basename = os.path.splitext(os.path.split(info[Keys.MZXML])[1])[0] result = os.path.join(wd, basename + '.pep.xml') iresult = os.path.join(wd, basename + '.withRT.pep.xml') info[Keys.PEPXML] = iresult # need to create a working copy to prevent replacement or generic definitions # with app specific definitions app_info = info.copy() app_info['DBASE'] = omssadbase if info['FRAGMASSUNIT'] == 'ppm': raise RuntimeError( "OMSSA does not support frag mass error unit PPM") app_info['USERMODXML'] = os.path.join(wd, 'usermod.xml') app_info["STATIC_MODS"], app_info[ "VARIABLE_MODS"], tpl = genmodstr_to_engine( info["STATIC_MODS"], info["VARIABLE_MODS"], 'Omssa') if app_info['STATIC_MODS']: app_info['STATIC_MODS'] = "-mf " + app_info['STATIC_MODS'] if app_info['VARIABLE_MODS']: app_info['VARIABLE_MODS'] = "-mv " + app_info['VARIABLE_MODS'] open(app_info['USERMODXML'], 'w').write(tpl) app_info['ENZYME'], _ = enzymestr_to_engine(info['ENZYME'], 'Omssa') mod_template = templates.modify_template( app_info, templates.read_template(templates.get_tpl_of_class(self))) # necessary check for the precursor mass unig if app_info['PRECMASSUNIT'].lower() == "ppm": mod_template += ' -teppm' log.debug( 'added [ -teppm] to modified template because the precursor mass is defined in ppm' ) exe = app_info.get(Keys.EXECUTABLE, 'omssacl') #grep to prevent log overflow, InteractParser to add RT to pepXML #note: mod_template paths are quoted in the template file command = 'makeblastdb -dbtype prot -in "%s" && ' \ 'MzXML2Search -mgf "%s" | grep -v scan && ' \ '"%s" %s -fm "%s" -op "%s" && ' \ 'InteractParser "%s" "%s" -S' % ( omssadbase, mzxmllink, exe, mod_template, mgffile, result, iresult, result) return info, command
def prepare_run(self, log, info): wd = info[Keys.WORKDIR] basename = os.path.join( wd, os.path.splitext(os.path.split(info[Keys.MZXML])[1])[0]) info[Keys.PEPXML] = basename + '.pep.xml' # need to create a working copy to prevent replacement or generic definitions # with app specific definitions app_info = info.copy() if info['PRECMASSUNIT'] == 'Da': app_info['PRECMASSUNIT'] = '0' elif info['PRECMASSUNIT'] == 'ppm': app_info['PRECMASSUNIT'] = '2' else: raise RuntimeError("Precmassunit %s unknown" % info['PRECMASSUNIT']) if info['FRAGMASSUNIT'] == 'ppm': raise RuntimeError( "Comet does not support frag mass error unit PPM") # Note: FRAGMASSERR does not apply to Comet; instead use pre-defined # FRAGBINTOL and FRAGBINOFF values frag_bin_tol, frag_bin_off, frag_ions_theor = self.get_fragment_ions_values( info.get('COMET_FRAGMENT_IONS', None)) app_info.update({ 'FRAGBINTOL': frag_bin_tol, 'FRAGBINOFF': frag_bin_off, 'FRAGIONSTHEOR': frag_ions_theor, }) app_info["STATIC_MODS"], app_info[ "VARIABLE_MODS"], _ = genmodstr_to_engine(info["STATIC_MODS"], info["VARIABLE_MODS"], 'Comet') app_info['ENZYME'], app_info[ 'NUM_TERM_CLEAVAGES'] = enzymestr_to_engine( info['ENZYME'], 'Comet') tplfile = os.path.join(wd, "comet.params") template = get_tpl_of_class(self) read_mod_write(app_info, template, tplfile) exe_path = app_info['COMET_DIR'] exe = app_info['COMET_EXE'] command = "{exe} -N{basename} -P{tplfile} {mzxml}".format( exe=os.path.join(exe_path, exe), basename=basename, tplfile=tplfile, mzxml=info[Keys.MZXML]) return info, command
def prepare_run(self, log, info): wd = info[Keys.WORKDIR] #add in blast and mzxml2mgf conversion omssadbase = os.path.join(wd, os.path.basename(info['DBASE'])) os.symlink(info['DBASE'], omssadbase) mzxmlbase = os.path.basename(info[Keys.MZXML]) mzxmllink = os.path.join(wd, mzxmlbase) mgffile = os.path.join(wd, os.path.splitext(mzxmlbase)[0] + '.mgf') os.symlink(info[Keys.MZXML], mzxmllink) basename = os.path.splitext(os.path.split(info[Keys.MZXML])[1])[0] result = os.path.join(wd, basename+'.pep.xml') iresult = os.path.join(wd, basename+'.withRT.pep.xml') info[Keys.PEPXML] = iresult # need to create a working copy to prevent replacement or generic definitions # with app specific definitions app_info = info.copy() app_info['DBASE'] = omssadbase if info['FRAGMASSUNIT'] == 'ppm': raise RuntimeError("OMSSA does not support frag mass error unit PPM") app_info['USERMODXML'] = os.path.join(wd, 'usermod.xml') app_info["STATIC_MODS"], app_info["VARIABLE_MODS"], tpl = genmodstr_to_engine(info["STATIC_MODS"], info["VARIABLE_MODS"], 'Omssa') if app_info['STATIC_MODS']: app_info['STATIC_MODS'] = "-mf " + app_info['STATIC_MODS'] if app_info['VARIABLE_MODS']: app_info['VARIABLE_MODS'] = "-mv " + app_info['VARIABLE_MODS'] open(app_info['USERMODXML'], 'w').write(tpl) app_info['ENZYME'], _ = enzymestr_to_engine(info['ENZYME'], 'Omssa') mod_template = templates.modify_template(app_info, templates.read_template(templates.get_tpl_of_class(self))) # necessary check for the precursor mass unig if app_info['PRECMASSUNIT'].lower() == "ppm": mod_template += ' -teppm' log.debug('added [ -teppm] to modified template because the precursor mass is defined in ppm') exe = app_info.get(Keys.EXECUTABLE, 'omssacl') #grep to prevent log overflow, InteractParser to add RT to pepXML #note: mod_template paths are quoted in the template file command = 'makeblastdb -dbtype prot -in "%s" && ' \ 'MzXML2Search -mgf "%s" | grep -v scan && ' \ '"%s" %s -fm "%s" -op "%s" && ' \ 'InteractParser "%s" "%s" -S' % ( omssadbase, mzxmllink, exe, mod_template, mgffile, result, iresult, result) return info, command
def prepare_run(self, log, info): wd = info[Keys.WORKDIR] basename = os.path.join(wd, os.path.splitext(os.path.split(info[Keys.MZXML])[1])[0]) info[Keys.PEPXML] = basename + '.pep.xml' # need to create a working copy to prevent replacement or generic definitions # with app specific definitions app_info = info.copy() if info['PRECMASSUNIT'] == 'Da': app_info['PRECMASSUNIT'] = '0' elif info['PRECMASSUNIT'] == 'ppm': app_info['PRECMASSUNIT'] = '2' else: raise RuntimeError("Precmassunit %s unknown" % info['PRECMASSUNIT']) if info['FRAGMASSUNIT'] == 'ppm': raise RuntimeError("Comet does not support frag mass error unit PPM") # Note: FRAGMASSERR does not apply to Comet; instead use pre-defined # FRAGBINTOL and FRAGBINOFF values frag_bin_tol, frag_bin_off, frag_ions_theor = self.get_fragment_ions_values( info.get('COMET_FRAGMENT_IONS', None)) app_info.update({ 'FRAGBINTOL': frag_bin_tol, 'FRAGBINOFF': frag_bin_off, 'FRAGIONSTHEOR': frag_ions_theor, }) app_info["STATIC_MODS"], app_info["VARIABLE_MODS"], _ = genmodstr_to_engine(info["STATIC_MODS"], info["VARIABLE_MODS"], 'Comet') app_info['ENZYME'], app_info['NUM_TERM_CLEAVAGES'] = enzymestr_to_engine(info['ENZYME'], 'Comet') tplfile = os.path.join(wd, "comet.params") template = get_tpl_of_class(self) read_mod_write(app_info,template, tplfile) exe_path = app_info['COMET_DIR'] exe = app_info['COMET_EXE'] command = "{exe} -N{basename} -P{tplfile} {mzxml}".format(exe=os.path.join(exe_path, exe), basename=basename, tplfile=tplfile, mzxml=info[Keys.MZXML]) return info, command