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]
示例#3
0
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