#!/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))