Bio-MCPrimers
view release on metacpan or search on metacpan
mcprimers.pl view on Meta::CPAN
####################################################################
sub get_plasmid {
# details of the plasmid used as a vector
use Bio::Data::Plasmid::CloningVector;
my $status = Bio::Data::Plasmid::CloningVector::cloning_vector_data
($vector_name, \@re, \%re_name, \@ecut_loc, \@vcut_loc);
if ($status == 0) {
die "\n\nError: Data not found for cloning vector $vector_name\n\n";
}
}
####################################################################
sub invoke_solver {
# invoke solver
$answer_ar = Bio::MCPrimers::find_mc_primers
($orf, \%flag, $pr3_hr, \@ecut_loc, \@vcut_loc, @re);
}
####################################################################
sub define_use_message {
$use_msg = qq/
MCPrimers generates molecular cloning PCR primers
Use: mcprimers.pl [options] vector.txt sequence.fasta result.pr3
Options: -help
-stdout
-filter
-searchpaststart integer (default = 18)
-searchbeforestop integer (default = 0)
-clamp (both | 3prime)
-maxchanges integer
-excludedsites comma_seperated_list_with_no_blanks
-primerfile primer3_file_name
-vectorfile vector_file_name
-seqfile FASTA_sequence.fasta
-outfile result.pr3
Vector file is specified in Bio::Data::Plasmid::CloningVector
Sequence file must be DNA nucleotides in FASTA format
Results file has Primer3 output and extra data
'=' can be used in specifying parameter values on command line
Use at your risk. Check any solutions you obtain
/;
}
####################################################################
sub sanity_check_arguments {
(my $dev,my $ino,my $mode,my $nlink,my $uid,my $gid,my $rdev,my $size,
my $atime,my $mtime,my $ctime,my $blksize,my $blocks)
= stat(*STDIN);
if ($flag{filter} == 0 and $size > 0) {
die "\nError - Input is redirected and -filter flag not set\n\n";
}
}
####################################################################
# convert array from name to site
sub convert_excluded_sites {
my $i = @excluded_sites;
my $name;
my $site;
while ($i > 0) {
$name = shift @excluded_sites;
$site = &get_site($name);
if (defined $site) { push @excluded_sites, $site; }
$i -= 1;
}
}
####################################################################
# individual name to site
sub get_site {
my ($name) = @_; # name of restriction enzyme
# find name - get corresponding site
foreach (keys %re_name) {
if ($re_name{$_} eq $name) {
# site value that matches $name
return $_;
}
}
}
####################################################################
# don't even pass the excluded sites to the solver
# cut them out here
sub remove_excluded_sites {
my @r_tmp = ();
my @e_tmp = ();
my @v_tmp = ();
# check all molecular cloning sites
foreach my $r (@re) {
my $e = shift @ecut_loc;
my $v = shift @vcut_loc;
# check if site is in excluded list
if (not (grep($_ eq $r, @excluded_sites))) {
( run in 1.127 second using v1.01-cache-2.11-cpan-5b529ec07f3 )