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 )