Ejemplo n.º 1
0
 def test_floats_equal(self):
     l = functions.get_sublist_greater_than([2.2, 0.1, 1.1], 1.1)
     self.assertEqual(l, [2.2])
Ejemplo n.º 2
0
 def flat_result_iter(self, observed_index, prior_index,
         include_tau_exclusion_info = False):
     glm_failures = []
     for sim_idx, result in enumerate(self.result_iter(observed_index,
             prior_index)):
         r = self.result_to_flat_dict(result)
         if include_tau_exclusion_info:
             div_times = sorted([r['PRI.t.' + str(i)] for i in range(1,
                     self.num_taxon_pairs + 1)])
             model_index = r['model_mode']
             try:
                 model_index_glm = int(round(r['model_mode_glm']))
             except ValueError:
                 model_index_glm = model_index
                 glm_failures.append(sim_idx)
             tau_max = self.prior_configs[model_index].tau.maximum 
             tau_max_glm = self.prior_configs[model_index_glm].tau.maximum
             prob_of_exclusion = 0.0
             prob_of_exclusion_glm = 0.0
             prior_prob_of_exclusion = 0.0
             model_prior = float(1) / len(self.prior_configs.keys())
             bf_tau_max = []
             for i in self.prior_configs.iterkeys():
                 if max(div_times) > self.prior_configs[i].tau.maximum:
                     prob_of_exclusion += r['model_{0}_prob'.format(i)]
                     prob_of_exclusion_glm += r['model_{0}_prob_glm'.format(i)]
                     prior_prob_of_exclusion += model_prior
                     bf_tau_max.append(self.prior_configs[i].tau.maximum)
             if len(bf_tau_max) < 1:
                 bf_tau_max = float('inf')
             else:
                 bf_tau_max = max(bf_tau_max)
             ex = functions.get_sublist_greater_than(div_times, tau_max)
             ex_glm = functions.get_sublist_greater_than(div_times,
                     tau_max_glm)
             prior_odds = (prior_prob_of_exclusion /
                     (1 - prior_prob_of_exclusion))
             post_odds = (prob_of_exclusion / (1 - prob_of_exclusion))
             post_odds_glm = (prob_of_exclusion_glm /
                     (1 - prob_of_exclusion_glm))
             if probability.almost_equal(prior_odds, 0.0):
                 bf_of_exclusion = float('inf')
                 bf_of_exclusion_glm = float('inf')
                 if probability.almost_equal(bf_of_exclusion,
                         0.0):
                     bf_of_exclusion = 0.0
                 if probability.almost_equal(
                         bf_of_exclusion_glm, 0.0):
                     bf_of_exclusion_glm = 0.0
             else:
                 bf_of_exclusion = post_odds / prior_odds
                 bf_of_exclusion_glm = post_odds_glm / prior_odds
             bf_ex = []
             bf_ex_glm = []
             if bf_of_exclusion > 1.0:
                 bf_ex = functions.get_sublist_greater_than(div_times,
                         bf_tau_max)
             if bf_of_exclusion_glm > 1.0:
                 bf_ex_glm = functions.get_sublist_greater_than(div_times,
                         bf_tau_max)
             r['prob_of_exclusion'] = prob_of_exclusion
             r['prob_of_exclusion_glm'] = prob_of_exclusion_glm
             r['prior_prob_of_exclusion'] = prior_prob_of_exclusion
             r['bf_of_exclusion'] = bf_of_exclusion
             r['bf_of_exclusion_glm'] = bf_of_exclusion_glm
             r['tau_max'] = tau_max
             r['tau_max_glm'] = tau_max_glm
             r['num_excluded'] = len(ex)
             r['num_excluded_glm'] = len(ex_glm)
             r['bf_num_excluded'] = len(bf_ex)
             r['bf_num_excluded_glm'] = len(bf_ex_glm)
         yield r
     if len(glm_failures) > 0:
         _LOG.warning('WARNING: there were GLM-regression failures:\n'
                 'For observed index {0} prior index {1}, there were '
                 'failures at the following simulation indices:\n'
                 '{2}'.format(observed_index, prior_index, glm_failures))
