Changer les noms dans un fichier à partir d'un autre fichier

new_26 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

cela fait un moment que je cherche mais ne trouve pas de solution! Peut-être quelqu'un pourrait-il m'aider?

voilà j'ai deux fichiers:
le premier contient des séquences fasta:
>gene_1|GeneMark.hmm|507_aa|+|1|1524 >gi|339329439|emb|FR878060.1| Mycobacterium complete genome
LTDDPGSGFTTVWNAVVSELNGDPKVDDGPSSDANLSAPLTPQQRAWLNLVQPLTIVEGF
ALLSVPSSFVQNEIERHLRAPITDALSRRLGHQIQLGVRIAPPATDEADDTTVPPSENPA

>gene_2|GeneMark.hmm|377_aa|+|2128|3261 >gi|339329439|emb|FR878060.1| Mycobacterium complete genome
VSWVAKNLPARPAVPVLSGVLLTGSDNGLTISGFDYEVSAEAQVGAEIVSPGSVLVSGRL
LSDITRALPNKPVDVHVEGNRVALTCGNARFSLPTMPVEDYPTLPTLPEETGLLPAELFA

le second contient une liste d'identifiants:
gene_1
gene_2

j'ai trouvé un script pour récupérer les séquences fasta à partir d'une liste d'identifiants
mon problème c'est que dans mes 2 fichiers le header du fasta et les identifiants commencent de la même manière mais n'ont pas du tout la même tête!:
"gene_1|GeneMark.hmm|507_aa|+|1|1524 >gi|339329439|emb|FR878060.1| Mycobacterium africanum GM041182 complete genome" et "gene_1"

Serait-il possible, dans le fichier identifiants, de remplacer les noms de gènes pour qu'ils soient les mêmes que dans mon fichier fasta?

J'ai pensé à ne récupérer que les header de mon fichier fasta par un awk mais après je ne sais pas comment remplacer les noms à partir de ça...

Merci d'avance
Bonne journée
A voir également:

7 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

Je ne suis pas sûr d'avoir bien compris ton problème, mais ceci :

grep -f fichier.identifiants fichier.fasta
Devrait te donner en prenant tes deux fichiers donnés en exemple ce résultat :

>gene_1|GeneMark.hmm|507_aa|+|1|1524 >gi|339329439|emb|FR878060.1| Mycobacterium complete genome
>gene_2|GeneMark.hmm|377_aa|+|2128|3261 >gi|339329439|emb|FR878060.1| Mycobacterium complete genome

0
new_26 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
en fait ce que je voudrai faire c'est remplacer les noms gene_1, gene_2 ... de mon fichier identifiants par leur noms entiers qui se trouvent dans le fichier fasta:

remplacer "gene_1" par "gene_1|GeneMark.hmm|507_aa|+|1|1524 >gi|339329439|emb|FR878060.1| Mycobacterium complete genome"
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
$ awk 'BEGIN {FS="[>|]"; OFS="|"} /^>/ {g=$2; $2=""; t[g]=$0} ARGIND==2 {sub("[|]", "", t[$1]); print $1 t[$1]}' fasta identifiants
gene_1|GeneMark.hmm|507_aa|+|1|1524 |gi|339329439|emb|FR878060.1| Mycobacterium complete genome
gene_2|GeneMark.hmm|377_aa|+|2128|3261 |gi|339329439|emb|FR878060.1| Mycobacterium complete genome
0
new_26 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour et merci!

ça ne marche pas non plus mais j'ai décidé de renommer différemment mes données d'une façon plus simple, c'est à dire dans l'autre sens: changer gene_1|GeneMark.hmm|507_aa|+|1|1524 >gi|339329439|emb|FR878060.1| Mycobacterium complete genome
par
gene_1

merci quand même ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
$ awk -F "[>|]" '/^>/ {print $2}' fasta
0
new_26 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
merci dubcek, c'est ce que j'avais fini par trouver!
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
et avec grep
grep -Po '(?<=^>)[^|]*' fasta
0