Esempio n. 1
0
    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)
Esempio n. 2
0
    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)]
Esempio n. 3
0
    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)
        ]
Esempio n. 4
0
    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])
Esempio n. 5
0
    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)
Esempio n. 6
0
    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])
Esempio n. 7
0
 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)
Esempio n. 8
0
    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)