diff options
-rw-r--r-- | academic/perlprimer/README | 8 | ||||
-rw-r--r-- | academic/perlprimer/perlprimer.SlackBuild | 15 | ||||
-rw-r--r-- | academic/perlprimer/perlprimer.info | 2 | ||||
-rw-r--r-- | academic/perlprimer/sytaxerrors.patch | 157 |
4 files changed, 171 insertions, 11 deletions
diff --git a/academic/perlprimer/README b/academic/perlprimer/README index 08aeb68e14..bb7ab97f96 100644 --- a/academic/perlprimer/README +++ b/academic/perlprimer/README @@ -17,9 +17,9 @@ PerlPrimer's current features include the following: to be in-frame - QPCR primer design without manual intron-exon boundary entry +An optional run-time dependency is spidey, for Real Time PCR. + For details and citation: -Marshall OJ. PerlPrimer: cross-platform, graphical primer design for -standard, bisulphite and real-time PCR. Bioinformatics 2004 +Marshall OJ. PerlPrimer: cross-platform, graphical primer design for +standard, bisulphite and real-time PCR. Bioinformatics 2004 20(15):2471-2472 - -For Real Time PCR, spidey is required. diff --git a/academic/perlprimer/perlprimer.SlackBuild b/academic/perlprimer/perlprimer.SlackBuild index 1f814503c4..345d8156bc 100644 --- a/academic/perlprimer/perlprimer.SlackBuild +++ b/academic/perlprimer/perlprimer.SlackBuild @@ -2,7 +2,7 @@ # Slackware build script for perlprimer -# Copyright 2011 Petar Petrov, ppetrov@paju.oulu.fi +# Copyright 2011-2014 Petar Petrov, petar.petrov@student.oulu.fi # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -24,7 +24,7 @@ PRGNAM=perlprimer VERSION=${VERSION:-1.1.21} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} TAG=${TAG:-_SBo} ARCH=noarch @@ -44,10 +44,13 @@ tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 cd $PRGNAM-$VERSION chown -R root:root . find -L . \ - \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \ - -exec chmod 755 {} \; -o \ - \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ - -exec chmod 644 {} \; + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +# Thanks to Debian for the patch! +patch -p1 -i $CWD/sytaxerrors.patch install -D -m755 perlprimer.pl $PKG/usr/bin/perlprimer.pl install -D -m644 gcg.603 $PKG/usr/share/$PRGNAM/gcg.603 diff --git a/academic/perlprimer/perlprimer.info b/academic/perlprimer/perlprimer.info index 61afc20edb..239cbcedc6 100644 --- a/academic/perlprimer/perlprimer.info +++ b/academic/perlprimer/perlprimer.info @@ -7,4 +7,4 @@ DOWNLOAD_x86_64="" MD5SUM_x86_64="" REQUIRES="libwww-perl perl-tk" MAINTAINER="Petar Petrov" -EMAIL="ppetrov@paju.oulu.fi" +EMAIL="petar.petrov@student.oulu.fi" diff --git a/academic/perlprimer/sytaxerrors.patch b/academic/perlprimer/sytaxerrors.patch new file mode 100644 index 0000000000..45b9cd570d --- /dev/null +++ b/academic/perlprimer/sytaxerrors.patch @@ -0,0 +1,157 @@ +Author: Steffen Moeller <steffen_moeller@gmx.de> +Description: Fixes a series of errors indicated by Perl 5.18. +Forwarded: https://sourceforge.net/p/perlprimer/patches/6/ + +Index: git/perlprimer.pl +=================================================================== +--- git.orig/perlprimer.pl ++++ git/perlprimer.pl +@@ -3093,23 +3093,24 @@ + # and because it's 3' primer-dimers that are the real problem in PCR. + + # create a binding array for each of the four bases +- for $l (0 .. $pfl-1) { ++ foreach $l (0 .. $pfl-1) { + my $mbase = substr($fprimer_r, $l, 1); + $primer_hash{$mbase}[$l]=1; +- for $k qw(a g c t) { ++ my @nucleotides = qw(a g c t); ++ foreach $k (@nucleotides) { + $primer_hash{$k}[$l] ||=0; + } + } + + # create the primer matrix + my @primer_comp; +- for $k (0 .. $prl-1) { ++ foreach $k (0 .. $prl-1) { + $primer_comp[$k]=$primer_hash{substr($rcomprlc, $k, 1)}; + } + + # read each combination from the matrix, calculate dG for each dimer + my $pd_len = ($pd_full ? $pfl+$prl-1 : $pl-2); +- for $k (0 .. $pd_len) { ++ foreach $k (0 .. $pd_len) { + $score[$k]=0; + my $bind; + my $score_p=0; +@@ -3129,7 +3130,7 @@ + # } + + # read the binding data +- for $l (0 .. $prl-1) { ++ foreach $l (0 .. $prl-1) { + if (($k-$l)<$pfl) { + $bind .= $primer_comp[$l][$k-$l] if ($k-$l)>=0; + } else { +@@ -3148,7 +3149,7 @@ + + # Find start and end of similarity + my ($pb_init,$pb_end); +- for $l (0 .. length($bind)-1) { ++ foreach $l (0 .. length($bind)-1) { + # at first I tried finding the initiating terminal bases with + # regexps, but that was much slower ... + if (substr($bind, $l, 1) eq "1") { +@@ -3159,7 +3160,7 @@ + + if (defined($pb_init)) { + # deltaG calculation +- for $l ($pb_init .. $pb_end-1) { ++ foreach $l ($pb_init .. $pb_end-1) { + next if substr($bind, $l, 2) eq "00"; + next if substr($bind, $l, 1) eq "2"; + $score_p+=$oligo_dG{substr($primer_f, $pfl-$k+$l-1, 2).substr($rprimer_r, $l, 2)}; +@@ -3228,44 +3229,44 @@ + # and because it's 3' primer-dimers that are the real problem in PCR. + + # create a binding array for each of the four bases +- for $l (0 .. $pfl-1) { ++ foreach $l (0 .. $pfl-1) { + my $mbase = substr($fprimer_r, $l, 1); + $primer_hash{$mbase}[$l]=1; +- for $k qw(a g c t) { ++ foreach $k (qw(a g c t)) { + $primer_hash{$k}[$l] ||=0; + } + } + + # create the primer matrix + my @primer_comp; +- for $k (0 .. $prl-1) { +- $primer_comp[$k]=$primer_hash{substr($rcomprlc, $k, 1)}; ++ foreach my $kk (0 .. $prl-1) { ++ $primer_comp[$kk]=$primer_hash{substr($rcomprlc, $kk, 1)}; + } + + # print the matrix - for debugging + print "$primer_f vs. $primer_r - full pd = $pd_full\n"; + print " \t"; +- for $l (0 .. $pfl-1) { ++ foreach $l (0 .. $pfl-1) { + my $mbase = substr($fprimer_r, $l, 1); + print "$mbase "; + } + print "\n"; +- for $k (0 .. $prl-1) { +- my $base = substr($rprimer_r, $k, 1); +- print "$base:\t@{$primer_comp[$k]}\n"; ++ foreach my $kk (0 .. $prl-1) { ++ my $base = substr($rprimer_r, $kk, 1); ++ print "$base:\t@{$primer_comp[$kk]}\n"; + } + + my @binding_data; + # read each combination from the matrix, calculate dG for each dimer + my $pd_len = ($pd_full ? $pfl+$prl-1 : $pl-2); +- for my $k (0 .. $pd_len) { +- $score[$k]=0; ++ foreach my $kk (0 .. $pd_len) { ++ $score[$kk]=0; + my $bind; + my $score_p=0; + + # starting coords +- my $pf_coord_start = ($k >= $pfl ? $pfl-1 : $k); +- my $pr_coord_start = ($k - $pfl > 0 ? $k - $pfl : 0); ++ my $pf_coord_start = ($kk >= $pfl ? $pfl-1 : $kk); ++ my $pr_coord_start = ($kk - $pfl > 0 ? $kk - $pfl : 0); + my ($pf_coord, $pr_coord, $first, $flag); + + # read through each combination finding multiple matches +@@ -3285,7 +3286,7 @@ + } + } elsif ($flag) { + # end of a binding stretch +- push @binding_data, [$k, $first, $bind] if $bind > 1; ++ push @binding_data, [$kk, $first, $bind] if $bind > 1; + $bind=0; + $flag=0; + } +@@ -3325,7 +3326,7 @@ + # # } + # + # # read the binding data +- # for $l (0 .. $prl-1) { ++ # foreach $l (0 .. $prl-1) { + # if (($k-$l)<$pfl) { + # $bind .= $primer_comp[$l][$k-$l] if ($k-$l)>=0; + # } else { +@@ -3344,7 +3345,7 @@ + # + # # Find start and end of similarity + # my ($pb_init,$pb_end); +- # for $l (0 .. length($bind)-1) { ++ # foreach $l (0 .. length($bind)-1) { + # # at first I tried finding the initiating terminal bases with + # # regexps, but that was much slower ... + # if (substr($bind, $l, 1) eq "1") { +@@ -3355,7 +3356,7 @@ + # + # if (defined($pb_init)) { + # # deltaG calculation +- # for $l ($pb_init .. $pb_end-1) { ++ # foreach $l ($pb_init .. $pb_end-1) { + # next if substr($bind, $l, 2) eq "00"; + # next if substr($bind, $l, 1) eq "2"; + # $score_p+=$oligo_dG{substr($primer_f, $pfl-$k+$l-1, 2).substr($rprimer_r, $l, 2)}; |