Changing fasta headers in multifasta file
1
0
Entering edit mode
6.8 years ago
James ▴ 20

Hi, Please can anyone help me with this. I have a multifasta file that I want to make a blast database but the header of each sequence is not quite in the correct format. The multifasta has several 100000 sequences in it so really dont want to start again.

correct format should be

>unique-id|my sequence name|etc|etc

I currently have

>notunique___|unique-id|my sequence name|etc|etc

Im pretty sure this should be doable with the sed command but no clue how to do this myself. I want too either just delete 'notunique___|' or replace '>notunique___|' with a new >

notunique is a mix of letters and numbers that are not always the same length of characters.

Any help would be much appreciated

Thank you James

sed • 3.9k views
ADD COMMENT
0
Entering edit mode
ADD REPLY
0
Entering edit mode

Dear James, you may also be interested in SEDA (http://www.sing-group.org/seda/), a desktop software that incorporates a lot of functions for processing FASTA files. One of that functions is the "Rename header", which allows you changing headers in different ways. Regards.

ADD REPLY
3
Entering edit mode
6.8 years ago

you can use this perl oneliner:

cat <yourFile> | perl -pi -e 's/>.+?\|/>/g'

on the other hand there should be many other solutions already posted on biostars ;-)

ADD COMMENT
0
Entering edit mode

Thank you so much lieven.sterck, that worked perfectly.

While there seem to be lots of posts about this stuff I couldn't work out how to change other answers to my exact problem. I really have no experience with these things.

Thanks again James

ADD REPLY
0
Entering edit mode

@lieven.sterck this served the purpose for me but can you explain this command ? just for understanding ?

ADD REPLY
0
Entering edit mode

sure.

the cat <yourFile> simply prints the content of your file which is then passed through to (using this | symbol , aka linux pipe ) a perl oneliner perl -pi -e 's/>.+?\|/>/g' which does the substitution itself. it replace all occurrences of a > with any characters following, up to and including the first | in the fasta header with a single > .

ADD REPLY
0
Entering edit mode

Thank you very much.

ADD REPLY

Login before adding your answer.

Traffic: 1707 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6