def __call__(self, threshold, alphabet_len=None, use_loose=True): """Returns a MotifResults object containing a list of significant Motifs - When a Module is found that is less than the threshold, a new Motif object is created and added to the list of significant motifs. """ # Create new MotifResults object k_word_results = MotifResults() k_word_results.Modules = [] k_word_results.Motifs = [] # Add alignment to MotifResults k_word_results.Alignment = self.Alignment # Give each module a unique ID module_id = 0 # For each module for i, module in enumerate(self.Modules): if use_loose: p_curr = self.getPValueLoose(module, alphabet_len) else: p_curr = self.getPValueStrict(module, alphabet_len) # If the P value is less than or equal to the threshold if p_curr <= threshold: # Add the P value to the current module module.Pvalue = p_curr module.ID = module_id module_id += 1 # Append the module to the k_word_results Modules list k_word_results.Modules.append(module) # Create a Motif from the module and append to Motifs list k_word_results.Motifs.append(Motif(module)) return k_word_results
def __call__(self, threshold, alphabet_len=None, use_loose=True): """Returns a MotifResults object containing a list of significant Motifs - When a Module is found that is less than the threshold, a new Motif object is created and added to the list of significant motifs. """ #Create new MotifResults object k_word_results = MotifResults() k_word_results.Modules = [] k_word_results.Motifs = [] #Add alignment to MotifResults k_word_results.Alignment = self.Alignment #Give each module a unique ID module_id = 0 #For each module for i, module in enumerate(self.Modules): if use_loose: p_curr = self.getPValueLoose(module, alphabet_len) else: p_curr = self.getPValueStrict(module, alphabet_len) #If the P value is less than or equal to the threshold if p_curr <= threshold: #Add the P value to the current module module.Pvalue = p_curr module.ID = module_id module_id += 1 #Append the module to the k_word_results Modules list k_word_results.Modules.append(module) #Create a Motif from the module and append to Motifs list k_word_results.Motifs.append(Motif(module)) return k_word_results
def GibbsParser(lines, truncate_len=None, strict=True): """Returns a MotifResults object given a Gibbs Sampler results file. - only works with results from command line version of Gibbs Sampler """ try: #Get sequence and motif blocks sequence_block, motif_block = get_sequence_and_motif_blocks(lines) except Exception as e: if strict: raise e else: return None #Create MotifResults object gibbs_motif_results = MotifResults() #Get sequence map sequence_map = get_sequence_map(sequence_block) #Get motif blocks motif_blocks = get_motif_blocks(motif_block) #Get modules for module in motif_blocks: if module[1] == 'No Motifs Detected': print("No Modules detcted!!", module[0]) continue for cur_smod in build_module_objects(module, sequence_map, truncate_len=truncate_len): gibbs_motif_results.Modules.append(cur_smod) module_ids_to_int(gibbs_motif_results.Modules) for ct, module in enumerate(gibbs_motif_results.Modules): gibbs_motif_results.Motifs.append(Motif(module)) gibbs_motif_results.Alphabet=module.Alphabet return gibbs_motif_results
def GibbsParser(lines, truncate_len=None, strict=True): """Returns a MotifResults object given a Gibbs Sampler results file. - only works with results from command line version of Gibbs Sampler """ try: #Get sequence and motif blocks sequence_block, motif_block = get_sequence_and_motif_blocks(lines) except Exception as e: if strict: raise e else: return None #Create MotifResults object gibbs_motif_results = MotifResults() #Get sequence map sequence_map = get_sequence_map(sequence_block) #Get motif blocks motif_blocks = get_motif_blocks(motif_block) #Get modules for module in motif_blocks: if module[1] == 'No Motifs Detected': print("No Modules detcted!!", module[0]) continue for cur_smod in build_module_objects(module, sequence_map, truncate_len=truncate_len): gibbs_motif_results.Modules.append(cur_smod) module_ids_to_int(gibbs_motif_results.Modules) for ct, module in enumerate(gibbs_motif_results.Modules): gibbs_motif_results.Motifs.append(Motif(module)) gibbs_motif_results.Alphabet = module.Alphabet return gibbs_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
def test_init(self): """Init should properly initialize MotifResults object.""" module = Module({ ('a',3): ModuleInstance('guc', Location('a',3,5)), ('b',3): ModuleInstance('guc', Location('b',3,5)), ('c',8): ModuleInstance('guc', Location('c',8,10)), }) motif = Motif([module]) results = {'key1':'value1','key2':'value2'} parameters = {'parameter1':1,'parameter2':2} mr = MotifResults([module],[motif],results,parameters) self.assertEqual(mr.Modules,[module]) self.assertEqual(mr.Motifs,[motif]) self.assertEqual(mr.Results,results) self.assertEqual(mr.parameter1,1) self.assertEqual(mr.parameter2,2)
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 setUp(self): """SetUp for MotifFormatter class tests.""" self.sequences = [ 'accucua', 'caucguu', 'accucua', 'cgacucg', 'cgaucag', 'cuguacc', 'cgcauca', ] self.locations = [ Location('seq0',1,3), Location('seq1',2,3), Location('seq1',1,5), Location('seq1',5,3), Location('seq2',3,54), Location('seq2',54,2), Location('seq3',4,0), ] self.Pvalues = [ .1, .002, .0000000003, .6, .0094, .6, .00201, ] self.Evalues = [ .006, .02, .9, .0200000001, .09, .0000003, .900001, ] self.modules_no_e = [] for i in xrange(7): self.modules_no_e.append(ModuleInstance(self.sequences[i], self.locations[i], self.Pvalues[i])) self.module_with_template = Module( { (self.modules_no_e[0].Location.SeqId, self.modules_no_e[0].Location.Start):self.modules_no_e[0], (self.modules_no_e[1].Location.SeqId, self.modules_no_e[1].Location.Start):self.modules_no_e[1], (self.modules_no_e[2].Location.SeqId, self.modules_no_e[2].Location.Start):self.modules_no_e[2], (self.modules_no_e[3].Location.SeqId, self.modules_no_e[3].Location.Start):self.modules_no_e[3], (self.modules_no_e[4].Location.SeqId, self.modules_no_e[4].Location.Start):self.modules_no_e[4], (self.modules_no_e[5].Location.SeqId, self.modules_no_e[5].Location.Start):self.modules_no_e[5], (self.modules_no_e[6].Location.SeqId, self.modules_no_e[6].Location.Start):self.modules_no_e[6], }, Template = 'accgucg', ID='1' ) self.modules_with_ids =\ [Module({ ('a',3): ModuleInstance('guc', Location('a',3,5)), ('b',3): ModuleInstance('guc', Location('b',3,5)), ('c',8): ModuleInstance('guc', Location('c',8,10)), },ID='1'), Module({ ('a',7): ModuleInstance('cca', Location('a',7,9)), ('b',7): ModuleInstance('cca', Location('b',7,9)), ('c',11): ModuleInstance('cca',Location('c',11,13)), },ID='2'), Module({ ('a',10): ModuleInstance('gca',Location('a',10,12)), ('b',10): ModuleInstance('gca',Location('b',10,12)), ('c',14): ModuleInstance('gca',Location('c',14,12)), },ID='3'), Module({ ('a',13): ModuleInstance('ggg',Location('a',13,15)), ('b',13): ModuleInstance('ggg',Location('b',13,15)), ('c',18): ModuleInstance('ggg',Location('c',18,20)), },ID='4'), ] self.motifs_with_ids = map(Motif,self.modules_with_ids) self.motif_results = MotifResults(Modules=self.modules_with_ids,\ Motifs=self.motifs_with_ids) self.color_map = {'1':"""background-color: #0000FF; ; font-family: 'Courier New', Courier""", '2':"""background-color: #FFFF00; ; font-family: 'Courier New', Courier""", '3':"""background-color: #00FFFF; ; font-family: 'Courier New', Courier""", '4':"""background-color: #FF00FF; ; font-family: 'Courier New', Courier""", } self.color_map_rgb = { 'color_1':(0.0,0.0,1.0), 'color_2':(1.0,1.0,0.0), 'color_3':(0.0,1.0,1.0), 'color_4':(1.0,0.0,1.0), }
def GibbsParser(lines, truncate_len=None, strict=True): """Returns a MotifResults object given a Gibbs Sampler results file. - only works with results from command line version of Gibbs Sampler """ try: #Get sequence and motif blocks sequence_block, motif_block = get_sequence_and_motif_blocks(lines) except Exception, e: if strict: raise e else: return None #Create MotifResults object gibbs_motif_results = MotifResults() #Get sequence map sequence_map = get_sequence_map(sequence_block) #Get motif blocks motif_blocks = get_motif_blocks(motif_block) #Get modules for module in motif_blocks: if module[1] == 'No Motifs Detected': print "No Modules detcted!!", module[0] continue for cur_smod in build_module_objects(module, sequence_map, truncate_len=truncate_len): gibbs_motif_results.Modules.append(cur_smod) module_ids_to_int(gibbs_motif_results.Modules)
def GibbsParser(lines, truncate_len=None, strict=True): """Returns a MotifResults object given a Gibbs Sampler results file. - only works with results from command line version of Gibbs Sampler """ try: #Get sequence and motif blocks sequence_block, motif_block = get_sequence_and_motif_blocks(lines) except Exception, e: if strict: raise e else: return None #Create MotifResults object gibbs_motif_results = MotifResults() #Get sequence map sequence_map = get_sequence_map(sequence_block) #Get motif blocks motif_blocks = get_motif_blocks(motif_block) #Get modules for module in motif_blocks: if module[1] == 'No Motifs Detected': print "No Modules detcted!!", module[0] continue for cur_smod in build_module_objects(module, sequence_map, truncate_len=truncate_len): gibbs_motif_results.Modules.append(cur_smod) module_ids_to_int(gibbs_motif_results.Modules) for ct, module in enumerate(gibbs_motif_results.Modules):