Thanks so much, but i am not familiar with perl code. i need a complete code to run it. if possible guide me more. thanks again
Hi all I have a fasta file that i want to extract just header of sequences. is there any perl code or some thing like this to do that? thanks a lot in advance
regards
3 answers
For perl code, you can visit http://www.bioperl.org/wiki/Main_Page. If you just want to extract the headers, on a Linux/Unix system, a simple grep "^>" myfile.fasta should work.
Why so complicated? ;) Only the header in a fasta file contains > so you can use grep :
grep -e ">" my.fasta
or awk to remove the >:
$ awk 'sub(/^>/, "")'
>aksdjfljfd
aksdjfljfd
Thanks. I fixed my problem. regards
this is not perl, it's unix ;)
what about i want to extract the header and their belonging sequences?
$ awk 'sub(/^>/, "")' your_file.fasta > desired_headers.txt
This is a single-line code solution. No residual ">" before each header.
Learned from the blog "AWK: the substr command to select a substring" by Thomas Cokelaer
https://thomas-cokelaer.info/blog/2011/05/awk-the-substr-command-to-select-a-substring/
Yeah, sure, no rocket science ....
Expression in perl would be basically the same as the grep above (m/^>/).. There are easier 1-liner ways to do this, but this is a basic outline of the perl code that should be pretty readable.
#!/usr/bin/perl
open(FASTA, "<your.fa");
while(<FASTA>) {
chomp($_);
if ($_ =~ m/^>/ ) {
my $header = $_;
print "$header\n";
}
}
Log in to answer this question.
By "header", you mean everything after the ">"? Or just some part of everything after the ">"? Or including the ">"? It's important to be specific since a lot of people misunderstand "header".
I just want everything after the ">". and i have to say that i am not familiar with perl and i want a perl code to run. if possible help me. thanks a lot. regards
err, why don't you just post your code then?