Como adicionar strings de um arquivo de lista de nomes a outro arquivo?

1

Eu tenho um arquivo fasta (seq.fa) que é um formato de arquivo padrão para informações genéticas, assim:

>TR1|c0_g1_i1
GTCGAGCATGGTCTTGGTCATCTTCCTTTCAAAGAA
>TR6|c0_g1_i1
GTGGAATATCGCCAGTGACCATCACTGATTAACCTG

Eu também tenho um arquivo com nomes correspondentes aos cabeçalhos ("> TR ..."):

TR1|c0_g1_i1    scaf0432344_50037.734_wgs
TR6|c0_g1_i1    scaf0159424_10142.072_wgs

Eu preciso tornar os identificadores "scaf0 ..." a primeira coisa que vem depois do ">" arquivo no seq.fa.

Eu quero manter os identificadores "TR ..." que são exclusivos para cada uma das minhas seqüências, assim:

>scaf0432344_50037.734_wgs|TR1|c0_g1_i1
GTCGAGCATGGTCTTGGTCATCTTCCTTTCAAAGAA
>scaf0159424_10142.072_wgs|TR6|c0_g1_i1
GTGGAATATCGCCAGTGACCATCACTGATTAACCTG

O arquivo de nomes está na mesma ordem do arquivo de seqüências!

Não tentei nada desde que não sou treinado e não tenho ideia do que estou fazendo: /

    
por san.san 14.03.2016 / 15:39

2 respostas

1

com awk

awk 'FNR==NR{
  a[">"$1]=$2;next
}
$1 in a{
  sub(/>/,">"a[$1]"|",$1)
}1' file2 seq.fa

Obtenha o valor scaf do arquivo2 e salve-o em uma matriz a com índice ">"$1 .

Se $1 de seq.fa for um índice no array a substitua o $1 para incluir o valor scaf a[$1] após > .

Em seguida, imprima todas as linhas em seq.fa

    
por 14.03.2016 / 16:25
1

Como variante

join <(paste - - <sqa.fa | cut -c2-) name -o 2.2,1.1,1.2 |
sed 's/^/>/;s/\s/|/;s/\s/\n/'
    
por 14.03.2016 / 16:37