Logo Passei Direto
Buscar

Relatório Python de Leitura de DNA

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

UNIVERSIDADE ESTADUAL DE SANTA CRUZ
DEPARTAMENTO DE CIÊNCIAS BIOLÓGICAS
BIOMEDICINA
AULA PRÁTICA
OPERAÇÕES EM UMA CADEIA DE DNA
ILHÉUS
2023
JORGE ALEXANDRE SANTOS FEITOSA
SILVANO BATISTA DA SILVA NETO
TÁRSIS LAVINSCKY DOS SANTOS BARRETO 
RELATÓRIO DE AULA PRÁTICA
Relatório em trio apresentado a Universidade Estadual de Santa Cruz (UESC), como requisito parcial para a obtenção de média semestral na disciplina de Bioinformática.
Orientador (a): Prof.ª Jacqueline Midlej.
ILHÉUS
2023
INTRODUÇÃO:
No núcleo das células há a presença do DNA, que basicamente é toda a informação genética do organismo armazenada em forma de nucleotídeos que são compostos pelas bases nitrogenadas. Essas bases são: Adenina (A), Timina (T), Citosina (C) e Guanina (G); que formam ligações em pares entre si (A – T e C – G) resultando na estrutura helicoidal do DNA. 
Compreender como o DNA é estruturado é essencial para saber como ele funciona e quais são as ações que podem ser feitas através dele como um biomédico. Algumas dessas ações são contar a quantidade de bases nitrogenadas presente nele, computar o complemento de uma fita e detectar ocorrências de uma sequência menor em uma sequência de DNA maior. 
Para acontecer a síntese de proteínas na célula, as bases são traduzidas e transportadas até os ribossomos através dos RNA’s. Nesse momento o RNAm (RNA mensageiro) irá ler as bases e converter a Timina (T) em Uracila (U), fazendo com que o DNA perca a sua forma helicoidal e se torne fitas únicas, facilitando a leitura dessa informação genética nas outras etapas da síntese da proteína. Então percebe-se que além das outras ações, entender a estrutura desse DNA e a dinâmica do RNA formado a partir dele ajudará a localizar em qual ponto a Timina será convertida em Uracila no RNA.
Outra ação importante que pode ser feita é a contagem do percentual de C-G (Citosina – Guanina) no material genético desse indivíduo. As células eucariontes e procariontes possuem uma porcentagem diferente entre elas de C – G na cadeia de DNA, e é através dessa contagem que é possível diferenciar com qual célula está trabalhando numa pesquisa. Por fim, uma outra ação possível é encontrar erros na transcrição das bases nitrogenadas do DNA em RNA, o que irá gerar as mutações genéticas.
OBJETIVO:
O objetivo do trabalho era fazer um programa em Python onde ele auxiliasse nessas possíveis ações que podem ser feitas decorrente da leitura de uma sequência de DNA, onde as operações seguintes são solicitadas pelo usuário através desse menu:
1. Contar ocorrências de bases.
2. Calcular CG – content.
3. Transcrever DNA em RNA.
4. Calcular Hamming distance.
5. Listar as posições de um motif.
6. Traduzir DNA em proteína.
0. Sair do programa.
DESENVOLVIMENTO:
Para o funcionamento do programa, o seguinte código foi desenvolvido:
1. Introdução da tabela de códons ao programa:
Antes de dar início à interação com o usuário, foi adicionada ao código essa tabela onde consta os dados necessários que serão utilizados nos processos. Essa tabela foi chamada de “am” que é onde está armazenada a informação sobre os aminoácidos, para que pudesse ser lida pelo programa futuramente. Nela está presente os conjuntos de códons existentes que darão origem às proteínas no momento da síntese. 
Exemplo: O códon AGG dará origem à proteína R.
2. Inserção do comando para pedir informações ao usuário e do menu de interação:
Nesse segundo passo, onde inicia a interação com o usuário, é pedida a informação sobre a cadeia de DNA que ele irá utilizar em sua pesquisa, para isso, o código foi expresso da seguinte maneira: DNA=str(input(“Insira a sua cadeia de DNA: ”)). Onde:
· str – serve para declarar que a informação inserida pelo usuário será em formato de texto; e
· input – é o comando que pede para o usuário inserir a informação.
Em seguida, o código foi implementado com o menu de interação com o usuário, onde para ele aparecer foi inserida a dinâmica entre o “while” e uma condição para ele existir e encerrar.
· while – responsável por criar um looping com uma informação. Para existir deve possuir uma condição e ter um comando para parar esse looping. 
Nesse caso, o comando para o “while” existir é a expressão:
n=13
while !=0
Sempre que o usuário digitar um número diferente de 0, o menu incluso dentro do “while” irá aparecer, e é exatamente por isso que se adicionou o comando “n=13”, criando um ambiente de condição com um número maior que 0 para ele aparecer pela primeira vez. Para o “while” não ficar mostrando ao usuário de maneira infinita o menu um atrás do outro, foi criado um comando para o usuário inserir um número correspondente a ação que ele quer, fazendo assim com que o “while” funcione corretamente como um looping e não fique repetindo infinitamente a informação. 
2.1. Tela do usuário:
Tela do usuário mostrando um DNA inserido por ele e a aparição do menu para seleção da ação que ele desejar. 
3. Interação do usuário com o comando 1:
Com a tabela de aminoácidos e o menu prontos, o próximo passo foi desenvolver o código para as ações que o usuário possa vim a selecionar. Para criar o conteúdo relacionado a opção 1, foi utilizado o comando “if”, que assim como o “while” também cria um ambiente de condição:
· if – cria um ambiente de condição para aquela parte do código existir, funciona semelhante com a ideia do “se for verdadeiro”. Possui uma interação com o “else”, funcionando o “else” como se fosse “se for falso”.
Por apresentar o “if”, essa parte do código só será executada caso o usuário digite o número 1, e esse foi exatamente o objetivo. O comando 1 do menu é responsável pela contagem das bases nitrogenadas na cadeia de DNA, então ao usuário digitar esse número, o código irá executar as informações dentro do “if” e realizar a contagem das bases do DNA através do comando “count”. 
· count – responsável por realizar a contagem dentro de um intervalo baseado numa informação fornecida.
Para essa contagem foi utilizada a seguinte expressão: c=DNA.count(uma base), onde “c” é correspondente a contagem e o “DNA.count(uma base)” é o responsável por realizar a contagem da base selecionada, pois o “count” irá procurar dentro do intervalo do DNA a base. 
Exemplo: Encontrar quantas Timinas tem dentro do DNA (ATTCTG)
c=DNA.count(“T”)
A resposta seria 3 Timinas.
Para cada base nitrogenada foi utilizada essa expressão e ao final foi utilizado o “print” para mostrar o resultado ao usuário.
3.1. Tela do usuário:
Tela do usuário apresentando a seleção do número 1 e o resultado da contagem das bases nitrogenadas presentes na cadeia de DNA fornecida por ele. 
4. Interação do usuário com o comando 2:
No item 2 do menu de interação com o usuário, o objetivo é realizar a contagem de Citosinas e Guaninas na cadeia de DNA e realizar uma média para saber o percentual de C-G daquela cadeia, para isso, foi utilizada a mesma expressão do item 1 “DNA.count(uma base)” para realizar a contagem das duas bases nitrogenadas.
Após armazenar esses dados através das letras “c” e “g”, a seguinte formula foi utilizada para saber a média: (c+g)/len(DNA)*100. Onde através dela será obtido o resultado dessa porcentagem.
· len – utilizado quando é necessário percorrer um intervalo ou uma lista para obter uma informação.
· round – responsável por arredondar os números pelas casas decimais. 
Para que o resultado dessa média seja apresentado em forma percentual, a expressão “round(pcg, 1), “%”) foi utilizado, com o objetivo de que quando o resultado for encontrado, o número ande uma casa decimal e fique o mais arredondado possível, lembrando que no código esse percentual é armazenado na expressão “pcg”.
4.1. Tela do usuário:
Tela do usuário mostrando a seleção do item 2 do menu e o percentual de C-G na cadeia de DNA fornecida por ele.
5. Interação do usuário com o comando 3:
O terceiro comando do menu possui a finalidade de transcrever o DNA em RNA, então para isso o seguinte código foi desenvolvido para essaetapa:
Nessa parte do código, foi utilizada a expressão “replace” para alterar as Timinas do DNA para as Uracilas do RNA.
· replace – possui a função de realizar uma alteração de um termo já existente no código por um novo introduzido. 
Exemplo: DNA.replace(“T”, “U”) onde dentro do DNA o “replace” irá alterar todos os T por U.
Foi exatamente isso que aconteceu, ao verificar que o usuário digitou o número 2 e prosseguir o código, toda a expressão foi chamada de RNA, para que o dado pudesse ficar salvo no programa, e a alteração foi realizada através do “replace”.
5.1. Tela do usuário:
Tela do usuário mostrando a seleção do item 3 do menu e o RNA transcrito a partir do DNA fornecido por ele.
6. Interação do usuário com o comando 4:
O objetivo do comando 4 do menu de interação com o usuário é calcular o Hamming distance naquela cadeia de DNA, para isso irá ser necessário a introdução de um DNA mutado para que haja uma diferença entre os dois DNA e a mutação genética ocorra com o hamming distance.
Ao usuário digitar 4, o “if” irá reconhecer o comando e irá ler a parte do código referente ao número 4. Para que a operação seja realizada, o código desenvolvido irá pedir ao usuário que ele insira um DNA mutado para que haja a análise de comparação entre ele e o DNA já descrito no início do programa e encontre mutações.
Na primeira parte desse código é requerido ao usuário que ele insira a sua cadeia de DNA mutado, e para isso os comandos “str” e “input” foram inseridos, para declarar que a informação será em formato de texto e para solicitar esse dado, respectivamente.
Para a realização dessa etapa, foram adicionados dois novos comandos ao código, o “cont” e o “for/range”. Eles auxiliaram na contagem das bases, para ver se eram iguais nos dois DNA e assim realizar a computação do número de mutações. O “for/range” junto com o “len” serviu para fazer uma varredura das bases nos DNA de uma em uma e registrar os conjuntos.
· for – utilizado para percorrer um intervalo definido pelo usuário através de uma varredura, onde ocorre uma checagem da informação 
O “cont” serviu para realizar a contagem das mutações, após a verificação se o conjunto era igual nos dois casos, caso fosse, não realizaria a contagem daquele conjunto; se fosse diferente, somaria mais 1.
6.1 Tela do usuário:
Tela de interação do usuário com o comando 4 do menu, mostrando a inserção do DNA mutado.
Tela mostrando o resultado dessa checagem das bases e a quantidade de mutações presentes na cadeia.
7. Interação do usuário com o comando 5:
O comando 5 está relacionado com encontrar intervalos de bases semelhantes em cadeias de DNA, que são chamados de motif. Para tal fim foi utilizada a expressão “find” para auxiliar a encontrar esse motif.
· find – responsável por encontrar uma informação fornecida pelo usuário e mostrar a posição a qual essa informação está localizada.
Após pedir para o usuário inserir o motif que ele quer procurar, a expressão “posição=DNA.find(motif, 0)” irá encontrar a posição desse motif dentro da cadeia de DNA através do “find”, a partir do elemento 0.
Para fazer com que o código encontre outra localização desse motif caso exista, foi adicionada uma condição dentro do “while” para se a posição for diferente de -1, pegar o motif e somar a +1.
7.1 Tela do usuário:
 
