diff --git a/modules/Bio/EnsEMBL/Hive/RunnableDB/FastaFactory.pm b/modules/Bio/EnsEMBL/Hive/RunnableDB/FastaFactory.pm
index 67bdbf260d56b241ee0929cc0f249eeb9e7d816d..7f6633e6df1df95a444077f7cfac39e2f7528321 100644
--- a/modules/Bio/EnsEMBL/Hive/RunnableDB/FastaFactory.pm
+++ b/modules/Bio/EnsEMBL/Hive/RunnableDB/FastaFactory.pm
@@ -72,7 +72,12 @@ sub fetch_input {
     my $self = shift @_;
 
     my $inputfile   = $self->param('inputfile')                 || die "'inputfile' is an obligatory parameter";
-    my $input_seqio = Bio::SeqIO->new(-file => '<'.$inputfile)  || die "Could not open or parse '$inputfile', please investigate";
+    die "Cannot read '$inputfile'" unless(-r $inputfile);
+
+    if($inputfile=~/\.(?:gz|Z)$/) {
+        $inputfile = "gunzip -c $inputfile |";
+    }
+    my $input_seqio = Bio::SeqIO->new(-file => $inputfile)  || die "Could not open or parse '$inputfile', please investigate";
 
     $self->param('input_seqio', $input_seqio);
 }