Example #1
0
def rev(cs, list_sequences, argument):
    print_colored("REV", "green")
    seq = Seq1.Seq(list_sequences[int(argument)])
    response = seq.reverse()
    response = "REV " + str(seq) + "\n" + response
    print(response)
    cs.send(response.encode())
Example #2
0
def comp(cs, list_sequences, argument):
    print_colored("COMP", "green")
    seq = Seq1.Seq(list_sequences[int(argument)])
    response = seq.complement()
    response = "COMP " + str(seq) + "\n" + response
    print(response)
    cs.send(response.encode())
Example #3
0
def open_seq(gene):
    try:
        ID = DICT_GENES[gene]

        PARAMS = "?content-type=application/json"
        connection = http.client.HTTPConnection(SERVER)
        connection.request("GET", ENDPOINT + ID + PARAMS)

        response = connection.getresponse()
        if response.status == 200:
            answer_decoded = response.read().decode()

            dict_response = json.loads(answer_decoded)
            sequence = Seq1.Seq(dict_response["seq"])

            context = {"gene_name": gene, "gene_content": sequence}
            contents = read_template_html_file("./html/sequence.html").render(
                context=context)
            return contents

        else:
            print("ERROR!!! Cannot connect to the server")

    except KeyError:
        contents = read_template_html_file("./html/error_gene.html").render()
        return contents
Example #4
0
def gene(cs, argument):
    GENE_FOLDER = "./Sequences/"
    print_colored("GENE", "green")
    seq = Seq1.Seq()
    response = seq.seq_read_fasta(GENE_FOLDER + argument + ".txt")
    print(response)
    cs.send(response.encode())
Example #5
0
def rev(sequence):
    seq = Seq1.Seq(sequence)
    response = seq.reverse()
    context = {"sequence": sequence, "operation": "Rev", "result": response}
    contents = read_template_html_file("./html/operation.html").render(
        context=context)
    return contents
Example #6
0
def comp(sequence):
    sequence = Seq.Seq(sequence)
    response = sequence.complement()
    context = {"sequence": sequence, "operation": "comp", "result": response}
    contents = read_template_html_file("./html/operation.html").render(
        context=context)
    return contents
Example #7
0
def info(cs, argument):
    try:
        print_colored("INFO", "yellow")
        sequence = Seq.Seq(argument)
        response = "Sequence: " + str(sequence) + "\nTotal length: " + str(
            sequence.len())

        # other possible solution
        #sol_a = "\nA: " + str(sequence.count_bases()[0]) + " (" + str(sequence.percentage()[0]) + "%)\n"
        #sol_c = "C: " + str(sequence.count_bases()[1]) + " (" + str(sequence.percentage()[1]) + "%)\n"
        #sol_g = "G: " + str(sequence.count_bases()[2]) + " (" + str(sequence.percentage()[2]) + "%)\n"
        #sol_t = "T: " + str(sequence.count_bases()[3]) + " (" + str(sequence.percentage()[3]) + "%)\n"
        #answer = response + sol_a + sol_c + sol_g + sol_t
        #print(answer)
        #cs.send(str(answer).encode())

        list_letters = ["A", "C", "G", "T"]
        print(response)
        sol = " "
        for i in range(0, 4):
            sol += "\n" + list_letters[i] + ":" + str(
                sequence.count_bases()[i]) + " (" + str(
                    sequence.percentage()[i]) + "%)"
            i += 1
        print(sol)
        ans = response + sol
        cs.send(str(ans).encode())
    except ZeroDivisionError:
        cs.send(str("Not valid sequence").encode())
        print("This is not an appropriate sequence")
Example #8
0
def gene(seq_name):
    PATH = "./Sequences/"
    s1 = Seq1.Seq()
    s1.seq_read_fasta(PATH + seq_name + ".txt")
    context = {"gene_name": seq_name, "gene_contents": s1.strbases}
    contents = read_template_html_file("./html/gene.html").render(
        context=context)
    return contents
def json_second_calculations(response, ID):
    length = len(response["seq"])
    sequence = Seq.Seq(response["seq"])
    basis_information = sequence.count()
    A = basis_information["A"]
    C = basis_information["C"]
    G = basis_information["G"]
    T = basis_information["T"]

    context = {"length": length, "basis_info": [A, C, G, T], "gene_name": ID}
    return context
Example #10
0
def info(sequence):
    seq = Seq1.Seq(sequence)
    number_dict = seq.count()
    percentage_dict = seq.count_percentage()
    response = "Total length: " + str(seq.len()) + "<br>"
    for key in number_dict:
        response += (str(key) + ": " + str(number_dict[key]) + " (" +
                     str(round(percentage_dict[key], 1)) + "%)<br>")
    context = {"sequence": sequence, "operation": "Info", "result": response}
    contents = read_template_html_file("./html/operation.html").render(
        context=context)
    return contents
Example #11
0
def info(cs, list_sequences, argument):
    print_colored("INFO", "green")
    seq = Seq1.Seq(list_sequences[int(argument)])
    print(seq)
    number_dict = seq.count()
    percentage_dict = seq.count_percentage()
    response = "Sequence: " + list_sequences[int(
        argument)] + "\nTotal length: " + str(seq.len()) + "\n"
    for key in number_dict:
        response += (str(key) + ": " + str(number_dict[key]) + " (" +
                     str(round(percentage_dict[key], 1)) + "%)\n")
    print(response)
    cs.send(response.encode())
Example #12
0
def second_calculations(response, ID):
    length = len(response["seq"])
    sequence = Seq.Seq(response["seq"])
    basis_information = sequence.count()
    A = basis_information["A"]
    C = basis_information["C"]
    G = basis_information["G"]
    T = basis_information["T"]

    context = {"length": length, "basis_info": [A, C, G, T], "gene_name": ID}
    contents = read_template_html_file(ROOT +
                                       "/calc.html").render(context=context)
    return contents
Example #13
0
def info(sequence):
    sequence = Seq.Seq(sequence)
    response = "\nTotal length: " + str(sequence.len())
    list_letters = ["A", "C", "G", "T"]
    sol = " "
    for i in range(0, 4):
        sol += "<br><br>" + list_letters[i] + ":" + str(
            sequence.count_bases()[i]) + " (" + str(
                sequence.percentage()[i]) + "%)"
        i += 1
    ans = response + sol

    context = {"sequence": sequence, "operation": "info", "result": ans}
    contents = read_template_html_file("./html/operation.html").render(
        context=context)
    return contents
Example #14
0
def info_seq(gene):
    try:
        ID = DICT_GENES[gene]

        PARAMS = "?content-type=application/json"
        connection = http.client.HTTPConnection(SERVER)
        connection.request("GET", ENDPOINT + ID + PARAMS)

        response = connection.getresponse()
        if response.status == 200:
            answer_decoded = response.read().decode()

            dict_response = json.loads(answer_decoded)
            sequence = Seq1.Seq(dict_response["seq"])

            new_dict = dict_response["desc"]
            new_dict2 = new_dict.split(":")
            new_list = list(new_dict2)

            name = new_list[2]
            sequence_start = new_list[3]
            sequence_end = new_list[4]
            sequence_lenght = sequence.len()
            context = {
                "gene": gene,
                "gene_name": name,
                "starting": sequence_start,
                "ending": sequence_end,
                "lenght": sequence_lenght,
                "gene_id": ID
            }
            contents = read_template_html_file(
                "./html/information.html").render(context=context)
            return contents

        else:
            print("ERROR!!! Cannot connect to the server")

    except KeyError:
        contents = read_template_html_file("./html/error_gene.html").render()
        return contents
Example #15
0
def calc_seq(gene):
    try:
        ID = DICT_GENES[gene]

        PARAMS = "?content-type=application/json"
        connection = http.client.HTTPConnection(SERVER)
        connection.request("GET", ENDPOINT + ID + PARAMS)

        response = connection.getresponse()
        if response.status == 200:
            answer_decoded = response.read().decode()

            dict_response = json.loads(answer_decoded)
            sequence = Seq1.Seq(dict_response["seq"])

            n_bases = sequence.count()
            percentage = sequence.percent()
            sequence_lenght = sequence.len()
            most_base = sequence.most_freq_base()

            context = {
                "gene_name": gene,
                "number_bases": n_bases,
                "percent": percentage,
                "lenght": sequence_lenght,
                "freq_base": most_base
            }
            contents = read_template_html_file("./html/calcs.html").render(
                context=context)
            return contents

        else:
            print("ERROR!!! Cannot connect to the server")

    except KeyError:
        contents = read_template_html_file("./html/error_gene.html").render()
        return contents
Example #16
0
import Seq1
print("-----| Exercise 2 |------")
s1 = Seq1.Seq()
s2 = Seq1.Seq('ACTGA')

print('Sequence1: ', s1)
print('Sequence2: ', s2)
Example #17
0
}

SERVER = "rest.ensembl.org"
ENDPOINT = '/sequence/id/'
PARAMETERS = '?content-type=application/json'

connection = http.client.HTTPConnection(SERVER)
try:
    user_gene = input('enter the gene that you want to analyze: ')
    id = DICT_GENES[user_gene]
    connection.request('GET', ENDPOINT + id + PARAMETERS)
    response = connection.getresponse()
    if response.status == 200:
        response_dict = json.loads(response.read().decode())
        print(json.dumps(response_dict, indent=4, sort_keys=True))
        sequence = Seq1.Seq(response_dict['seq'])
        s_len = sequence.len()
        info_dict = sequence.info_seq()
        A = info_dict['A']
        G = info_dict['G']
        C = info_dict['C']
        T = info_dict['T']
        print('Gene:', user_gene)
        print('Description:', response_dict['desc'])
        print('Total length:', sequence.len())
        print(f"""A {A[0]} ({A[1]})
C {C[0]} ({C[1]}%)
G {G[0]} ({G[1]}%)
T {T[0]} ({T[1]}%)""")
        bases_dict = {'G': G[0], 'A': A[0], 'C': C[0], 'T': T[0]}
        max_value = max(bases_dict, key=bases_dict.get)
Example #18
0
import Seq1

print("-----| Practice 1, Exercise 7 |------")


def print_result(num, sequence):
    print("Sequence " + str(num) + ": ( Length: " + str(sequence.len()) +
          " ) " + str(sequence))
    print("Bases:", sequence.count())
    print("Rev:", sequence.reverse())


# We create the sequences
list_seq = list(Seq1.test_sequences())

for i in range(0, len(list_seq)):
    print_result(i, list_seq[i])
Example #19
0
PARAMS = "?content-type=application/json"

conn = http.client.HTTPConnection(SERVER)

try:
    user_gene = input("Gene to analyse: ")
    gene_id = GENES[user_gene]
    conn.request("GET", ENDPOINT + gene_id + PARAMS)
    res = conn.getresponse()
    print("Response received!", res.status, res.reason)
    if res.status == 200:
        res = json.loads(res.read().decode())
        # print(json.dumps(res, indent=4, sort_keys=True))
        print("Gene:", user_gene)
        print("Description:", res["desc"])
        sequence = Seq1.Seq(res["seq"])
        s_length = Seq1.Seq.len(sequence)
        print("Total length:", s_length)
        count_dict = Seq1.Seq.counts(sequence)
        a, c, g, t = Seq1.Seq.percentage_base(count_dict, s_length)
        print("A:", sequence.count_base("A"), "(" + a + ")")
        print("C:", sequence.count_base("C"), "(" + c + ")")
        print("G:", sequence.count_base("G"), "(" + g + ")")
        print("T:", sequence.count_base("T"), "(" + t + ")")
        print("Most frequent base:",
              Seq1.Seq.most_freq(Seq1.Seq.counts(sequence)))
    elif res.status == 404:
        print("Check if the ENDPOINT was correctly written!!")
except KeyError:
    print("Gene not available. Try: ", list(GENES.keys()))
Example #20
0
from Client0 import Client
import Seq1

PRACTICE = 2
EXERCISE = 5

print(f"-----| Practice {PRACTICE}, Exercise {EXERCISE} |------")