Tela mostrando a interação do usuário com comando 5 do menu, a introdução do motif e a resposta das posições onde ele se encontra.
8. Interação do usuário com o comando 6:
O comando 6 foi a parte do código com mais condições, pois é a parte relacionada com a tradução do RNA em proteína.
 
O primeiro passo é a remoção do íntron na cadeia de DNA, esse íntron é uma sequência de bases nitrogenadas que não será necessária para a pesquisa, com isso para a remoção dele na cadeia foi utilizada a expressão “replace” para substituir o íntron inserido pelo usuário por um “ ”, que seria um espaço em branco, resultando na remoção dele.	
Esse DNA com o íntron já removido foi chamado de “dintron”, e o próximo passo foi transcrever esse “dintron” para RNA também através da expressão “replace”, substituindo as Timinas por Uracilas. Ao final da transcrição, esse RNA com o intron removido foi chamado de “rintron”.
Com a cadeia de RNA sem o íntron já pronta, o próximo passo foi encontrar os códons e traduzir ele em proteínas. Para isso foi necessário acessar a informação das proteínas presente na tabela que foi chamada de “am” lá no início do programa.
Com o auxílio do “len” e do “for/range” foi possível fazer uma varredura no “rintron”, encontrar os trios que formam os códons, acessar a informação de proteínas correspondentes aos códons no “am” e printar esse resultado para o usuário.
8.1 Tela do usuário: 
Tela mostrando a interação com o comando 6 do menu, a introdução do intron pelo usuário, o DNA e o RNA com o intron removido, e o resultado da associação dos códons com as proteínas relacionadas.
9. Interação do usuário com o comando 0:
Caso o usuário deseje sair do programa, irá digitar o comando 0 e o programa será finalizado.
9.1 Tela do usuário:
Tela do usuário mostrando a seleção do número 0 e o programa sendo finalizado corretamente.
Após a finalização da programação do programa, testes foram realizados com cadeias de DNA já fornecidas em arquivos para comprovar que o código rodaria de maneira correta.
TESTE 01: 
No teste 01, as seguintes informações foram disponibilizadas com os seguintes resultados esperados.
O programa foi rodado com a adição desses dados e os seguintes resultados foram obtidos:
TESTE 02:
Assim como no teste 01, os dados foram fornecidos com suas expectativas de resultados e assim foram testados.
TESTE 03:
O último teste funcionou assim como nos 2 anteriores.
GAGAGTCTCTGTAATTTCTTTAATTATTCAAACAATAGAGCACAAAGATAACAGTTTCAAGTACATTGTGATACACGTTTTGACAGGAATAGATATGCATTTAGTCATGAGGGAGGCTGGCAGCAACCACCATGCATACATTTTGCACAAACTCTTGGCTCCGTCAACCCTGAATGAGAAGTCGGCGCCTCGTCCGCACCCAA
GAGAGTCTCTGTAATTTCTTTAAGGATTCAAACAATAGAGCACAAAGATAACAGTTTCAAGTACACCGTGATACACGTTTTGACAGGAATAGATATGCATTTAGTCATGAGAAAGGCTGGCAGCAATCACCATGCATACATTTTCCACAAACTCTTGGCTCCGTCAACCCTGCATGAGAAGTCGCCGCCTCGTCCTCACTCAA
íntrons
ACAAACTCTTGGCT
Motif
CAAA
Resultados esperados:
1. A= 63 C= 46 T= 53 G= 41
2. 42.86%
3. GAGAGUCUCUGUAAUUUCUUUAAUUAUUCAAACAAUAGAGCACAAAGAUAACAGUUUCAAGUACAUUGUGAUACACGUUUUGACAGGAAUAGAUAUGCAUUUAGUCAUGAGGGAGGCUGGCAGCAACCACCAUGCAUACAUUUUGCACAAACUCUUGGCUCCGUCAACCCUGAAUGAGAAGUCGGCGCCUCGUCCGCACCCAA
4. Distância == 12
5. Posição 29, 43 e 148; # OU 28, 42 e 147 se começarmos de 0
6. ESLCNFFNYSNNRAQRStopQFQVHCDTRFDRNRYAFSHEGGWQQPPCIHFARQPStopMRSRRLVRTQ
	
CONCLUSÃO E DISCUSSÃO:
É perceptível a automatização que o programa em python trás para as transcrições e traduções desse DNA em RNA e proteínas, tornando muito mais rápido uma ação que demoraria um bom tempo para ser realizada se checada manualmente elemento por elemento por uma pessoa. Ao final dos testes concluiu-se que todos os resultados obtidos eram os resultados esperados nos dados fornecidos para as pesquisas, tornando esse programa em python viável para utilização dessas ações que podem ser realizadas através de uma cadeia de DNA.
As principais dificuldades para a elaboração do programa foram a implementação dos comandos “while” e “for/range”, pois, no caso do “while” aconteceu um looping infinito no momento inicial, e no caso do “for/range” houve uma dificuldade para printar o elemento [j] [1] dos aminoácidos.

Mais conteúdos dessa disciplina