OrthoDEGFinder é uma aplicação Web desenvolvida em Python/Django, na qual são correlacionadas informações de genes em diferentes espécies com base em dados de expressão diferencial, anotação funcional e ortologia.
Abaixo, estão todas as informações necessárias para instalação local e inserção dos dados.
- Instalação
- Inserção dos dados
- Instalar Python3 e pip:
$ sudo apt-get install python3
$ sudo apt-get install python3-pip
- Criar uma pasta e colocar o código-fonte da aplicação, que está hospedado no GitHub, dentro dela:
$ mkdir <nome_pasta>
$ cd <nome_pasta>
$ git clone https://github.com/vinibfranc/OrthoDEGFinder
- Com o código-fonte, podemos navegar para a pasta que o contém:
$ cd OrthoDEGFinder/
- Agora, iremos instalar e configurar uma virtual environment (virtualenv) para a aplicação:
$ pip3 install virtualenv
Com isso, podemos verificar onde a virtualenv e o Python foram instalados:
$ which virtualenv
/usr/bin/virtualenv
$ which python3
/usr/bin/python3
Então podemos criar o diretório da virtualenv dentro do nosso projeto:
$ mkdir venv/
$ cd venv
Finalmente, podemos criar a nossa virtualenv para o projeto:
virtualenv . -p /usr/bin/python3
O último passo agora, e sempre que formos trabalhar no projeto, é voltar para a pasta OrthoDEGFinder/
e ativar a virtualenv:
$ cd ..
$ source venv/bin/activate
- Instalando as dependências:
(venv) $ pip3 install -r requirements.txt
- Instalar da biblioteca MySQL que conecta com a API de banco de dados do Django (mysqlclient):
(venv) $ sudo apt-get install python3-dev
(venv) $ sudo apt-get install python3-dev libmysqlclient-dev
(venv) $ pip3 install mysqlclient
- Instalar o MySQL server:
(venv) $ sudo apt-get install mysql-server
- Criar o usuário administrador dentro do MySQL:
(venv) $ sudo mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'localhost' IDENTIFIED BY 'senha';
mysql> quit
- Acesse o usuário e crie o banco de dados:
(venv) $ mysql -u usuario -p
mysql> CREATE DATABASE ortho_deg_finder;
- Abrir o arquivo gerenciador do banco de dados:
(venv) $ sudo nano /etc/mysql/my.cnf
- Adicionar as seguintes linhas ao arquivo
my.cnf
:
[client]
database = ortho_deg_finder
user = usuario
password = senha
default-character-set = utf8
- Aplicar as migrações do banco de dados:
(venv) $ cd project
(venv) $ python3 manage.py makemigrations
(venv) $ python3 manage.py migrate
- Coletar arquivos estáticos:
(venv) $ python3 manage.py collectstatic
- Testar a aplicação:
(venv) $ python3 manage.py runserver
Pronto! Todas as configurações foram feitas e o sistema já pode ser acessado.
- Caso queira acessar a página admin basta criar um usuário:
(venv) $ python3 manage.py createsuperuser
Após, basta logar com as credenciais na página http://127.0.0.1:8000/admin.
Como estamos em ambiente de desenvolvimento, possivelmente o sistema ainda não terá dados populados, ou precisará de atualização. Desse modo, é importante prestar atenção em como fazer esse processo para que tenhamos o resultado desejado.
Algumas informações são inseridas manualmente na página admin (necessário ter superusuário criado), outras por planilhas e outras por scripts. O fluxo de inserção deve seguir a seguinte ordem:
- Inserção de Organisms: Acessar a página http://127.0.0.1:8000/admin/app/organism/ e ir em
Add organism
. Abaixo um exemplo da adição do fungo Metarhizium anisopliae E6. É muito importante que seja adicionado o ID taxonômico do organismo, que pode ser encontrado no NCBI Taxonomy Browser. Também deverá ser inserido o organismo ao qual a expressão diferencial será inferida com base na ortologia, podendo deixar o ExperimentalDesign em branco.
-
Carregamento de planilhas: A organização das informações de expressão diferencial e anotação funcional é feita através de planilhas geradas pelos programas utilizados em: https://github.com/vinibfranc/InternshipDEAnalysis, algumas delas modificadas para atenderem às nossas necessidades. Os arquivos exemplo também se encontram em
OrthoDEGFinder/project/app/files_to_upload
.2.1. Analysis Annotated Genes: Arquivo CSV com genes diferencialmente expressos gerados pelo edgeR. Esse arquivo pode ser gerado pelo pipeline e deve ser modificado para ficar igual ao exemplo, com o ID taxonômico do organismo e com a descrição do design experimental adicionados anteriormente, e com a mudança na penúltima e última colunas. Para adicionar esses dados basta entrar em http://127.0.0.1:8000/admin/app/analysisannotatedgene/ ->
Import
-> Selecione o arquivo -> Selecione o formato CSV -> Submit -> Confirm import. O processo de importação deve levar alguns minutos.2.2. Pannzer2 Functional annotations: Arquivo TSV com anotações funcionais geradas pelo Pannzer 2. Esse arquivo corresponde ao arquivo
GO.out
gerado no web server do Pannzer2 após a submissão da sequência de proteínas e o recebimento dos resultados por e-mail. Ele deve ser modificado para ficar igual ao exemplo1 e exemplo2, com o ID taxonômico do organismo, a coluna de id em branco e alterando a ordem dos campos go_id e ontology. Para adicionar oGO:
basta rodar o seguinte comando e removerGO:
da primeira linha da coluna go_id (Os arquivos da pasta files_to_upload já foram convertidos e estão prontos para serem inseridos):$ awk -F'\t' -vOFS='\t' '{ $4 = "GO:" $4 }1' anotacao_anisopliae_arsef_549.tsv > anotacao_anisopliae_arsef_549_formatted.tsv $ awk -F'\t' -vOFS='\t' '{ $4 = "GO:" $4 }1' anotacao_robertsii_arsef_23.tsv > anotacao_robertsii_arsef_23_formatted.tsv
Agora, adicionamos esses dados, um para cada organismo, entrando em http://127.0.0.1:8000/admin/app/pannzer2annotation/ ->
Import
-> Selecione o arquivo -> Selecione o formato TSV -> Submit -> Confirm import. O processo de importação deve levar alguns minutos pois são muitas linhas de dados. -
Execução de scripts: Os dados de ortologia e correspondência de genes e proteínas entre as espécies são inseridos via script. Os arquivos exemplo também se encontram em
OrthoDEGFinder/project/app/orthologs
.3.1. Orthologs: Arquivo TSV com dados de ortologia gerados pelo OrthoFinder. Esse arquivo pode ser gerado pelo pipeline e corresponde ao arquivo
proteins/OrthoFinder/Results/Orthogroups/Orthogroups_SingleCopyOrthologues.txt
gerado no OrthoFinder. Após, podem ser rodados os seguintes comandos para extrair os ortólogos single copy:$ cd proteins/OrthoFinder/Results/Orthogroups $ grep -Fwf Orthogroups_SingleCopyOrthologues.txt Orthogroups.txt > OrthologsIDS.txt $ sed 's/://' OrthologsIDS.txt > OrthologsIDS_2.txt $ awk -v OFS="\t" '$1=$1' OrthologsIDS_2.txt > OrthologsIDS_done.txt
Com isso, devem ser adicionados os IDs taxonômicos dos dois organismos na primeira e segunda coluna, sendo que o organismo da coluna 1 corresponde à proteína da coluna 4 e o organismo da coluna 2 corresponde ao organismo da coluna 5. O arquivo resultante deverá possuir a seguinte estrutura: arquivo.
Caso queira mudar o arquivo a ser lido pelo programa basta alterar a linha 14 do script
map_orthologs.py
contido na pastaOrthoDEGFinder/project/app/management/commands
.Com o arquivo configurado, podemos rodar o script (dentro de
OrthoDEGFinder/project
) que popula os ortólogos:(venv) $ python3 manage.py map_orthologs
3.2. Gene Correspondences: Essa tabela irá conter todas as informações relacionadas, utilizando o Biopython para extrair os genes que codificam as proteínas ortólogas, mapear as anotações funcionais e as expressões diferenciais.
Esse script não lê nenhum arquivo, mas sim compara os registros no banco de dados para encontrar as correspondências, de modo que é muito importante que todos os demais passos tenham sido feitos antes deste. Podemos rodar o script (dentro de
OrthoDEGFinder/project
), que está contido emOrthoDEGFinder/project/app/management/commands
, assim:(venv) $ python3 manage.py map_genes_to_annotation
Esse script também irá demorar, pois o NCBI limita a quantidade de requisições por segundo pelo mesmo IP.
Existem 5 tipos de filtragens (com várias opções de campos de filtragem), sendo 4 delas sem as informações correlacionadas e uma delas com as correlações:
- Por organismos;
- Por genes;
- Por anotação funcional;
- Por ortólogos;
- Busca unificada: mostra todas as informações de organismo, design experimental, genes e anotações funcionais para uma mesma entrada em
GeneCorrespondences
.
Desenvolvido por Vinícius Franceschi em UBTEC - CBiot - UFRGS.
Dúvidas, problemas ou sugestões de melhorias podem ser enviadas para: vinibfranc@gmail.com