Alternative:
awk 'BEGIN{RS=">";OFS="\t"}NR>1{print "#"$1,$2}' inFile > outFile
I want to change the format of the fasta file.
>Name
AAAAAAAAAAAAAAAAAAAAAAAAA
>Fasta
BBBBBBBBBBBBBBBBBBBBBBBBBB
·
·
·
Fasta files are in a state with no line breaks except for> lines.
I would like to do this as tab delimited.
#Name AAAAAAAAAAAAAAAAAAAAAAAAA
#Fasta BBBBBBBBBBBBBBBBBBBBBBBBB
#·
#·
#·
What kind of commands and scripts are there? Could you please tell me?
2 answers
Sure, just use awk:
$ awk 'BEGIN{RS=">"}{print "#"$1"\t"$2;}' in.fa | tail -n+2 > out.txt
Please use the seqkit tool. The accepted solution wouldn't work for multiple lines, so it should be ignored.
seqkit fx2tab myFASTA > myTAB
will not work for multiple lines in FASTQ
- FASTQ has only one sequence line (of significance at least)
- OP asked FASTA to TSV, not FASTQ to TSV
My sample command did indeed converted FASTA to TSV.
Yes, but the accepted answer does work on multiple lines, unless I'm missing something. RS=> should take care of not separating records by \n.
The accepted answer had "tail -n+2 ", it wouldn't work for multiple lines.
How so? Can you explain please?
$ cat test.fa
>Name
AAAAAAAAAAA
AAAAAA
>Fasta
BBBBBBBBBBBBBB
BBBBB
B
BBBBBB
$ awk 'BEGIN{RS=">"}{print "#"$1"\t"$2;}' test.fa | tail -n+2
#Name AAAAAAAAAAA
#Fasta BBBBBBBBBBBBBB
$ seqkit fx2tab test.fa
Name AAAAAAAAAAAAAAAAA
Fasta BBBBBBBBBBBBBBBBBBBBBBBBBB
or a simple case:
$ awk 'BEGIN{RS=">"}{print "#"$1"\t"$2;}' test.fa | tail -n+2
#Name AAAAA
#Fasta B
$ cat test.fa
>Name
AAAAA A
>Fasta
B
BBBBBB
This should work for multiline fasta:
$ awk -v RS=">" -v ORS="\n" -v OFS="" '{$1="#"$1"\t"}1' test.fa|tail -n+2
#Name AAAAAAAAAAAAAAAAA
#Fasta BBBBBBBBBBBBBBBBBBBBBBBBBB
$ cat test.fa
>Name
AAAAAAAAAAA
AAAAAA
>Fasta
BBBBBBBBBBBBBB
BBBBB
B
BBBBBB
Thank you ! This is great !!
@ SmallChess tail -n+2 removes unwanted first line. However as you mentioned, code doesn't work for multi line fasta or fasta with gaps in the sequence
Log in to answer this question.
This sounds like an XY problem. Can you explain what you are trying to accomplish?