Bio-PrimerDesigner
view release on metacpan or search on metacpan
lib/Bio/PrimerDesigner.pm view on Meta::CPAN
sub list_params {
=pod
=head2 list_params
Lists input options for primer3 or epcr, depending on the context
=cut
my $self = shift;
my $designer = $self->program or return $self->error;
return $designer->list_params;
}
# -------------------------------------------------------------------
sub method {
=pod
=head2 method
Gets/sets method of accessing primer3 or epcr binaries.
=cut
my $self = shift;
if ( my $arg = lc shift ) {
return $self->error("Invalid argument for method: '$arg'")
unless $arg eq 'local' || $arg eq 'remote';
if ( !$self->os_is_unix && $arg eq 'local' ) {
return $self->error("Local method doesn't work on Windows");
}
$self->{'method'} = $arg;
}
unless ( defined $self->{'method'} ) {
$self->{'method'} = $self->os_is_unix ? $DEFAULT{'method'} : 'remote';
}
return $self->{'method'};
}
# -------------------------------------------------------------------
sub os_is_unix {
=pod
=head2 os_is_unix
Returns 1 if it looks like the operating system is a Unix variant,
otherwise returns 0.
=cut
my $self = shift;
# technically, this should be 'os_is_not_windows'
unless ( defined $self->{'os_is_unix'} ) {
#$self->{'os_is_unix'} = ( $^O =~ /(n[iu]x|darwin)/ ) ? 1 : 0;
$self->{'os_is_unix'} = ( $^O !~ /^MSWin/i ) ? 1 : 0;
}
return $self->{'os_is_unix'};
}
# -------------------------------------------------------------------
sub primer3_example {
=head2 primer3_example
Runs a sample design job for primers. Returns an
Bio::PrimerDesigner::Results object.
=cut
my $self = shift;
my $pcr = Bio::PrimerDesigner::primer3->new;
return $pcr->example || $self->error( $pcr->error );
}
# -------------------------------------------------------------------
sub program {
=pod
=head2 program
Gets/sets which program to use.
=cut
my $self = shift;
my $program = shift || $EMPTY_STR;
my $reset = 0;
if ( $program ) {
return $self->error("Invalid argument for program: '$program'")
unless $DESIGNER{ $program };
$reset = 1;
}
if ( $reset || !defined $self->{'program'} ) {
$program ||= $DEFAULT{'program'};
my $class = $DESIGNER{ $program };
$self->{'program'} = $class->new or
return $self->error( $class->error );
}
return $self->{'program'};
}
# -------------------------------------------------------------------
sub run {
=pod
=head2 run
( run in 0.607 second using v1.01-cache-2.11-cpan-39bf76dae61 )