def __init__( self, K, p_binding_site, background_order, num_background_mosaics, background_model_creator, emission_dists = None, prior_strength = 0.0, interesting_ic_per_base = .3 ): BaseTraits.__init__( self, K, p_binding_site, background_order, num_background_mosaics, background_model_creator, prior_strength = prior_strength ) self.model_builder = hmm.pssm.ModelBuilder(self.order) self.background_states = set(xrange(num_background_mosaics)) self.reverse_complements = set() self.reverse_complements = dict( (state, state - self.K) for state in xrange(num_background_mosaics + K, num_background_mosaics + 2*K) ) self.emission_dists = emission_dists self.prior_strength = prior_strength self.interesting_ic_per_base = interesting_ic_per_base if None != emission_dists and self.K != len(emission_dists): raise RuntimeError('K and len(emission_dists) mismatch')
def __init__( self, K, p_binding_site, background_order, num_background_mosaics, background_model_creator, emission_dists = None, p_gap = 0.35, gap_threshold = 0.1, ic_threshold = 0.5, prior_strength = 0.0 ): BaseTraits.__init__( self, K, p_binding_site, background_order, num_background_mosaics, background_model_creator, prior_strength = prior_strength ) self.K_prime = 2 * self.K - 1 self.model_builder = hmm.pssm.ModelBuilder(self.order) self.background_states = range(num_background_mosaics) self.reverse_complements = dict( (state, state - self.K_prime) for state in xrange(num_background_mosaics + self.K_prime, num_background_mosaics + 2*self.K_prime) ) self.emission_dists = emission_dists self.p_gap = p_gap self.gap_threshold = gap_threshold self.ic_threshold = ic_threshold
def log_info(self, model, log): model = hmm.as_model(model) BaseTraits.log_info(self, model, log) log.info('Adjusted IC/base = %.4f' % self.information_content_per_base(model)) A = model.A for k in xrange(self.K): p_gap = self.p_gap_for_model(model, k) if p_gap > self.gap_threshold: log.info('p(gap at %d) = %.4f' % (k, p_gap))