FORUMCategory: BioinformaticsRenaming of Fasta headers
Genevieve asked 1 year ago



I’m new in the Bioinformatic world so sorry for my question. I’m using Galaxy to analyse my Illumina data.
My question is does everyone know if there are tools available in Galaxy or Use-Galaxy to rename the header of each fasta read because after that I want to bin all my fasta files into a single file (in order to have a uniform OTU nomenclature).
Thank

Pascale Marquis Staff replied 1 year ago

Hi Genevieve, I am seeing (Rename sequences), under tools: NGS: QC and manipulation.

Genevieve replied 1 year ago

Yes I tried but I cannot change my FASTA sequence headers with the sample name

2 Answers
Best Answer
Eloi Mercier answered 1 year ago



The approved solution was to use this command line in the Windows command line (cmd.exe) after downloading seqkit from https://github.com/shenwei356/seqkit/releases/tag/v0.8.0

 FOR %f IN (*fasta) DO seqkit.exe replace -p (.*) -r %f.{nr} %f > renamed_%f

to obtain headers containing the name of the file and a incremental number such as
>301.fasta.1
ACGT
>301.fasta.2
Eloi

Eloi Mercier answered 1 year ago



Hi Genevieve,

I would not recommend using Galaxy for anything remotely advanced. As you can see, Galaxy doesn’t allow to deviate from standard analyses.
To do what you want, you will need to leave Galaxy and use other available tools depending of your system. This might take a bit of effort but it is worth it, especially if you want to do more bioinformatics later!
I will try to guide you through this. You can also request a 1on1 session if you prefer.
First, I would need to know what type of system are you on (Windows, Linux or Macs)?
Eloi
 

Genevieve replied 1 year ago

I know i’m a bit limited with Galaxy.
I’m with windows

Eloi Mercier replied 1 year ago

OK. You will need to download Seqkit to start with. You can download it from here: https://github.com/shenwei356/seqkit/releases/tag/v0.8.0
Download the seqkit_windows_amd64.exe.tar.gz if you have a 64b version of Windows, or seqkit_windows_386.exe.tar.gz if you are not sure.
Then unzip it with Winrar or 7zip for instance and install it.

Genevieve replied 1 year ago

Ok done

Eloi Mercier replied 1 year ago

Great. You should have a file called seqkit.exe. Let me know if this is not the case.
Copy this file into the same folder than your fasta files. This is not mandatory but this will make it easier.

Now, click on the Windows icon (bottom left) and search for cmd.exe and run it. This is the command line tool from Windows. We will work in this terminal from now on. You can learn more about it if you want to: https://www.makeuseof.com/tag/a-beginners-guide-to-the-windows-command-line/

The only command you should know for now is the “cd” command that allow you to change the directory (you can see you current directory at the beginning of each line in the terminal). You should be able to move to the directory where your fasta file and the seqkit.exe tool is. For instance “cd Document/myproject/myfasta”

Once you’re here let me know.

Genevieve replied 1 year ago