IP = "127.0.0.1"
PORT = 12100
c = Client(IP, PORT)
s = Seq1.Seq()
s.read_fasta('U5')

print("Sending  the U5 Gene to the server...")
print(s.strbases)
print(c.talk(s))
Example #21
0
def seq(gene_name):
    response = get_json("/sequence/id/" + DICT_GENES[gene_name])
    seq = Seq1.Seq(response["seq"])
    return seq
Example #22
0
def gene(cs, argument):
    print_colored("GENE", "yellow")
    sequence = Seq.Seq()
    sequence.read_fasta(argument + ".txt")
    print(sequence)
    cs.send(str(sequence).encode())
Example #23
0
SERVER = "rest.ensembl.org"
ENDPOINT = "/sequence/id/"
PARAMETERS = "?content-type=application/json"

connection = http.client.HTTPConnection(SERVER)
try:
    user_gene = input("Enter the Gene that you want to analyze: ")
    id = DICT_GENES[user_gene]
    # We now generate a connection object:
    connection.request("GET", ENDPOINT + id + PARAMETERS)
    response = connection.getresponse()
    if response.status == 200:
        response_dict = json.loads(response.read().decode())
        #print(json.dumps(response_dict, indent=4, sort_keys=True))
        sequence = Seq1.Seq(
            response_dict["seq"]
        )  # We have the sequence created (object inside the class we need to use for the following
        s_length = sequence.len()
        percentages = sequence.percentage_base(sequence.count_bases(),
                                               s_length)
        most_frequent_base = sequence.frequent_base(sequence.count())
        print("Total length: ", s_length)
        for value in percentages.values():
            print(value)
        print("Most frequent base: ", most_frequent_base)
except KeyError:
    print(
        "The gene is not inside pur dictionary. Choose one of the following: ",
        list(DICT_GENES.keys()))
Example #24
0
def rev(cs, argument):
    print_colored("REV", "yellow")
    sequence = Seq.Seq(argument)
    response = sequence.reverse()
    print(response)
    cs.send(str(response).encode())
Example #25
0
def comp(cs, argument):
    print_colored("COMP", "yellow")
    sequence = Seq.Seq(argument)
    response = sequence.complement()
    print(response)
    cs.send(str(response).encode())
Example #26
0
import Seq1

print("-----| Exercise 4 |------")
s1 = Seq1.Seq()
s2 = Seq1.Seq('ACTGA')
s3 = Seq1.Seq('Invalid Sequence')

