I'm a very beginner at bioinformatics and I got a terrible score in a programming exam while I was an undergrad...
I've been trying to extract some sequences from large fasta file using the script below;
(source: https://www.biostars.org/p/1195/ )
#!/usr/bin/perl
use Bio::Perl;
use Bio::SeqIO;
use IO::String;
use Bio::SearchIO;
#you can input you genes' name in the array or read it from other files.
my @genes_name=qw(FGSG_01562 FGSG_02646 FGSG_05604 FGSG_05896 FGSG_06871 FGSG_07409 FGSG_07952 FGSG_08962 FGSG_09852 FGSG_09945 FGSG_10286 FGSG_11792);
my $filename='fusarium_graminearum_3_proteins.fasta';
my $gb = Bio::SeqIO->new(-file => "<$filename",
-format => "fasta");
my $fa = Bio::SeqIO->new(-file => ">gball.fa",
-format => "fasta",
-flush => 0); # go as fast as we can!
while($seq = $gb->next_seq) {
#Sorry! Here would be with problem, if we use this "if (grep {$_=$seq->id} @genes_name;"
$fa->write_seq($seq) if (grep {$_ eq $seq->id} @genes_name);
}
use Bio::Perl;
use Bio::SeqIO;
use IO::String;
use Bio::SearchIO;
#you can input you genes' name in the array or read it from other files.
my @genes_name=qw(FGSG_01562 FGSG_02646 FGSG_05604 FGSG_05896 FGSG_06871 FGSG_07409 FGSG_07952 FGSG_08962 FGSG_09852 FGSG_09945 FGSG_10286 FGSG_11792);
my $filename='fusarium_graminearum_3_proteins.fasta';
my $gb = Bio::SeqIO->new(-file => "<$filename",
-format => "fasta");
my $fa = Bio::SeqIO->new(-file => ">gball.fa",
-format => "fasta",
-flush => 0); # go as fast as we can!
while($seq = $gb->next_seq) {
#Sorry! Here would be with problem, if we use this "if (grep {$_=$seq->id} @genes_name;"
$fa->write_seq($seq) if (grep {$_ eq $seq->id} @genes_name);
}
I'm working on Windows so I changed the "#!/usr/bin/perl" part but it didn't work.
Actually the name of my contigs are little long, like
IonXpressRNA_001.R_2014_06_11_02_20_24_user_xx--58-20140610 (single) trimmed contig 10001
IonXpressRNA_001.R_2014_06_11_02_20_24_user_xx--58-20140610 (single) trimmed contig 100137
...
Will it be a problem?
Any advice would be appreciated. Thank you in advance.