def MemeParser(lines, allowed_ids=[]): """Returns a MotifResults object given a MEME results file. """ warnings = [] #Create MotifResults object meme_motif_results = MotifResults() #Get main block and alphabet main_block, alphabet = getDataBlock(lines) #Add alphabet to MotifResults object meme_motif_results.MolType = alphabet #Get command line summary block and module blocks command_block, module_blocks = getCommandModuleBlocks(main_block) if command_block: #Extract command line data and put in dict parameters_list = extractCommandLineData(command_block) #Add parameters dict to MotifResults object parameters meme_motif_results.Parameters = parameters_list #make sure modules were found if len(module_blocks) > 0: #Get Summary of motifs block summary_block = getSummaryBlock(module_blocks[-1]) #Extract summary data and get summary_dict summary_dict = extractSummaryData(summary_block) seq_names = list(summary_dict['CombinedP'].keys()) if allowed_ids: remap_dict, warning = make_remap_dict(seq_names, allowed_ids) if warning: warnings.append(warning) sd = {} for k, v in list(summary_dict['CombinedP'].items()): sd[remap_dict[k]] = v summary_dict['CombinedP'] = sd else: remap_dict = dict(list(zip(seq_names, seq_names))) #Add summary dict to MotifResults object meme_motif_results.Results = summary_dict #Add warnings to MotifResults object meme_motif_results.Results['Warnings'] = warnings #Get blocks for each module module_blocks = getModuleDataBlocks(module_blocks) #Extract modules and put in MotifResults.Modules list for module in module_blocks: meme_motif_results.Modules.append(extractModuleData(module,\ alphabet,remap_dict)) for module in meme_motif_results.Modules: meme_motif_results.Motifs.append(Motif(module)) return meme_motif_results
def MemeParser(lines, allowed_ids=[]): """Returns a MotifResults object given a MEME results file. """ warnings = [] #Create MotifResults object meme_motif_results = MotifResults() #Get main block and alphabet main_block, alphabet = getDataBlock(lines) #Add alphabet to MotifResults object meme_motif_results.MolType = alphabet #Get command line summary block and module blocks command_block, module_blocks = getCommandModuleBlocks(main_block) if command_block: #Extract command line data and put in dict parameters_list = extractCommandLineData(command_block) #Add parameters dict to MotifResults object parameters meme_motif_results.Parameters = parameters_list #make sure modules were found if len(module_blocks) > 0: #Get Summary of motifs block summary_block = getSummaryBlock(module_blocks[-1]) #Extract summary data and get summary_dict summary_dict = extractSummaryData(summary_block) seq_names = summary_dict['CombinedP'].keys() if allowed_ids: remap_dict,warning = make_remap_dict(seq_names,allowed_ids) if warning: warnings.append(warning) sd = {} for k,v in summary_dict['CombinedP'].items(): sd[remap_dict[k]]=v summary_dict['CombinedP']=sd else: remap_dict = dict(zip(seq_names,seq_names)) #Add summary dict to MotifResults object meme_motif_results.Results = summary_dict #Add warnings to MotifResults object meme_motif_results.Results['Warnings']=warnings #Get blocks for each module module_blocks = getModuleDataBlocks(module_blocks) #Extract modules and put in MotifResults.Modules list for module in module_blocks: meme_motif_results.Modules.append(extractModuleData(module,\ alphabet,remap_dict)) for module in meme_motif_results.Modules: meme_motif_results.Motifs.append(Motif(module)) return meme_motif_results