print('Sequence ' + str(1) + ': (Length: ' + str(s1.len()) + ' ) ' + str(s1))
print('Sequence ' + str(2) + ': (Length: ' + str(s2.len()) + ' ) ' + str(s2))
print('Sequence ' + str(3) + ': (Length: ' + str(s3.len()) + ' ) ' + str(s3))
Example #27
0
        connection.request('GET', ENDPOINT + id + PARAMETERS)
        response = connection.getresponse()
        if response.status == 200:
            response_dict = json.loads(response.read().decode(
            ))  # Transformamos la respuesta en un diccionario
            #print(json.dumps(response_dict, indent=4, sort_keys=True))
            """ Se imprime este diccionario: 
    
                {"desc": "chromosome:GRCh38:20:44619522:44652233:-1",
                "id": "ENSG00000196839",
                "molecule": "dna",
                "query": "ENSG00000196839",
                "seq": "TCCTTTCACTCCCAGCTCCCTGGAGTCTCTCACGTAGAATGTCCTCTCCACCCCCACCCACCCCTGATGAACTCCTGCAGGTTCTGCAGGCCACGGCTGGCCCCCCTCGAAAGTTCCTTAACTATACAATTATGGTGTGTGTTTCTGCGACGAGCGTCCGTCTATCCGGTGGAAGGCACGCCGCTCGAGGCTTGCGATGCTCCCGGGGTCCCCGCTTCTAGCTTGGGCCTGGCGCACAGCAGCGCCCAGACTGCAGGGGGACGCTTGAAAGTTGCTGGAGGAGCCGGGGGGAAGGCAGCGCCCAGCGAGGCGGCTGGAGCGCGCGCCCACAGGTGGGTCCGGTCGGGCGCCGCGGGGCCGTAGTTTTCGGGTCGGCGGGCGAGGACGCCGGGTCCAGAATTCCAGGAAATGCGCGATCCAGGCCGGCGGGCGGGGCGGGGGCTCCGGCGAGAGGGCGGGCCCCGGGAACGGCGGCGGGCGGGGCGGGAGGCGGGGCCCGGCCCGTTAAGAAGAGCGTGGCCGGCCGCGGCCACCGCTGGCCCCAGGGAAAGCCGAGCGGCCACCGAGCCGGCAGAGACCCACCGAGCGGCGGCGGAGGGAGCAGCGCCGGGGCGCACGAGGGCACCATGGCCCAGACGCCCGCCTTCGACAAGCCCAAAGTGAGCGCGCGCGGGGGCTCCGGGGACGGGGGTCCGGCGCCTGGGCGGCCCGAGGGGCTTAGCGGGGCCCAGCCCGGGGCGTCCAAACCCTGGGAACGAACGGGGGCTCCTGCAGGCGAGTTCTTCCTTCGGCTTAGGCCGTGGCTTGCTTGCGGGCTAATCAGGGACAATGGGGCAGAGAAGGTCCAGAACCCGGAGGCCTCCAGAGTCTGCTTCTGCCCCTGACTTGACCCCTCTGGGTCTCAGTTTCGCTGTCTGTCAAGTGGGCATCCTAGCACCGCTGAGCGCTGTGTGGGCCTGGGCAGGGACTTGAGGTCTCTGAAGCTCAGCTGTATGATCAGGCCCGATGTCTACGCCGGATAGGCACCTAGTGCTGTGCCCGGCGCCTACTGAGTGCTCAGTGAATGGAAGCAGCTTTGTACGCCAGCGTTATGGTGGTGAGCGCCAAGGAGCTCAGGTTTGTGGATGCGCCCCGGGGAAGAACCGTGAGCCCTGCCAGAAAGGGGAGGGAGGGGAGCAGAGCACCCCCCTTCCCCCGCGCGGGAAGAACAGGAGCTAGGTAGGCCCTGGGTTTGGGGCCCTAGCAGGGTTCACTCGAGGCCAAGCCATGGCCACTGGCCCCAGGGGAGAATCCCCTTGTTTCTCCGCCCACCAGCTGTGGCGTCTTGGGACTGTTGGGGTCAGGGAGGGTCTGGACCCCCTTGGCCTGTCGCAGAGTCCGAGAGGAGGGGCCCAGGAGTCTGCCAAGCAGGGTGAGTCAGCCAGTAGGGTGTGAGAGTGGTTGGGGAAGGAGTCAGCTGCAGTCAGCCTCAACTTACCCTTCTAAGAAATAGGTGTGAGTGGCCCAGGAGGTTGGCTCACGCCTGTAATCCCAGCACTTTGTGAGGCTGAGGCGGGAGGATCATTTGAGTCCAGGAGTTTGAGACTAGCCTGGACAACAAAACTAGACCCCGTCTCTCCAAAAAATAAAAAAAGTTAGGGGAAGTGTGTGTGGTGGTGCACTCCCGTAGTCCCAGCTACTCAGGAGGCTGAGGCGGGAGGATCGCTTGAGCCCAGGAGGTTGAGGCTGCAGTGAGGTGTGATGGTGCCACTGCACTTCAGCCTGGGAGACAGAGCGAGACCCTGTCTCAAAAAAAAGAGAAGAAAAAGAAAAGAAAAGAAATAGGTGTGAATGATGATGACAGCTATCACAAAAGTGCCGGTGAGAATCCAGTGAGTGTGCATGTGTCAGTGAGGGAGACAGGCTGTGGAGAGCCCACCTACCTTCTGAGGAGGGTGAGGCCTGGCCCCCACTACTGATGCCCCCAGCCCAGGGAAAATGCTCAGCTACTCCCCGTCAGAAGCTGGAAGCACTGAGGTGCTGTACAAGCCCTCCTACCCCCACCCCTGCCTCCTTCACGTCTTACTGGAGCTGGGGCCCATGATTGGCGCCTCCCCTTTGCAGTCTTTTTATTAAATGCTCTGGGCTCCCTCTGCCCTTGGGCTGGGGACCCACTGTACCCTGATGTGAATCCTATGGCAATAGCAAAGCTCTTTGATTGGCGGGGTGCAGTGGCTCACGCCTATAATCCCAGCACTTTGGGAGGCAAAGGTGGGTGGATCATGAGGCCAGGAGTTCGAGACCAGCCTGGCCAACATGGCAAAACCCCATTTCTACTAAAAATATAAAAAATTAGCTGGGCATGGTGGCGGGCGCCTGTAGTCCCAGCTACGCAGAAGGCTGAGGCAGGAGAATGGCATAAACCCAGGAGGTGGAGCTTGCAGTGAGCCGAGATCTCGCCATTGCACTCCAGCCTGGGTGACAGAGTGAGACGCTGTCTCAAAAAAAAAAAAAAAAAAAAAAAGGCTCCTTGATTGCGAACATGTTGGGAGTTATGGAGAGAACAGCAGGGCCCACTTCTAGAGCACTTGTTGCAGACACCCATTGGATCCTTGCAGTTCTTCTGTAACAGCCCATCAAGGGAGGGGCTCATATTATTATCCCCATTTTTTGGCCTTGCTCAGTCCTCCCATCTGATTCAAGCTGGCAGATCATTTTCCCTATTGGGACCTCAGTGTCCACACCTGGAGGATGGAACATCAGCTGCTTATGTGGGTGTCCCGTGTCCTGAGTCCCAAGGCCACAAGGTGATGCTTGAGAGTGAAGGTAGAATGTTACCTGCCATGTGTTTGAGGCGTGACAAATCTTGTATGATTGTGAGGAGGAACTTGTGTGAGCTGGCAGGAGAAGTGGGAAGGAGTGTGAATCTCAGAGCCACTGTGACCAGAGCCAGCTCCCTGCCCTCTTGTGGGAGGGACAGATGACAGTTATAATTATTAGCATTACTAGCTGCAGCTAATGGAGTGTTGATGTTTCTGTGCCAGGCACCGTTCTAAACACATTATCTGCATTTTTTATTTAATCCAGGCACAGAGAGGTTAACTAGGCCCAAGATCACACAGCTAGGAAATGTCCAATCTGGGGTTTGAGTCCAAGGGAGGCTGGCTTCGAAATCCCATGCCTCTAACCATCTTTCCTAAACTACCTCTGCAGAAGCCTTTGGGGATAGAGGTGCCAGTGCCCCAGGTGCAAACCTCCTGAGACAGGAGCCTTTGCTGTGTCCTTCAGCTTCTCATACCTGCCACCAGCTGAGGCCTGGGACCTGGTCAGCTAGAAGAAAGCAGAGCAGGGCAGCGCTTTTCAAACTGCACTCAAGTGGCCTGACTTTTAATGTTCACACTGTGATTCTGTGTGGGTCGGGTTGGGGCCTGCGATGCTGCACTGCTGACCAGCTCCCAGGAAATGCTAATGTCAACGATCCAGGAACACACTTTGCTTAGCAAGGCCCTAGGCAGCTGCCTTCTGTTGTGCGGGACCCCTATTGACTCCAATGGATATAGCACCAGGTTCAAGAGGCTACCTTCTTTGGAAGAGGTAGCAAACAAGATACGGGGTTTTACTGGGGGCTTAGACACAGGGAAGAGAGTCCAGTGGCGGCAGACTGAGCAGAAGAACCGCAACCACTTGCAAATCATGCAGTTTATGTAGCATTTTCATTTAACACCTTCTCCCAACCATCTCCACCTAGTAACCTTCATTTAACCCAAAACAAAGGGCCTCGGTCCCTATACCCCTGTATGGTCAGTGTCCCGTGGGAATGGGGTGGGGCTCAGATGTTCCTCATAGATAACGACTGGATCTCCAGGTTGGCCACTCTTGGATTCCTTCGCTCAGAACTCTGAACACCCATTCAAGTGTGCCTGCCATGCAGGGTCATCGTCAGGGGATGCCCAAGTCAAGTTTGCCCTGTCGGGTGTGCCTCCCATACCCCCACCTGGTTTGACTTAGCACCTGCTGGGCACTGGAAGAAGTGGAAAGGGGGGTTGCAGGGGTGGCCCTTATCAGCCTATGTTCACAGGTGGCACCAGGCACTCAGGCATTCTGCATCCTGGAGGCCAGTGCTGATCACATGCCTGTTACAATAATCATAACAATAGCTGTCCTTGAAGTAGTCCTGGGTACCAGGTGCCTTCAGTGACTTTTTCTTTTTTGCCAGAATCTCACTCTGTCGCCCAAGCTGGAGTGCAGTGGCAAGATTTTGGGTCCCTGCAACCTCTGCCTCCTGGGTTCATGCGATCCTCCTGCCTCAGCCTCCCAAGTAGCTGGGACTACAGGCGTGTGCCGCAGTCTCACTCTGTTGCCCAGGCTGGAGTGCAGTGGTGTGATCCTGGCTCACTACAACCTCCACCTCCCGAGTTCAAGCCATTCTTCTGCCTCAGCCTCCGGAGTAGCTGGGATTACAGGCGTCCACCACCACGCCCGGCTAATTTTTGTATTTTTAGTAGAGACAGGGTTTCACCACGTTAGCCAGCTGGTCTCGAACTCCTGATCTCAGGTGATCCTCCCACCTTGGCTTCCCAAAGCGCTGGGATTACAGGTGTGAGCCACTGTGCCCGGCTAGTAACTTTTATCTCACGGAATCCTCTGGACGACTTGACAAGGCATGGGTCTTCATCCCCATTTACAGATGAAGAAACTGAAGCTTAGGGAGTGGAGGGACTTGCCAGGGCTACACAAAATCTGAGAGCCTTGAAGCTGTAGACTGGCAAGTGAACAGGTACAGGCTGGGACAGCAGTTTCTTTCTTTTTTTCTTTTTTTAGACAGAGTTTCGCTCTTGTTGCCCAGGCTGGAGTGCAATGGCACGACCTCGGCTCACTGCAACCTTCGCCTCCCAGGTTCAAGTGATTCTTCTGCCTCAGCCTCCCAAGTAGCTGGAATTACAGGCATGCACCACCATGCCCGGCTAATTTTTTGTATTTTTAGTAGAGACGGGGTTTCTCCTTGTTGGCCAGGCTGGTCTCGAACTCCCGACTTCAGGTGATCCGCCCACCTCAGCCTCCCAAAGTGCCGGGATTACAGGCATGAGCCACCGCACCCGGCCAAGGGACAGCAGTTTCTAAACTGTCCCTCTCTGATGCAGAGGGGAATTGGGGCTAAATCAGCAATGTGCCTTTTCTGTCTCATATTTGAATGTCTACTCTGCACGAGGCGCTGTCCTGCTTTGCATACAGTGACTCATTTAATGTTTATGTCAGCCCTCTGAGGAAGGTCCTGTCCTATTATTAACTTCACTTATTATGAGGAAACTGAGACTCAGAGAGGGGAGGGAACTTGCCAAAGTCACACAGCTGGCAAGCAGCAGAGCTAGACTTGAACCCAGATCTGCCTGCACTCAAGTAGAAGCTGTTCATTGCTTTGCTCATTTGCCAATTCCACTTTATGCAAAAAAGAGGGGGCAGTGTGGGGGGAAGAGTTAGAATCAGGGTGGCAGGGTGGGCCAGTGCATTAGCCCTGGGCTTCAGATGTACTGGGGTTGAATTCCTGCCTGCCGCTTAGCAGCTAGGGTACCTCAGGTAGACAACTCCTGAAACTCAGCTTCCCCCTCTGTAAAATGGGGTGACAAAACCAAGATCTTGGGGTTCTTGGGGAAACTGACATGCTGATTGGTTTTTGTACAGTGCCTGGCTGGTAACAGCAGGCCCTCAGGGGTGCGTTTCCTTCCTGGGGACTGGAGTGGGGGTTGCAGTAGACTCTGGGAGGCCTCTCCAGCTGCAGAATCTCCCTCCTCCCTCCTCCTTTTTGTCTTCCTGACACAAAACCCACCAGCTGCACTTCTTTGGGCTTGCAGTGGCTTTCAGTTACCAGAGCCACCTGTTAAAACAAAAATGTGCCTAGGAAGAGCCTGCCTTACCCATTTTGACTCACATGGCAGTTGGTGGTGGAGGGGAACAAAGGAGACTGAGTTTCATCGAAGCCTTTTGCTTCGGAGGAGGAAGGGAGGATCAGAGAGAGGAAGTGGTCTGTGTTCACACAGGGAGGCAGGGGAGGCCAGGCAGCTTCCCAATCCTGCATTCAACCTCAGGGTGGGCTTGACCTGGGTGGCTGGGGGCCCTGTGATCCAGGAGAGACTTGTCCACCTGCTCAGGTGTCTTGAAGGGGTCCCTGTGGTACCCCCTGGGGCGGGGCAAGGTAGTAGGACCATGGTCTGGCTGGGGAGGTGGAGAGGAGCAGGCTGTGGGCGCAGAGTGAGGTTGGAATCTGTATTTACCCAAGGTGTTGGGGGTAGGCTTGCCCTCAGCCCTTAATGTTCTCAGGCCCCTGAGCAGTTGTGGGGGATAACCTCTGCACTCCTAGTGACCAGGGAGCTAGAACAGCAAGGAATTTGAACTTGGACACCAGCTGGGGTCAGGCTCTCTGGGTCTGAGTCCTGATTTCCCACTTTCCAGCTAGAGGAGCTTGAATGAGTCATTTAACTTCACGGTGCCTCAGTTTCCCCTCTCTAAAATGAGAATTATACCCATACCCACCTCTCAAACACCAAGTGCAGGCCTGGCTCAGAGCAGGTGCTGCAGCAATAGCTGCCATTGGTCAGCATCATCATCATGGTTGGTAATGGTCCTACTTTGACTTTTGAGACAGAGTCTCACTCTGTCGCCCAGGCTGGAGTGCAGTGGTGCAATCTCGGCTCACTACAACCTCTGCCTCCCGGGTTCAAGTGATTCTTCTGCCTCAGTCTCCCAAGTAGTTGGGATTACAGGTGTGCGCCACCATGCCTGGCTAATTTTTGTGTTTTTAGTAGAGACAGGGTTTCACCATGTTGGCCATAACAATGGCTGTCCTTGAAGTAGTCCTGGGTACCAGGTGACTTCAGTGACTTTTTTTTTTTTTTTTTTTTTGAGCTGGAGTCTTCCTCTGTCACCCAAGCTGGAGTGCAGTGGCACGATTTTGGCTCACTGCAACCTCTGCCTCCTGGGTTCATGCGATCCTCCTGCCTCAGCCTCCCAAGTAGCTGGGACTTGGGATACACTTGCCCCCGCTGGTCCTCCCTTCCACCTCTGTGAAGAGGAGGTCTCAAACTCCTGGCCTCAAGTGATCCACCCACCTCAGCCTCCCAAAGTGCTGGGATTTCAAGAGTGAGCCACCGCACCTGGCCCCTGTTTAGATGTTAGCATCAGTGACCCAGCACCTTGCTATGTGGCATGCAGGGAGCGTGCTGCTAGACCTCCGGGTTTAGAGTCAAATAGCTTCCTGGCTGTGGTATGCATTAGACTTTCTAACTCAAGGTCCTCCCACTCTCTGAGCCTCAGTCTTGTTGCCTTTAAAACGAGTTTAAGTGTGCTGAGTCCCTATGCTGTGGCTCCACAGGAATTTCCCCAGGTGGAAGACACATCTTGCCTTCTGTGAAACCTCTCAGCAGCAGAGCTGTCAGGCCCCGTCAGCAGGAGACACTGTGGGGACTGCTCAGTCCCTTCCACTGTGTACCTCGGAGCTGGCGGAGCCTAGATGAGGCTGAGCATAGAGGGCTTCCTGGAGGAAGTGGAGCTGAAACAGTTTCTCAGCCCAGGGCTGCTCTGTCTCCTGGCCTCACACTAAAAGTCAGTTGAGAGGCCATAGTGGCATAAGTCACTGACCCTGGCACTGCCCAGCTCATCACCAAAAGCAGGGCTAGGGAGGGAGGGGACATTCGATTGGCAGTGGGCACCTGTGGCTCATCTGGGTTCTGGCCACGGTGCTCAGGTTCTGTGAGCTGACCAGGCAGCCCTGGCTCCTCTGCCCCCGTGTGGGTTCTGCCAGGTCCCATGGGGGCAGGTCAGCCCCTTCCTTGTTGCAGGGAGAGCACCCAGCATTGCTGACATGGGACAGGGAAACGAGGAAATAACGGTGTGGTCATTGAACACAGAGAGCACTAGGTGCTGTGCGAGGTGCTGAGGACACGACATGATGACACAGACAAGGTCCCCCCTCTCAGCAAACGGCTCATGAGGGAGACAGACATGTTACATACATGAACCCAAAAAGTCAGACGAAAACAAAACAGAGCGATGTGTTTGGGAGGCAAACCCAACTGCCGGAGGCGAGCAGGGCGTCTACCTCCAAGGTAAACCCAGTCAGATTAGTTGTCCCCAAGGCTCACCAGGGAGAACTAATCTGACTAGGTTTGCCTTGGAGGTAGACGGCCCTGCTCGCCCTCCAGCAGTTGGGAACGTGGAAACATGAGTCAGATCTGGGAGTATCTGTCCCAGGAGTCCAAGACCTGGGTCCTCATGGTAGCTCTGCCACCGACACACTGAGTGACCTTGGGTAAGTGAACCCACCGCCCTGGACCTCTCTGGCACGCATCTCTTGAGAGCAGGGACTTAGTGCATTTCCCGAGGGCCTCCACGGTGCCTGGCACATAGTGGGGCTTAGTAAATATTTGTTGGTAACTGAGGATGCTTCCTGTTCACATCAGCGCTGGGAGGATTTCCTGCTGTTCAGACAAATGCTGGGCTGGCTGTGAGTCAGCCTTGCAGAGAGCAAAGGCAGTGGGAAGGGGCGTGAGATTCCCCTCTGGAGAGGTCAGGAGGCCAGGCACTGTCTCGACATGAGTGCCAGGGAGGGGGTGTGGCCTGTGGGCAGGGCTTGGGCTGAGGCAGAGGGACTTGAGTTCCACCCTAGCTCTACCACCATCAATTTTGTGTAACTCTGGACAGGCCACTGAACTTCTCCGGGCTTAGCCTGGCAAGTCCATTTCCCCATCTGTAACATGGGCCGATATGTACATTGCCTAGGGATTAAATGAGATAAAGGGTCTGAAAACAGTAGGTAGCTGCTTTATCATTATTATTATTTCTGTATTATTGATGTCTGAGGCTAGGCCCACAGAGGCAGTACAGTAGAGTGGTTAGGAGCTCAAGAATCAGACTAGGGTTCAAATTCTGACTCCATCACTGACTGTTTTGGGGTACTTCTTTGAACCTCAGTTTCTTCATCAGTAAAATGGGAGTGAAGTCTCTACCTTGCTGGTTGTAAGGATGAAATAAGATAATGCATATAGATGGTCTAGCACATAGTAGATACTCAAAAGTTTGAGGCCACTGCTGACCCTTTTCCCTGAAAGGAGACAGGAGAGCGGGGTCGCCACCCCATTGTCATTGTCATCTGGAATAGGCTGACAGACTTCCCATGGTGTGTTGCAGTTTTCTAGAAAATTCAGTAGGAGGCCTGCCTGAGCTTGAGCCACCTGTGGAGGTGGCTTCCTGCCTCTGCTCCACACCTGAAACGCGTCTGGGCCTCTTCTCAGGCAGCCGTGAGAAGGGATGAGTGCTACTGGTCATGGTGGGCAGCTGGCTCTGCTTTCCCCCTTCCCAGAGGCGCTCCTGCCTCCTGCCCAGCTCCCTGAACCCCTAGCTTCTGCACCCCGGCACTGTCTGGCTTCTGCCCCGCTGAGCACCCACTGTCTCTGACGCTGCCTTGAGTACTTCCCGCATGTTATTCAAATCCCAATCAGATCTTCCCTCCCGCAGTAGCTGGTCTTCTGTTCTGGCTTCCTGCCATCCTGTCCTCCACACAGCAGCCGGGAAAGGTTTTTTTAAAGGGGACTCTCCGATTTAACACACTTGGGTGGAAAACCCTTTGCTTCGGCCTCTGCAATCTCCCTGCCCCCTCTCCACTTTGCCCTGGCCTCATTTCTCACCACTAACCTCACTCTGCACTCTGGCCAACTCCCCGCCTGCTTCCTGATTCAGACACTAAGCACACGCAGCTCCCCTGCCTGGAGCCATTCTCCCTCTCCTTCTTTCTTCTCCCTGGCGAACTCCCCCTTTAAGTGATCTTTTCCCAACACACTTTCTAAATTGCCCCCACCCCAGTGTGATTTTTCTTTATCTCATAGCACTTGGTCTGCTTCTTATCACAGTTTGCAAGGCTGAGTTCAGAAAGGTGTGTTTGCTCATTCTGAGGCAGGAGAGGCTACCTTGTGCTGCTGTGGTAACAAACAGCCCCCAGGTCTGAGGGGTCTGCAGAGACCCAGGTTGACCTCATACTGCTTGTCCCTCCAGGGCCTCCAGTGAGGTTTCGGCTCCTTGGATCACTCAGGGCCCCAGGCAGATGGGAAGATTCCACTCTGAACATTGCCAATTGTTGTGCCAGAGTAAAGCAGAGCTGGGAGGTGGGCTCTTGAATTGGCATTTAAATACTTTTGCCAGGCAGGGTAAGGCAGCTCACGCCTGTAATCATAACACTTTGGGAGGCCTAGGTGGGTGGATCACCTGAGGTCAGGAGTTCAAAACCAGCCTGGCCAACATGGTGAAACCCTGTCTCTACTAAAAGTACAAAAATTAGCCGGGCATGGTGGTGGGCGCCTGTAATCCCAGCTACTTGGGAGGCTGAGGCACGAGAATCCCTTGAACCTGGGAGGCAGAGGCTGCAATGAGCTGAGATCTTGCCACTGCACTCCAGCCTGGGCAACAGAGCCAGACTCCATCTCAAAAAAAAAAAAACAACAACAACAAATAAATAAATGAATAAATACTTTAGCCAGAAGTAGCCATGCAGACCTCCCCCCACCAGTCCCACCCACAAGCGGACGTGACTACCGCCCCCATTCACTGCCTGATCCTCCTGTTCTCAGGGGCTCCAAGGCCAGGCCTGGTTTGACCTTCTGACTTTCTGACTTCCTCCTACCTTCCCAGTAACCTCATGCAACTCCTTTCACTCAGCCTCAATCATCCCCATGGGTGTTTAAACTTGCCCAAGACATGCCCCTTTGAAAAAGCCTGCCATTCTCTTGACCCACATGCACGTCCTGCCCCCTCCAAGGCTGCTAGTTCCTTTAGGGGCAAAATTGTGAAAGAGTAGTCTAAACCTTCTTCCTCTTCTTACCTCCACTTCTTTCTTACCTTATTCCCATGTGGATTCTACCCTCACTCAGGCCTCTAGAACGGTTCCTCTACGGCAGTGGTTCCCAATCTTGACTACGTGTTTTTTTAAAAAAAGTCCTCCACCTGGGCCTGCCACCAAGGATTTTTCTTTAATTGACCTCAGATGGGGTTGAGGCCTTGGGAACTGGCCAGAACTTCCCGTGCTCCTAACTTGCAGCCGGGGTTAAGAACTACTCCTCTGAAGCCCCCAGTGCCTGCGCTTTTAGCCCGACGGACAAGTTTCTGCCCTTCCATCCTGTGACCTCCAGCAGGGCCTGACCATGTGAGTTTTCTGTGGCTGCCGTGACAAGTTGCCACACCCTGCATGGCTTCAACCAACAGAAACGTGTGCCCTGGCAGTTCTGGGGGCCAGAAGTCCAACATCAAGATATCATCAGAGCCACATGCCCACTGAAGGCTCTCGGGGGAATCCATTCCTTGCCTCTTCTGGTTGCTGGTGGCTCTAGGCATTCCTTGGCTTGTGGCTGCATCATTCCAGTCTCTGCCTCTGAGGTCACGTTGCTGCTTCCTCTTGTGTGTGTTTCTCTTAAAACTCTCTGCTTCTGTCTTATAAGGATACATGTGATTGCATCTAGGGCCCAACCAGATAATCCAGGATAAACTCTTCCTGTCAAGACATTTAATAATCACACTTTGCCATATAAGGTAATTTTTTTTTTTTTTTTGAGGTGGAGTTTTGCACTTTCACCCAGGCTGGAGTAAAGTGATTTAATCTCGGCTCACTGGAATCTCTGCCCCCAGGTTCAAGCAATTCTCCTGCCTCAGCCTCCTGAGTAGCTGGGATTATAGGTACCTGCCACCATGCCCAGCTAACTTTTGTATTTTTAGTAGACATGGGGTTTCACCATGTTGGCCAGGCTGGTCTCGAACTCCTGACCTCAGGTGATCCACCCGCCATAAGTTAATATTTTTTTTTTGAGAGGGAGTATTGCTCTGTTGCCCAGGCTGGAGTGCTAGTGGCTCAATCTCGGCTCACTGCAACCTCCGCCTCCCAGGTTCAAATGATTCTCCTACCTCAGTCTCCTGAGTAGCTGGGACTACAGGTGCATGCCACCATGCCTGGCTGATTTTTGTATTTTTAATAGAGAGGGGATTTCACCATGTTGGCCAGGCTGGTGTTGAACTCCTAACCTCAAGTGATCCACCCACCTCAGCCTCCCAAAGTGTTGGGATTACAGGCATGAACCACCACGCCCGACCCATATAAGGTAATATTTACAGGTTCTGGGGATTAGGATTAGCATGTAGACAGCTTTGTGGGGGCCACCATTCAGCCCACTATGCTAACCCTGTGAACCGTTGCTCGCTTCTCCTTGACATCTGACGGCCTGGCCTTCTGCATACCACACACCCTCCCACCTCTCTGGCCACAGTTCTGTAGGCTCAGCCTCCTCCGTAAGGCCATTAAGTGCTTGTGCTGGTCAAAGTTTCATCCTAGGCCTTTTCCTTACCTCCCTTGATATTTTCTCCCTAGGTGAGCTCCTTCAAGCCCACAGCTTCTGTGCTTACCCACACTCCTACCTACATTCCCAGCTTGGGCTTCTCAGGCCAGCTCTAGACTCTTGTATCCCACTGGGTTCTTCCACTTACCTTTGGATATCTCAAAGGCATCTCCAGTTGGCTGGGCACGATGGTTCACACCTGTAACCCCAGCACTTTGGGAGGCCGAGGTGGGCAGATCACTTGAGGTCAGGAGTTCAAGACCAGCCTGGCCAATATGGTGAAACCCCATCTCTACTAAAAATACAAAAATTAGCTGGGCATGGTGGTGGGTGCCTGTAGTCCCAACTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGTGGAGGTTTCCGTGAGCTGAGCTGGAGCCACTGCACTCCAGCCTGGGCAACAGAGTGAAACTCCGTCTTAAAAAAACAAAAAACAAAAGGTGTCTCTAGTGTAACATAACTAAAACCAAACCAATCATGCCTCCCTCCCCCGCATCCTCCCTCCTGGAGGGAGCTCCAGGACTTGGTCTTCTCTTCCAGAGTTCTCTGTCTCAAACTGCGGGAATTGCTCCCCACCCAGGCCTAACCTGAAGTGTGAGCCTTGGCATCTCTTTCTATCCACCTGTTTTTCCTCTATGCACCTCACAACCCTGGTCCAAGCCACCGTCATCTTTCAAATGGCTGCAGTAGCCTCTAACTGGCCTTGGAGGAGCCATCCTCTTTCTCTAACCAGCTGCCAACCCTGCAATGGCCTCTGTGTGCTTTCCAGATAAAGCCTGACTCCTCGTGGCCCGCACAGCCCTGCCTGGGTGGTCCTATCCTGCAGCCTCTCCAGTACCATGAACCCTCCCTTCTCTGAACCTCTATTTAATCCATTTCATATACCCCGTTTTCTCCTGCCATAGGGCCTTGCACATGCTGTTCCTTCTGCCTGGAATTTTCTTCCTGCCTCCCTCCGCACCCCTGCCTTGTGTTGTGGGTTCCTCGCTATCCTCTAGCTTTTCGCTCAGGCTCATTGTTGGCCCTCTAGATGTATTCACTTCTCTTGTTTGTTACCCTCTGTCATAGGACTGTGTTCGTACTTCCCAAGGAGTCGTCTTGGTTTGTGACTGTACATTTTCCCATGTGACATTTGCTTAATGCCTCTCCCACTCTGGGGCCTGTACAAGCCCCAGGAACAGGACTTGGACCCTCCTGTTTAACTCTACAATCTAGCATCCAGCAGGAGCGCAGGCCTTCGTTGACTTTTATTTTATTCTTATTTTTTATTTTTGAGATGCAGTTTCGCTCTTGTCGCCCAGGCTGGAGTGCAGTGGCGTAATCTCGGCTCACTGCAGCCTCTGCCTCCCAGGTTCAGGTGATTCTCCTGTCTCAGCCTCCCAAGTAGCTGGGATTACAGGTGTGCGCCACCACGCCTGGCTAATTTTTTGCATTTTTAGTAGAGATGGGGTTTCACCATGTTGGCCAGGCTGGTCTCAAACTCCTGGCCTCAGGTGATCCACCCACCTCGGCCTCCCAAAGTGGCTGGATTACAGGCGTGAGCCCCCATGCCCAGCCTTCATTGACTTTTAGTTGACAACTATTTAGCATTTGCTATGTGCCAAGAACTCCCTGCCTACTAATGCAGTTAACCCTCATGAAGCCTAGAAGGAAGGACTGCCATTCTCCCCACTTAACAGATGAGGATGCCGAGGCACAGGAAGTGAAGTGACTTTCTCAGGGTCAAGCAGGGAGTGAGTGGAGGAGCCGAGATTCCAGCTCTAACCGCATGATGCTCTATACAGTGTGACTCCGGCTCTCTGGCTGGGCCCTCTCCATAGCCCTGTGAGGGTTAAGGATAGAAAACAGAGGCTCAGAGAGTTGAGGTCCCTTGCCTGAGGTCACACAGCTGGTTGGCCGTTCCCTGGGCTATAAGCTTCAGTATTCCCAATGCTGAGCATATTTTGAGAACCCGAGAAACAGACGTTTGGCTGGGTGGGAACTGAACTCATTTTGTCAGGGAATTCAACAACTAAGTTGGCCCTGAGACTGGGTGTGAAGACCGCTCTGTCCCCTGCCAGCTGGATGACCTCAGGAGAGATCTGATGACTCTGAGGTCCTGCTGATAGGACCTCTGGTGTCTCTGTTCCCTGCTGGCCTCCCCTGGGCCTGGGTTGGGTTTCCTCTGCAGGAGGCAGCTCATGTATGTGCTCCTAGACGCCCTTGGGCCAGCAGCTCCTTGGCTGTTCCTCCCTGAGCCAGGGCAGCCAACTTTCTTATCCAGCTCTCCATGCTCCCCACCCCAGCATGAGATGTCAGCTGAGAGTTTTCTGGATCTCCCCTAGCTAGGGGGAAAGCTTCCATCATTTGGAACAGGAACAGCAGGAACAGCAAAGTCCCTTTCCCCACCATCTCCCACTGCCTGCTGTGCTTCTCCTAACAGCTCATGGTAAACACCCTGACTGAGCGGCAGGGGCTGTTTCCTTTGGGCTATCCATGTCCACCTACACTGCCCTTTTTAATCCTTACAATTTTTCTTGGACACGGGGGCATAATATTCCATTGTTTTTCAGTTGAGGAAACTGAGGCTCAGAGAGGTCAAGTGTCTTGTCTGAGGTCACACAGCAGAACTGGGAGTCAAGCCAGATGGGCTGCCTCCAAGGATCCTACTCTTAAACTCTAGAGTACTAGAAAGATCTTCCGTTGCCTAATATTGATTCCTGATAGGCTATGCTTGAGTAGCATCTGCTTTTGAAAATGGAGCCTGGGTCGGTTGCGGTGGCACATACCTGTAATCCCAGCACTTTGGGAGGCTGAGGTGGGTGGACACCTGAGGTCAGGAGTTCGAGACTAGCCTGAGCAACATGGTGAAACCCTGTCTCTACTAAAAATACAAAAATTAACTGGGCGTGGTGGCACCTGCCTATAGTCCCAGCTACTCCGGAGGCTGAGGCACAAGAATTGCTTGAACCCAGGAGGTGGAGGTTGCAGTGAGAGGAGATCATGTCACTGCACTCCAGCCTGGGAGACAGAGCGAGACTCCATCCGTCTCAAAAAAAAGAAAACGAAAATGGATCCTGAATTTTGAAATATGCTGTGACTCTTCCCTAGTTTGGGACATCTGGGTCAATCCCTTTTGTTAAAGTAGTTTATTTAGTTGGCTGAGAGCGGGAGCTGCCTACGTGACCTGGAGCACAAGCTTTGGAATTGGGCTTGGGTTAGAATTCCGCCTCTGCCACTCACCAGCTGCGATTAAGAACAAAGATACTGGGTTGGGCTCCTGCCTCTATTACTTGCAATCTGTGTGGCCTTGGATGAGATATTTAACACCTCCGAACCTCAGTGTCCTCAATTGTGAAAGAGATCGAGATAACAGCTGAACCCACATCCCAGGAGCGGATTAAATGAGATAGTGCAGTACAGAGTTTACCGAAGTATATGGGGTCAGCAGCCAGCCAGTAAAATGGTGGCTAATGGTTATCATGATTAATGTTAACATTAAGCTCTGAAAGGTCCTTCGTGAACTCATAGGTATTTGTTCTCTCTCTCCCTTTCTCTCTCTCTTCCCCCTGCCCCCTTGCAGGTGGAACTGCATGTCCACCTAGACGGATCCATCAAGCCTGAAACCATCTTATACTATGGCAGGTAAGTCCATACAGAAGAGCCCTCTCTCCCTGGGATTTGAGTGGGGTCCCCAGCTCCACCCAGAGGCCCCTGGGGAATTCCAGGGTCACTGTTCCTTCCTGTCTCCCTGTGGGAATCAAGCCAGCTCCAGGCCAGAAGTGGGACTGTGAGGACATGGAGGCCTCAGCACTGAGCTGGAGACCCGCAGACCAACTCCTGAGCTTTCTGGGCCTCTGAGTCTTGTCCTCCTGGTGTCAGGTGAGCCAGGCCTGAGCCTGCTCTCCCCACCCACCCACATACGTGCATGAAGGTAGTTCCCAGGGCTGAATCCGTCTTTTTTTTTTTCTTTTGAGATAGAGTCTTGCTCTGTCGCCCAGGCTGGAGTGCAGTGGCATGATCTCGGCTCACTGCAACCTCCACCTCCTGGGTTCAAGTGATTCTCCTGCCTCAGCCTCCTGAGTAGCTGGGATTACAAGCACATGCCACCACATCCAGCTAATTTTTGTATTTTTAGCGGAGATGGGGTTTCACATGTTGGCCAGGCTGGTCTCGAACTCCTGACCTCAAGTGATCCACCCAGCTTGGCCTCCCACAGTGCTGGGATTACAGGCATGAGCCACTGTGCCTGGCTCCTGTCTTTTGACTTAACTGAGAGCCTATATATAGCAGGTGATGTGCTCACATGAGATGCCAGTACAATTTCTTGAGCATCTCCTAGAGCTGGGCTGGGCTTTATCAGCTCATTGAATTCCTCCACGCTTGGAAGAGGAGGATACGCTCTCTGCATTTTACTGAGGAGGGAATGGGCTCAGCCAAGACAGTTGTCCACGGTCACACAAATTAATAGCAGATCAAGAGTTGAACCCAAGGCTGTCTGACCCCTAAGGCTTTACTACATCATCAGGGTCATAACCTGCTAGGAGTCACGGAAAAGTGGCTCCCCAACTCTGGGCCTAAATCTCTGCATCTTCCAAGTGAGAACACACTTCCTGCCTCAGCTCTCAGAGATGCTAGGGGGCCAGAGGGTCCCCCTGTTCCCCAGCGAGGAAGGTTCTTCCCTTCCTACCCAGACCTCAAGGGCTCACAGCAGCTCCTCTCTTAGGACCAGCTTTTAAGGGCAGGGACTTTAAAGGCCAGTGGATCTGGATTCAAATTTGGACATATTATCTCCTGTCTGCGAACTTGGTCTCTATCAACTGAGGCTAAGAACAGGCCCTCCCTAGAGAGATGACCTAGGAGCTAGGGGCTCCTTGTCCACCCAGCCCTGCCCCCGCAGACCTGTGTTCCTCGGATGTTTGCACAACACTCATTTTGTTTGGAGCTGAAAGAACTCAGCCTCTCTGTCACAGTCTTGAAATTCAGCTCGGGACCCAAATTTGAACATTTCTGCTCCATAAGCCAGAATCCTGTTATTCAGAGGCCTGCCCTCATGGAGAGAATGAGGGATCCCGGGGGGTTGCCCCCAACTCTCGGGAGCATCTCCACCAACTCCCTGAGAGATTTCTGGTAAGTCCACTATTCTCCATCTTTTCGCACTTCCAGGGACCTTCTTCTGCCCCAGGAAGCTGCCATTGATTTAATTCCTATTTAACTGCAAGGCATAAGCACAGTAGCACCTCCTGTGTGCCAAACACTCCTTTAAGTGCGTTACCCGGGTTAAGTTATTGAAGCCTCACAACAATTTGTAAGATAGGAACTCTATTGCCGTCATTTACAGATGAGGAGACTGAGCCGTGGTAGGTGGAGTAAGGTGCCCAGTAAGCACAGGGCGGAGGTTTGAACCCAGATAGTCTGCCCCCGAGTCCATGGCCCTGGCCATTACCCCCTGTCAGTTAGAGGTTTTGGTAAGTGACGCCCGTAAAATGCTTAGTTCAGGGCCTAGCACACATTAATGTGCTCCATAAATGTCACTTAATGATAATATTCTTATTAATTGGAGCTTATATCTCTAAGTGGGGTGAAACCTCTTGGCTTATCTCTGCCTGGCCTTTGCCCATGTCAAGCCGCCAACTTGCCACAAGGCCCCTAATGAGGTCGTTCAGTGGGGCACCAAGATGAGATCGAACCCAGGCACTCATTAAGGGGTCACGGAGGGCTCATCAGCTGCAGCCAGGGGCTGGGAGCGCCGGGTGGGGCTAAGAGAAAGGGGAAAGGAGCCGCCGGGAGGGGCACTGGTCTGATCGTCCATTCCTCACACCACCTCTGGGCCTTGGAGATGGCGTGCGGCAGGTGCCAGCTGGAGCTTGGCCTGAAGTCAGCAGGCAGGGGACTGGGGAGTTTGTCACACTCAGATATGGGTGTCTGTAAATGCACACAAATATGGGCTAAGAATGGAAGGAGGAGGGGAGCCCCTGGCCTGAGCCCTGCTAGGCCCAATTCAGTGGCCCTTTTTCCAGCTCTGGGACTCAGGCCTGCCTCATTAACTGTCCTCACCCATTTCTCCTTCCTCCAGTTCCCAGGATTCTGGCCTTTTCAGGGGCCTCTCCAACCTCTTTCTCAGTCTTGTTTATAACCCTGTCAACTATTTCTACAGAGATTCTGAAACTGGCTGCTCTTTCCTCCGATCACTGCCCTGGTCTGGGCCACCACTGCCCCTCCCTGGTGCTGTGGCCTCCTGATTGGTCTCAGCCATCTACTCTGGCCTTCCTCTCTACGGGCCCTGCAGTGCTGTAGTTGGAGCAAGAGCCTTAACCCATGGTCTTCCCAGCTCATTCCCCAGCTTCCCCATCTCACTCAGAGTCAAAGCCAAAGTCCACACATGGGCCTTAAAGTTCTGCAAAGCCTGCATTGCCTCTCTGACCTCTCTAAGGCTCCTTGCTTAGTCCACACTGGATGTTTTTCAAACATGCCAGACCTAGGAAACAGAGAGTCTGGGTTACTTGCCCAAGGTCACACAGCCTTTAAGTCACAGAGCTGGGATTCAAACCCAGACCACTGGGCTTCAGAGTCTGCTCTTTCTCATGACACACAAAGTTTCATTTCTTCCTCTGTGCACCCCTACATGGAAAATATTATGTTTTACTGACAAGGGCACCAAGGGCCTTAGAGGGGAGCGCTCCTGCCTGGGATGATGTGGTAAATAGGGGTGGGAGATGGACTTGACCTGCAACCCCTGAGCTCATCCTCCCTCCCTCCCTGGGCTCCTGATGGTGGGCTTCTTGTGACTGTGTTGCCCACCAAGGCCGGAAGAGGACCAGACAGTGCCCCAGCACAGCAGCTGTGGCTGACCAGGGAGTAGGGATCATCTAAGAACAGAGCGTGCATGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCAAGGCGGGTGGATCACCTGAGGTCAGGAGTTCAAGACCAGCGTGGCCAACATGGGGAAACCCCGTGTCTACTAAACATATAAAAAATTAGCCAGGCATGGTGGTGGGCATCTATAATCCCAGCTACTTGAGAGGCTGAGGCAGGAGAATCACTTGAACCAGGGAGGTGAAGGTTGCAGTGAGTCGAGGTCGTGCCATTGCACTCCAGCCTGGGCAACAAGAGCAAGACTCCGTCTCAAAAAAACAAAACAAAAGAAAAAACAGAGGGTGGCCCTATGAGGAGCCTTCGCTTGTGTGGGTGGCCAGGGACAGCAAGAGGTGCCAGGGCCCTAGGAACAGCTCTTTCCTGCTTCAACTTTGGGCTCCAGATGGGCGCTTTCCAGCTCAGTCTGAGCAGCTTCGGGAAGCTGTGTCCCATGGGAGACACTGGGAGTCCCCTGTGCTCTTTGTCTCCTGTCGGGCCCCCACATTAGCTCTCTGGCCTCAGCTCTGGCTTCCCTCCAATTTGTTTCCCACGCAGCAGCCAGAGGAGCTTTCAAAAAGGTAAATTATTTCATGCTAGTCCCCTGCTTGAAATCCTACAGTGCCTTCCCAGTGCTTTCAGCCAAAGCCCCAGTCCCTTCCTAAGCCCAGCCTGGCCCTGCCTCCCTGGTGCATCATCTGCACAAATGCCTGCTCTCTGACCTCCAGCCACCCTGCACTTCCAATGCCCGCGGCTTCCTGCCTGCAGCTTTAGTACAGACCCCTCCCCTGCCCAGAACTGCCCCCACCCCAAGGCTTCTGCTGAAATGTCACCTCCTCAGAGAGGCCTTCCCTGGCTGCTCTGTCTAAACTCTGTGTTGAGAAGTTCCTTCTTGATGGTTGTTGAGGAGGGAGGCTGGAGAAGAAGAATCGAAGAGGAGAAATAGAAAGCAAAATAATTTGTTCTAGGGGACGGGCTGGTGCTGGGCACGGGGAGGCGCCCGTCTCTGGTGTGGGCAGCTGGGTAGATGGAGGAGCCGTATTTGGAAATGTGGAACCCAGGAAGGGAGTGATCTAGAGGGAGGGGAAAGGTGGCGCGAGATGCCTGCCTCTCAACAGGTAGCCAGACACATGGGTCTGTCTTGGTCACTGCTATCTGCCCAGTGCCCAGCACATCACAGGCCCTCAGTGGTGGTGTATGGGCATAGAGAATTAGAAGCTGTGGACCTCTGGATCCGGAGCTGAAAACCACCAAAGGAGATGAGTTGGCCTGGCCAGGTGTGTAAAAGGCAGAGTCTGAGAGAGAACGACCAGAGGGCAGAGCCCCCGCAGGTGGAGTTCTGGGGGCTGGAGGGAGACCATTAGGAGAATCGCACATGGCTGGCGCAGCAGGTCCCAGGCAAATGTGGCCACTGGGTTTGGCAATATGGGAGCCAGAGCCCTAGTGTCATCTCCCTGCCTTCTACCCAGCAGTTCCCAGAGTGATATCCCCAACAGTGTTTGACAACTGGTACAGGCTCTTCAGCGGCCACAGTTACTGGGCAAGGCCTTGTGAGGGTGACTTTGGGGCAGCTGGCCAGCAGTGGGAGGGGAAGCAGTCTCAGGGGTACCTGAGGCACTGAGCTCCGACCTCCAGGTGCCAATGCCGCACCAGGGCACCGTTCCCCTGCAGGCTCTTACAGGGATTAGGGGCTGGTAAGGAGCAGTGATTAGGGGCTGACTAGCAGGCTGGTGGGCACCAGCATGACCCCTTGGTGGTACCCTCTGGGCACTCATGGGGACTTGGGCTAACAGATGGGGAAGGGAGCACATTCAGGGGGCTTAGGAAACATATTTATGTAGGGAAGCATTTTAATATTTTAGTAACAGAAGCTATTAAAGGACTTACAAACTTACTTACATACACTAAAACACTATTTGGTCAAACTTCTGTTTCTTTGGCACTTTCCTCCTTTATTCTTTTTTATTTTTTTGAGACAGGGTCTTGCTCTGTCACCCAAGCTGGAGTGCAGTGGTGCAATCTTGGCCCGCAGTAGCCTTGACTTCCAGGCTCAGGTGGTCCTCCCACCTTAGCCTCCCAAGTAGCTGGGACTACAGGTGCACGCCACCACGCCTGGTGAATTTTTGTTTTGAAGGGGTTTCACTGTGTTGCCCAGGCTGGTTTCAAACTCCTGGGCTTAAGTGATCCGCCAGCCTTGGCTTCCCAAAGTACTGTGATTACAGGTATGAGCCACTGCACCCGGCCTCCTATTTTTCTGCTTCTGCTTTGTGGATAATTGGATGCTTGGACCTCCTGATTTAATCTTCTAATTTCCTTAACTGTTTACTCCTATTTTTCATCATCTTGTCTTTTTGTTCTACTTTGTGGAGGATTTCTTCACTTTTAGCTTCCAGTTCTTTTCTTACATCGTGACAGTTGCTGCCGCATTCTCTTGTAAATTTCCGAGGGCTCGTTCTTGGGTTCTGAATGTTCCCTCCTTTCAAGGATCTTCTCATCTCTTTGAGGATATTCATGTCTTTTTTGTTTTGGTTCTTAGGTTTTCATCTGTTCTCTGTGCTGTTTCCTCGGAGTGCTTTTGTCTATTCTGTTGTTTTGTCCCTCATGTTAGAAGCATTTCTTTTTTTTTTCTTTTTTTTTTTGTGATACAGAGTCTTGCTCTGTCACCAGGCTGGAGTGCAGTAGCATGATCTCGGCTCACCACAGCCTCTGACTCCCTGGTTCAAGTGATTCTCCTGCCTCAGCCTCCTGAGTAGCTGGGATTACAGGCACACACCACCACACCCAACTAATTTTTGTATTTTTGGTAGAGACGGGGTTTCACCATGTTGGCCAGGATAGTCTCAATCTCCTGACCTCATGATCCTCGCACCTTGGCCTGGGAGGCCAAAGTGCTGGGATTACAGGCGTGAGCCACCATGCCCAGCCTAGAAGCATTTCTTAATGTCTGGTGTTCTCTGGCTGTTGTATCTTAAAAAAAAAAGGGGGGGGAAACTGAGGCTCGAGGTGACCTTGTGAGCTGGAGCAGAGCCGGGATGGGATGAGGAGGCAGGAGCGTGTGCAGAAGAGAGGGAGCCCCCCTGAGCTCGCACCCTGCTTCCCGTGGCTGGGAGGGGAGGCCGAGATGCTTGGGGAGAAATGGAGGCTCCAAGCCAGAGGGGCTGTTTCCAGCACGCTCTTACTGAGCGCTGCTGTAGTCCAGCTTGGTGTGGCGGCTGTGGGCAGGGAGGGGAGAGAGGTCTGAGCTGGCTGGCGGCCCACTGGGCCCCTCCCCTGAGCCTCCACCGGCCCTCTCCCAGTGCGCTGGGCTGGGCAAGCCTCTGATGTGCCAGCCAGATGGAGGGTGAAGTCCTGATGCCTGCCCCTACCCTGGGAATTGTGATGCTGCAGTTACTGCCCCTGATAACCCCTGACTGGGCATAGGACCAGCTGGCTGAGCCAGCTCCTGGGGCTGAGGAGGAAGCCATGAACTTGACCTGGCACTTTCCTTGTCTCCAAGCATCAGTCAACCAAGGATATGGAGGGGGTGTGTGCATGTGTGCACACATACACACACACACACACACACACTTCAACCTGTTTATCCCCCTTGAGATTTGCTGACTTGTGCATTGGGGGTAGAAGGTGCTGGAAAAATTCCGGTCCTGGTTCTCAGTTTCCCCATCTGTCCAGTGGGAGCAGCTGGACTGAGAGACGCCCATGTCTCCTGCTGTGGTCCTGCAAGGAGGCTGGCGCTCCTGAGTCTGCTCCATCCTGGCCTGTCAGGCCTGCCTGGATCCTGCCCCGGGTTGGTCCACCACTCACTGTTTTGTTTCCAGGAGGAGAGGGATCGCCCTCCCAGCTAACACAGCAGAGGGGCTGCTGAACGTCATTGGCATGGACAAGCCGCTCACCCTTCCAGACTTCCTGGCCAAGTTTGACTACTACATGCCTGCTATCGCGTGAGTTGCCCCCAACCCACAGGTCCTAGGGCAGCATTGATCCCTATGACTAGGACCAGGCCTGTCCCTCAGCCTGTGGGGGCCAGAGAAGTTGCTCTGAAACCACAGCTGTCTTTCTCACCATTGTGTACACTTAGTGAGTCTCTCCAGTGCCTTTAGGCCTCAGTTTTCCCTTCTGAGATGTGGGTGTGATGGACTGAAATTGCTTCAAGTTCTACAGAGAAATGGCAGAATATGGGAGCTAAGAACACAGGGTCAGAGGCAGTGCAGGGCTTGAACCCGGGCCATCTATCTCCTAGTTCAGGGCTTCGTGTTGTGAGGGGAGGAGAGGCCTGAATATAGGGTGGGGGCGGGGAGATGTGGGGAAGATTCTCCAAAAGGCTTTTTCTTTTTCTTGTCTTGAGTCGCCAGGGAACAGCACTAGGTACCGAAAAGGCCCAGAAGGGGTATGGGCGAGTACTAGAGAGAAATTTCCATGACTGCTTTATTTATTTATTTATTTATTTATTTATTTATTTATTGAGACAGAGTCTCACTCTGTTGCCCAGGCTGAAGTGCAGTGGTGCGATCTCAGCTCACTGCAACCTCCACCTCCCAGTTTAAGGGATTCTCCTGCTTTAGCCTCCCAAGTAGCTGGGATCACAGGCACCCACCATCACACCCAACTAATGGTTTTGTATTTTTAGTAGAGATGGGGTTTTACTATGTTTGCCAGGCTGGTCTCGAATTCCTGACCTCAGGTGATCTGCCCGCCTCGGCCTCCCAAAATGCTGGGATTACAGGCGTGAGCCACTGCGCCTGGCCTCCATCCTCATCCTGAAGATGCAAGAACTTCTGGTGACCCCTTCTCCTGAGAGTGGCCTGATCTCCCCTGGGCAGGGCACTTTCTTCCCACGCTGGGCTCTCCCAGCACTTGTGTGCCTTCCCTCACACATTCTAGTAACCACTTCATTTTCACTCTTCATGGTGGGAACTTCCAGCTAAGCACAGTCCACCGTTACGTGATCAACACAGTGGCCCTGGCAGGCCAATTTGTGCCTTGCTTCTGGAACAAACATGCAGTAATAACAACGAAAATGTTTTGAGCATTTGTCCGCTCTGCTCCAAGCACTGACCCGGGTGGGGTTTATGAAGTTTGACTCATTTGTCCCCGCAATAACTCCTTGACCTAGGTGTCAGAGGGTGACTAACCAGGGGTCACACAGCAGATAAGTGTGGGCACAAGGATCCAAGTCCATGACTGTATCCCACGTGTCTCCCACATCCAGGCATCCCTCTGGACTTGTCCAGCTGTGTCCTTTTCTCTCATTTCTCTTCCCTGCCAGCCTTAACTCCATCACCAACAAATATTGGGCTACTCTGTCCTAGGCATGGTCCTCAGCTGAGAGGTCGCAGCCATCCCAAGACAGAGGGGTCCTTGCCACATGGAGACTGCATTCTAGTAGGGAATACAGCAAACTGGCTGATAAGCCATATGACACACAATGTTGAGTAGTGATAAGGACCTGGGAGAAAAAGAAAGCCCAGGAGAATGGTGGAGGGGCCGTTTTAAGATAAGGCGGTCTGGGCCAGGTACAGTGGCTCACGCCTGTATCCCCAGCACTTTGGGAGGCTGAGGTGGGCGGATCATGAGGTCAGGAGATCGAGACCATCCTGGCTAACACAGCGAAACGCTGTCTCTACTAAAAATACAAAAAATTAGCCGGGCGTGGTGGCATGCGCCTGTAATCCCAGCTACTTGGGAGGCTGAGGCAGACGAATCACTTGAACCCAGGAGGCAGAGGCTGCAGTGAGCTGAGATGGCGCCACTGCACTCCAGCCTGGGCGACAGAGCAAGATTCTGTCTCAAAAAAAAAAAAAAAAGATAAGGTGGTCAGGGAAGGCCTCTCTGAGGAGGTGAAGCTTCAGCTGGCTCTAAACCAGGGGAGCGGGAGAGACGCAGTGTAGGACAGTATCGGGGAAGAGCAGGCCTGTGTCTTCTCCGGTGGCCTCAGGGAATGAGGGAGAAGGAAGGTGCTGGGGAGGCTGGCAAGGCCTGGAGGATGCAGGCCTTGTGGGCAGGACCTGGGAGTTGCGATGTCACTCTCCGTGGCAGGAAGCTACTGGGGCTTCGAGGGGAGAAGTGATATGCTTTGATTTACCTTCTTAAAAGATTGCCCCAACTGCTGGGTGGAGAACAGGATGACAGGGGCAAGCATGGAGACAGGGAGGCCAGTTAGAGATGGCGTGATTCAGGCCAGGATGGAGGGGTGAGAACTGGTATGCAGTTCCAAAGTAGAGCTGATAGGACTTGCCCAGTGTCTGGGATCTTATCCAGTGGATGCCCAGAGCTTGGGTCTGGGGGATGAAGTGGGTTTAATCTGCCAAGGGTTGGGGATGTCATTTGCTCCTGGAGCTCCCAAGGGACTTGGGGAAGGTTGTTCCCAACCCCTTTCTTCCCTTCCCAGGGGCTGCCGGGAGGCTATCAAAAGGATCGCCTATGAGTTTGTAGAGATGAAGGCCAAAGAGGGCGTGGTGTATGTGGAGGTGCGGTACAGTCCGCACCTGCTGGCCAACTCCAAAGTGGAGCCAATCCCCTGGAACCAGGCTGAGTGAGTGATGGGCCTGGAAGGGGCCATGCTGAGGGTGTGGCTGGGAGGCTCAGCTCTGAGACTGGAAGGGCGAACTGCTGGGAATCCCTGACCCAAGCAAGACCTTGTTCTTGCCCCCAGTCTGGTCCATGGCCTCAGAAAGATGGGTTTAACTCTGTCACAAGAGACGTGGTTCCCATCCTCCCTTTGCCGTTATGTTCTTACCTTGGGCACAAGTGTTTGGCTGTGTCTTGCTCTGGCCACAGGCCTGCTGTCCAGGAATGTTAACCTGCTTAGCCACCCAGGATTTCTGAGGGGTCTCCCTTGTCACTGATGCTGATCAGATCTCTAAAGGCCCTAAAGGTCCTGCTCTAACTTCATAACTGAAGTGAGTCTGGCCCATTTCTAGCCCCCTGCCTGGGCCCCCATGGATCTCTAAGTGGTATCACAAAACCACCCTGCCCCATTTTCTGAGCCATGATTCTGATACATATAGAATGTGAACATCATGGCAGGCCCAAGCTTAGCAATGCTGTCCATCTGGGGGTGGGGAGGGCCATGTTGACACCCCACACCTCCCACTAAGATCTAGGAGCACCCAGCTGCTTTAAGAGCTAGAGGGACATGCTAGGGCCTGGGGGCATCTCTGCCAGTCTTTCCTCTGAGGCAGTGGGTCAGTGGGGGAGGAGGGTCCTCCCCAAAGCCTCCTCTTCCTCCTCTGTCCCAGTCCCAGAGCTGCCCTTTAGGCCTTCCTTTTGCCTCAGGCCCATCCCTACTCCTCTCCTCACACAGAGGGGACCTCACCCCAGACGAGGTGGTGGCCCTAGTGGGCCAGGGCCTGCAGGAGGGGGAGCGAGACTTCGGGGTCAAGGCCCGGTCCATCCTGTGCTGCATGCGCCACCAGCCCAGTGAGTAGGATCACCGCCCTGCCCAGGGCCGCCCGTCTCACCCTGGCCCTGACCTCCTGGCCTAGCAGTGGGGCTGTACCTGATCTCCCCTGTGCCCCACAGCCCCATGGTGTCCCCTTGAGCCCACTGGCATGAACTTGGGGCTTCATGAAACAACTGGAGACCTCCTAGGCAGGCTCAGAACTTCTGGAGATGTTCTCCCCAGGGACACCATGCCTTTATAGCCACCCTGCAGGAAGCTCAACACCAAATAGGAACGTAACTATTGAAAAAAAAATCTAGGCTAGATTCTGATCAGCCCATAGTCCTCCCTCGAGACCCAGTGGACCAGGCCCCATCCTGTCTGGGCCTGAATAGGTCTGATTTCCAAGATTTCTGAGGGGTCTCCCTTGTCACTGACGCAGATCAGATCTCTAGAGTTTGTGCCTCATGGTGCACAGCCTCACTGTGTGATATTGGGCAGGTCACACTGCTGCTCTGGTTATGCACCAAGACACCTCAGTTGTGCACTGTCACAAGGAGATGATCACACTTACTTCATTCCTCTACCCTCAGGATTAGTAAGAACCAAAGAGCTACCTGCACGCATTTCCTCTAATCCTCGCAGCAGCCTGCAAAGCAGAACTACCATTGCTTAGTCCCATTTGACAGATGAGGAAACTGAGGTGGAGTGAGGTGCAGCCTCTTGCAAGGCACAAACCCTGGATTTGTATCCGGGGACATCTAGTTCCAAAGCCTGTGTTCATTCATTCTTTCTTAAACACTTCAGAATAACTTTATTGGTTAAGAGTACCTAATACATTAGCGAGATACTTCCCAATACTAGTGTGAGTTCTATTTTAGATGACGTGTTAAACGGTCCTCCGTTTCCTCATCTGCGCATGGGAATAAGCCTACCATGAGTGTTGTTGGAAACACCAGGTGAGAGAAGGGTCCGTGTCATTTACTGAGCTCAGGCCCCGTCCTTGGTGCTTTACACACATGGCCTCGGCAAAGCCTGGCCGTGACCCTGTGCAATAGCTGGCAGGGTTCTTTCTGAAAAGGGCGGAAACTGAGGCCATAAGCAGAGCAGTTTTCCGCAGGCCATGTGGTTAGGACATAGCAGTTAGGATTTGAAGACACTGAGCCCTGTTTTGTGCTGGCCTCCCATGGGGGGTTTGGGTGGGACAGCAGGCAGGTAGGCTGGGAGGTCTCTCCATGGTGCTGGTGACAGAGCCTGGGTGGGCATCTCGCCCACAGACTGGTCCCCCAAGGTGGTGGAGCTGTGTAAGAAGTACCAGCAGCAGACCGTGGTAGCCATTGACCTGGCTGGAGATGAGACCATCCCAGGAAGCAGCCTCTTGCCTGGACATGTCCAGGCCTACCAGGTGGGTCCTGTGAGAAGGAATGGAGAGGCTGGCCCTGGGTGAGCTTGTCTCCCACCCATAGTTGGGAGAAATCACAAGAACCAGGGACCATGGTGTCTCCTGAGTTCTGAAGTGTGTCTTTGTTGGGTCTTAAGGCTTGGAACTGGAATCCCCCTGGGCCAGGCGTGGTGGTTCATGCCTGTGATCCCAGCACTTTGGGAGGCGAGGCAGGAGGATTGCTTGAGCCTAGGAGTTTGAGACCAGCCAGGGCAACATAGTGAGATCCATCTCTGCAAATACAAAAAAAAGTAGTCAGGCATGGTGGTGCATGCCTGTAGTCCCAGCTACTTGGGAGGCTGAGGTGGGAGAATTGCTTGAGTCCAGGAAGTCAAAGCTGCAGTGAGCTGTGATAATGCGACTGCACTCCAGCCTGGGTGACAGAGGGAGACCCTGTCTCAAAAAAAAAAAAAAGGAAGAAAGAAGAAAGAGAAAAGAAAGAGAAAGAAAGAGAGGAAGGAAGGAAAAAGAGGAAGGGAGGGAGGGAGGAAGGAAGGAAAGAAGGAAGGAAGGGAGAGAGAAAGAAAAGCCTCCACTTGGTGTTGGGAGTCCTGTGCTGAGCCTGCTTCTGGCTGTGATTTGCTGTGTGAACCTGGGCAACACTGTGTCTTCTCTGGGCCTCTGTTTCTTCTATTGGGATGACTGAGTTGGAGCCGACATCTCAAAAGTCGCTTCCAGCGTGATGATGAATGGGCCTCCTGTGGAGGGTGCAGCATGGTGGAGAAGTCAGGGCTCTGGAGTCCCACTGCCCGGGCTCAGAGCTTGGTTCCACACTTCCTGTCTGACCTTGGTCACATTACTTGAATCTCCTGAGCTTCAGTCCTTCATCATAAAATGGGTGGGATAATAGTTGTGAATATTAGATAATGTATACAAGTCACTTCATATACTACCTGACACATGGTAACTGGCTAATGAGTGACAGCTACCACTTAGATAAGGACTTGGAGGGTAAAAGACCAGGTTTCCCCATGCTGTTGAAGCAGGCAGCATGACTAGGATGGTTCAATCTCCACAGCATGGTCAAGGCAGGGCCTGCCGGGGCCCTCCCGCTAGGGCACCCATGACCTGGCTCTCCCCCTTCCAGGAGGCTGTGAAGAGCGGCATTCACCGTACTGTCCACGCCGGGGAGGTGGGCTCGGCCGAAGTAGTAAAAGAGGTGAGGGCCTGGGCTGGCCATGGGGTCCCTCCTCACTGCCTCCTCCCATACTTGGCTCTATTCTGCTTCTCTACAGGCTGTGGACATACTCAAGACAGAGCGGCTGGGACACGGCTACCACACCCTGGAAGACCAGGCCCTTTATAACAGGCTGCGGCAGGAAAACATGCACTTCGAGGTAAGCGGGCCAGGGAGTGGGGAGGAACCATCCCCGGCTGTCCCAACTTCCTGTATAGAGAGGCAGAAAGCAGGGCGGGTCCCAGGAACTCGAGGGGTGGCCCCAGGCCCAGACATGGGGGGAGGAATCAGCATGGCCTGGGGCCATCCCTGCCAGCCACACACCTGCTCTTCCAGATCTGCCCCTGGTCCAGCTACCTCACTGGTGCCTGGAAGCCGGACACGGAGCATGCAGTCATTCGGTGAGCTCTGTTCCCCTGGGCCTGTTCAATTTTGTTCCAGGAAGGCCAAAGAGGGAAGAAACTTTAGGGATTGGGCATCAGCCCATGCCGCGTCTTTTAGATATGAAATCTCTTCGACACCCTGGGAAGCAGGCATTGCCGTCCTCATCTTACAAATGAGGAATCCGAGGCCCAGATGTGCTGTGGCTTGACTGGGATTACCCAGCTGCTAACCAGCAGAGCTGGGGCCCTACAGCTCATCAGCTGGAGCAGAACGCTCCATTACTCTGAGGGAAGCTTCCACACTTCCAATTCTCCCAACTCTGCCCCCTGGGCATCGCATAGGAAGCAGGAGTCCCTCTGGCCAGCATGTTCTCTCTTCCTGACACCTGGCCCTTGGGACCCCTGGGCATTCCCCTGAGCGCCATCTTGAAGCTTTCCACCGGAGGGTCTGTTCCACCCTGCCTGGCTCCCATCCTGGAGTCTAACCAGGGTCAAGGCCCTCCTTCCGTCCTGTCGCCAAGCCACAGGAGCAGTATCAGGCCTTAGGAAAAAGCCGCCTTCCCCAAGACAAGGACAGCAAGAACTCAGGGTGACCATGGTCAGGCCAGCACTTATCCATCTGCCAGGCATATGAGAAGGGGAGGGGCTTCGGCTCTGATGTTCTGATGACAAGGGGGTCTTGGGGCTTGCCTTAGGGACACGTGGCACCTGTGGAGGTTCTTGGAGGCATGTGGGTATACCATGGGCTGGAAAAAGATCCAGGAGTCATCTGCACAGATATGGTGGCTGAAGGAGAAGCAGTGGCCCCAGGAGGTGGTGGAGCAAGAAGGGCCTAGGATAGAACCCAGAAGGACAATGGTATTTAAGGGACCAGCAAAAGAGACAAGTAGGAGGAAAGTCAAAAGTGTGGTGTCACAGAAATCCAGGGAAAAGGTTTCAAGAAACAGTCAACAGTGTGAAATTCTGCTATGCAAGTCGATTATGGTCAGAGCTAGGAAAGATCCATTAGATACAACAAGATGGTGGTCAGGGATCGTGCCAAGAACAGCTTCCATGGTATGTTGGAGTAGCCAGCTCCCAGTGGGACTGAGGAACAAGCAGGGTAGGGTGCAGAGGGGAAGGCTGGAGAGGGTGGCAGCCGGAGGGGGATGTTGCTTTCTTGGCTCCCACCCCCACGCCCCCACCGGCTGCCATTCTGCCTGGTTCCCATGTCTGGCCCCTCTGCTGCCTTTGCCCAGCTCTGGTCTTCAGGATGGGCTGGATTCTGGACTTTCTGGTTACATAGACTTGAACAAGTCACCTAAGTTCTGAATTTATTTCCCCCTCTGCACAAGGATCAGATCTTTCAGATCTGTTTGAGGCTGCTGTGAGGATCAAAGGCGGGTGAACGTCAATGTGTTCTGACTATTTATGTAAGAGTAAAAGGAGGCTGATTCTCTCCTCCTCCCTCTTCTGCAGGCTCAAAAATGACCAGGCTAACTACTCGCTCAACACAGATGACCCGCTCATCTTCAAGTCCACCCTGGACACTGATTACCAGATGACCAAACGGGACATGGGCTTTACTGAAGAGGAGTTTAAAAGGCTGGTGAGTGGGTGTGAGCCATACTGGCCTTGACTCGGGTTTGGGAGTATGGTATCTACAGGTCCAGTCCGGGGCCTGGAATCTTTGGAGAGAGGGAGTGAGTCTGCCTCAACAGTCCAAGACAAGCCCAACCTAGACACTTTCCACAGAGAAGACATCTTTGTGTTGACGTCCTGACCTAGGACCAGGTTTTTGATCCTTTGCTTGGGTTGAGTGCCTTTAAAGAATCCAGTGAAAGCTGTCAACCCTCTCCCCAGAAAGGTGTGTGCAGCAGCTATGAAGTCTTGCACACTCTCTTCAGGTTGTTCTTAAATCCCAGGCTGAATAAGTCCATTCCTGCACGTGTCTGCGAGGTGTCTCTGGCCCCCTACATGCCACCCTGTCTCTCAAAGGTTTCTCCAACTTCCTTCTCACAGCCCTTTTTCATGTAATGACAAATTAAGAACACGACCTCATGGTCTCTACTCTGGCACTTGCTGCCGTGTGACAGTGGACAAATCCTTCCCCCTCTAAGCGTATCTGCCCATGTTGAGTGAAGAGGATGGACTATCACTACATTGCTAAGAGCTGCCTTCTTTGTTCTCTGGTTCCATGTTGTCTGCCATTCTGGCCTTTCCAGAACATCAATGCGGCCAAATCTAGTTTCCTCCCAGAAGATGAAAAGAGGGAGCTTCTCGACCTGCTCTATAAAGCCTATGGGATGCCACCTTCAGCCTCTGCAGGTAGGTTCCTGTCTGGGCTTCTGGGCAGTTGCCCTGTCCTGGCCCCAGTGTGGCTTTCTGTGGGACTTCTAGCAAGATGCCCTTCCATTCTTGGGCAGCGCCATGAATGTGTGATGACTCCCTGGTTTCTGGGCCCTGGCTGGGAGCAGCGTCTCATTAGATCGGTTTGTTTTCTATAAAAGTTCTTGAGAGGCTGTTCTAAGGGGAGACTTTCTGAAGCCCAGTCCCAAAGGTCTGGGCAGTTGGGGACACCTCCATGGCTGCCCAAAGCCAAGGGCAGGGAGAGGGGCCCAGGCCTGTTCTGCTCCTTTCTTCCTATGTGGTCTTGGCAAGGCATCTTCTTGCCATCATAGGAAGGAGTTCCTTTCTGGTTCTGGTGTTCTATGATTTTTACAACATCCTGGGTACTACAAGTTGCCTGATCTTTTTGCTTCTCTGAACCAACGAGCAGGGCAGAACCTCTGAAGACGCCACTCCTCCAAGCCTTCACCCTGTGGAGTCACCCCAACTCTGTGGGGCTGAGCAACATTTTTACATTTATTCCTTCCAAGAAGACCATGATCTCAATAGTCAGTTACTGATGCTCCTGAACCCTATGTGTCCATTTCTGCACACACGTATACCTCGGCATGGCCGCGTCACTTCTCTGATTATGTGCCCTGGCCAGGGACCAGCGCCCTTGCACATGGGCATGGTTGAATCTGAAACCCTCCTTCTGTGGCAACTTGTACTGAAAATCTGGTGCTCAATAAAGAAGCCCATGGCTGGTGGCATGCA",
                "version": 13}"""

            sequence = Seq1.Seq(
                response_dict['seq'])  # Creamos object con la secuencia
            s_length = sequence.len()
            percentages = sequence.percentage_base(sequence.count_bases(),
                                                   s_length)
            most_frequent_base = sequence.frequent_base(sequence.count())
            print_colored('GENE:', key, 'yellow')
            print_colored('Total length', s_length, 'yellow')
            for key, value in percentages.items():
                print_colored(key + ': ', value, 'blue')
            print_colored('Most frequent base: ', most_frequent_base, 'yellow')

