#Christoph Manitz
#DNAKonverter V1.1
#
#28.12.2020

import math
import codecs


def stringdna(eingabe):

    #print("Dein String lautet: " + eingabe);
    #bin_data = ''.join(format(ord(i), 'b') for i in eingabe)

    bin_data = " ".join(f"{ord(i):08b}" for i in eingabe)
    print("Dein String in Binär(Ascii) lauetet: " + str(bin_data))
    length = len(str(bin_data))
    dna = "3' "
    i = 0

    for c in range(math.ceil(length / 2)):

        if ((bin_data[i:i + 2]) == "00"):
            dna = dna + "A"
        elif ((bin_data[i:i + 2]) == "01"):
            dna = dna + "G"
        elif ((bin_data[i:i + 2]) == "10"):
            dna = dna + "C"
        elif ((bin_data[i:i + 2]) == "11"):
            dna = dna + "T"

        # dna = dna + res[i:i+2]
        i = i + 2
    dna = dna + " 5'"

    return dna


def filedna(path):

    w = input("Soll Ausgabe in eine Datei(1) oder im Terminal(2) ausgeben werden?: ")

    bin_data_str = open(path, 'rb').read()
    bin_data = " ".join(f"{ord(i):08b}" for i in str(bin_data_str))

    length = len(str(bin_data))
    dna = "3'\n"
    i = 0

    for c in range(math.ceil(length / 2)):

        # Adenin 00
        # Guanin 01
        # Tymin  11
        # Cytosin10
        if ((bin_data[i:i + 2]) == "00"):
            dna = dna + "A"
        elif ((bin_data[i:i + 2]) == "01"):
            dna = dna + "G"
        elif ((bin_data[i:i + 2]) == "10"):
            dna = dna + "C"
        elif ((bin_data[i:i + 2]) == "11"):
            dna = dna + "T"

        if(w == "1"):
            if(i%500 == 0):
                dna = dna + "\n"

        i = i + 2

    dna = dna + "\n5'"

    if(w == "1"):
        with codecs.open('dna.txt', 'w', 'utf-8', 'strict') as fh:
            fh.write(str(dna))

    if(w == "2"):
        print(dna)
    #return dna


def main():
    print("SICHERHEITSHINWEIS: Bei zu großen Daten kann der PC überlastet werden. Der Inhaber dieses Programms übernimmt keine Haftung für jegliche Schäden des Nutzers.")
    question = input("Was soll konvertiert werden? String(1) or File(2): ");
    if(question == "1"):
        print(stringdna(input("Welcher String soll umgewandelt werden?: ")))
    elif(question == "2"):
        filedna(input("Welche Datei soll umgewandelt werden(Path)?: "))

if __name__ == '__main__':
    main()








