def make_row_scoring(self): """returns the row scoring function""" row_scoring = microarray.RowScoringFunction( self.membership(), self.ratio_matrix, lambda iteration: ROW_WEIGHT, config_params=self.config_params) # motifing sequence_filters = [] background_file_prom = meme.global_background_file( self.organism(), self.ratio_matrix.row_names(), 'upstream', use_revcomp=True) background_file_p3utr = meme.global_background_file( self.organism(), self.ratio_matrix.row_names(), 'p3utr', use_revcomp=True) meme_suite_prom = meme.MemeSuite430( max_width=MAX_MOTIF_WIDTH, background_file=background_file_prom) meme_suite_p3utr = meme.MemeSuite430( max_width=MAX_MOTIF_WIDTH, background_file=background_file_p3utr) motif_scoring = motif.MemeScoringFunction( self.organism(), self.membership(), self.ratio_matrix, meme_suite_prom, seqtype='upstream', sequence_filters=sequence_filters, scaling_func=lambda iteration: 0.0, run_in_iteration=scoring.default_motif_iterations, config_params=self.config_params) weeder_scoring = motif.WeederScoringFunction( self.organism(), self.membership(), self.ratio_matrix, meme_suite_p3utr, 'p3utr', scaling_func=lambda iteration: 0.0, run_in_iteration=scoring.default_motif_iterations, config_params=self.config_params) motif_combiner = scoring.ScoringFunctionCombiner( self.membership(), [motif_scoring, weeder_scoring], scaling_func=lambda iteration: 0.5, config_params=self.config_params) network_scoring = nw.ScoringFunction(self.organism(), self.membership(), self.ratio_matrix, lambda iteration: 0.0, scoring.default_network_iterations, config_params=self.config_params) return scoring.ScoringFunctionCombiner( self.membership(), [row_scoring, network_scoring, motif_combiner], config_params=self.config_params)
def __setup_meme_suite(self, config_params): background_file = None bgmodel = None meme_version = config_params['MEME']['version'] search_distance = config_params['search_distances'][self.seqtype] if config_params['MEME']['global_background'] == 'True': background_file, bgmodel = meme.global_background_file( self.organism, self.ratios.row_names, self.seqtype, bgorder=int(self.config_params['MEME']['background_order'])) # store background in results database conn = sqlite3.connect(config_params['out_database'], 15, isolation_level='DEFERRED') for order in bgmodel: for subseq, pvalue in order.items(): conn.execute('insert into global_background (subsequence, pvalue) values (?,?)', (subseq, pvalue)) conn.commit() conn.close() if meme_version == '4.3.0': self.meme_suite = meme.MemeSuite430(self.config_params, background_file=background_file, bgmodel=bgmodel) elif meme_version and ( meme_version.startswith('4.8') or meme_version.startswith('4.9') or meme_version.startswith('4.10')): self.meme_suite = meme.MemeSuite481(self.config_params, background_file=background_file, bgmodel=bgmodel) else: logging.error("MEME version %s currently not supported !", meme_version) raise Exception("unsupported MEME version: '%s'" % meme_version) self.__sequence_filters = [unique_filter, get_remove_low_complexity_filter(self.meme_suite), get_remove_atgs_filter(search_distance)]
def __setup_meme_suite(self, config_params): background_file = None bgmodel = None meme_version = config_params['MEME']['version'] search_distance = config_params['search_distances'][self.seqtype] if config_params['MEME']['global_background'] == 'True': background_file, bgmodel = meme.global_background_file( self.organism, self.ratios.row_names, self.seqtype, bgorder=int(self.config_params['MEME']['background_order'])) # store background in results database conn = sqlite3.connect(config_params['out_database'], 15, isolation_level='DEFERRED') for order in bgmodel: for subseq, pvalue in order.items(): conn.execute( 'insert into global_background (subsequence, pvalue) values (?,?)', (subseq, pvalue)) conn.commit() conn.close() if meme_version == '4.3.0': self.meme_suite = meme.MemeSuite430( self.config_params, background_file=background_file, bgmodel=bgmodel) elif meme_version and (meme_version.startswith('4.8') or meme_version.startswith('4.9') or meme_version.startswith('4.10')): self.meme_suite = meme.MemeSuite481( self.config_params, background_file=background_file, bgmodel=bgmodel) else: logging.error("MEME version %s currently not supported !", meme_version) raise Exception("unsupported MEME version: '%s'" % meme_version) self.__sequence_filters = [ unique_filter, get_remove_low_complexity_filter(self.meme_suite), get_remove_atgs_filter(search_distance) ]
def make_row_scoring(self): """returns the row scoring function""" row_scoring = microarray.RowScoringFunction( self.membership(), self.ratio_matrix, lambda iteration: ROW_WEIGHT, config_params=self.config_params) sequence_filters = [] background_file_prom = meme.global_background_file( self.organism(), self.ratio_matrix.row_names(), 'promoter', use_revcomp=True) background_file_p3utr = meme.global_background_file( self.organism(), self.ratio_matrix.row_names(), 'p3utr', use_revcomp=True) meme_suite_prom = meme.MemeSuite430( max_width=MAX_MOTIF_WIDTH, background_file=background_file_prom) meme_suite_p3utr = meme.MemeSuite430( max_width=MAX_MOTIF_WIDTH, background_file=background_file_p3utr) motif_scoring = motif.MemeScoringFunction( self.organism(), self.membership(), self.ratio_matrix, meme_suite_prom, seqtype='promoter', sequence_filters=sequence_filters, pvalue_filter=motif.MinPValueFilter(-20.0), scaling_func=lambda iteration: 0.0, run_in_iteration=scoring.default_motif_iterations, config_params=self.config_params) network_scoring = nw.ScoringFunction(self.organism(), self.membership(), self.ratio_matrix, lambda iteration: 0.0, scoring.default_network_iterations, config_params=self.config_params) weeder_scoring = motif.WeederScoringFunction( self.organism(), self.membership(), self.ratio_matrix, meme_suite_p3utr, 'p3utr', pvalue_filter=motif.MinPValueFilter(-20.0), scaling_func=lambda iteration: 0.0, run_in_iteration=scoring.default_motif_iterations, config_params=self.config_params) pita = se.SetType.read_csv('pita', 'human_data/pita_miRNA_sets.csv') target_scan = se.SetType.read_csv( 'target_scan', 'human_data/targetScan_miRNA_sets.csv') set_types = [pita, target_scan] set_enrichment_scoring = se.ScoringFunction( self.membership(), self.ratio_matrix, set_types, lambda iteration: 0.0, 7, config_params=self.config_params) motif_combiner = scoring.ScoringFunctionCombiner( self.membership(), [motif_scoring, weeder_scoring], scaling_func=lambda iteration: 0.5) return scoring.ScoringFunctionCombiner( self.membership(), [row_scoring, motif_combiner, network_scoring, set_enrichment_scoring])
def make_row_scoring(self): """makes a row scoring function on demand""" # Default row scoring functions row_scaling_fun = scoring.get_scaling(self, 'row_') row_scoring = microarray.RowScoringFunction( self.organism(), self.membership(), self.ratio_matrix, scaling_func=row_scaling_fun, schedule=self["row_schedule"], config_params=self.config_params) row_scoring_functions = [row_scoring] if self['domotifs']: background_file = None if self['global_background']: background_file = meme.global_background_file( self.organism(), self.ratio_matrix.row_names, self['sequence_types'][0]) if self['meme_version'] == '4.3.0': meme_suite = meme.MemeSuite430(background_file=background_file) elif (self['meme_version'] and (self['meme_version'].startswith('4.8') or self['meme_version'].startswith('4.9'))): meme_suite = meme.MemeSuite481(background_file=background_file) else: logging.error("MEME version %s currently not supported !", self['meme_version']) raise Exception("unsupported MEME version") sequence_filters = [ motif.unique_filter, motif.get_remove_low_complexity_filter(meme_suite), motif.get_remove_atgs_filter( self['search_distances']['upstream']) ] motif_scaling_fun = scoring.get_scaling(self, 'motif_') nmotif_fun = motif.num_meme_motif_fun(self) motif_scoring = motif.MemeScoringFunction( self.organism(), self.membership(), self.ratio_matrix, meme_suite, sequence_filters=sequence_filters, scaling_func=motif_scaling_fun, num_motif_func=nmotif_fun, update_in_iteration=self['motif_schedule'], motif_in_iteration=self['meme_schedule'], config_params=self.config_params) row_scoring_functions.append(motif_scoring) if self['donetworks']: network_scaling_fun = scoring.get_scaling(self, 'network_') network_scoring = nw.ScoringFunction( self.organism(), self.membership(), self.ratio_matrix, scaling_func=network_scaling_fun, schedule=self['network_schedule'], config_params=self.config_params) row_scoring_functions.append(network_scoring) return scoring.ScoringFunctionCombiner( self.organism(), self.membership(), row_scoring_functions, config_params=self.config_params)
def make_row_scoring(self): """returns the row scoring function""" row_scoring = microarray.RowScoringFunction( self.membership(), self.ratio_matrix, lambda iteration: ROW_WEIGHT, config_params=self.config_params) sequence_filters = [] background_file_upstream = meme.global_background_file( self.organism(), self.ratio_matrix.row_names(), 'upstream', use_revcomp=True) background_file_downstream = meme.global_background_file( self.organism(), self.ratio_matrix.row_names(), 'downstream', use_revcomp=True) meme_suite_upstream = meme.MemeSuite430( max_width=MAX_MOTIF_WIDTH, background_file=background_file_upstream) meme_suite_downstream = meme.MemeSuite430( max_width=MAX_MOTIF_WIDTH, background_file=background_file_downstream) upstream_motif_scoring = motif.MemeScoringFunction( self.organism(), self.membership(), self.ratio_matrix, meme_suite_upstream, seqtype='upstream', sequence_filters=sequence_filters, pvalue_filter=motif.MinPValueFilter(-20.0), scaling_func=lambda iteration: 0.0, run_in_iteration=motif_iterations, config_params=self.config_params) downstream_motif_scoring = motif.MemeScoringFunction( self.organism(), self.membership(), self.ratio_matrix, meme_suite_downstream, seqtype='downstream', sequence_filters=sequence_filters, pvalue_filter=motif.MinPValueFilter(-20.0), scaling_func=lambda iteration: 0.0, run_in_iteration=motif_iterations, config_params=self.config_params) # NOTE: it looks like Weeder scoring isn't fully implemented yet? At this time, all other run configs seem to be passing MemeSuite430 into the WeederScoringFuncion # weeder_scoring = motif.WeederScoringFunction( # self.organism(), self.membership(), self.ratio_matrix, # meme_suite_downstream, 'downstream', # pvalue_filter=motif.MinPValueFilter(-20.0), # scaling_func=lambda iteration: 0.0, # run_in_iteration=motif_iterations, # config_params=self.config_params) network_scoring = nw.ScoringFunction(self.organism(), self.membership(), self.ratio_matrix, network_iterations, scoring.default_network_iterations, config_params=self.config_params) motif_combiner = scoring.ScoringFunctionCombiner( self.membership(), [upstream_motif_scoring, downstream_motif_scoring], scaling_func=lambda iteration: 0.5) return scoring.ScoringFunctionCombiner( self.membership(), [row_scoring, motif_combiner, network_scoring])
def meme_suite(self, seqtype): """upstream meme suite""" background_file = meme.global_background_file( self.organism(), self.ratio_matrix.row_names, seqtype, use_revcomp=True) return meme.MemeSuite430(max_width=MAX_MOTIF_WIDTH, background_file=background_file)
def make_row_scoring(self): """makes a row scoring function on demand""" # Default row scoring functions row_scaling_fun = scoring.get_scaling(self, 'row_') row_scoring = microarray.RowScoringFunction(self.organism(), self.membership(), self.ratio_matrix, scaling_func=row_scaling_fun, schedule=self["row_schedule"], config_params=self.config_params) row_scoring_functions = [row_scoring] if self['domotifs']: background_file = None if self['global_background']: background_file = meme.global_background_file( self.organism(), self.ratio_matrix.row_names, self['sequence_types'][0]) if self['meme_version'] == '4.3.0': meme_suite = meme.MemeSuite430(background_file=background_file) elif (self['meme_version'] and (self['meme_version'].startswith('4.8') or self['meme_version'].startswith('4.9'))): meme_suite = meme.MemeSuite481(background_file=background_file) else: logging.error("MEME version %s currently not supported !", self['meme_version']) raise Exception("unsupported MEME version") sequence_filters = [ motif.unique_filter, motif.get_remove_low_complexity_filter(meme_suite), motif.get_remove_atgs_filter(self['search_distances']['upstream'])] motif_scaling_fun = scoring.get_scaling(self, 'motif_') nmotif_fun = motif.num_meme_motif_fun(self) motif_scoring = motif.MemeScoringFunction(self.organism(), self.membership(), self.ratio_matrix, meme_suite, sequence_filters=sequence_filters, scaling_func=motif_scaling_fun, num_motif_func=nmotif_fun, update_in_iteration=self['motif_schedule'], motif_in_iteration=self['meme_schedule'], config_params=self.config_params) row_scoring_functions.append(motif_scoring) if self['donetworks']: network_scaling_fun = scoring.get_scaling(self, 'network_') network_scoring = nw.ScoringFunction(self.organism(), self.membership(), self.ratio_matrix, scaling_func=network_scaling_fun, schedule=self['network_schedule'], config_params=self.config_params) row_scoring_functions.append(network_scoring) return scoring.ScoringFunctionCombiner( self.organism(), self.membership(), row_scoring_functions, config_params=self.config_params)