![use gff2fasta em vez de um script bash para obter partes de sequências de DNA de um genoma completo](https://rvso.com/image/109212/use%20gff2fasta%20em%20vez%20de%20um%20script%20bash%20para%20obter%20partes%20de%20sequ%C3%AAncias%20de%20DNA%20de%20um%20genoma%20completo.png)
EDITAR e uma solução
Como minha pergunta original foi mal formulada e eu estava tentando reinventar a roda, estou respondendo minha própria pergunta agora (talvez ajude outra pessoa):
gff2fasta é uma ferramenta que faz exatamente o que eu preciso, que é extrair um determinado pedaço de DNA de um genoma completo (um arquivo enorme em formato fasta chamado FULLGENOME.fasta).
Se eu souber onde está a peça que quero, posso fazer um arquivo chamado TEST.gff onde especifico o andaime (aqui: sca_5_chr5_3_0) e o início (aqui: 2390621) e fim (aqui: 2391041) da minha peça para gff2fasta, por exemplo:
sca_5_chr5_3_0 JGI CDS 2390621 2391041 . + 0 name "e_gw1.5.88.1"; proteinId 40463;
Então eu só preciso correr
gff2fasta.pl -gff TEST.gff -fasta FULLGENOME.fasta -out test
gff2fasta irá então obter as informações de TEST.gff e gerar o bit que desejo no arquivo chamado test, que ficará assim:
>sca_5_chr5_3_0_2390621_2391041_F
ATGACGACCCGCGCACCCAAAGACACATACGCTCAGCCCGACTATGAGGAGGCTCACCTAGCGACGTTTGCAGCCCCAAA
AGGCTACCCTATCGAGTCTATGCTACCCCCTAGCGTGAAGAGGGAGACCTTTGAACAGGCCCTAGCCGAGTTTACCGACG
CTATCGGCAAAGATTATGTCTTTATCGGCGATGCTCTCTCTCACTACATCGATCCCTACGACATCTATATCGATGATAGT
GAGAGAAGGAGGATGCCGAGCGCGGCTGTTTGGTACGTAACGCGGCACCCATCGAAACCTAGCAGCACTGACAAGTTTCC
GCGTCTAGTCCCTCTTCGCTCGAGGAAGCTAAGCAGGCTCTCAAGGTTGCGAACAAATACGGCATTCCGATCTGGGCATT
TTCCAGAGGCAAGAACCTGGG
Obrigado a terdon e a todos os outros pela ajuda!
-------------
Esta é a continuação desta pergunta, com mais informações e detalhesunix: obtém caracteres de 10 a 80 em um arquivo
Acho que estou quase lá, mas ainda preciso de ajuda.
Tentei explicar da forma mais clara possível, mas estou ciente de que é uma questão muito especializada, por isso, informe-me se puder esclarecer mais alguma coisa!
O que tenho são três arquivos:
nota para o administrador: é possível fazer upload de arquivos? Não tenho ideia de como...
Umarquivo(N_haematococca_1.fasta) do qual preciso extrair um nome:
head -1 N_haematococca_1.fasta | cut -f4 -d'|'
este nome neste caso é:
e_gw1.5.88.1
Problema 1: O código acima funciona bem, mas tenho problemas para salvar o nome (e_gw1.5.88.1) em uma variável que posso usar mais tarde...
Quero salvar esse nome em uma variável, vamos chamá-la:
firstline
Asegundoarquivo (Necha2_best_models.gff) onde desejo todas as linhas onde este nome ocorre:
grep -ir "e_gw1.5.88.1" --include="Necha2*.gff" > Necha2_in_genome.list
mas com a variável nomeada:
grep -ir $firstline --include="Necha2*.gff" > Necha2_in_genome.list
Isso funciona para o uso de "e_gw1.5.88.1"...
O arquivo que estou criando aqui me diz o nome do fragmento de DNA que quero cortar (sca_5_chr5_3_0) e qual parte dele eu preciso (do caractere número 2390621 ao caractere número 2392655). Preciso dessa informação para obter as partes certas do terceiro arquivo
a=(`awk -F '\t' '{print $4}' Necha2_in_genome.list`)
startDNA=${a[1]}
endDNA=${a[${#a[@]}-1]}
#add 1000 or other number, depending on the problems with the gene
correctedstartDNA=$(($startDNA-1000))
correctedendDNA=$(($endDNA-1000))
Em umterceiroarquivo do qual desejo cortar certas partes após uma palavra-chave (sca_5_chr5_3_0) neste caso:
Graças a Kamaraj e hschou, tenho uma solução parcial para isso agora:
cat Necha2_scaffolds.fasta | sed -n -e '/sca_5_chr5_3_0/,$p' | grep -v '^>' | tr -d '\n'|awk -v start="${correctedstartDNA}" -v end="${correctedendDNA}" '{print substr($0,start,end)}' RS= Necha2_scaffolds.fasta
No entanto, se eu depurar isso com números pequenos:
cat Necha2_scaffolds.fasta | sed -n -e '/sca_5_chr5_3_0/,$p' | grep -v '^>' | tr -d '\n'|awk -v start=10 -v end=20 '{print substr($0,start,end)}' RS= Necha2_scaffolds.fasta
Eu recebo esta saída:
r1_1_0
CCTTATCCTAGCG
nmapped
CTTATATATTAT
nmapped
TAAAAGGAGTTA
unmapped
TCTTATATAAA
unmapped
AATCTTAAGAA
Parece que a opção RS é ignorada e imprime apenas os caracteres de 10 a 20 para determinadas linhas. Não tenho ideia de por que essas linhas foram selecionadas.
sca_5_chr5_3_0
ocorre apenas uma vez no arquivo.
outros nomes que existem são
>sca_66_unmapped
>sca_67_unmapped
etc.
Tenho que obter essas informações de 178 genomas, todos são arquivos enormes e pesquisar manualmente não é uma opção.
COMO ficam os arquivos:
N_haematococca_1.fasta (arquivo 1) é um arquivo fasta normal:
>jgi|Necha2|40463|e_gw1.5.88.1
MTTRAPKDTYAQPDYEEAHLATFAAPKGYPIESMLPPSVKRETFEQALAEFTDAIGKDYVFIGDALSHYI
DPYDIYIDDSERRRMPSAAVCPSSLEEAKQALKVANKYGIPIWAFSRGKNLGYGGPSARVNGSVAFDLHR
Necha2_best_models.gff (arquivo 2) tem esta aparência (apenas mais longa):
sca_5_chr5_3_0 JGI exon 2390621 2390892 . + . name "e_gw1.5.88.1"; transcriptId 40463
sca_5_chr5_3_0 JGI CDS 2390621 2390892 . + 0 name "e_gw1.5.88.1"; proteinId 40463; exonNumber 1
sca_5_chr5_3_0 JGI start_codon 2390621 2390623 . + 0 name "e_gw1.5.88.1"
sca_5_chr5_3_0 JGI exon 2390949 2391041 . + . name "e_gw1.5.88.1"; transcriptId 40463
sca_5_chr5_3_0 JGI CDS 2390949 2391041 . + 2 name "e_gw1.5.88.1"; proteinId 40463; exonNumber 2
sca_5_chr5_3_0 JGI exon 2391104 2391311 . + . name "e_gw1.5.88.1"; transcriptId 40463
sca_5_chr5_3_0 JGI CDS 2391104 2391311 . + 2 name "e_gw1.5.88.1"; proteinId 40463; exonNumber 3
sca_5_chr5_3_0 JGI exon 2391380 2392367 . + . name "e_gw1.5.88.1"; transcriptId 40463
sca_5_chr5_3_0 JGI CDS 2391380 2392367 . + 0 name "e_gw1.5.88.1"; proteinId 40463; exonNumber 4
sca_5_chr5_3_0 JGI exon 2392421 2392485 . + . name "e_gw1.5.88.1"; transcriptId 40463
sca_5_chr5_3_0 JGI CDS 2392421 2392485 . + 1 name "e_gw1.5.88.1"; proteinId 40463; exonNumber 5
sca_5_chr5_3_0 JGI exon 2392541 2392657 . + . name "e_gw1.5.88.1"; transcriptId 40463
sca_5_chr5_3_0 JGI CDS 2392541 2392657 . + 0 name "e_gw1.5.88.1"; proteinId 40463; exonNumber 6
sca_5_chr5_3_0 JGI stop_codon 2392655 2392657 . + 0 name "e_gw1.5.88.1"
sca_5_chr5_3_0 JGI exon 2396205 2396730 . + . name "e_gw1.5.227.1"; transcriptId 41333
sca_5_chr5_3_0 JGI CDS 2396205 2396730 . + 0 name "e_gw1.5.227.1"; proteinId 41333; exonNumber 1
sca_5_chr5_3_0 JGI start_codon 2396205 2396207 . + 0 name "e_gw1.5.227.1"
Necha2_scaffolds.fasta (arquivo 3) se parece um pouco com isto (bits GATC muito mais longos...):
>sca_8_chr1_1_0
CCTTATCCTAGCGAGGATTAAGGTCCTCGAAAAGAAAGGCAAAGATATAAAGGTAATATAATAGAAGATT
AAGGTATTCTAAGTAAAGGTTATAAAGAAATAAAATAAGAAGAATATTTATAGGCTAAGAAAGACCCCCC
TAAAGGTTAAGGACTTAATATTAAGATTTAATATTCCCTAATTAATTAATATATTAATAAAAATAAAGAT
>sca_5_chr5_3_0
ATGACCACTATATCCATCGGCACAACGGCGTTAATCACATTTGGGTCTGCAATTTTCTGTTTTTGCGGTT
TTCATGTCGGTTCCAACGGGCGGAGCTCGACCAAGAATTACATACATTACGTGGCGCGAGCGCTCTACCC
TCTGGGACATGAAGGGGACGAGGAGTCTGGAGAGGTTCATGTTTGGAATCACAGCATGGTACTGCGGCAC
CCTACCTTGGTCATTCGTTGGTCTCTTTTTTTCAGGGTATGGACGCAGACTCTCAGACTCGCTCTGCTTT
>sca_67_unmapped
CTACAGGAAGCCCTAGAGGCCCTGCAAGACCTTCCAAAGCAGCACTCTTTGCTTCTTCTTAGAGGCAGTA
TCCAGCTTCTTCTAAGGCACCTCCAGAGGCAGCTAGACCCAACCGGGCTAAAAGACCTTTGGGAAGAGGC
TAATACCCTTATAAGAGAGGCTATTATAGCCCTAGTGGCTAGAAGCCCTAGTGAGAGCCCTAAAGAGCCT
AATTCAAGCCTTATAGCCCTTCCAGTCAGAGAGGGAGGCCTAGGAATACCCTTACACAAGGACCTAGCCC
Resultado final esperado: é um único pedaço de texto após a palavra-chave >sca_5_chr5_3_0
TTCATGTCGGTTCCAACGGGCGGAGCTCGACCAAGAATTACATACATTACGTGGCGCGAGCGCTCTACCC
TCTGGGACATGAAGGGGACGAGGAGTCTGGAGAGGTTCATGTTTGGAATCACAGCATGGTACTGCGGCAC
CCTACCTTGGTCATTCGTTGGTCTCTTTTTTTCAGGGTATGGACGCAGACTCTCAG