Primeiros Passos 🐤

Sejam bem-vindos ao nosso minicurso Introdução à Análise de Dados Genômicos! Neste minicurso, tentaremos transmitir um pouco da rotina de trabalho quando se está analisando dados genômicos. Esses dados são geralmente bem pesados e, portanto, de grande demanda computacional. Assim, comumente se faz uso de um Núcleo de Computação de Alto Desempenho para facilitar e, por vezes, permitir esse tipo de análise. Como esses núcleos computacionais armazenam importantes dados científicos, é preciso garantir que todos com acesso a tais núcleos estejam devidamente cadastrados, garantindo assim a boa segurança dos dados armazenados. Ademais, visto que geralmente o usuário se encontra a quilômetros e quilômetros de distância da máquina utilizada, precisamos fazer essa comunicação da forma mais simples possível — sem ícones, sem janelas e sem clicks! Tal comunicação é realizada fazendo uso de uma linguagem computacional bem simples conhecida como Bourne-Again SHell, ou somente Bash para os mais íntimos. Por fim, o meio que possibilita o uso dessa linguagem reta e direta é a Interface de Linha de Comandos (popularmente conhecida como Terminal).

Caso você nunca tenha ouvido falar em núcleos computacionais e linguagens computacionais básicas, não se apoquente! O nosso minicurso é mesmo desenhado para introduzir a fundamentação teórica como também dar uma ideia da parte prática por detrás das análises genômicas. Para dar um gostinho de como é colocar as mãos na massa, nós vamos fazer uso do Núcleo de Processamento de Alto Desempenho (NPAD/UFRN) — um supercomputador que está fisicamente localizado em Natal-RN.

Portanto, para termos certeza de que tudo irá fluir bem no dia do nosso encontro, precisamos que todos os participantes obtenham acesso ao NPAD/UFRN antes do início do minicurso. Assim, descrevemos a seguir como conseguir esse acesso. Para os marinheiros de primeira viagem a coisa pode parecer um tanto intimidadora, mas garantimos que é bem mais simples do que parece — é só ir pegar um ☕ ou um 🍵 e seguir o nosso passo a passo abaixo. Para aqueles que preferirem, podem alternativamente seguir o tutorial do NPAD/UFRN.

1. Ganhando Acesso ao NPAD/UFRN

O acesso ao NPAD/UFRN é feito através do cadastro de uma Chave Pública tipo RSA que vincula o seu computador ao NPAD/UFRN de maneira segura. ⚠️ Atenção! É imprescindível realizar os passos abaixo usando o mesmo computador que será usado no dia do minicurso.

1.1. Gerando uma chave SSH pública

Há diferenças importantes nos passos a serem seguidos dependendo se o seu computador roda o sistema operacional. Portanto, siga os passos abaixo a depender do seu sistema: Windows (Passos 01 — 04) ou Linux / macOS (Passos 02 — 04).

Passo 01

Precisamos de um programinha que emule o terminal no Windows. Assim, por favor baixe o MobaXterm através desse link e instale-o no seu computador. Uma vez instalado, abra o programa e aperte em Start local terminal para abrir uma janela de terminal (uma janela preta).

Passo 02

Para criarmos a chave, precisamos copiar e colar o comando abaixo em uma nova janela de terminal. Assim, abra uma nova janela de terminal a depender do seu sistema operacional:

Nessa nova janela de terminal, cole o comando abaixo e aperte Enter. Você deverá digitar uma senha para a sua chave, apertar Enter e depois repetir a mesma senha e apertar Enter outra vez. Isso feito, a sua chave terá sido criada. ⚠️ Atenção! É importante que você se lembre da sua senha depois — guarde-a com sabedoria!

mkdir ~/.ssh_SSBE26; ssh-keygen -t rsa -f ~/.ssh_SSBE26/ID_NPAD
Passo 03

Agora tudo que temos que fazer é registrar a chave criada no sistema do NPAD/UFRN, o que pode ser feito aqui. Preencha o Cadastro do Aluno usando o mesmo email usado na inscrição do nosso minicurso e selecione a turma SBBE26. Por fim, você deve abrir a sua chave que acabou de criar com o comando abaixo, copiar o seu conteúdo e colá-lo no campo Chave Pública tipo RSA. ⚠️ Atenção! Por favor, assegure-se de copiar todo o conteúdo.

cat ~/.ssh_SSBE26/ID_NPAD.pub
Passo 04

Por fim, você receberá um email do NPAD/UFRN pedindo para confirmar o seu cadastro. Isso feito, você receberá um email com o seu usuário. Substitua no comando abaixo o COLOQUE-AQUI-O-SEU-USUÁRIO pelo seu Usuário recebido nesse email. Copie o comando com com essa alteração e cole-o no terminal do MobaXterm e aperte Enter. Digite a senha cadastrada e tudo pronto.

