def main(): global_var.init() args = make_args() check_environments(args) check_templates(args) check_qPCR(args) run(args)
} # generate primers if id not in primers: primers[id] = {} primers[id]['PRIMER_PAIR_NUM_RETURNED'] = rank + 1 primers[id][f'PRIMER_PAIR_{rank}_PENALTY'] = 0 primers[id][f'PRIMER_LEFT_{rank}_SEQUENCE'] = seq_F primers[id][f'PRIMER_RIGHT_{rank}_SEQUENCE'] = seq_R primers[id][f'PRIMER_LEFT_{rank}'] = [-1, len(seq_F)] primers[id][f'PRIMER_RIGHT_{rank}'] = [-1, len(seq_R)] primers[id][f'PRIMER_LEFT_{rank}_TM'] = primer3.calcTm( transform_degenerate(seq_F)) primers[id][f'PRIMER_RIGHT_{rank}_TM'] = primer3.calcTm( transform_degenerate(seq_R)) primers[id][f'PRIMER_LEFT_{rank}_GC_PERCENT'] = calculate_GC( transform_degenerate(seq_F)) primers[id][f'PRIMER_RIGHT_{rank}_GC_PERCENT'] = calculate_GC( transform_degenerate(seq_R)) primers[id][f'PRIMER_PAIR_{rank}_PRODUCT_SIZE'] = -1 primers[id]['SEQUENCE_RELATIVE_TARGET_START'] = 0 return primers if __name__ == "__main__": global_var.init() with open('tests/_internal_/query_check') as f: primers = make_primers(f.read()) print(json.dumps(primers, indent=4))
def run(): ################### init ############################# web_config = load() global_var.init() db_dir = web_config['templates_directory'] ################### Design primers ################### query_string = request.form['query'] dbs = [db_dir + '/' + x for x in request.form['selected_dbs'].split(',')] if request.form['app-type'] == 'check': primers = make_primers.make_primers(query=query_string) if 'error' in primers: return json.dumps( { 'error': '<p>' + primers['error'] + '</p>' + '<p>Your inputs might be invalid; Check the \ <a href="javascript:void(0)" data-toggle="modal" data-target="#input-help">manual</a> carefully \ to ensure that your inputs are in correct formats</p>' }, indent=4) else: if request.form['app-type'] == 'design': primer_num_return = request.form['retain'] else: primer_num_return = request.form['primer_num_return'] if make_sites.judge_input_type(query_string) == 'pos': sites = make_sites.build_by_pos(query=query_string, template_file=dbs[0], primer_type=request.form['region_type'], \ primer_num_return=int(primer_num_return), size_min=int(request.form['product_size_min']), \ size_max=int(request.form['product_size_max']), pick_internal=bool(int(request.form['pick_internal'])), \ use_junction=bool(int(request.form['junction'])) ) else: sites = make_sites.build_by_seq(query=query_string, primer_type=request.form['region_type'], \ primer_num_return=int(primer_num_return), size_min=int(request.form['product_size_min']), \ size_max=int(request.form['product_size_max']), pick_internal=bool(int(request.form['pick_internal']))) if 'error' in sites: return json.dumps( { 'error': '<p>' + sites['error'] + '</p>' + '<p>Your inputs might be invalid; Check the \ <a href="javascript:void(0)" data-toggle="modal" data-target="#input-help">manual</a> carefully \ to ensure that your inputs are in correct formats</p>' }, indent=4) primers = design_primer.multiple(sites, cpu=web_config['cpu'], monitor=False) ################### Checking specificity ############# if request.form['app-type'] != 'design': primers = run_blast.run_blast_parallel(primers=primers, dbs=dbs, cpu=web_config['cpu'],\ checking_size_max=int(request.form['checking_size_max']), checking_size_min=int(request.form['checking_size_min']), \ report_amplicon_seq=bool(int(request.form['report_amplicon_seqs'])), Tm_diff=int(request.form['Tm_diff']), \ use_3_end=bool(int(request.form['use_3_end'])), monitor=False) primers = sort_primers.sort_rank(primers=primers, dbs=dbs, max_num_return=int(request.form['retain']), \ use_isoforms=bool(int(request.form['isoform'])) ) ################### Checking multiplex ############### dimers = {} if int(request.form['multiplex']) == 1: dimers = multiplex.extract_fake_pair(primers, Tm_diff=int( request.form['Tm_diff']), cpu=web_config['cpu'], monitor=False) ################### Output ######################### global_var.current_task = 'finish' return json.dumps({'meta':{'mode':request.form['app-type'], 'dbs':dbs, 'region_type': request.form['region_type'], \ 'check_multiplex': bool(int(request.form['multiplex']))}, 'primers':primers, 'dimers':dimers}, indent=4)