Example #1
0
 def test_get_default_network_scaling(self):
     scaling_fun = scoring.get_default_network_scaling(100)
     self.assertAlmostEqual(0.0, scaling_fun(1))
     self.assertAlmostEqual(0.013513514, scaling_fun(3))
     self.assertAlmostEqual(0.493243243, scaling_fun(74))
     self.assertAlmostEqual(0.5, scaling_fun(75))
     self.assertAlmostEqual(0.5, scaling_fun(76))
     self.assertAlmostEqual(0.5, scaling_fun(100))
 def test_net_scoring(self):
     #tests the network scoring by itself#
     network_scaling_fun = scoring.get_default_network_scaling(2000)
     network_scoring = nw.ScoringFunction(self.organism,
                                          self.membership,
                                          self.ratio_matrix,
                                          scaling_func=network_scaling_fun,
                                          run_in_iteration=lambda x: True,
                                          config_params=self.config_params)
     netscores = network_scoring.compute(self.iteration_result).sorted_by_row_name()
     ref_netscores = read_matrix('testdata/netscores_fixed.tsv')
     self.assertTrue(check_matrix_values(netscores, ref_netscores))
Example #3
0
    def make_row_scoring(self):
        """makes a row scoring function on demand"""
        # Default row scoring functions
        row_scoring = microarray.RowScoringFunction(
            self.membership(), self.ratio_matrix,
            scaling_func=lambda iteration: self['row_scaling'],
            config_params=self.config_params)
        self.row_scoring = row_scoring

        meme_suite = meme.MemeSuite430()
        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_default_motif_scaling(
            self['num_iterations'])
        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=motif.default_nmotif_fun,
            update_in_iteration=scoring.schedule(601, 3),
            motif_in_iteration=scoring.schedule(600, 100),
            #update_in_iteration=scoring.schedule(100, 10),
            #motif_in_iteration=scoring.schedule(100, 100),
            config_params=self.config_params)
        self.motif_scoring = motif_scoring

        network_scaling_fun = scoring.get_default_network_scaling(
            self['num_iterations'])
        network_scoring = nw.ScoringFunction(
            self.organism(),
            self.membership(),
            self.ratio_matrix,
            scaling_func=network_scaling_fun,
            run_in_iteration=scoring.schedule(1, 7),
            config_params=self.config_params)
        self.network_scoring = network_scoring

        row_scoring_functions = [row_scoring, motif_scoring, network_scoring]
        return scoring.ScoringFunctionCombiner(
            self.membership(),
            row_scoring_functions,
            config_params=self.config_params,
            log_subresults=True)
    def make_row_scoring(self):
        """returns the row scoring function"""
        # we need to remove the location from the sequence when selecting for
        # individual clusters
        sequence_filters = [lambda seqs, feature_ids: {key: seqs[key][1] for key in seqs.keys()}]
        network_scaling_fun = scoring.get_default_network_scaling(self['num_iterations'])
        meme_scoring = None
        weeder_scoring = None

        row_scoring = microarray.RowScoringFunction(
            self.membership(), self.ratio_matrix,
            lambda iteration: ROW_WEIGHT,
            config_params=self.config_params)
        scoring_funcs = [row_scoring,
                         self.make_network_scoring(network_scaling_fun)]

        if ADD_SET_ENRICHMENT:
            scoring_funcs.append(self.make_set_scoring(network_scaling_fun,
                                                       USE_SET_TYPES))

        if ADD_MEME:
            meme_suite_meme = self.meme_suite('upstream')
            meme_scoring = self.make_meme_scoring('upstream',
                                                  meme_suite_meme,
                                                  sequence_filters + [motif.get_remove_low_complexity_filter(meme_suite_meme)])

        if ADD_WEEDER:
            meme_suite_weeder = self.meme_suite(WEEDER_SEQ_TYPE)
            weeder_scoring = self.make_weeder_scoring(WEEDER_SEQ_TYPE,
                                                      meme_suite_weeder,
                                                      sequence_filters + [motif.get_remove_low_complexity_filter(meme_suite_weeder)])
        if ADD_MEME and ADD_WEEDER:
            scoring_funcs.append(scoring.ScoringFunctionCombiner(
                    self.membership(),
                    [meme_scoring, weeder_scoring],
                    scaling_func=lambda iteration: 0.5,
                    config_params=self.config_params))
        else:
            if ADD_MEME:
                scoring_funcs.append(meme_scoring)
            if ADD_WEEDER:
                scoring_funcs.append(weeder_scoring)

        return scoring.ScoringFunctionCombiner(self.membership(), scoring_funcs,
                                               config_params=self.config_params)
