def likelihood(in_pref, exp_dir, weights, alleles): arg_dict = load_profile(exp_dir) in_span = in_pref + '_srp.sam' in_encl = in_pref + '_er.sam' in_frep = in_pref + '_frr.sam' fn = lambda x: -1 * (-weights['frr'] * FRR_sam_likelihood (x, in_frep, arg_dict, weights) + \ -weights['srp'] * span_sam_likelihood(x, in_span, arg_dict, weights) + \ -weights['er' ] * encl_sam_likelihood(x, in_encl, arg_dict, weights)) return fn(alleles)
def run_max_likelihood(in_pref, exp_dir, weights, ml_params): arg_dict = load_profile(exp_dir) in_span = in_pref + '_srp.sam' in_encl = in_pref + '_er.sam' in_frep = in_pref + '_frr.sam' if ml_params['dimensions'] == 1: fixed_allele = ml_params['fixed_allele'] fn = lambda x: (-weights['frr'] * FRR_sam_likelihood ([fixed_allele, x[0]], in_frep, arg_dict, weights) + \ -weights['srp'] * span_sam_likelihood([fixed_allele, x[0]], in_span, arg_dict, weights) + \ -weights['er' ] * encl_sam_likelihood([fixed_allele, x[0]], in_encl, arg_dict, weights)) elif ml_params['dimensions'] == 2: fn = lambda x: (-weights['frr'] * FRR_sam_likelihood (x, in_frep, arg_dict, weights) + \ -weights['srp'] * span_sam_likelihood(x, in_span, arg_dict, weights) + \ -weights['er' ] * encl_sam_likelihood(x, in_encl, arg_dict, weights)) res = minimize(fn, x0 = ml_params['init_state'], \ method = 'L-BFGS-B', \ bounds = ml_params['bounds']) return [int(round(j)) for j in res.x]
def likelihood_plot(arg_dict, sam_pref, weights, outPath): coverage = arg_dict['coverage'] # file_len_list = [0,5,10,15,20,30,40,50,60,70,80,90,100,120,150,180,210,250] file_len_list = arg_dict['num_copy'] file_len_list = [3, 5, 10, 20, 30, 40, 60] file_len_list = [40] colors = cm.rainbow(np.linspace(0, 1, len(file_len_list))) fig = plt.figure() ax = fig.add_subplot(111) ax.set_ylabel('Likelihood') # ax.set_ylim(bottom=-8000, top=0) ax.set_xlabel('Allele Length (#copy)') #ax.set_xlim(left=0, right=100) j = 0 for file_num in file_len_list: in_encl = sam_pref + str(file_num) + '_er.sam' in_span = sam_pref + str(file_num) + '_srp.sam' in_frep = sam_pref + str(file_num) + '_frr.sam' likelihood_array = [] fixed_allele = 61 allele_range = range(0, 70) for allele in allele_range: if 'diploid' in arg_dict and arg_dict['diploid'] == 'True': x = [allele, fixed_allele] else: x = allele likelihood = -1 * (-weights['frr'] * FRR_sam_likelihood (x, in_frep, arg_dict, weights) + \ -weights['srp'] * span_sam_likelihood(x, in_span, arg_dict, weights) + \ -weights['er' ] * encl_sam_likelihood(x, in_encl, arg_dict, weights)) likelihood_array.append(likelihood) print 'Plotting for file:', file_num ax.plot(allele_range, likelihood_array, color=colors[j], lw=3, label=str(file_num)) j = j + 1 ax.legend() plt.title('Likelihood - Mean Ins: ' + str(arg_dict['read_ins_mean']) + ' - Cov ' + str(coverage)) fig.savefig(outPath)
def energy(self): e = (-self.weights['frr'] * FRR_sam_likelihood (self.state, self.in_frep, self.arg_dict, self.weights) + \ -self.weights['srp'] * span_sam_likelihood(self.state, self.in_span, self.arg_dict, self.weights) + \ -self.weights['er' ] * encl_sam_likelihood(self.state, self.in_encl, self.arg_dict, self.weights)) return e