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