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

Fermé
new_26 Messages postés 15 Date d'inscription samedi 9 août 2014 Statut Membre Dernière intervention 14 septembre 2015 - 13 août 2014 à 12:54
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 - 15 août 2014 à 09:14
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
13 août 2014 à 13:31
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 samedi 9 août 2014 Statut Membre Dernière intervention 14 septembre 2015
13 août 2014 à 14:27
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 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
13 août 2014 à 14:57
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 samedi 9 août 2014 Statut Membre Dernière intervention 14 septembre 2015
14 août 2014 à 16:32
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 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
14 août 2014 à 16:37
$ awk -F "[>|]" '/^>/ {print $2}' fasta
0
new_26 Messages postés 15 Date d'inscription samedi 9 août 2014 Statut Membre Dernière intervention 14 septembre 2015
14 août 2014 à 16:41
merci dubcek, c'est ce que j'avais fini par trouver!
0
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
15 août 2014 à 09:14
et avec grep
grep -Po '(?<=^>)[^|]*' fasta
0