ssh -p 4422 -i ~/.ssh_SSBE26/ID_NPAD COLOQUE-AQUI-O-SEU-USUÁRIO@sc2.npad.ufrn.br


Parabéns! o seu acesso ao NPAD/UFRN está agora liberado!  🥳  🎈  🎉

2. Introdução ao Ambiente UNIX

Como mencionado na nossa sessão teórica mais cedo, a comunicação com um Núcleo de Computação de Alto Desempenho como o NPAD/UFRN se dá através de comandos simples dentro do ambiente Bash executados no terminal. Vamos aqui passar por alguns desses comandos e entender como podemos usá-los em conjunto para criamos frases (linhas de comando) para executar tarefas levemente mais complexas.

Como é comum no aprendizado de uma nova linguagem, é fundamental conhecer bem o alfabeto em questão antes de se tentar escrever as primeiras sentenças. Abaixo estão listados alguns comandos bastante ultilizados no dentro do ambiente Bash e alguns exemplos de como podemos os usar em conjunto:

Usando algumas das palavras acima, poderíamos escrever um comando dizendo Crie uma pasta chamada MyFolder:

mkdir MyFolder

Podemos checar que essa pasta foi realmente criada do modo desejado:

ls

Podemos também entrar nessa pasta criada:

cd MyFolder

Podemos sair desse diretório e voltar ao diretório original:

cd ..

Por fim, podemos deletar a pasta criada:

rm -rf MyFolder

Podemos também fazer mais de um passo de uma só vez colocando comandos distintos em uma mesma linha:

mkdir MyFolder; cd MyFolder; pwd

Mais alguns comandos:

Então, podemos criar um arquivo de texto chamado Hello_10.txt com o comando abaixo. Escreva Hello! em 10 linhas seguidas e aperte control + o para salvar e depois Enter. Depois, aperte control + x para sair do programa.

nano Hello_10.txt

Lembre-se que podemos confirmar que o arquivo foi realmete criado:

ls

Aqui só temos 10 linhas, mas às vezes queremos ver apenas as primeiras linhas de um arquivo de milhões e milhões de linhas! Digamos que queremos ver as 5 primeiras linhas do nosso arquivo Hello_10.txt:

head -n 5 Hello_10.txt

Podemos também criar um subarquivo com essas 5 primeiras linhas do Hello_10.txt:

head -n 5 Hello_10.txt > Hello_05.txt

Podemos também comprimir um arquivo:

gzip Hello_05.txt

Vamos agora precisar de dois comandos para fazer um novo subarquivo porque arquivos comprimidos precisam de um tratamento especial:

zcat Hello_05.txt.gz | head -n 3 > Hello_03.txt
> Pequenas Dicas (UNIX)

3. Sistema de Filas de Trabalho

Como vários usuários estarão fazendo uso de um Núcleo de Computação de Alto Desempenho, e mesmo o maior supercomputador do planeta tem lá os seus limites em relação aos recursos (armazenamento, memória e processamento), esses núcleos empregam um sistema de filas de submissão de trabalho que são controladas por programas especializados. No caso do nosso NPAD/UFRN, o programa usado é o Slurm Workload Manager, ou mais simplesmente Slurm. Portanto, precisamos submeter o nosso trabalho ao NPAD/UFRN deixando bem claro quais recursos esse trabalho irá precisar para que assim o Slurm possa organizar todas as submissões e montar uma fila de espera que garanta que todos os trabalhos serão executados sem problemas — sempre garantindo que os recursos solicitados por cada trabalho estarão disponíveis. Essa submissão é feita por meio de um ficheiro .sh que possui a seguinte estrutura:

#!/bin/bash


#SBATCH --partition=intel-128               # Partition
#SBATCH --cpus-per-task=8                   # Required CPUs
#SBATCH --hint=compute_bound                # Use one processor per core
#SBATCH --mail-type=ALL                     # Sent emails
#SBATCH --mail-user=SEU E-MAIL AQUI         # Used email
#SBATCH --time=0-1:0                        # Standard Pattern: Days-Hours:Minutes


# Parallelization (OpenMP) parameters ~
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
export OMP_PROC_BIND=true

# Runs commands ~ 
conda activate /home/sbbe26/conda/ipyrad
ipyrad -p params-iptest.txt -s 1

Digamos que o conteúdo acima estivesse salvo em um ficheiro chamado MyFirstSubmission.sh. Poderíamos então submeter esse trabalho com o comando abaixo:

sbatch MyFirstSubmission.sh

Isso feito, poderíamos relexar porque o programa Slurm irá encontrar o momento mais oportuno para lançar o nosso trabalho! 🥳

> Pequenas Dicas (Slurm)


~ Depois dessa introdução à rotina de trabalho fazendo uso de um núcleo computacional, você está pronto para começar a processar os seus dados genômicos!  🧬  💻  📈