def MehRBS(seq,start): #Read command line arguments if start == 0: start_range = [0, len(seq)] else: start_range = [int(start), int(start)+1] name = "no name" #Create instance of RBS Calculator calcObj = RBS_Calculator(seq, start_range, name) calcObj.calc_dG() dG_total_list = calcObj.dG_total_list[:] start_pos_list = calcObj.start_pos_list[:] kinetic_score_list = calcObj.kinetic_score_list[:] expr_list = [] for dG in dG_total_list: expr_list.append(calcObj.K * math.exp(-dG/calcObj.RT_eff)) print len(expr_list) for (expr,start_pos,ks) in zip(expr_list,start_pos_list,kinetic_score_list): print start_pos, expr, ks
def MyRBS(sequence, subDNA_frame, subDNA_start, start=0): """ Recieve sequences and return starting points and relative initiation frequencies and a kinetic folding parameter. I don't know how to use the kinetic folding parameter. """ # You can force the calculator to start at a specific start codon if start == 0: start_range = [0, len(sequence)] else: start_range = [int(start), int(start)+1] name = "no name" #Create instance of RBS Calculator calcObj = RBS_Calculator(sequence, start_range, name) calcObj.calc_dG() dG_total_list = calcObj.dG_total_list[:] start_pos_list = calcObj.start_pos_list[:] kinetic_score_list = calcObj.kinetic_score_list[:] expr_list = [] for dG in dG_total_list: expr_list.append(calcObj.K * math.exp(-dG/calcObj.RT_eff)) returnlist = [] for (expr, RBSstart_pos, ks) in zip(expr_list, start_pos_list, kinetic_score_list): result_object = Result(RBSstart_pos, expr, ks, subDNA_frame, subDNA_start) returnlist.append(result_object) # Return the number of start sites, and a list of start positions, relative # initiation rates, and the kinetic parameter. return returnlist
def rbs_calc(self, seq): os.putenv('NUPACKHOME', '/opt/nupack') start_range = [0, len(seq)] name = "no name" calcObj = RBS_Calculator(seq, start_range, name) calcObj.calc_dG() dG_total_list = calcObj.dG_total_list[:] start_pos_list = calcObj.start_pos_list[:] kinetic_score_list = calcObj.kinetic_score_list[:] txt = "" expr_list = [] for dG in dG_total_list: expr_list.append(calcObj.K * math.exp(-dG / calcObj.RT_eff)) txt += str(len(expr_list)) + "\n" for (expr, start_pos, ks) in zip(expr_list, start_pos_list, kinetic_score_list): txt += str(start_pos) + " " + str(expr) + " " + str(ks) + "\n" return txt
def rbs_calc(self, seq): os.putenv("NUPACKHOME", "/opt/nupack") start_range = [0, len(seq)] name = "no name" calcObj = RBS_Calculator(seq, start_range, name) calcObj.calc_dG() dG_total_list = calcObj.dG_total_list[:] start_pos_list = calcObj.start_pos_list[:] kinetic_score_list = calcObj.kinetic_score_list[:] txt = "" expr_list = [] for dG in dG_total_list: expr_list.append(calcObj.K * math.exp(-dG / calcObj.RT_eff)) txt += str(len(expr_list)) + "\n" for (expr, start_pos, ks) in zip(expr_list, start_pos_list, kinetic_score_list): txt += str(start_pos) + " " + str(expr) + " " + str(ks) + "\n" return txt
def MyRBS(sequence, start=0): """ Recieve sequences and return starting points and relative initiation frequencies and a kinetic folding parameter """ if start == 0: start_range = [0, len(seq)] else: start_range = [int(start), int(start)+1] name = "no name" #Create instance of RBS Calculator calcObj = RBS_Calculator(sequence, start_range, name) calcObj.calc_dG() dG_total_list = calcObj.dG_total_list[:] start_pos_list = calcObj.start_pos_list[:] kinetic_score_list = calcObj.kinetic_score_list[:] expr_list = [] for dG in dG_total_list: expr_list.append(calcObj.K * math.exp(-dG/calcObj.RT_eff)) startsitenr = len(expr_list)) returnlist = [] for (expr,start_pos,ks) in zip(expr_list,start_pos_list,kinetic_score_list): returnlist.append([start_pos, expr, ks]) return startsitenr, returnlist
def Run_RBS_Calculator(pre_seq,post_seq,RBS,verbose=True): """Short cut function to run the RBS Calculator on a pre_sequence, CDS, and RBS.""" if vars().has_key('estimator'): del(estimator) start_range = [len(pre_seq) + len(RBS) - 2, len(pre_seq) + len(RBS) + 2] mRNA = pre_seq.upper() + RBS + post_seq.upper() estimator = RBS_Calculator(mRNA, start_range, "") estimator.calc_dG() if verbose: estimator.print_dG() global num_rbs_calculations num_rbs_calculations+=1 return estimator
def Run_RBS_Calculator(pre_seq, post_seq, RBS, verbose=True): """Short cut function to run the RBS Calculator on a pre_sequence, CDS, and RBS.""" if vars().has_key('estimator'): del (estimator) start_range = [len(pre_seq) + len(RBS) - 2, len(pre_seq) + len(RBS) + 2] mRNA = pre_seq.upper() + RBS + post_seq.upper() estimator = RBS_Calculator(mRNA, start_range, "") estimator.calc_dG() if verbose: estimator.print_dG() global num_rbs_calculations num_rbs_calculations += 1 return estimator
if len(input_args) == 3: seq = input_args[1] start = input_args[2] elif len(input_args) == 2: seq = input_args[1] else: output = "Usage: " + input_args[0] + " [RNA/DNA Sequence] (start position)" + "\n" print output if start == 0: start_range = [0, len(seq)] else: start_range = [int(start), int(start)+1] name = "no name" #Create instance of RBS Calculator calcObj = RBS_Calculator(seq, start_range, name) calcObj.calc_dG() dG_total_list = calcObj.dG_total_list[:] start_pos_list = calcObj.start_pos_list[:] kinetic_score_list = calcObj.kinetic_score_list[:] expr_list = [] for dG in dG_total_list: expr_list.append(calcObj.K * math.exp(-dG/calcObj.RT_eff)) print len(expr_list) for (expr,start_pos,ks) in zip(expr_list,start_pos_list,kinetic_score_list): print start_pos, expr, ks
def calc_dG_pre_post_RBS(pre_list,post_list,RBS_list,name_list,output,verbose = True, parameters = {}): from RBS_Calculator import RBS_Calculator First = True for (pre,post,RBS,name) in zip(pre_list,post_list,RBS_list,name_list): mRNA = pre + RBS + post start_range = [0, len(mRNA)] #Create instance of RBS Calculator test = RBS_Calculator(mRNA, start_range, name) #Examine kvars dictionary and pull out any options. Assign them to instanced class. for (key,value) in parameters.items(): if key == "cutoff": test.cutoff = value elif key == "start_range": test.start_range = value elif key == "rRNA": test.rRNA = value elif key == "energy_cutoff": test.energy_cutoff = value elif key == "standby_site_length": test.standby_sitRBSe_length = value elif key == "dangles": test.dangles = value elif key == "export_PDF": export_PDF = value test.calc_dG() if verbose: test.print_dG(test.infinity) test.save_data(output, First) if First: First = False output.close()
def calc_dG_from_file(handle, output, verbose = True, parameters = {}): from Bio import SeqIO from RBS_Calculator import RBS_Calculator records = SeqIO.parse(handle,"fasta") First = True export_PDF = True #for i in range(30): # records.next() for record in records: mRNA = record.seq.tostring().upper() #Set any defaults start_range = [0, len(mRNA)] name = record.description.split(" ")[0] #Create instance of RBS Calculator test = RBS_Calculator(mRNA, start_range, name) #Examine kvars dictionary and pull out any options. Assign them to instanced class. for (key,value) in parameters.items(): if key == "cutoff": test.cutoff = value elif key == "start_range": test.start_range = value elif key == "rRNA": test.rRNA = value elif key == "energy_cutoff": test.energy_cutoff = value elif key == "standby_site_length": test.standby_site_length = value elif key == "dangles": test.dangles = value elif key == "export_PDF": export_PDF = value test.calc_dG() test.print_dG(test.infinity,print_expression=verbose) test.save_data(output, First) if First: First = False if export_PDF: num_structs = len(test.mRNA_rRNA_uncorrected_structure_list) for (structure,counter) in zip(test.mRNA_rRNA_uncorrected_structure_list,range(num_structs)): index = structure["MinStructureID"] structure.export_PDF(index, name, filename = name + "_rRNA" + "_" + str(counter) + ".pdf", program = "subopt") num_structs = len(test.mRNA_structure_list) for (structure,counter) in zip(test.mRNA_structure_list,range(num_structs)): structure.export_PDF(0, name, filename = name + "_mRNA" + "_" + str(counter) + ".pdf") output.close()
start = input_args[2] elif len(input_args) == 2: seq = input_args[1] else: output = "Usage: " + input_args[ 0] + " [RNA/DNA Sequence] (start position)" + "\n" print output if start == 0: start_range = [0, len(seq)] else: start_range = [int(start), int(start) + 1] name = "no name" #Create instance of RBS Calculator calcObj = RBS_Calculator(seq, start_range, name) calcObj.calc_dG() dG_total_list = calcObj.dG_total_list[:] start_pos_list = calcObj.start_pos_list[:] kinetic_score_list = calcObj.kinetic_score_list[:] expr_list = [] for dG in dG_total_list: expr_list.append(calcObj.K * math.exp(-dG / calcObj.RT_eff)) print len(expr_list) for (expr, start_pos, ks) in zip(expr_list, start_pos_list, kinetic_score_list): print start_pos, expr, ks
print "Usage: " + sys.argv[0] + " [input CSV]\n" sys.exit(-1) input_csv = csv.reader(open(sys.argv[1], "r")) output_csv = csv.writer(open("result.csv", "w")) output_csv.writerow(('name', 'sequence', 'start position', 'expression level', 'kinetic score')) for row in input_csv: (name, seq, start) = row if (start == None): start_range = [0, len(seq)] else: # the new convension is to count the start position from the end of the sequence start_range = [int(start)-1, int(start)] #Create instance of RBS Calculator calcObj = RBS_Calculator(seq, start_range, name) calcObj.calc_dG() dG_total_list = calcObj.dG_total_list[:] start_pos_list = calcObj.start_pos_list[:] kinetic_score_list = calcObj.kinetic_score_list[:] if (len(dG_total_list) > 0): expr_list = [] for dG in dG_total_list: expr_list.append(calcObj.K * math.exp(-dG/calcObj.RT_eff)) for (start_pos, expr, ks) in zip(start_pos_list, expr_list, kinetic_score_list): output_csv.writerow((name, seq, start_pos, expr, ks)) else: output_csv.writerow((name, seq, "FAIL", "FAIL", "FAIL"))