Ejemplo n.º 3
0
 def flat_result_iter(self,
                      observed_index,
                      prior_index,
                      include_tau_exclusion_info=False):
     glm_failures = []
     for sim_idx, result in enumerate(
             self.result_iter(observed_index, prior_index)):
         r = self.result_to_flat_dict(result)
         if include_tau_exclusion_info:
             div_times = sorted([
                 r['PRI.t.' + str(i)]
                 for i in range(1, self.num_taxon_pairs + 1)
             ])
             model_index = r['model_mode']
             try:
                 model_index_glm = int(round(r['model_mode_glm']))
             except ValueError:
                 model_index_glm = model_index
                 glm_failures.append(sim_idx)
             tau_max = self.prior_configs[model_index].tau.maximum
             tau_max_glm = self.prior_configs[model_index_glm].tau.maximum
             prob_of_exclusion = 0.0
             prob_of_exclusion_glm = 0.0
             prior_prob_of_exclusion = 0.0
             model_prior = float(1) / len(self.prior_configs.keys())
             bf_tau_max = []
             for i in self.prior_configs.iterkeys():
                 if max(div_times) > self.prior_configs[i].tau.maximum:
                     prob_of_exclusion += r['model_{0}_prob'.format(i)]
                     prob_of_exclusion_glm += r['model_{0}_prob_glm'.format(
                         i)]
                     prior_prob_of_exclusion += model_prior
                     bf_tau_max.append(self.prior_configs[i].tau.maximum)
             if len(bf_tau_max) < 1:
                 bf_tau_max = float('inf')
             else:
                 bf_tau_max = max(bf_tau_max)
             ex = functions.get_sublist_greater_than(div_times, tau_max)
             ex_glm = functions.get_sublist_greater_than(
                 div_times, tau_max_glm)
             prior_odds = (prior_prob_of_exclusion /
                           (1 - prior_prob_of_exclusion))
             post_odds = (prob_of_exclusion / (1 - prob_of_exclusion))
             post_odds_glm = (prob_of_exclusion_glm /
                              (1 - prob_of_exclusion_glm))
             if probability.almost_equal(prior_odds, 0.0):
                 bf_of_exclusion = float('inf')
                 bf_of_exclusion_glm = float('inf')
                 if probability.almost_equal(bf_of_exclusion, 0.0):
                     bf_of_exclusion = 0.0
                 if probability.almost_equal(bf_of_exclusion_glm, 0.0):
                     bf_of_exclusion_glm = 0.0
             else:
                 bf_of_exclusion = post_odds / prior_odds
                 bf_of_exclusion_glm = post_odds_glm / prior_odds
             bf_ex = []
             bf_ex_glm = []
             if bf_of_exclusion > 1.0:
                 bf_ex = functions.get_sublist_greater_than(
                     div_times, bf_tau_max)
             if bf_of_exclusion_glm > 1.0:
                 bf_ex_glm = functions.get_sublist_greater_than(
                     div_times, bf_tau_max)
             r['prob_of_exclusion'] = prob_of_exclusion
             r['prob_of_exclusion_glm'] = prob_of_exclusion_glm
             r['prior_prob_of_exclusion'] = prior_prob_of_exclusion
             r['bf_of_exclusion'] = bf_of_exclusion
             r['bf_of_exclusion_glm'] = bf_of_exclusion_glm
             r['tau_max'] = tau_max
             r['tau_max_glm'] = tau_max_glm
             r['num_excluded'] = len(ex)
             r['num_excluded_glm'] = len(ex_glm)
             r['bf_num_excluded'] = len(bf_ex)
             r['bf_num_excluded_glm'] = len(bf_ex_glm)
         yield r
     if len(glm_failures) > 0:
         _LOG.warning('WARNING: there were GLM-regression failures:\n'
                      'For observed index {0} prior index {1}, there were '
                      'failures at the following simulation indices:\n'
                      '{2}'.format(observed_index, prior_index,
                                   glm_failures))
Ejemplo n.º 4
0
 def test_floats_equal(self):
     l = functions.get_sublist_greater_than([2.2, 0.1, 1.1], 1.1)
     self.assertEqual(l, [2.2])