except KeyError:
    print(
        'The gene is not inside our dictionary. Choose one of the following: ',
        list(DICT_GENES.keys()))
Example #28
0
import Seq1

def print_result(i, sequence):
    print('Sequence ' + str(i) + ': (Length ' + str(sequence.len()) + ') ' + str(sequence))
    print('Bases:', sequence.count())

print('-----| Practice 1, Exercise 6 |------')
#  for future knowledge
list_sequences = list(Seq1.test_sequence())
for i in range(0, len(list_sequences)):
    print_result(i, list_sequences[i])

# from P1.Seq1 import Seq, test_sequence
Example #29
0
    "RNU6_269P": "ENSG00000212379",
    "MIR633": "ENSG00000207552",
    "TTTY4C": "ENSG00000228296",
    "RBMY2YP": "ENSG00000227633",
    "FGFR3": "ENSG00000068078",
    "KDR": "ENSMUSG00000062960",
    "ANK2": "ENSG00000145362"
}

SERVER = "rest.ensembl.org"
ENDPOINT = "/sequence/id/"
PARAMETERS = "?content-type=application/json"

connection = http.client.HTTPConnection(SERVER)
try:
    user_gene = input("Enter the gene you want to analyze: ")
    id = DICT_GENES[user_gene]
    connection.request("GET", ENDPOINT + id + PARAMETERS)
    response = connection.getresponse()
    if response.status == 200:
        response_dict =json.loads(response.read().decode())
        #print(json.dumps(response_dict, indent=4, sort_keys=True))
        sequence = Seq1.Seq(response_dict["seq"])
        s_length = sequence.len()
        a, c, g,t =sequence.percentage_base(sequence.count_base(),s_length)
        most_frequent_base = sequence.frequent_base(sequence.count())
        print("Total length:", s_length)
        print("Most frequent base:", most_frequent_base)

