Neste projeto iremos avaliar o sequenciamento de DNA dos vírus SARS-CoV-2 e Influenza A para verificar se existe diferença nas estruturas com funções parecidas destes organismos.
Os dados utilizados para este estudo são de sequencias de DNA que podem ser acessadas em:
import numpy as np import pandas as pdimport plotly.express as pximport plotly.colors as colorsfrom plotly.subplots import make_subplotsimport plotly.graph_objects as goimport plotly.io as piopio.renderers.default ="notebook_connected"withopen('datasets/sequence_influ.fasta', 'r') as influenza_file: influenza_sequence = influenza_file.read()[104:]withopen('datasets/sequence_covid.fasta', 'r') as covid_file: covid_sequence = covid_file.read()[97:]
Preparação dos dados
Código
# Preparando os dados para os gráficosinfluenza_sequence = influenza_sequence .replace("\n","")# cria uma lista contendo todos elementos menos o ultimox_influenza =list(influenza_sequence [:-1]) y_influenza =list(influenza_sequence [1:]) covid_sequence = covid_sequence.replace("\n","")# cria uma lista contendo todos elementos menos o ultimox_covid =list(covid_sequence [:-1]) y_covid =list(covid_sequence [1:])
Código
# cria um pandas dataframe com as listas acima, para cada doençadf_influenza_sequence = pd.DataFrame({'x_influenza': x_influenza, 'y_influenza': y_influenza})df_covid_sequence = pd.DataFrame({'x_covid': x_covid, 'y_covid': y_covid })# cria uma nova coluna em cada dataframe com o nome de sua respectiva doençadf_influenza_sequence['doenca']='Influenza A'df_covid_sequence['doenca']='Covid-19'# realiza uma serie de concatenações para deixar o df_concatenated pronto para o gráfico de barrasinfluenza_codiv_concatenated = pd.concat([df_influenza_sequence['x_influenza'], df_covid_sequence['x_covid']], axis=0, ignore_index=True)doenca_df = pd.concat([df_influenza_sequence['doenca'], df_covid_sequence['doenca']], axis=0, ignore_index=True)df_concatenated = pd.concat([influenza_codiv_concatenated, doenca_df], axis=1, ignore_index=True)df_concatenated = df_concatenated.rename({0:'nucleotideo', 1:'doenca'}, axis=1)
Número de Nucleotídeos por Doença
Código
# gráfico de comparação entre o número de nucleotídeos de cada doençapx.bar(data_frame=df_concatenated.groupby('doenca').value_counts().reset_index(name='count'), x='nucleotideo',y='count' ,barmode='group', color='doenca', color_discrete_sequence= px.colors.qualitative.T10, labels=dict(nucleotideo='Nucleotídeo', count='Quantidade', doenca='Doença'), hover_name='doenca', title='Número de Nucleotídeos por Doença')
Vemos que o número de nucleotídeos da Covid-19 é muito maior do que da Influenza A.
Código
#Transformando os dados em formato de matriz para criar o heatmapinfluenza_sequence_cross_tabulated = pd.crosstab(index=df_influenza_sequence.x_influenza, columns=df_influenza_sequence.y_influenza)covid_sequence_cross_tabulated = pd.crosstab(index=df_covid_sequence.x_covid, columns=df_covid_sequence.y_covid)
Heatmap dos Pares de Nucleotídeos da Covid-19 e Influenza A
Código
# Cria a grade de plotsfig = make_subplots(rows=1, cols=2, subplot_titles=['Influenza A', 'Covid-19'])fig.add_trace(go.Heatmap(z=influenza_sequence_cross_tabulated.values, x=influenza_sequence_cross_tabulated.columns.tolist(), y=influenza_sequence_cross_tabulated.index.tolist(), colorbar=dict(x=.45, len=0.9, thickness=20, xanchor='left', yanchor='middle'), colorscale='Blues', hovertemplate='Pares %{x}x%{y}<br>Número de Pares: %{z}', hoverlabel={'namelength': 0}), row=1, col=1)fig.add_trace(go.Heatmap(z=covid_sequence_cross_tabulated.values, x=covid_sequence_cross_tabulated.columns.tolist(), y=covid_sequence_cross_tabulated.index.tolist(), colorbar=dict(x=1.0001, len=0.9, thickness=20, xanchor='left', yanchor='middle'), colorscale='Blues', hovertemplate='Pares %{x}x%{y}<br>Número de Pares: %{z}', hoverlabel={'namelength': 0}), row=1, col=2)fig.update_layout( title="Heatmap dos Pares de Nucleotídeos da Covid-19 e Influenza A", title_x=0.5)
Os pares AG por exemplo diferem bastante em seu número com relação as duas doenças, como observado no gráfico acima. Essa disparidade pode ser um dos possíveis motivos que justificam as variações significativas na gravidade dos sintomas, na taxa de mortalidade e na capacidade de contágio entre essas doenças.