Some basic operations on multi-FASTA sequence files is a tedious task without using bioinformatics programming. It helps in modifying FASTA sequences or their headers such as removal, addition, or substitution of certain characters in the header, or manipulating the sequence format, and so on. In such cases, shell bash commands provide an easy way to perform such tasks on FASTA sequences.
Here are some simple ‘awk’ commands to manipulate FASTA headers in multi-fasta files.
1. Convert all lowercase residues to uppercase in a FASTA sequence file
$ awk 'BEGIN{FS=" "}{if(!/>/){print toupper($0)}else{print $1}}' input.fasta > output.fasta
2. Rearrange FASTA sequences according to their length
$ awk '/^>/ {printf("%s%s\t",(N>0?"\n":""), $0);N++;next;} {printf("%s",$0);} END {printf("\n");}' input.fasta |\
>awk -F '\t' '{printf("%d\t%s\n",length($2),$0;)}' |\
>sort -k1,1n | cut -f 2- |tr "\t" "\n" > output.fasta
3. Add ‘>’ at the beginning of headers in a FASTA file
$ awk '{if ($0 ~/_/) {printf ">";} print $0; }' input.fasta > output.fasta
4. Match FASTA headers in two different multi-FASTA files
$ awk 'NR=FNR{a[$0];next}$0 in a{print $0}' input1.fasta input2.fasta
5. Merge all FASTA files in a directory into a single FASTA file
$ awk '1' *.fasta > all .fasta
OR
$ awk'1' *.fa > all.fa
These are some common operations that are performed on multi-FASTA files using awk. Visit the following articles for other operations on multi-FASTA files using bash commands:
- Modifying multi-FASTA files using Bash: ‘Sed’ Command
- Operations on FASTA files using Perl, PHP, and Bash commands
- How to extract fasta sequences from a multi-fasta file based on matching headers in a separate file?
- Linux ‘sed’ command in Perl programming
- Extract FASTA sequences based on sequence length using Perl