except KeyError:
    print("The gene is not inside our dictionary. Choose one of the following:", list(DICT_GENES.keys()))
Example #30
0
    def do_GET(self):
        termcolor.cprint(self.requestline, 'green')
        termcolor.cprint(self.path, 'blue')

        o = urlparse(self.path)
        path_name = o.path
        arguments = parse_qs(o.query)
        print("Resource requested: ", path_name)
        print("Parameters: ", arguments)

        context = {}
        content_type = 'text/html'

        try:
            if path_name == '/':
                context['list'] = gene_dict.keys()
                contents = su.read_template_html_file(
                    './html/index.html').render(context=context)

            elif path_name == '/listSpecies':
                ENDPOINT = '/info/species'
                l_species = []
                try:
                    limit = arguments['limit'][0]
                except ValueError:
                    contents = su.read_template_html_file(
                        './html/error.html').render(context=context)

                if limit.isdigit():
                    for specie in (
                            su.get_dict(ENDPOINT)['species'][0:int(limit)]):
                        l_species.append(specie['name'])
                    context = {
                        "num_species": limit,
                        "total_species": l_species,
                        "length": len(su.get_dict(ENDPOINT)['species'])
                    }
                    contents = su.read_template_html_file(
                        './html/species.html').render(context=context)
                else:
                    contents = su.read_template_html_file(
                        './html/error.html').render(context=context)

                # if 'json' in arguments:
                # contents = json.dumps(context)
                # content_type = "application/json"
                # else:
                # contents = su.read_template_html_file('./html/error.html').render(context=context)

            elif path_name == '/karyotype':
                ENDPOINT = "/info/assembly/"
                specie = arguments['specie'][0].replace(' ', '_')
                dict_response = su.get_dict(ENDPOINT + specie)
                k_list = []
                for i in dict_response['karyotype']:
                    k_list.append(i)
                context = {'karyotype': k_list}
                contents = su.read_template_html_file(
                    './html/karyotype.html').render(context=context)

            # if 'json' in arguments:
            # contents = json.dumps(context)
            #content_type = "application/json"
            # else:
            # contents = su.read_template_html_file('./html/error.html').render(context=context)

            elif path_name == '/chromosome':
                ENDPOINT = "/info/assembly/"
                specie = arguments['specie'][0].replace(' ', '_')
                dict_response = su.get_dict(ENDPOINT + specie)
                chromosomes = arguments['chromosome'][0]
                for dictionary in dict_response['top_level_region']:
                    if dictionary['name'] == chromosomes:
                        context = {
                            "chromosome": chromosomes,
                            "length": dictionary['length']
                        }
                        contents = su.read_template_html_file(
                            './html/chromosome.html').render(context=context)
                        break
                    else:
                        pass
                # if 'json' in arguments:
                # contents = json.dumps(context)
                # content_type = "application/json"
                # else:
                # contents = su.read_template_html_file('./html/error.html').render(context=context)

            elif path_name == "/geneSeq":
                ENDPOINT = "/sequence/id/"
                gene = arguments['gene'][0]
                ID = gene_dict[arguments['gene'][0]]
                dict_response = su.get_dict(ENDPOINT + ID)
                context = {'gene_name': gene, 'seq': dict_response['seq']}
                contents = su.read_template_html_file(
                    './html/geneSeq.html').render(context=context)
                # if 'json' in arguments:
                # contents = json.dumps(context)
                # content_type = "application/json"
                # else:
                # contents = su.read_template_html_file('./html/error.html').render(context=context)

            elif path_name == "/geneInfo":
                ENDPOINT = "/sequence/id/"
                gene = arguments['gene'][0]
                ID = gene_dict[gene]
                dict_response = su.get_dict(ENDPOINT + ID)
                info = dict_response['desc']
                length = str(int(info.split(":")[4]) - int(info.split(":")[3]))
                context = {
                    'gene_name': gene,
                    'length': length,
                    'start': info.split(":")[3],
                    'end': info.split(":")[4],
                    'name': info.split(":")[2]
                }
                contents = su.read_template_html_file(
                    './html/geneInfo.html').render(context=context)
                # if 'json' in arguments:
                # contents = json.dumps(context)
                # content_type = "application/json"
                # else:
                # contents = su.read_template_html_file('./html/error.html').render(context=context)

            elif path_name == "/geneCalc":
                ENDPOINT = "/sequence/id/"
                gene = arguments['gene'][0]
                ID = gene_dict[gene]
                dict_response = su.get_dict(ENDPOINT + ID)
                sequence = Seq1.Seq(dict_response["seq"])
                s_length = sequence.len()
                percentages = sequence.percentages(sequence.count_bases(),
                                                   s_length)
                context = {
                    "gene_name": gene,
                    "length": s_length,
                    "percentages": percentages.items()
                }
                contents = su.read_template_html_file(
                    './html/geneCalc.html').render(context=context)
                # if 'json' in arguments:
                # contents = json.dumps(context)
                # content_type = "application/json"
                # else:
                # contents = su.read_template_html_file('./html/error.html').render(context=context)

            else:
                contents = su.read_template_html_file(
                    "html/error.html").render()

        except (KeyError, IndexError, ValueError):
            contents = su.read_template_html_file('./html/error.html').render()

        self.send_response(200)
        self.send_header('Content-Type', content_type)
        self.send_header('Content-Length', len(contents.encode()))
        self.end_headers()
        self.wfile.write(contents.encode())
        return