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
Beispiel #2
0
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
Beispiel #3
0
    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
Beispiel #4
0
    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
Beispiel #7
0
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
Beispiel #8
0
    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
Beispiel #9
0
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()
Beispiel #10
0
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()
Beispiel #11
0
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()
Beispiel #12
0
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()
Beispiel #13
0
        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
Beispiel #14
0
        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"))