my ( $options, $in, $out, $tmp_dir, $tmp_in, $tmp_out, $q_type, $s_type, $record, $entry,
- $fh_in, $fh_out, $program );
+ $fh_in, $fh_out, $progs_ok, $program );
+
+$progs_ok = 'blastn,blastp,tblastn,blastx,tblastx';
$options = Maasha::Biopieces::parse_options(
[
- { long => 'database', short => 'd', type => 'file', mandatory => 'no', default => undef, allowed => undef, disallowed => undef },
- { long => 'genome', short => 'g', type => 'genome', mandatory => 'no', default => undef, allowed => undef, disallowed => undef },
- { long => 'program', short => 'p', type => 'string', mandatory => 'no', default => undef, allowed => 'blastn,blastp,tblastn,blastx,tblastx', disallowed => undef },
- { long => 'e_val', short => 'e', type => 'float', mandatory => 'no', default => 10, allowed => undef, disallowed => undef },
- { long => 'filter', short => 'f', type => 'string', mandatory => 'no', default => 'no', allowed => 'yes,no', disallowed => undef },
- { long => 'cpus', short => 'c', type => 'uint', mandatory => 'no', default => 1, allowed => undef, disallowed => 0 },
+ { long => 'database', short => 'd', type => 'file', mandatory => 'no', default => undef, allowed => undef, disallowed => undef },
+ { long => 'genome', short => 'g', type => 'genome', mandatory => 'no', default => undef, allowed => undef, disallowed => undef },
+ { long => 'program', short => 'p', type => 'string', mandatory => 'no', default => undef, allowed => $progs_ok, disallowed => undef },
+ { long => 'e_val', short => 'e', type => 'float', mandatory => 'no', default => 10, allowed => undef, disallowed => undef },
+ { long => 'filter', short => 'f', type => 'string', mandatory => 'no', default => 'no', allowed => 'yes,no', disallowed => undef },
+ { long => 'cpus', short => 'c', type => 'uint', mandatory => 'no', default => 1, allowed => undef, disallowed => 0 },
+ { long => 'no_gaps', short => 'G', type => 'flag', mandatory => 'no', default => undef, allowed => undef, disallowed => undef },
+ { long => 'megablast', short => 'm', type => 'flag', mandatory => 'no', default => undef, allowed => undef, disallowed => undef },
+ { long => 'extend_threshold', short => 'E', type => 'uint', mandatory => 'no', default => 0, allowed => undef, disallowed => undef },
+ { long => 'word_size', short => 'W', type => 'uint', mandatory => 'no', default => 0, allowed => undef, disallowed => undef },
+ { long => 'single_hit', short => 's', type => 'flag', mandatory => 'no', default => undef, allowed => undef, disallowed => undef },
]
);
$options->{ 'filter' } = 'F';
}
+if ( $options->{ 'no_gaps' } ) {
+ $options->{ 'gapped' } = 'F';
+} else {
+ $options->{ 'gapped' } = 'T';
+}
+
+if ( $options->{ 'megablast' } ) {
+ $options->{ 'megablast' } = 'T';
+} else {
+ $options->{ 'megablast' } = 'F';
+}
+
+if ( $options->{ 'single_hit' } ) {
+ $options->{ 'single_hit' } = 1
+} else {
+ $options->{ 'single_hit' } = 0
+}
+
if ( $options->{ 'verbose' } )
{
Maasha::Common::run(
"-p $program",
"-e $options->{ 'e_val' }",
"-a $options->{ 'cpus' }",
+ "-g $options->{ 'gapped' }",
+ "-n $options->{ 'megablast' }",
"-m 8",
"-i $tmp_in",
"-d $options->{ 'database' }",
"-F $options->{ 'filter' }",
+ "-P $options->{ 'single_hit' }",
+ "-W $options->{ 'word_size' }",
+ "-f $options->{ 'extend_threshold' }",
"-o $tmp_out",
),
1
"-i $tmp_in",
"-d $options->{ 'database' }",
"-F $options->{ 'filter' }",
+ "-P $options->{ 'single_hit' }",
+ "-W $options->{ 'word_size' }",
+ "-f $options->{ 'extend_threshold' }",
"-o $tmp_out",
"> /dev/null 2>&1"
),
# a .phr file exists.
# Returns string;
- if ( -f $options->{ 'database' } . ".phr" ) {
- return "protein";
+ if ( -f $options->{ 'database' } . ".phr" or -f $options->{ 'database' } . ".pal" ) {
+ return "PROTEIN";
} else {
- return "nucleotide";
+ return "NUCLEOTIDE";
}
}
my ( $program );
- if ( $q_type ne "protein" and $s_type ne "protein" ) {
+ if ( $q_type ne "PROTEIN" and $s_type ne "PROTEIN" ) {
$program = "blastn";
- } elsif ( $q_type eq "protein" and $s_type eq "protein" ) {
+ } elsif ( $q_type eq "PROTEIN" and $s_type eq "PROTEIN" ) {
$program = "blastp";
- } elsif ( $q_type ne "protein" and $s_type eq "protein" ) {
+ } elsif ( $q_type ne "PROTEIN" and $s_type eq "PROTEIN" ) {
$program = "blastx";
- } elsif ( $q_type eq "protein" and $s_type ne "protein" ) {
+ } elsif ( $q_type eq "PROTEIN" and $s_type ne "PROTEIN" ) {
$program = "tblastn";
}