added solution for PROB
This commit is contained in:
parent
e61c29692a
commit
21a0fd1c91
46
PROB.py
Normal file
46
PROB.py
Normal file
@ -0,0 +1,46 @@
|
||||
#!/usr/bin/python3
|
||||
"""
|
||||
Solutions to the PROB Rosalind Problem - Introduction to Random Strings
|
||||
Author: Peter Vlasveld
|
||||
Date: 20190222
|
||||
"""
|
||||
import math
|
||||
|
||||
#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
|
||||
@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
|
||||
|
||||
# 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':
|
||||
prob *= athalf
|
||||
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( )
|
||||
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))
|
Loading…
Reference in New Issue
Block a user