diff --git a/python/PROB.py b/python/PROB.py index 30abea1..5954b3d 100644 --- a/python/PROB.py +++ b/python/PROB.py @@ -4,43 +4,49 @@ Solutions to the PROB Rosalind Problem - Introduction to Random Strings Author: Peter Vlasveld Date: 20190222 """ + import math -#Read in file content into list +# Read in file content into list f1 = open("rosalind_prob.txt") content = f1.readlines() f1.close() """ -Function to calculate the probability of the exact sequence given the GC-content -@param gc - the GC-content given +Function to calculate the probability of the exact sequence given the +GC-content +@param gc - the GC-content given @param seq - the sequence being studied @return - the raw probability value """ + + def calcProb(gc, seq): # get probability for just one nucleotide - gchalf = gc/2.0 - athalf = (1.0-gc)/2.0 + gchalf = gc / 2.0 + athalf = (1.0 - gc) / 2.0 # multiply all of the probability values for each letter in the sequence prob = 1.0 for i in range(0, len(seq)): - if seq[i] == 'A' or seq[i] == 'T': + if seq[i] == "A" or seq[i] == "T": prob *= athalf - elif seq[i] == 'G' or seq[i] == 'C': + elif seq[i] == "G" or seq[i] == "C": prob *= gchalf - + # return the probability value return prob + # take the log of the probabilities returned by calcProb # format them to 3 decimal places -gcCons = content[1].split( ) +gcCons = content[1].split() finalProbs = [] for i in gcCons: rawProb = calcProb(float(i), content[0]) finalProbs.append("%.3f" % math.log10(rawProb)) # print the probabilities with spaces in between -print(" ".join(finalProbs)) \ No newline at end of file +print(" ".join(finalProbs)) +