Example #5
0
    def make_row_scoring(self):
        """returns the row scoring function"""
        sequence_filters = []
        network_scaling_fun = scoring.get_default_network_scaling(self['num_iterations'])
        meme_scoring = None
        weeder_scoring = None

        row_scoring = microarray.RowScoringFunction(
            self.membership(), self.ratio_matrix,
            lambda iteration: self['row_scaling'],
            config_params=self.config_params)
        scoring_funcs = [row_scoring,
                         self.make_network_scoring(network_scaling_fun)]

        if ADD_MEME:
            meme_scoring = self.make_meme_scoring('upstream',
                                                  self.meme_suite('upstream'),
                                                  sequence_filters)

        if ADD_WEEDER:
            weeder_scoring = self.make_weeder_scoring(WEEDER_SEQ_TYPE,
                                                      self.meme_suite(WEEDER_SEQ_TYPE),
                                                      sequence_filters)
        if ADD_MEME and ADD_WEEDER:
            scoring_funcs.append(scoring.ScoringFunctionCombiner(
                    self.membership(),
                    [meme_scoring, weeder_scoring],
                    scaling_func=lambda iteration: 0.5,
                    config_params=self.config_params))
        else:
            if ADD_MEME:
                scoring_funcs.append(meme_scoring)
            if ADD_WEEDER:
                scoring_funcs.append(weeder_scoring)

        return scoring.ScoringFunctionCombiner(self.membership(), scoring_funcs,
                                               config_params=self.config_params)
 def __init__(self):
     scaling_fun = scoring.get_default_network_scaling(2000)
     scoring.ScoringFunctionBase.__init__(self, None, None, scaling_fun)
    def make_row_scoring(self):
        """returns the row scoring function"""
        row_scoring = microarray.RowScoringFunction(
            self.membership(), self.ratio_matrix,
            scaling_func=lambda iteration: self['row_scaling'],
            config_params=self.config_params)

        background_file_prom = meme_FS.global_background_file_FS(
            self.organism(), self.ratio_matrix.row_names(), 'Promoter',
            alphabet, alphabet_replacement,
            use_revcomp=True, resultsDir = "/".join([self['meme_dir'], 'backgroundFiles']))
        meme_suite = meme_FS.MemeSuite481(background_file=background_file_prom,
                                          remove_tempfiles=True,
                                          resultsDir = self['meme_dir'])
        """
        background_file_p3utr = meme_FS.global_background_file_FS(
            self.organism(), self.ratio_matrix.row_names(), '3pUTR',
            alphabet, alphabet_replacement,
            use_revcomp=True)
        meme_suite_p3utr = meme_FS.MemeSuite430(background_file=background_file_p3utr)
        """
        
        sequence_filters = [
            motif_FS.unique_filter,
            motif_FS.get_remove_low_complexity_filter(meme_suite),
            motif_FS.get_remove_atgs_filter(self['search_distances']['Promoter'])]


        sequence_filters = [motif_FS.get_remove_atgs_filter(self['search_distances']['Promoter'])]


        motif_scaling_fun = scoring.get_default_motif_scaling(self['num_iterations'])
        motif_scoring = motif_FS.MemeScoringFunction(
            self.organism(),
            self.membership(),
            self.ratio_matrix,
            meme_suite,
            seqtype='Promoter',
            sequence_filters=sequence_filters,
            pvalue_filter=motif_FS.MinPValueFilter(-9),
            scaling_func=motif_scaling_fun,
            update_in_iteration=scoring.schedule(11, 3),
            motif_in_iteration=scoring.schedule(10, 100),
            config_params=self.config_params)
        """
        motif_scoring_3pUTR = motif_FS.MemeScoringFunction(
            self.organism(),
            self.membership(),
            self.ratio_matrix,
            meme_suite,
            seqtype='3pUTR',
            sequence_filters=sequence_filters,
            pvalue_filter=motif_FS.MinPValueFilter(-9),
            scaling_func=motif_scaling_fun,
            run_in_iteration=scoring.schedule(100, 50),
            config_params=self.config_params)
        motif_combiner = scoring.ScoringFunctionCombiner(
            self.membership(),
            [motif_scoring, motif_scoring_3pUTR],
            scaling_func=lambda iteration: 0.5)
        """

        '''
        weeder_scoring = motif.WeederScoringFunction(
            self.organism(), self.membership(), self.ratio_matrix,
            meme_suite_p3utr, '3pUTR',
            pvalue_filter=motif.MinPValueFilter(-20.0),
            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)
        '''

        network_scaling_fun = scoring.get_default_network_scaling(self['num_iterations'])
        network_scoring = nw.ScoringFunction(self.organism(),
                                             self.membership(),
                                             self.ratio_matrix,
                                             scaling_func=network_scaling_fun,
                                             run_in_iteration=scoring.schedule(1, 7),
                                             config_params=self.config_params)

        row_scoring_functions = [row_scoring, motif_scoring, network_scoring]
        #row_scoring_functions = [row_scoring]
        return scoring.ScoringFunctionCombiner(self.membership(),
                                               row_scoring_functions,
                                               log_subresults=True)