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

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