def ml_encl_FRR_span(in_pref, exp_dir, weights):
    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 'diploid' in arg_dict and arg_dict['diploid'] == 'True':
        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))

        # for i in [1, 3, 5, 10, 20, 40, 80]:
        # 	print i, fn([i]), encl_sam_likelihood(i, in_encl, arg_dict)

        res = minimize(fn, x0 = [10,30], \
             method = 'L-BFGS-B', \
             bounds = [(1, 280), (1, 280)])
        return [int(round(j)) for j in res.x]

    else:
        fn = lambda x: (-weights['frr'] * FRR_sam_likelihood(x[0], in_frep, arg_dict, weights) + \
            -weights['srp'] * span_sam_likelihood(x[0], in_span, arg_dict, weights) + \
            -weights['er' ] * encl_sam_likelihood(x[0], in_encl, arg_dict, weights))

        # for i in [1, 3, 5, 10, 20, 40, 80]:
        # 	print i, fn([i]), encl_sam_likelihood(i, in_encl, arg_dict)

        res = minimize(fn, x0 = [70], \
             method = 'L-BFGS-B', \
             bounds = [(1, 280)])
        return [int(round(j)) for j in res.x]
def ml_enclosing_spanning(in_pref, exp_dir):
    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 * FRR_sam_likelihood(x[0], in_frep, arg_dict) + \
        -1 * span_sam_likelihood(x[0], in_span, arg_dict))

    fn_span = lambda x: (-1 * span_sam_likelihood(x[0], in_span, arg_dict))

    fn_frep = lambda x: (-1 * FRR_sam_likelihood(x[0], in_frep, arg_dict))

    # def diminisher(x, encl_allele):
    # 	val = fn_span_single(encl_allele)
    # 	sig = 1
    # 	amplitude_damper = 0.01
    # 	return amplitude_damper * val * np.exp(-0.5 * ((x - encl_allele[0]) / sig) ** 2)
    # fn_span_single_diminished = lambda x: fn_span_single(x) + diminisher(x[0], encl_allele)
    # Now try using spanning read pairs:
    res = minimize(fn_span, x0 = [30], \
        method = 'L-BFGS-B', \
        bounds = [(1, 250)])
    return [int(round(j)) for j in res.x]
Exemplo n.º 3
0
def extract_pre_flank (exp_dir, length):
	arg_dict = load_profile(exp_dir)
	exp_name = arg_dict['exp_name']
	temp_fa_dir = exp_dir + '/temp/' + exp_name
	with open(temp_fa_dir + '_prefix.fa', 'r') as f:
		f.readline()
		pref = f.readline()[-length - 1:].strip()
	return pref
Exemplo n.º 4
0
def extract_post_flank (exp_dir, length):
	arg_dict = load_profile(exp_dir)
	exp_name = arg_dict['exp_name']
	temp_fa_dir = exp_dir + '/temp/' + exp_name
	with open(temp_fa_dir + '_suffix.fa', 'r') as f:
		f.readline()
		post = f.readline()[:length].strip()
	return post
	def __init__(self, state, in_pref, weights, exp_dir):
		self.random_range = 5
		self.in_span = in_pref + '_srp.sam'
		self.in_encl = in_pref + '_er.sam'
		self.in_frep = in_pref + '_frr.sam'
		self.weights = weights
		self.arg_dict = load_profile(exp_dir)
		super(OptimalAlleleLengthProblem, self).__init__(state)  # important!
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_sim_annealing(exp_dir, in_pref, weights, oalp_params):
	arg_dict = load_profile(exp_dir)
	oalp = OptimalAlleleLengthProblem(oalp_params['init_state'], in_pref, weights, exp_dir)
	oalp.steps = oalp_params['steps']
	oalp.updates = oalp_params['updates']
	oalp.Tmax = oalp_params['Tmax']
	oalp.Tmin = oalp_params['Tmin']
	oalp.copy_strategy = oalp_params['copy_strategy']
	state, e = oalp.anneal()
	return state, e
def ml_FRR_spanning(in_pref, exp_dir, weights):
    arg_dict = load_profile(exp_dir)
    in_span = in_pref + '_srp.sam'
    in_encl = in_pref + '_er.sam'
    in_frep = in_pref + '_frr.sam'
    nc = 80
    fn = lambda x: (-weights['frr'] * FRR_sam_likelihood(x[0], in_frep, arg_dict) + \
        -weights['srp'] * span_sam_likelihood(x[0], in_span, arg_dict))
    res = minimize(fn, x0 = [70], \
         method = 'L-BFGS-B', \
         bounds = [(1, 250)])
    return [int(round(j)) for j in res.x]
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]
        res = minimize(fn, x0 = [70], \
             method = 'L-BFGS-B', \
             bounds = [(1, 280)])
        return [int(round(j)) for j in res.x]

weights = { 'frr': 0.8, \
   'srp': 1.0, \
   'er': 1.0, \
   'allele_1': 0.5,\
   'allele_2': 0.5}
exp_dir = '/storage/nmmsv/expansion-experiments/ATXN3_41_cov60_dist500_DIP/'
# exp_dir = '/storage/nmmsv/expansion-experiments/ATXN7_24_cov50_dist700_hap/'

in_pref_pref = exp_dir + 'aligned_read/nc_'
arg_dict = load_profile(exp_dir)
print exp_dir

in_pref = in_pref_pref + '10'
in_span = in_pref + '_srp.sam'
in_encl = in_pref + '_er.sam'
in_frep = in_pref + '_frr.sam'
# for i in [5, 10, 20, 30, 60, 70]:
# 	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))
# 	print fn([20, i])

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))