Ok
Microsoft Windows [version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Tous droits r▒serv▒s.

C:\Users\Genevieve\Documents\Fasta.file>seqkit.exe
seqkit.exe
SeqKit — a cross-platform and ultrafast toolkit for FASTA/Q file manipulation

Version: 0.8.0

Eloi Mercier replied 1 year ago

Perfect!

Now the fun part. This how to change the fasta file header. Type the following the command line:
seqkit.exe replace -p “(.*)” -r “FILENAME.$1” my_fasta.fa > my_new_fasta.fa

I will explain later what this does.
Look at the new fasta file. The fasta headers should now contain FILENAME at the begining. Did it work?

PS: I see you have Windows in French. We can continue in French if you prefer.

Genevieve replied 1 year ago

Bonjour,
non sa ne fonctionne pas voici ce que j’obtiens
C:\Users\Genevieve\Documents\Fasta.file>seqkit.exe replace -p “(.*)” -r “FILENAME.$1” my_fasta.fa > my_new_fasta.fa
seqkit.exe replace -p “(.*)” -r “FILENAME.$1” my_fasta.fa > my_new_fasta.fa
[ERRO] fastx: open my_fasta.fa: Le fichier spécifié est introuvable.

J’ai remplacé le my_fasta par le nom de mon fichier
C:\Users\Genevieve\Documents\Fasta.file>seqkit.exe replace -p “(.*)” -r “FILENAME.$1” 6584.fa > 6584_new_fasta.fa
seqkit.exe replace -p “(.*)” -r “FILENAME.$1” 6584.fa > 6584_new_fasta.fa
[ERRO] fastx: open 6584.fa: Le fichier spécifié est introuvable.

et j’ai encore le même code d’erreur

Eloi Mercier replied 1 year ago

C’est que le fichier n’est pas dans ce répertoire. Voiez-vous votre fichier dans la liste quand tu tapes “dir” dans le terminal? S’il est dans un autre répertoire, vous pouvez utiliser “sous_dossier_fasta/mon_fichier_fasta.fa” ou “../un_autre_dossier/mon_fichier_fasta.fa” (où “..” fait remonter au répertoire parent).

Je vais bientôt partir du bureau. Si vous arrivez à régler ce problème, voici la suite.

Il est préférable d’enlever ou de déplacer les fichiers qui n’ont pas à être modifier (par exemple 6584_new_fasta.fa créé plus haut). Cela évite qu’ils ne soient modifier deux fois.

Dans le terminal, tapez
FOR %f IN (*fasta) DO seqkit.exe replace -p “(.*)” -r “%f.$1” %f > renamed_%f
Vous devriez avoir une liste de fichiers commenant par “renamed_” avec les en-tête des fichiers fasta contenant le nom du fichier originel.

Je vous répondrai demain si vous avez encore des soucis.

Eloi

Genevieve replied 1 year ago

J’ai rentré ceci et cela semble avoir fonctionné. J’ai mis 6584.fasta au lieu de 6584.fa

C:\Users\Genevieve\Documents\Fasta.file>seqkit.exe replace -p “(.*)” -r “FILENAME.$1” 6584.fasta > 6584_new_fasta.fa
seqkit.exe replace -p “(.*)” -r “FILENAME.$1” 6584.fasta > 6584_new_fasta.fa

J’ai regardé le nouveau fichier (6584_new_fasta.fa) et il n’y pas le mot FILENAME au début des séquences
>M03992:221:000000000-BGWB9:1:2107:6935:2897
AACGCACATTGCGCCCGCTGGTATTCCGGCGGGCATGCCTGTTCGAGCGTCATTATGACC
AATCAAGCTCTGCTTGGCTTTGGGGCCCGCTATACCGGCGGCTCTTAAAATCAGTGGCGG
TGCCGTCTGGCTCTAAGCGTAGTAATACTTCTCGCTACAGGGTCCAGTCGTTCACCCGCC
AGAACCCCCAACTTTCTTAGGTTGACCTCGGATCAGGTAGGGATACCCGCTGAACTTAA

Eloi Mercier replied 1 year ago

Je ne vois pas de problème à votre ligne de commande. Essayez voir ça pour tester:
seqkit.exe replace -p “(.*)” -r “FILENAME” 6584.fasta > 6584_new_fasta.fa
Les lignes devraient toutes contenir FILENAME (et uniquement ça).

Genevieve replied 1 year ago

Parfait je vais attendre votre réponse demain

Genevieve replied 1 year ago

Non encore le même problème. Il n’y a pas le mot FILENAME dans le nouveau fichier
C:\Users\Genevieve\Documents\Fasta.file>seqkit.exe replace -p “(.*)” -r “FILENAME” 6584.fasta > 6584_new_fasta.fa
seqkit.exe replace -p “(.*)” -r “FILENAME” 6584.fasta > 6584_new_fasta.fa

>M03992:221:000000000-BGWB9:1:2107:6935:2897
AACGCACATTGCGCCCGCTGGTATTCCGGCGGGCATGCCTGTTCGAGCGTCATTATGACC
AATCAAGCTCTGCTTGGCTTTGGGGCCCGCTATACCGGCGGCTCTTAAAATCAGTGGCGG
TGCCGTCTGGCTCTAAGCGTAGTAATACTTCTCGCTACAGGGTCCAGTCGTTCACCCGCC
AGAACCCCCAACTTTCTTAGGTTGACCTCGGATCAGGTAGGGATACCCGCTGAACTTAA

Je vais attendre votre réponse demain
un gros merci de m’aider

Eloi Mercier replied 1 year ago

C’est étonnant.
Essayez sans les guillemets pour voir.
seqkit.exe replace -p (.*) -r FILENAME 6584.fasta > 6584_new_fasta.fa

Êtes-vous à Montréal? Si oui, vous pouvez passer me voir à mon bureau à McGilll.

Genevieve replied 1 year ago

Wow sa fonctionne. Voici ce que j’obtiens
>FILENAME
AACGCACATTGCGCCCGCTGGTATTCCGGCGGGCATGCCTGTTCGAGCGTCATTATGACC
AATCAAGCTCTGCTTGGCTTTGGGGCCCGCTATACCGGCGGCTCTTAAAATCAGTGGCGG
TGCCGTCTGGCTCTAAGCGTAGTAATACTTCTCGCTACAGGGTCCAGTCGTTCACCCGCC
AGAACCCCCAACTTTCTTAGGTTGACCTCGGATCAGGTAGGGATACCCGCTGAACTTAA

Genevieve replied 1 year ago

Non je suis à Trois-Rivières

Genevieve replied 1 year ago

J’ai plusieurs fichier Fasta. Dois-je faire ceci pour chaque (un à un ) ?

Eloi Mercier replied 1 year ago

Vous pouvez le faire un à un avec:
seqkit.exe replace -p (.*) -r FILENAME.$1 6584.fasta > 6584_new_fasta.fa

Ou bien faire ça automatiquement:
FOR %f IN (*fasta) DO seqkit.exe replace -p (.*) -r %f.$1 %f > renamed_%f

Notez que cela va appliquer le changement à tout les fichiers fasta présent dans le répertoire. Il se peut que certains fichiers soient transformer deux fois de suite. Ce n’est pas très grave, vous pouvez supprimer (ou ignorer) les fichiers “renamed_renamed_” après avoir lancer ce script.

Pour votre information, voici comment cela fonctionne:
1. le script va chercher tout les fichiers se terminant par fasta: (*fasta)
2. il va appliquer le code situé après “DO” à chacun de ces fichiers, un à un, en remplaçant %f par le nom du fichier.
3. seqkit va chercher le header contenant n’importe quel character et de n’importe quelle longueur. C’est le -p (.*). Il va enregistrer cette information dans la variable $1.
4. Puis il va remplacer cela par %f.$1. C’est à dire, le nom du fichier (%f) et le header ($1).

Eloi

Genevieve replied 1 year ago

Un gros merci. Je vais essayer cela au courant de l’avant-midi.

Genevieve replied 1 year ago

Bonjour, encore moi

j’ai essayé votre deuxième script FOR %f IN (*fasta) DO seqkit.exe replace -p (.*) -r %f.$1 %f > renamed_%f
et l’identifiant est effectivement là, mais avec le reste des codes aussi.
>301.fasta.M03992:221:000000000-BGWB9:1:2107:24220:3604
AACGCACCTTGCGCTCCCTGGTATTCCGGGGAGCACGCCTGTTCGAGTGTCGTGAAATTT
CTCAAGCTTGGATGGCCTTTTTGTCTGTCCTTAGCCTTGGTTGTTGGGCTTTGCCGTGTC
CTTTATTGGGACGGCTGGCCTTAAAAGCATTAGCTGATCCTTGTGCGGCGCTGGTTCTAC
TCAGCGTGATAATAGTCTGATCGCTGAGGACATCTTTTGGGATGGCCAGTCCTCATTTGG
GTTGCTTATAGACCTGGTCTTGCAGATTGTTCAATCTGTGGGCTCCACTTTTCAGCTTTG
ACCTCGAATCAGGTGGGACTACCCGCTGAACTTAA

Genevieve replied 1 year ago

Je voudrais seulement avoir le 301

Eloi Mercier replied 1 year ago

Après avoir convertit les headers avec la fonction précédente, utilisez cette fonction:

FOR %f IN (renamed.*fasta) DO powershell -Command “(gc %f) -replace ‘.fasta’, ” | Out-file clean.%f”

Notez que l’on atteint ici les limites de ce que l’on peut faire sous Windows. Si vous souhaitez aller plus loin, je vous conseille vivement d’utiliser Linux.

 

edit: j’ai peut-être mal compris. Souhaitez vous seulement avoir “301” pour tout les headers, sans les headers initiaux?
C’est à dire:

>301
ACGTACGT
>301
GTCAGTAC

 

Genevieve replied 1 year ago

D’accord j’en suis bien consciente.

J’ai essayé ce que vous m’avez envoyé et j’obtiens le même résultat
>301.fasta.M03992:221:000000000-BGWB9:1:2107:24220:3604
AACGCACCTTGCGCTCCCTGGTATTCCGGGGAGCACGCCTGTTCGAGTGTCGTGAAATTT
CTCAAGCTTGGATGGCCTTTTTGTCTGTCCTTAGCCTTGGTTGTTGGGCTTTGCCGTGTC
CTTTATTGGGACGGCTGGCCTTAAAAGCATTAGCTGATCCTTGTGCGGCGCTGGTTCTAC
TCAGCGTGATAATAGTCTGATCGCTGAGGACATCTTTTGGGATGGCCAGTCCTCATTTGG
GTTGCTTATAGACCTGGTCTTGCAGATTGTTCAATCTGTGGGCTCCACTTTTCAGCTTTG
ACCTCGAATCAGGTGGGACTACCCGCTGAACTTAA

Sinon je vais le faire un à un pour avoir seulement l’identifiant au début (301)

Eloi Mercier replied 1 year ago

Vous regardez bien les fichiers commençant par “clean”?

Il est vrai que le plus simple est peut-être de changer la header dans le script pour chaque fichier. Laissez-moi savoir si cela a marché.

Eloi

Genevieve replied 1 year ago

Oui je souhaite seulement avoir “301” pour tout les headers, sans les headers initiaux.

En lançant le script FOR %f IN (renamed.*fasta) DO powershell -Command “(gc %f) -replace ‘.fasta’, ” | Out-file clean.%f”, j’ai aucun dossier ”Clean” qui est créé

Genevieve replied 1 year ago

edit: j’ai peut-être mal compris. Souhaitez vous seulement avoir “301” pour tout les headers, sans les headers initiaux?
C’est à dire:

>301
ACGTACGT
>301
GTCAGTAC

Oui c’est exactement ce que je veux

Eloi Mercier replied 1 year ago

Ah, je pense voir le problème.

Après ‘fasta’, il s’agit de deux simple appostrophes ‘ sans espace.
Avant (gc %f) et après clean.$f, il s’agit de guillemets “.

Si cela ne marche toujours pas, reprenez le code du début et lancer le pour chaque fichier:
seqkit.exe replace -p (.*) -r 301 310.fasta > renamed_310.fasta
Et remplacez 310 par le numero du fichier.
Notez que j’ai enlevé le $1 pour n’avoir que “301” comme header.

Eloi Mercier replied 1 year ago

Notez qu’il faudrait relancer le premier script pour n’avoir que le nom du fichier.
1. FOR %f IN (*fasta) DO seqkit.exe replace -p (.*) -r %f %f > renamed_%f (sans le $1)
Ce qui devrait donner:
renamed_301.fasta
>301.fasta
ACGTACGT

2. FOR %f IN (renamed.*fasta) DO powershell -Command “(gc %f) -replace ‘.fasta’, ” | Out-file clean.%f”
Ce qui devrait donner:
clean.renamed_301.fasta
>301
ACGTACGT

Autrement, manuellement:
seqkit.exe replace -p (.*) -r 301 310.fasta > renamed_310.fasta
seqkit.exe replace -p (.*) -r 6584 6584.fasta > renamed_6584.fasta
etc.

Genevieve replied 1 year ago

Non sa ne fonctionne pas

Petite question quand on a lancé cette commande FOR %f IN (*fasta) DO seqkit.exe replace -p (.*) -r %f.$1 %f > renamed_%f tout mes fichiers se sont renommé mais avec tous ces détails >301.fasta.M03992:221:000000000-BGWB9:1:2107:24220:3604. Est-il possible de simplement avoir seulement le ID (301)

Eloi Mercier replied 1 year ago

FOR %f IN (*fasta) DO seqkit.exe replace -p (.*) -r %f %f > renamed_%f (sans le $1)
renomme les headers par le nom du fichier. Donc 301.fasta.
Enlever le “.fasta” est plus compliqué et c’est ce que l’autre fonction est censé faire.

Le plus simple est sans doute de traiter les fichiers individuellement avec:
seqkit.exe replace -p (.*) -r 301 310.fasta > renamed_310.fasta
seqkit.exe replace -p (.*) -r 6584 6584.fasta > renamed_6584.fasta
seqkit.exe replace -p (.*) -r NEW_HEADER 6584.fasta > renamed_6584.fasta
etc.

Genevieve replied 1 year ago

La 2e étape ne fonctionne pas je n’obtiens pas de fichier clean.rename
Au pire c’est déja bon d’avoir seulement 301.fasta au début de mes séquences 🙂
Une autre petite chose que je viens de penser serait-il mieux qu’après mon identifiant d’échantillon il y a un identifiant de séquences ?
Ex :
>301.fasta.1
ACGTACGT
>301.fasta.2
GTCAGTAC
etc…

Eloi Mercier replied 1 year ago

On y est presque!

Cela devrait faire l’affaire:
FOR %f IN (*fasta) DO seqkit.exe replace -p (.*) -r %f.{nr} %f > renamed_%f

Genevieve replied 1 year ago

C’est parfait 🙂
>301.fasta.1
AACGCACCTTGCGCTCCCTGGTATTCCGGGGAGCACGCCTGTTCGAGTGTCGTGAAATTT
CTCAAGCTTGGATGGCCTTTTTGTCTGTCCTTAGCCTTGGTTGTTGGGCTTTGCCGTGTC
CTTTATTGGGACGGCTGGCCTTAAAAGCATTAGCTGATCCTTGTGCGGCGCTGGTTCTAC
TCAGCGTGATAATAGTCTGATCGCTGAGGACATCTTTTGGGATGGCCAGTCCTCATTTGG
GTTGCTTATAGACCTGGTCTTGCAGATTGTTCAATCTGTGGGCTCCACTTTTCAGCTTTG
ACCTCGAATCAGGTGGGACTACCCGCTGAACTTAA
>301.fasta.2
AACGCACCTTGCGCCCCTTGGTATTCCGAGGGGCACACCCGTTTGAGTGTCGTGAAAATC
TCAACCTCCTCGGTTTCTTTTGGGATGCTGAAGGAGGCTTGGACTTTGGAGGGCTTTGCT
GGACTTGAAAGGCCAGCTCCTCTCAAATGAATTAGCGAGGTTCCCTTTGCCGATCCTCGA
CGTGTGATAAGATGCTTCCACGTCTTGGTCTTTTGGCTCTGTCGCCTTTTGGGACCTGCT
TCCAATTGTCTCTCGACGAGACAACGTTCGAGCACGTCTCGACCACGTACCCTTGACCTC
AAATCGGGTGAGACTACCCGCTGAACTTAA

Vraiment un gros merci. En personne je t’offrirais une bière

Eloi Mercier replied 1 year ago

Super. Heureux d’avoir pu aider.