TRATAMENTO E MONTAGEM DE
SEQUÊNCIAS – aula prática
MATERIAL:
/homedir/small_NGS_dataset
Referência: /homedir/small_NGS_dataset/REFERENCIA
Cromatogramas de Sanger: /homedir/small_NGS_dataset/sanger
Pirogramas – 454: /homedir/small_NGS_dataset/454
Reads de Illumina: /homedir/small_NGS_dataset/illumina
Reads de SOLiD: /homedir/small_NGS_dataset/SOLiD
PROCEDIMENTOS:
TECNOLOGIA SANGER
Tratamento dos dados pré-montagem
1 – Criar estrutura com as pastas: chromat_dir, phd_dir e edit_dir e copiar os cromatogramas para a pasta chromat_dir
2 – Utilizar um “base caller” para ler os eletroferogramas(cromatogramas) e gerar arquivos “.fasta” e “.qual”
S
o ftw a re r e c o m e nd a d o : phred L
i nh a s d e c o m a nd o s u g e r i d a s :
# phred -id chromat_dir -pd phd_dir
# phd2fasta -id phd_dir -os e d i t _ d i r / output.fasta -oq edit_dir/output.fasta.qual
3.1 - Filtrar sequências por qualidade
Existem vários algoritmos para realizar essa tarefa, os mais utilizados são: i) máxima subseqüência e ii) janela deslizante
S
o ftw a re r e c o m e nd a d o : bdtrimmer (esse programa é capaz de rodar o crossmatch, substituindo a etapa anterior)
No anexo abaixo mais informações sobre como utilizar esse software Linha de comando sugeri da:
# /opt/software/bd2006trimmer/bd2006trimmer_cursobioinfo.pl o u t p u t .fasta o u t p u t .fasta.qual
Quais notas mínimas phred utilizar na hora de trimar seus reads? Phred > 16: para processamento em larga escala
Phred > 30 quando tem a necessidade de trabalhar com sequências de alta qualidade (Exemplo : SNPs)
Phred > 0 quando se está interessado no máximo de informação possível sobre a sequência estudada.
(Possivelmente uma região de qualidade ruim pode continuar dando similaridade com a proteína de interesse)
CUIDADO!
Muitas vezes o vetor não é identificado por que ele está numa região de baixa qualidade impossibilitando sua identificação por
alinhamento
Antes de rodar o bdtrimmer é necessário editar o arquivo de
configuração para indicar o que você deseja fazer durante o processo de limpeza.
3.2 – Eliminar vetor
Identifica-se o vetor fazendo alinhamentos entre os reads sequenciados e um banco de dados de vetores ().
S o ftw a re r e c o m e nd a d o : cross_match L i nha d e c o m a nd o s ug e r i d a : # cross_match o u t p u t .fasta.trimmed / h o m e d i r / s m a l l _ N G S _ d a t a s e t / a u x / U n i V e c _ C o r e -minmatch 12 -penalty -2 -minscore 20 -screen > o u t p u t .fasta.trimmed.screen
Montagem dos reads
1 – Utilizar os reads filtrados com input de um montador de sequências de SANGER.
S
o ftw a re r e c o m e nd a d o : Phrap Linha de comando sugeri da:
# phrap output.fasta.trimmed.screen -new_ace -view > log
Visualização da Montagem
S
TECNOLOGIA SOLID
Tratamento dos dados pré-montagem
1- Pipeline automático S
o ftw a re r e c o m e nd a d o : denovo2 Linhas de comando recomendadas:
# export denovo2=/opt/softwares/denovo2/
TECNOLOGIA 454
Tratamento dos dados pré-montagem
1- Extrair a sequência em formato FASTA a partir dos pirogramas (ARQUIVO SFF)
S
o ftw a re r e c o m e nd a d o : sff_extract Linhas de comando recomendadas:
# sff_extract –c 454.sff
(A opção –c retira o adaptador do início e fim das sequencias, se houver)
2- Verificar a distribuição de tamanho das seqüências Sequências com:
a) tamanho muito pequeno b) tamanho muito grande c) bases não definidas (N’s)
muitas vezes são geradas por artefatos de sequenciamento. Estas sequências devem ser eliminadas para não atrapalhar a montagem. Primeiro vamos olhar a distribuição de tamanho das sequências.
S
o ftw a re d i s p o n í ve l : get_histo_readlen.pl (ou você pode fazer
seu próprio script Perl para esta tarefa)
Linha de comando recomendada:
# get_histo_readlen.pl 4 5 4 . f a s t a
(Esse script vai imprimir o histograma de tamanhos das sequências em formato texto)
Decida por um valor mínimo e máximo para o tamanho dos reads bons com base na forma da distribuição. É melhor ser um razoavelmente conservador nesta etapa, pegando uma faixa estreita de tamanhos que contenha quase todos os reads.
3- Recupere os IDs dos reads com tamanho dentro da faixa desejada e sem N’s na sequência
S
o ftw a re d i s p o n í ve l : descarta_seqs2.pl (ou você pode fazer seu
próprio script Perl para esta tarefa)
L
# descarta_seqs2.pl 454.fasta 215 309 > id_dos_reads_ok.txt
(este script vai selecionar os IDs dos reads de tamanho dentro da faixa de tamanho [215-209] que não contêm N’s. Guarde esta lista de IDs para próxima etapa)
3- Gere um novo arquivo de pirogramas (SFF) apenas com os reads bons que você selecionou
S
o ftw a re d i s p o n í ve l : sfffile
Linha de comando recomendada:
# sfffile -i id_dos_reads_ok.txt -o 4 5 4 _ok.sff 454.sff
Montagem dos reads
1 – Idealmente use o software do fabricante do sequenciador (gsAssembler). Ele é capaz de trabalhar nativamente com o sinal bruto dos pirogramas na hora de construir os contigs, por isso é o mais adequado para esta
tecnologia.
A montagem é feita da mesma forma como é feita com o solexa. S o ftw a re r e c o m e nd a d o : gsAssembler (newbler) Linhas de comando recomendadas:
# É um software com GUI (interface gráfica) bem amigável e fácil de usar O gsAssembler reconhece e trata apropriadamente reads paired-end e também gera Scaffolds.
2- Caso você não disponha do software do fabricante, converta os pirogramas para formato fasta e monte com o software Velvet, Mira ou outros.
TECNOLOGIA Illumina
Tratamento dos dados pré-montagem
1- Eliminar os reads de qualidade baixa S
o f t w a r e r e c o m e nd a d o : clean_solexa.pl L
i nha d e c o m a nd o r e c o m e nd a d a :
# clean_solexa_se.pl -f illumina.fastq -q 16 –nfilter -p meus_reads
(A opção –q 16 especifica que o read deve ter nota de qualidade média maior ou igual a 16 para ser mantido)
2- Corrigir as sequências (opcional) S
o ftw a re r e c o m e nd a d o : Corrector, KmerFreq (fazem parte do pacote SOAP e SOAPDENOVO)
Linhas de comando recomendadas:
Criar arquivo fastq_list.txt com lista de arquivos (meus_reads.single)
# KmerFreq -i fastq_list.txt -o corrector -s 16 # Corrector -i fastq_list.txt -r corrector.freq -s 16
(onde fastq_list.txt deve conter o nome dos arquivos que você quer corrigir, um por linha)
No caso de reads paired ends, lembre de corrigir os dois arquivos.
DICA!
Outros tipos de filtro também são muito utilizados. Por exemplo: a) Descartar reads com Ns
b) Descartar reads com baixa complexidade (Ex: tudo AAAAAAAAAA) c) Cortar fora os ultimos nucleotídeos de todos os reads (a qualidade
dos reads de solexa cai em direção ao final do read)
Se você tiver muitos reads, tente ficar com aproximadamente 50X a 100X para a montagem. Você conseguirá ajustar isso sendo mais ou menos agressivo nos filtros. Esta cobertura é a ideal para programas de montagem como o Velvet. Acima disso, a montagem tende a piorar.
Montagem dos reads
1 – Existem várias opções de montadores para reads de Solexa (Ex:
SoapDeNovo, Abyss, Edena, Velvet etc.). Tenha atenção para os formatos de entrada aceitos por cada um.
S
o ftw a re r e c o m e nd a d o : velvet Linhas de comando recomendadas:
# velveth montagem_velvet 21 -fasta -short meusreads.single.corr # velvetg montagem_velvet - read_trkg yes - amos_file yes
O velvet é muito sensível à escolha de parâmetros. Escolha com muito cuidado o kmer_size (o segundo parâmetro do velveth). Deve ser
obrigatoriamente um número ímpar e deve ser menor que o tamanho dos reads. Se você tiver muita cobertura do genoma, o tamanho do kmer ideal tende a ser mais alto e vice-versa.
O kmer é o tamanho usado para detectar uma sobreposição. Se você usar um k-mer menor que o ideal, você detectará muitas sobreposições falsas que irão fragmentar sua montagem. Se usar um k-mer maior que o ideal, você deixará de detectar várias sobreposições e sua montagem ficará fragmentada também.
O que se faz na prática, é tentativa e erro, rodando o velvet várias vezes com diferentes parâmetros. Um script chamado VelvetOptimizer.pl
(acompanha o pacote do velvet) faz essa busca pelo melhor tamanho de kmer e também otimiza os parâmetros exp_cov e cov_cutoff.
Tratamento pós montagem (opcional)
1 – O GapCloser é um programa que acompanha o montador SoapDeNovo. Este programa serve para tentar fechar os gaps virtuais (dentro de
scaffolds). Apesar de ser uma ferramenta do SoapDeNovo, pode ser usado com montagens produzidas pelo Velvet ou outros montadores.
ANEXOS
Bdtrimmer
É necessario editar a seguinte linha do script principal para indicar o caminho do arquivo de configuração:
my $CONFIGURATION_FILE = "/opt/software/bd2006trimmer/bd2006trimmer.conf";
Linhas importantes para serem definidas no arquivo de configuração:
# SOFTWARE PATH SECTION ##################################################### BLASTALL_PATH=/opt/software/blast64/bin/blastall
CROSS_MATCH_PATH=cross_match
# TURN ON/OFF TRIMMING STEPS [1 = ON, 0 = OFF] ############################## PERFORM_RIBOSOMAL_DETECTION=0 PERFORM_LOW_QUALITY_DETECTION=1 PERFORM_VECTOR_DETECTION=1 PERFORM_ADAPTOR_DETECTION=0 PERFORM_POLY-A_DETECTION=0 PERFORM_POLY-T_DETECTION=0 PERFORM_SLIPPAGE_DETECTION=0
# VECTOR DETECTION PARAMETERS ############################################### # VECTOR_DETECTION_METHOD options: [cm|uv|both]
# (cm = cross_match | uv = univec | both = cross_match and univec) VECTOR_DETECTION_METHOD=cm
# VECTOR DETECTION USING cross_match parameters:
VECTOR_FILE_PATH=/opt/software/bd2006trimmer/univec/UniVec VECTOR_CROSSMATCH_PARAMETERS=-minmatch 12 -minscore 20 # VECTOR DETECTION USING cross_match parameters:
UNIVEC_DATABASE_PATH=/opt/software/bd2006trimmer/univec/UniVec UNIVEC_BLAST_MISMATCH=-5
UNIVEC_BLAST_EXTENDEDGAP=3 UNIVEC_BLAST_SEARCHSPACE=1.75e12 UNIVEC_BLAST_EVALUE=700
UNIVEC_BLAST_FILTER=m D
# UNIVEC_REMOVAL_CRITERIA options: [strong|moderate|weak|suspect] # strong = remove only strong matches
# moderate = remove strong and moderate matches # weak = remove strong, moderate and weak matches
# suspect = remove strong, moderate and weak matches and suspect regions # For match classification see:
# http://www.ncbi.nlm.nih.gov/VecScreen/VecScreen_docs.html#Categories UNIVEC_REMOVAL_CRITERIA=suspect
# You can also change the default parameters (VecScreen) UNIVEC_TERMINAL_DISTANCE_CRITERIA=25 UNIVEC_TERMINAL_MINIMUM_SCORE_STRONG=24 UNIVEC_TERMINAL_MINIMUM_SCORE_MODERATE=19 UNIVEC_TERMINAL_MINIMUM_SCORE_WEAK=16 UNIVEC_NONTERMINAL_MINIMUM_SCORE_STRONG=30 UNIVEC_NONTERMINAL_MINIMUM_SCORE_MODERATE=25 UNIVEC_NONTERMINAL_MINIMUM_SCORE_WEAK=23 UNIVEC_SUSPECT_TO_END_DISTANCE=50 UNIVEC_SUSPECT_INTER_FRAGMENTS_DISTANCE=50
# LOW QUALITY DETECTION PARAMETERS ########################################## # LOW_QUALITY_TRIMMING_ALGORITHM options: [ms|sw]
# (ms = maximum subsequence | sw = slidding window) LOW_QUALITY_TRIMMING_ALGORITHM=sw
# LOW_QUALITY_SEARCH_FOR_ISLANDS [1 = ON, 0 = OFF] LOW_QUALITY_SEARCH_FOR_ISLANDS=1
# MAXIMUM SUBSEQUENCE PARAMETERS MAXIMUM_SUBSEQUENCE_MINIMUM_QUALITY=11 # SLIDDING WINDOW PARAMETERS
SLIDDING_WINDOW_QUALITY_THRESHOLD=16 SLIDDING_WINDOW_BAD_BASES_THRESHOLD=3 # SEARCH LOW QUALITY ISLANDS
PARAMETERS
LOW_QUALITY_ISLAND_WINDOW_SIZE=10
LOW_QUALITY_ISLAND_MINIMUM_ERROR_PROBABILITY=0.2 # INSERT DETECTION PARAMETERS