[med-svn] [Git][med-team/perlprimer][master] 3 commits: New upstream version 1.2.4
Charles Plessy
gitlab at salsa.debian.org
Wed Feb 13 12:13:21 GMT 2019
Charles Plessy pushed to branch master at Debian Med / perlprimer
Commits:
796f1476 by Charles Plessy at 2019-02-13T12:08:46Z
New upstream version 1.2.4
- - - - -
42568e7f by Charles Plessy at 2019-02-13T12:08:47Z
Merge tag 'upstream/1.2.4'
Upstream version 1.2.4
# gpg: Signature faite le mer. 13 févr. 2019 21:08:46 JST
# gpg: avec la clef RSA 73471499CC60ED9EEE805946C5BD6C8F2295D502
# gpg: Bonne signature de « Charles Plessy <plessy at debian.org> » [totale]
# Empreinte de clef principale : 7347 1499 CC60 ED9E EE80 5946 C5BD 6C8F 2295 D502
- - - - -
c75d9137 by Charles Plessy at 2019-02-13T12:12:44Z
Preparing 1.2.4-1 update.
- - - - -
3 changed files:
- Changelog
- debian/changelog
- perlprimer
Changes:
=====================================
Changelog
=====================================
@@ -1,3 +1,9 @@
+23/11/18 (PerlPrimer-1.2.4)
+- Fixed small Ensembl retrieval bug
+- Changed primer clipboard copy routines so that copied primer sequences are compatible with common primer synthesis spreadsheet formats
+- Added new icon bitmap
+- Improved compatibility with Windows 7
+
22/1/17 (PerlPrimer-1.2.3)
- Added the option of using Onodera and Melcher (2004) rules for the 3' GC clamp. This option is not currently enabled by default, but can be selected in the prefs "Exclusions" tab
=====================================
debian/changelog
=====================================
@@ -1,4 +1,8 @@
-perlprimer (1.2.3-2) unstable; urgency=medium
+perlprimer (1.2.4-1) UNRELEASED; urgency=medium
+
+ [ Charles Plessy ]
+ * QA-build with Salsa.
+ * New upstream version 1.2.4
[ Steffen Moeller ]
* debian/upstream/metadata:
@@ -12,7 +16,7 @@ perlprimer (1.2.3-2) unstable; urgency=medium
* Point Vcs fields to salsa.debian.org
* Standards-Version: 4.2.0
- -- Andreas Tille <tille at debian.org> Fri, 24 Aug 2018 10:16:13 +0200
+ -- Charles Plessy <plessy at debian.org> Wed, 13 Feb 2019 21:11:38 +0900
perlprimer (1.2.3-1) unstable; urgency=medium
=====================================
perlprimer
=====================================
@@ -3,7 +3,7 @@
# PerlPrimer
# Designs primers for PCR, Bisulphite PCR, QPCR (Realtime), and Sequencing
-# Copyright 2003-2017, Owen Marshall
+# Copyright © 2003-2017, Owen Marshall
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -21,15 +21,22 @@
# USA
use strict;
+use utf8;
#---------------#
# Usage message #
#---------------#
-my ($version, $commandline, $win_exe);
+my ($version, $commandline, $os_name, $win_exe);
BEGIN {
- $version = "1.2.3";
- $win_exe = 0;
+ $version = "1.2.4";
+ $os_name = $^O;
+
+ if ($os_name eq 'MSWin32') {
+ $win_exe = 0;
+ } else {
+ $win_exe = 0;
+ }
($commandline) = @ARGV;
@@ -38,7 +45,7 @@ BEGIN {
PerlPrimer v$version
Designs primers for PCR, Bisulphite PCR, QPCR (Realtime), and Sequencing
-Copyright 2003-2017 Owen Marshall\n
+Copyright © 2003-2017 Owen Marshall\n
Usage: perlprimer.pl [file.ppr]\n
EOT
exit 0;
@@ -48,7 +55,7 @@ EOT
if ($win_exe) {
print <<EOT;
PerlPrimer v$version
-Copyright 2003-2017 Owen Marshall
+Copyright © 2003-2017 Owen Marshall
Designs primers for PCR, Bisulphite PCR, QPCR (Realtime), and Sequencing
This window is required for PerlPrimer to run -
@@ -86,7 +93,7 @@ BEGIN {
# Print warning header if not already printed
unless ($warning) {
- print "PerlPrimer v$version\nCopyright 2003-2011 Owen Marshall\n\n";
+ print "PerlPrimer v$version\nCopyright © 2003-2011 Owen Marshall\n\n";
$warning = 1;
}
@@ -1163,6 +1170,7 @@ my $menu_tools = $menu->cascade(-label => 'Tools', -menuitems => [
[command => "Add cloning sequences", -command => \&find_re_sites, ],
"-",
[command => "Generate report", -command => \&generate_report, -accelerator=>'Ctrl-R' ],
+ [command => "Copy amplified seq to clipboard", -command => \©_amp, -accelerator=>'Ctrl-Shift-C' ],
"-",
[command => "Save default values for this page", -command => \&save_defaults, ],
[command => "Restore in-built default values", -command => \&restore_defaults, ],
@@ -1334,13 +1342,13 @@ pack_gui('LabFrame', 'Forward primer', 'forward_l', \$page_primerf);
nr(\$row_counter[-1],0);
pack_gui('Label', 'Tm: ', 'fprimertm', -font=>$gui_font_bold);
pack_gui('Label', \$fprimer_tm, 'fprimertm');
- pack_gui('Label', 'C', 'fprimertm');
+ pack_gui('Label', '°C', 'fprimertm');
nr('',0);
- pack_gui('Label', 'dS: ', 'fprimerds', -font=>$gui_font_bold);
+ pack_gui('Label', 'dS°: ', 'fprimerds', -font=>$gui_font_bold);
pack_gui('Label', \$fprimer_ds, 'fprimerds');
pack_gui('Label', 'eu', 'fprimerds');
# nr('',0);
- # pack_gui('Label', "dG$pd_temperature: ", 'fprimerds');
+ # pack_gui('Label', "dG°$pd_temperature: ", 'fprimerds');
# pack_gui('Label', \$fprimer_dg, 'fprimerds');
# pack_gui('Label', 'kcal/mol', 'fprimerds');
nc(\$col_ref);
@@ -1349,7 +1357,7 @@ pack_gui('LabFrame', 'Forward primer', 'forward_l', \$page_primerf);
pack_gui('Label', \$fprimer_len, 'fprimerlen');
pack_gui('Label', 'bases', 'fprimerlen');
nr('',0);
- pack_gui('Label', 'dH: ', 'fprimerdh', -font=>$gui_font_bold);
+ pack_gui('Label', 'dH°: ', 'fprimerdh', -font=>$gui_font_bold);
pack_gui('Label', \$fprimer_dh, 'fprimerdh');
pack_gui('Label', 'kcal/mol', 'fprimerdh');
nc(\$col_ref);
@@ -1358,7 +1366,7 @@ pack_gui('LabFrame', 'Forward primer', 'forward_l', \$page_primerf);
pack_gui('Label', \$fprimer_gc, 'fprimergc');
pack_gui('Label', '%', 'fprimergc');
nr('',0);
- pack_gui('Label', "dG$pd_temperature: ", 'fprimerds', -font=>$gui_font_bold);
+ pack_gui('Label', "dG°$pd_temperature: ", 'fprimerds', -font=>$gui_font_bold);
pack_gui('Label', \$fprimer_dg, 'fprimerds');
pack_gui('Label', 'kcal/mol', 'fprimerds');
@@ -1374,13 +1382,13 @@ pack_gui('LabFrame', 'Reverse primer', 'reverse_l', \$page_primerf);
nr(\$row_counter[-1],0);
pack_gui('Label', 'Tm: ', 'rprimertm', -font=>$gui_font_bold);
pack_gui('Label', \$rprimer_tm, 'rprimertm');
- pack_gui('Label', 'C', 'rprimertm');
+ pack_gui('Label', '°C', 'rprimertm');
nr('',0);
- pack_gui('Label', 'dS: ', 'rprimerds', -font=>$gui_font_bold);
+ pack_gui('Label', 'dS°: ', 'rprimerds', -font=>$gui_font_bold);
pack_gui('Label', \$rprimer_ds, 'rprimerds');
pack_gui('Label', 'eu', 'rprimerds');
# nr('',0);
- # pack_gui('Label', "dG$pd_temperature: ", 'rprimerds');
+ # pack_gui('Label', "dG°$pd_temperature: ", 'rprimerds');
# pack_gui('Label', \$rprimer_dg, 'rprimerds');
# pack_gui('Label', 'kcal/mol', 'rprimerds');
nc(\$col_ref);
@@ -1389,7 +1397,7 @@ pack_gui('LabFrame', 'Reverse primer', 'reverse_l', \$page_primerf);
pack_gui('Label', \$rprimer_len, 'rprimerlen');
pack_gui('Label', 'bases', 'rprimerlen');
nr('',0);
- pack_gui('Label', 'dH: ', 'rprimerdh', -font=>$gui_font_bold);
+ pack_gui('Label', 'dH°: ', 'rprimerdh', -font=>$gui_font_bold);
pack_gui('Label', \$rprimer_dh, 'rprimerdh');
pack_gui('Label', 'kcal/mol', 'rprimerdh');
nc(\$col_ref);
@@ -1398,7 +1406,7 @@ pack_gui('LabFrame', 'Reverse primer', 'reverse_l', \$page_primerf);
pack_gui('Label', \$rprimer_gc, 'fprimergc');
pack_gui('Label', '%', 'fprimergc');
nr('',0);
- pack_gui('Label', "dG$pd_temperature: ", 'fprimerds', -font=>$gui_font_bold);
+ pack_gui('Label', "dG°$pd_temperature: ", 'fprimerds', -font=>$gui_font_bold);
pack_gui('Label', \$rprimer_dg, 'fprimerds');
pack_gui('Label', 'kcal/mol', 'fprimerds');
@@ -1442,9 +1450,9 @@ pack_gui('LabFrame', 'Primer Tm', 'primer_tm_l', \$page_primer_designf);
pack_gui('Entry', \$min_tm_pr, 'mintm', 3);
pack_gui('Label', '-');
pack_gui('Entry', \$max_tm_pr, 'maxtm', 3);
- pack_gui('Label', 'C Difference');
+ pack_gui('Label', '°C Difference');
pack_gui('Entry', \$max_diff_pr, 'maxdiff', 3);
- pack_gui('Label', 'C');
+ pack_gui('Label', '°C');
pack_gui('LabFrame', 'Primer Length', 'primer_len_l', \$page_primer_designf);
nr(\$packed_widgets{primer_len_l});
@@ -1535,7 +1543,7 @@ pack_gui('LabFrame', 'Primer Tm', 'seq_tm_l', \$page_sequencingf);
pack_gui('Entry', \$min_tm_seq, 'smintm', 3);
pack_gui('Label', '-');
pack_gui('Entry', \$max_tm_seq, 'smaxtm', 3);
- pack_gui('Label', 'C');
+ pack_gui('Label', '°C');
pack_gui('LabFrame', 'Primer Length', 'seq_len_l', \$page_sequencingf);
nr(\$packed_widgets{seq_len_l});
@@ -1567,7 +1575,7 @@ pack_gui('LabFrame', 'Options', 'seq_options_l', \$page_sequencingf);
nr('', 0);
pack_gui('Checkbutton', 'Exclude self-complimentarity > -', 'exclude_pd_seq', \$exclude_pd_seq);
pack_gui('Entry', \$seq_pd_min, 'spdmin', 3);
- pack_gui('Label', 'dG37');
+ pack_gui('Label', 'dG°37');
pack_gui('LabFrame', 'Sequence', 'seq_seq_l', \$page_sequencingf);
nr(\$packed_widgets{seq_seq_l});
@@ -1609,9 +1617,9 @@ pack_gui('LabFrame', 'Primer Tm', 'bisul_tm_l', \$page_bisul_seqf);
pack_gui('Entry', \$min_tm_bs, 'bisul_mintm', 3);
pack_gui('Label', '-');
pack_gui('Entry', \$max_tm_bs, 'bisul_maxtm', 3);
- pack_gui('Label', 'C Difference');
+ pack_gui('Label', '°C Difference');
pack_gui('Entry', \$max_diff_bs, 'bisul_maxdiff', 3);
- pack_gui('Label', 'C');
+ pack_gui('Label', '°C');
pack_gui('LabFrame', 'Primer Length', 'bisul_len_l', \$page_bisul_seqf);
nr(\$packed_widgets{bisul_len_l});
@@ -1695,9 +1703,9 @@ pack_gui('LabFrame', 'Primer Tm', 'qprimer_tm_l', \$page_qpcrf);
pack_gui('Entry', \$min_tm_q, 'qmintm', 3);
pack_gui('Label', '-');
pack_gui('Entry', \$max_tm_q, 'qmaxtm', 3);
- pack_gui('Label', 'C Difference');
+ pack_gui('Label', '°C Difference');
pack_gui('Entry', \$max_diff_q, 'qmaxdiff', 3);
- pack_gui('Label', 'C');
+ pack_gui('Label', '°C');
pack_gui('LabFrame', 'Primer Length', 'qprimer_len_l', \$page_qpcrf);
nr(\$packed_widgets{qprimer_len_l});
@@ -3509,7 +3517,7 @@ sub get_tm {
$packed_widgets{dim}->insert('end', "Warning: reverse primer run found\n", 'red') if ($rprimer =~ /(C{$run,}|A{$run,}|G{$run,}|T{$run,})/);
$packed_widgets{dim}->insert('end', "Warning: reverse primer repeat found\n", 'red') if ($rprimer =~ /(.{2,})\1{$repeat_real,}/);
- $packed_widgets{dim}->insert('end', "Most stable 3' extensible primer-dimers (at $pd_temperatureC), if any\n\n", 'blue');
+ $packed_widgets{dim}->insert('end', "Most stable 3' extensible primer-dimers (at $pd_temperature°C), if any\n\n", 'blue');
my ($pd1, $pd2, $pd3);
if ($fprimer && !check_degenerate($fprimer)) {
@@ -3542,7 +3550,7 @@ sub get_tm {
}
# $pd_full = 1;
- $packed_widgets{dim}->insert('end', "\nMore stable non-extensible primer-dimers (at $pd_temperatureC), if any\n\n", 'blue');
+ $packed_widgets{dim}->insert('end', "\nMore stable non-extensible primer-dimers (at $pd_temperature°C), if any\n\n", 'blue');
if ($fprimer && !check_degenerate($fprimer)) {
primer_dimer($fprimer,$fprimer,1);
@@ -3581,16 +3589,16 @@ sub get_tm {
my $primer_text = <<EOT;
Forward primer: $fprimer
-Tm: $fprimer_tmC\t\tLength: $fprimer_len bases
-dS: $fprimer_ds eu\t\tdH: $fprimer_dh kcal/mol
-dG$pd_temperature: $fprimer_dg kcal/mol
+Tm: $fprimer_tm°C\t\tLength: $fprimer_len bases
+dS°: $fprimer_ds eu\t\tdH°: $fprimer_dh kcal/mol
+dG°$pd_temperature: $fprimer_dg kcal/mol
Reverse primer: $rprimer
-Tm: $rprimer_tmC\t\tLength: $rprimer_len bases
-dS: $rprimer_ds eu\t\tdH: $rprimer_dh kcal/mol
-dG$pd_temperature: $rprimer_dg kcal/mol
+Tm: $rprimer_tm°C\t\tLength: $rprimer_len bases
+dS°: $rprimer_ds eu\t\tdH°: $rprimer_dh kcal/mol
+dG°$pd_temperature: $rprimer_dg kcal/mol
$dimer_text\n
@@ -4265,10 +4273,12 @@ sub copy_selected_primers {
# get selected primers
my @sel = $$ref->selectionGet;
- # Clipboard copying routine
- my $clip = ($page eq "seq") ?
- "Name\tForward Primer\tPos\tLen\tTm\n" :
- "Name\tForward Primer\tPos\tLen\tTm\tName\tReverse Primer\tPos\tLen\tTm\tAmp\tdG\n";
+ # Clipboard copying routine
+ my $clip;
+
+ # $clip = ($page eq "seq") ?
+ # "Name\tForward Primer\tPos\tLen\tTm\n" :
+ # "Name\tForward Primer\tPos\tLen\tTm\tName\tReverse Primer\tPos\tLen\tTm\tAmp\tdG\n";
my (@gene_array, $gene_frame, $seq);
if ($page eq "pd" && (($primer_seq_5f) || ($primer_seq_5r))) {
@@ -4285,13 +4295,23 @@ sub copy_selected_primers {
my @details;
if ($page eq "seq") {
- @details = (0 .. 3);
+ @details = ( 0, 100, 100, 1, 2, 3);
} else {
- @details = ( 0 .. 4, 8, 6, 7, 9, 10 );
+ @details = ( 0, 100, 100, 1, 2, 3, 200, 4, 100, 100, 8, 6, 7, 9, 10 );
}
for my $j (@details) {
# Names
+ if ($j == 100) {
+ $clip .= "\t";
+ next;
+ }
+
+ if ($j == 200) {
+ $clip .= "\n";
+ next;
+ }
+
if ($j == 0) {
$clip .= $file_name."_".$$slist[$sel][1]."F\t";
} elsif ($j == 4) {
@@ -4855,43 +4875,46 @@ sub fetch_ensembl {
my %trans;
my @enst_readable;
- if(length $response->{content}) {
- my $gene = decode_json($response->{content});
-
- push @gene_names, $gene->{description};
-
- }
-
-
- if (@gene_names) {
- # Ask user to confirm gene identity or pick the gene of interest if multiple matches
- my $ensembl_mm = $top->Toplevel(-title=>"Select gene of interest ...");
- my $ensembl_mm_f = $ensembl_mm->Frame()->pack(-fill=>'both', -pady=>7);
- my $ensembl_mm_fb = $ensembl_mm->Frame()->pack(-side=>'bottom', -fill=>'none');
- nr(\$ensembl_mm_f);
- pack_gui('Label', "Found ".($#gene_names+1)." matching gene".($#gene_names > 0 ? 's' : '')." ...", "ensemble_mm_d_note");
- nr();
- $name = $gene_names[0];
- pack_gui('BrowseEntry', \$name, 'ensembl_mm_d_genes', \@gene_names, 40);
-
- my $cancel=1;
- nr(\$ensembl_mm_fb);
- pack_gui('Button', 'OK', 'ensembl_ok', sub {
- $cancel=undef;
- $ensembl_mm->destroy;
- $gene_id = $ids{$name}[0];
- }, "active");
- pack_gui('Button', 'Cancel', 'ensembl_cancel', sub {
- $ensembl_mm->destroy;
- });
-
- $ensembl_mm->Icon(-image => $pixmap);
-
- # (we need it to freeze execution at this point, since the user may
- # wish to cancel and refine their choice)
- $ensembl_mm->waitWindow;
- return if $cancel;
- }
+ #if(length $response->{content}) {
+ # my $gene = decode_json($response->{content});
+ #
+ # use Data::Dumper;
+ # print Dumper($gene);
+ #
+ # push @gene_names, $gene->{display_name};
+ #
+ #}
+ #
+ #
+ #if (@gene_names>1) {
+ # # Ask user to confirm gene identity or pick the gene of interest if multiple matches
+ # my $ensembl_mm = $top->Toplevel(-title=>"Select gene of interest ...");
+ # my $ensembl_mm_f = $ensembl_mm->Frame()->pack(-fill=>'both', -pady=>7);
+ # my $ensembl_mm_fb = $ensembl_mm->Frame()->pack(-side=>'bottom', -fill=>'none');
+ # nr(\$ensembl_mm_f);
+ # pack_gui('Label', "Found ".($#gene_names+1)." matching gene".($#gene_names > 0 ? 's' : '')." ...", "ensemble_mm_d_note");
+ # nr();
+ # $name = $gene_names[0];
+ # pack_gui('BrowseEntry', \$name, 'ensembl_mm_d_genes', \@gene_names, 40);
+ #
+ # my $cancel=1;
+ # nr(\$ensembl_mm_fb);
+ # pack_gui('Button', 'OK', 'ensembl_ok', sub {
+ # $cancel=undef;
+ # $ensembl_mm->destroy;
+ # $gene_id = $ids{$name}[0];
+ # }, "active");
+ # pack_gui('Button', 'Cancel', 'ensembl_cancel', sub {
+ # $ensembl_mm->destroy;
+ # });
+ #
+ # $ensembl_mm->Icon(-image => $pixmap);
+ #
+ # # (we need it to freeze execution at this point, since the user may
+ # # wish to cancel and refine their choice)
+ # $ensembl_mm->waitWindow;
+ # return if $cancel;
+ #}
# Having selected the gene, we can now get the transcripts ...
@@ -4899,6 +4922,7 @@ sub fetch_ensembl {
if(length $response->{content}) {
my $gene = decode_json($response->{content});
$gene_id = $gene->{id};
+ $name = $gene->{display_name};
foreach my $v (@{ $gene->{Transcript}}) {
if ($v->{Translation}) {
push @enst_readable, "$v->{id} $v->{display_name} (size: $v->{Translation}->{length} aa)";
@@ -5363,6 +5387,94 @@ EOT
}
+#---------------------#
+# Copy amp sequences #
+#---------------------#
+
+sub copy_amp {
+ my ($hlist_ref, $slist) = get_variables(qw(hlist primers));
+ my $nb_page = which_nb_page();
+ if ($nb_page eq "primer") {
+ dialogue("You can't generate a report from the primer information page - please switch to the project page first");
+ return;
+ }
+
+ my ($hlist_sel) = $$hlist_ref->selectionGet;
+ unless (@$slist && defined($hlist_sel)) {
+ dialogue("The Copy Amp function saves the statistics and alignment of a particular primer pair - please select a primer pair first");
+ return;
+ }
+
+ my $fprimer_mod = $fprimer = $$slist[$hlist_sel][0];
+ my $rprimer_mod = $rprimer = $$slist[$hlist_sel][4] unless $nb_page eq 'seq';
+
+ my $fprimer_len = $$slist[$hlist_sel][2];
+ my $rprimer_len = $$slist[$hlist_sel][6];
+
+ my $fprimerpos = $$slist[$hlist_sel][1];
+ my $rprimerpos = $$slist[$hlist_sel][8] unless $nb_page eq 'seq';
+ my $amplicon_size = $$slist[$hlist_sel][9] unless $nb_page eq 'seq';
+
+ # Generate modified primers:
+ my (@gene_array, $gene_frame, $seq);
+ if ($nb_page eq "pd" && (($primer_seq_5f) || ($primer_seq_5r))) {
+ $seq = get_seq();
+ @gene_array=find_gene($seq);
+ $gene_frame=$gene_array[0][0]%3;
+ }
+ $seq = get_seq();
+
+ for my $primer ($fprimer, $rprimer) {
+ if ($nb_page eq "bis") {
+ # Primer redundancy for CpG residues:
+ # Replaces T with Y (pyrimidine) for forward
+ # Replaces A with R (purine) for reverse
+
+ my $f_original = $$slist[$hlist_sel][11];
+ for my $i (0 .. length($f_original)) {
+ if (substr($f_original, $i, 2) eq "CG") {
+ substr($fprimer_mod, $i, 1) = 'Y';
+ }
+ }
+ my $r_original = $$slist[$hlist_sel][12];
+ for my $i (0 .. length($r_original)) {
+ if (substr($r_original, $i, 2) eq "CG") {
+ substr($rprimer_mod, $i, 1) = 'R';
+ }
+ }
+ } elsif ($nb_page eq "pd") {
+ if ($primer_seq_5f) {
+ my ($primer_seq_5f_real, $insert_f) = add_cloning($seq, $fprimer, $fprimerpos);
+ $fprimer_mod = uc("$primer_seq_5f_real$insert_f$fprimer");
+ }
+
+ if ($primer_seq_5r) {
+ my ($primer_seq_5r_real, $insert_r) = (add_cloning($seq, '', '', '', $rprimer, $rprimerpos))[5,6];
+ $rprimer_mod = uc("$primer_seq_5r_real$insert_r$rprimer");
+ print STDOUT $rprimer_mod,"\n";
+ my $rprimer_mod_rev = reverse(complement($rprimer_mod));
+ print STDOUT $rprimer_mod_rev,"\n";
+ }
+ }
+ }
+
+ print STDOUT "DEBUG: $seq\n\n";
+ print STDOUT "DEBUT: $fprimerpos+$fprimer_len, $rprimerpos-$rprimer_len-$fprimerpos-$fprimer_len+1\n\n";
+
+ my $dna = substr($seq, $fprimerpos+$fprimer_len, $rprimerpos-$rprimer_len-$fprimerpos-$fprimer_len+1);
+ my $rprimer_mod_rev = reverse(complement($rprimer_mod));
+ my $ampseq = $fprimer_mod.$dna.$rprimer_mod_rev;
+
+ print STDOUT "---ampseq---\n";
+ print STDOUT $ampseq;
+ print STDOUT "\n---ampseq---\n\n";
+
+ $top->clipboardClear;
+ $top->clipboardAppend($ampseq);
+}
+
+
+
#---------------#
# Gui dialogues #
#---------------#
@@ -5416,7 +5528,7 @@ sub info {
my $text = <<EOT;
PerlPrimer v$version
-Copyright 2003-2017 Owen Marshall\n
+Copyright © 2003-2017 Owen Marshall\n
EOT
my $text2 = <<EOT;
An application to design primers for PCR, Bisulphite PCR, Real-time PCR and Sequencing.
@@ -5564,7 +5676,7 @@ EOT
my $text_entropy=<<EOT;
Entropy corrections for PCR salt conditions are based on:
-von Ahsen N, Wittwer CT, Schtz E. Oligonucleotide Melting Temperatures under PCR Conditions: Nearest-Neighbor Corrections for Mg2+, Deoxynucleotide Triphosphate, and Dimethyl Sulfoxide Concentrations with Comparison to Alternative Empirical Formulas. Clinical Chemistry. 2001; 47(11):1956-1961
+von Ahsen N, Wittwer CT, Schütz E. Oligonucleotide Melting Temperatures under PCR Conditions: Nearest-Neighbor Corrections for Mg2+, Deoxynucleotide Triphosphate, and Dimethyl Sulfoxide Concentrations with Comparison to Alternative Empirical Formulas. Clinical Chemistry. 2001; 47(11):1956-1961
EOT
my $text_cpg=<<EOT;
@@ -5585,6 +5697,7 @@ Steffen Moeller
Karl Kashofer
Henning Lenz
Nick Kennedy
+Charles Plessy
EOT
$packed_widgets{ack_text}->insert('0.1', "Restriction enzyme data\n\n", 'bold');
@@ -5884,7 +5997,7 @@ sub prefs {
nr();
pack_gui('Label', 'Calculate primer-dimer dG at ', 'prefs_dimer_temp');
pack_gui('Entry', \$pd_temperature, 'prefs_dimer_temp', 3);
- pack_gui('Label', 'C');
+ pack_gui('Label', '°C');
nr(\$prefs_page_connection_f, 2);
nr();
@@ -7911,65 +8024,627 @@ sub load_icon_data {
$perlprimer_icon = <<'end_of_pixmap';
/* XPM */
-static char * dna_icon2_xpm[] = {
-"32 32 25 1",
-" c #FFFFFF",
-". c #402E33",
-"+ c #A0302D",
-"@ c #918FC4",
-"# c #B89590",
-"$ c #CAC7EE",
-"% c #E4B82A",
-"& c #969096",
-"* c #E3382B",
-"= c #924E32",
-"- c #E76029",
-"; c #EFD4C7",
-"> c #69647F",
-", c #F9FBF8",
-"' c #DD6C69",
-") c #80696A",
-"! c #C0817E",
-"~ c #9F6160",
-"{ c #E08B27",
-"] c #F7B6B3",
-"^ c #D2D1CF",
-"/ c #B3AEB2",
-"( c #F92C2B",
-"_ c #AEACF1",
-": c #E7A19D",
-" *(;,,;:>@_>##!((;=((+ ",
-" -;,,/>@_@/^,;(-;)=. ",
-" +*~&#/__&,,,-(({ ",
-" .!,::#.>*',;*(** ",
-" ),;~&,'--,,~=++ ",
-" &/&,!(*%:^) ",
-" +#,'*({(#& ",
-" .(:,^+=**/^. ",
-" +(%%],,#&&&)++ ",
-" +({*(!&>>....~ ",
-" +#+{(()$@@@>)!^^ ",
-" +%;^/))/$____::,,!(+ ",
-" ({(*;/&&&@)>)!#,,/*+ ",
-" +-((~^^,__@:],@$^,;= ",
-" .=~&,,,___:]___,#+*+ ",
-" =*#/&&&&>.!]$_$^!(*** ",
-" +**+#__#:@@/^//,,]'%* ",
-" ++./__::__,,,^+'#/{ ",
-" &/@#!@_$,^'*(-(+ ",
-" !,##>&&^/,]({{*+ ",
-" &,:@_@~'/^,,{{+ ",
-" /~>@@**-(~,:+ ",
-" ).&(%-(*,) ",
-" )#^^,;%{*~/&) ",
-" (-*+,,'(~))&/. ",
-" {((*;,;+))!))+ ",
-" %-(',,,>)!&^^'= ",
-" =*=!](*!,/>>)~#,,/*+ ",
-" **(;,''~.>>>&:];':(* ",
-" *(*,,,^>>@@_$/^'**++ ",
-" +=*{,,/)~@__>^,,,-* ",
-" *(''*!)#~.>@$]];,;((+ "};
+static char * perlprimer40_xpm[] = {
+"40 40 579 2",
+" c None",
+". c #FFFFFF",
+"+ c #FEFEFE",
+"@ c #C9C8C8",
+"# c #F6F6F5",
+"$ c #FBFBFB",
+"% c #6E6D6D",
+"& c #EFF1F1",
+"* c #51231B",
+"= c #5E514F",
+"- c #DEDEDE",
+"; c #0D111C",
+"> c #2A3141",
+", c #2B3040",
+"' c #2B303E",
+") c #2E3442",
+"! c #2C303D",
+"~ c #323744",
+"{ c #2E323D",
+"] c #343844",
+"^ c #3E414D",
+"/ c #2A2C34",
+"( c #454C5C",
+"_ c #4C505F",
+": c #545968",
+"< c #5E636F",
+"[ c #686D77",
+"} c #727680",
+"| c #7A7D86",
+"1 c #898B92",
+"2 c #8D8E91",
+"3 c #403837",
+"4 c #DD624D",
+"5 c #492823",
+"6 c #FDFFFF",
+"7 c #09090B",
+"8 c #333B56",
+"9 c #364A6C",
+"0 c #49587B",
+"a c #465479",
+"b c #435278",
+"c c #47567E",
+"d c #4C5C86",
+"e c #495A85",
+"f c #4C5E8A",
+"g c #4F618F",
+"h c #151A28",
+"i c #1B367F",
+"j c #15317C",
+"k c #173583",
+"l c #1A3989",
+"m c #1A3A8C",
+"n c #1E4096",
+"o c #1F429B",
+"p c #204091",
+"q c #100E17",
+"r c #B75240",
+"s c #D35F4B",
+"t c #974334",
+"u c #C4C6C6",
+"v c #F5F7F7",
+"w c #360404",
+"x c #C60000",
+"y c #B40000",
+"z c #582C2B",
+"A c #E0E2E0",
+"B c #F3F2F0",
+"C c #E7E6E4",
+"D c #E3E2E0",
+"E c #E3E3E1",
+"F c #DAD9D7",
+"G c #D5D4D1",
+"H c #C4C3C2",
+"I c #CFCDC9",
+"J c #C8C6C1",
+"K c #B9B8B5",
+"L c #A9A9A7",
+"M c #A0A09F",
+"N c #989898",
+"O c #59595A",
+"P c #432921",
+"Q c #CB5C48",
+"R c #D15F4A",
+"S c #AD4C3B",
+"T c #B3B4B4",
+"U c #EFF3F3",
+"V c #570C0C",
+"W c #C50000",
+"X c #C20000",
+"Y c #C30000",
+"Z c #5A1010",
+"` c #E8EAE9",
+" . c #696565",
+".. c #99483A",
+"+. c #CF5E4A",
+"@. c #D05E4A",
+"#. c #D4604B",
+"$. c #391E1A",
+"%. c #FEFFFF",
+"&. c #796B6B",
+"*. c #B00000",
+"=. c #8D0307",
+"-. c #312550",
+";. c #39254F",
+">. c #131E48",
+",. c #374872",
+"'. c #3E4F79",
+"). c #3F517D",
+"!. c #303644",
+"~. c #4B546A",
+"{. c #646E89",
+"]. c #6A7694",
+"^. c #505766",
+"/. c #434143",
+"(. c #6E3930",
+"_. c #BC5341",
+":. c #D15D49",
+"<. c #653C35",
+"[. c #DCDCDC",
+"}. c #FDFDFD",
+"|. c #5B4141",
+"1. c #820206",
+"2. c #2D4FAA",
+"3. c #2F53B3",
+"4. c #2E53B3",
+"5. c #2E54B5",
+"6. c #10131D",
+"7. c #7B95D9",
+"8. c #738CCD",
+"9. c #2F2934",
+"0. c #58291F",
+"a. c #D7614C",
+"b. c #D15E4A",
+"c. c #C45946",
+"d. c #46302C",
+"e. c #FDFEFE",
+"f. c #F5F5F5",
+"g. c #705E5E",
+"h. c #800000",
+"i. c #9D0000",
+"j. c #980000",
+"k. c #990000",
+"l. c #950000",
+"m. c #8A0202",
+"n. c #100D10",
+"o. c #2A211F",
+"p. c #893C2E",
+"q. c #C05744",
+"r. c #D5604C",
+"s. c #DA624D",
+"t. c #7C3427",
+"u. c #928987",
+"v. c #FAFAFB",
+"w. c #737474",
+"x. c #7D0E0E",
+"y. c #C70000",
+"z. c #880101",
+"A. c #3C1B16",
+"B. c #823E32",
+"C. c #D8614C",
+"D. c #D25F4B",
+"E. c #B14F3D",
+"F. c #694C47",
+"G. c #BABCBC",
+"H. c #E4E4E4",
+"I. c #311313",
+"J. c #3C0C0C",
+"K. c #361A16",
+"L. c #BA5543",
+"M. c #CE5D49",
+"N. c #D15E49",
+"O. c #442019",
+"P. c #A8A2A1",
+"Q. c #FAFAFA",
+"R. c #ACAEAE",
+"S. c #7F5751",
+"T. c #A44C3C",
+"U. c #DB634D",
+"V. c #883E30",
+"W. c #59261D",
+"X. c #271616",
+"Y. c #CACCCC",
+"Z. c #F0F0F0",
+"`. c #463835",
+" + c #A44B3C",
+".+ c #C75A47",
+"++ c #904235",
+"@+ c #060915",
+"#+ c #192756",
+"$+ c #17244F",
+"%+ c #350000",
+"&+ c #67605F",
+"*+ c #F9F9F9",
+"=+ c #AAABAB",
+"-+ c #74433B",
+";+ c #CA5A47",
+">+ c #BD5340",
+",+ c #592D25",
+"'+ c #1C191D",
+")+ c #000009",
+"!+ c #171636",
+"~+ c #1B224B",
+"{+ c #0A1A39",
+"]+ c #BC0000",
+"^+ c #C80000",
+"/+ c #910000",
+"(+ c #2B2625",
+"_+ c #B4B3B4",
+":+ c #C8C6C5",
+"<+ c #7D3A30",
+"[+ c #D35F4A",
+"}+ c #A94C3B",
+"|+ c #704339",
+"1+ c #72716F",
+"2+ c #A19A99",
+"3+ c #842928",
+"4+ c #C40000",
+"5+ c #D30000",
+"6+ c #410000",
+"7+ c #616161",
+"8+ c #EFEFEF",
+"9+ c #DDDEDE",
+"0+ c #60322A",
+"a+ c #C75946",
+"b+ c #302222",
+"c+ c #4F5C83",
+"d+ c #4A5779",
+"e+ c #495167",
+"f+ c #3D424E",
+"g+ c #373940",
+"h+ c #3B3C41",
+"i+ c #2C2D30",
+"j+ c #54575D",
+"k+ c #403C41",
+"l+ c #2D0A0D",
+"m+ c #6D0102",
+"n+ c #7F0000",
+"o+ c #880000",
+"p+ c #970000",
+"q+ c #940000",
+"r+ c #080606",
+"s+ c #ADA8A7",
+"t+ c #857A78",
+"u+ c #843B2E",
+"v+ c #262325",
+"w+ c #3D4A6A",
+"x+ c #4E5F8D",
+"y+ c #546797",
+"z+ c #5B6FA4",
+"A+ c #6076B0",
+"B+ c #647BBA",
+"C+ c #6C86C9",
+"D+ c #495A86",
+"E+ c #21449E",
+"F+ c #274DAE",
+"G+ c #2B52B5",
+"H+ c #2550AF",
+"I+ c #234FAB",
+"J+ c #254BA2",
+"K+ c #234799",
+"L+ c #203878",
+"M+ c #770506",
+"N+ c #150805",
+"O+ c #76706F",
+"P+ c #FCFDFD",
+"Q+ c #805149",
+"R+ c #924437",
+"S+ c #BAB9B9",
+"T+ c #FDFCFC",
+"U+ c #E8E8E7",
+"V+ c #D6D6D5",
+"W+ c #BFBFBD",
+"X+ c #ADACAB",
+"Y+ c #959594",
+"Z+ c #626366",
+"`+ c #606268",
+" @ c #4E5056",
+".@ c #3C3F44",
+"+@ c #373A40",
+"@@ c #2B2E37",
+"#@ c #19121E",
+"$@ c #200B17",
+"%@ c #281122",
+"&@ c #9F0203",
+"*@ c #980101",
+"=@ c #9E4738",
+"-@ c #837E7D",
+";@ c #7A3A2F",
+">@ c #934234",
+",@ c #A1A1A1",
+"'@ c #E7E5E5",
+")@ c #684443",
+"!@ c #B20000",
+"~@ c #A60000",
+"{@ c #703329",
+"]@ c #86574F",
+"^@ c #7A382C",
+"/@ c #CD5D49",
+"(@ c #432F2C",
+"_@ c #808695",
+":@ c #818693",
+"<@ c #898E99",
+"[@ c #90949E",
+"}@ c #9B9EA7",
+"|@ c #A0A3AA",
+"1@ c #ABADB3",
+"2@ c #B0B2B7",
+"3@ c #B9BABE",
+"4@ c #C2C3C5",
+"5@ c #C1C1C2",
+"6@ c #C7C7C8",
+"7@ c #C7C8C8",
+"8@ c #C6C6C7",
+"9@ c #C8C8C9",
+"0@ c #C7C7C7",
+"a@ c #D1D2D2",
+"b@ c #332B2B",
+"c@ c #8E0507",
+"d@ c #510908",
+"e@ c #CC5C48",
+"f@ c #793A2F",
+"g@ c #7C392D",
+"h@ c #A04838",
+"i@ c #130B15",
+"j@ c #315CC8",
+"k@ c #2F56BC",
+"l@ c #2F56BB",
+"m@ c #2F56BA",
+"n@ c #2F55B9",
+"o@ c #2F56B9",
+"p@ c #3059C3",
+"q@ c #293042",
+"r@ c #7994D8",
+"s@ c #7993D7",
+"t@ c #7993D8",
+"u@ c #7993D6",
+"v@ c #7993D5",
+"w@ c #162438",
+"x@ c #854337",
+"y@ c #331613",
+"z@ c #7D0105",
+"A@ c #5F0200",
+"B@ c #3C3737",
+"C@ c #9F9F9E",
+"D@ c #969696",
+"E@ c #959596",
+"F@ c #929292",
+"G@ c #949495",
+"H@ c #939395",
+"I@ c #908F91",
+"J@ c #939495",
+"K@ c #898A8D",
+"L@ c #909193",
+"M@ c #8F9093",
+"N@ c #8D8F93",
+"O@ c #888B91",
+"P@ c #858890",
+"Q@ c #868B95",
+"R@ c #656B79",
+"S@ c #332C35",
+"T@ c #AF4E3C",
+"U@ c #D3604B",
+"V@ c #7A382D",
+"W@ c #7F6966",
+"X@ c #330E0C",
+"Y@ c #830505",
+"Z@ c #968F8F",
+"`@ c #B3AFAF",
+" # c #5C2B23",
+".# c #7D564F",
+"+# c #C6C5C4",
+"@# c #0E0000",
+"## c #710409",
+"$# c #270106",
+"%# c #414045",
+"&# c #5D5E62",
+"*# c #616265",
+"=# c #616266",
+"-# c #4E5053",
+";# c #5A595A",
+"># c #636366",
+",# c #656567",
+"'# c #6B6D72",
+")# c #54595E",
+"!# c #6A4943",
+"~# c #AD4E3D",
+"{# c #4D241D",
+"]# c #D5D6D6",
+"^# c #A09F9F",
+"/# c #680202",
+"(# c #CD0000",
+"_# c #250812",
+":# c #2B5AC3",
+"<# c #2C56BB",
+"[# c #2A55B9",
+"}# c #2A54B9",
+"|# c #2C54B9",
+"1# c #2B52B6",
+"2# c #264AA8",
+"3# c #3E4C70",
+"4# c #7B97DE",
+"5# c #7994DA",
+"6# c #5870A5",
+"7# c #3C282E",
+"8# c #944436",
+"9# c #DB624D",
+"0# c #B34F3E",
+"a# c #664F4B",
+"b# c #F9FBFB",
+"c# c #64605F",
+"d# c #4C0202",
+"e# c #62070F",
+"f# c #660810",
+"g# c #68050B",
+"h# c #690307",
+"i# c #310D11",
+"j# c #34363A",
+"k# c #929598",
+"l# c #747679",
+"m# c #4A4D53",
+"n# c #261E21",
+"o# c #B45140",
+"p# c #883F32",
+"q# c #999494",
+"r# c #8D8F8E",
+"s# c #430000",
+"t# c #BA0101",
+"u# c #D40000",
+"v# c #7E0000",
+"w# c #150606",
+"x# c #AE4F3E",
+"y# c #A64939",
+"z# c #6F504A",
+"A# c #BEBFBF",
+"B# c #141616",
+"C# c #A00000",
+"D# c #BC0101",
+"E# c #980303",
+"F# c #261310",
+"G# c #5C2F27",
+"H# c #6F3B31",
+"I# c #8F8E8C",
+"J# c #9DA0A0",
+"K# c #241514",
+"L# c #864133",
+"M# c #C35846",
+"N# c #DB634E",
+"O# c #B85442",
+"P# c #50312B",
+"Q# c #A39D9B",
+"R# c #E6E7E7",
+"S# c #FCFCFC",
+"T# c #A39C9B",
+"U# c #54271F",
+"V# c #D25E4A",
+"W# c #C45845",
+"X# c #9A4536",
+"Y# c #281922",
+"Z# c #0B0C1B",
+"`# c #B70909",
+" $ c #BC8989",
+".$ c #DCDEDE",
+"+$ c #ECECEC",
+"@$ c #423533",
+"#$ c #C05644",
+"$$ c #D35E49",
+"%$ c #411F1B",
+"&$ c #100D18",
+"*$ c #264596",
+"=$ c #2F57BD",
+"-$ c #224594",
+";$ c #930000",
+">$ c #C10000",
+",$ c #760909",
+"'$ c #969292",
+")$ c #C1C3C4",
+"!$ c #6C3B32",
+"~$ c #D45F4A",
+"{$ c #994536",
+"]$ c #80544D",
+"^$ c #979594",
+"/$ c #A7A9AC",
+"($ c #929298",
+"_$ c #4F4545",
+":$ c #340000",
+"<$ c #6F0001",
+"[$ c #960000",
+"}$ c #6A3E3E",
+"|$ c #F2F1F1",
+"1$ c #703F37",
+"2$ c #BF5846",
+"3$ c #2B1F23",
+"4$ c #64686E",
+"5$ c #ACADAF",
+"6$ c #C4C4C6",
+"7$ c #E4E4E5",
+"8$ c #F2F2F2",
+"9$ c #F6F6F7",
+"0$ c #B7B8B8",
+"a$ c #3F1313",
+"b$ c #B40001",
+"c$ c #BA0000",
+"d$ c #510E0E",
+"e$ c #C7C3C3",
+"f$ c #5C4F4D",
+"g$ c #D9624D",
+"h$ c #6B3128",
+"i$ c #48567A",
+"j$ c #7C99E0",
+"k$ c #7792D9",
+"l$ c #728BCE",
+"m$ c #6D85C4",
+"n$ c #677EB9",
+"o$ c #657BB4",
+"p$ c #47567F",
+"q$ c #253D7C",
+"r$ c #2E4D97",
+"s$ c #1F3C80",
+"t$ c #2B3674",
+"u$ c #2D3169",
+"v$ c #2F2B5D",
+"w$ c #322755",
+"x$ c #3C1530",
+"y$ c #670202",
+"z$ c #8E9393",
+"A$ c #F4F6F7",
+"B$ c #582D26",
+"C$ c #66413A",
+"D$ c #6E7276",
+"E$ c #646568",
+"F$ c #606164",
+"G$ c #5E616A",
+"H$ c #616674",
+"I$ c #5F677A",
+"J$ c #5F6983",
+"K$ c #454E64",
+"L$ c #314476",
+"M$ c #314987",
+"N$ c #2E488C",
+"O$ c #2B4893",
+"P$ c #284696",
+"Q$ c #234091",
+"R$ c #2B4697",
+"S$ c #254595",
+"T$ c #8F0307",
+"U$ c #830101",
+"V$ c #DBD9D9",
+"W$ c #BBBCBD",
+"X$ c #A04637",
+"Y$ c #DD644E",
+"Z$ c #593D38",
+"`$ c #FFFFFE",
+" % c #FCFCFB",
+".% c #F7F7F7",
+"+% c #F4F4F4",
+"@% c #F2F3F3",
+"#% c #F3F3F4",
+"$% c #B4B2B2",
+"%% c #570000",
+"&% c #BA0001",
+"*% c #BE0000",
+"=% c #BF0000",
+"-% c #543737",
+";% c #A0A0A0",
+">% c #CA5945",
+",% c #633931",
+"'% c #DFE0E0",
+")% c #CDD1D1",
+"!% c #662424",
+"~% c #B90000",
+"{% c #9A0000",
+"]% c #B6AEAE",
+"^% c #C9C6C6",
+"/% c #47312D",
+"(% c #DBDADA",
+"_% c #5E4343",
+":% c #625555",
+"<% c #FAFBFB",
+"[% c #F8F8F8",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . + . . . . . . . . . . . . . . . . . . . @ # . . . . . . . . ",
+". . . . . . . . $ % . . . . . . . . . . . . . . . . . . . & * = . . . . . . . . ",
+". . . . . . . . - ; > , ' ) ! ~ { ] ^ / ( _ : < [ } | 1 2 3 4 5 6 . . . . . . . ",
+". . . . . . . . 7 8 9 0 a b c d e f g h i j k l m n o p q r s t u . . . . . . . ",
+". . . . . . . v w x y z A B C D E F G H I J K L M N O P Q R R S T . . . . . . . ",
+". . . . . . . U V W X Y Z ` . . . . . . . . . . . ...+. at .@.#.$.%.. . . . . . . ",
+". . . . . . . . &.*.=.-.;.>.,.'.'.).!.~.{.].^./.(._.s @. at .:.<.[.. . . . . . . . ",
+". . . . . . . . }.|.1.2.3.3.3.3.4.5.6.7.8.9.0.a.b. at .@.b.c.d.e.. . . . . . . . . ",
+". . . . . . . . . f.g.h.i.j.k.k.l.m.n.o.p.q.r. at .@. at .s.t.u.v.. . . . . . . . . . ",
+". . . . . . . . . . . w.x.X y.*.z.A.B.C.D. at .@. at .r.E.F.G.. . . . . . . . . . . . ",
+". . . . . . . . . . . . H.I.J.K.L.M.b. at .@. at .D.N.O.P.Q.. . . . . . . . . . . . . ",
+". . . . . . . . . . . . R.S.T.U.b. at .@.s U.V.W.X.Y.. . . . . . . . . . . . . . . ",
+". . . . . . . . . . Z.`. +s @. at .@.b..+++ at +#+$+y.%+&+*+. . . . . . . . . . . . . ",
+". . . . . . . . . =+-+;+D. at .@.a.>+,+'+)+!+~+{+]+^+/+(+_+. . . . . . . . . . . . ",
+". . . . . . . . :+<+s. at .b.[+}+|+1+. . . 2+3+*.y.4+4+5+6+7+8+. . . . . . . . . . ",
+". . . . . . . 9+0+s @. at .a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+. . . . . . . . . ",
+". . . . . . . t+C. at .#.u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+. . . . . . . ",
+". . . . . . . Q+D.D.R+S+. . T+U+V+W+X+Y+Z+`+ @. at +@@@#@$@%@&@*@=@- at . . . . . . . ",
+". . . . . . . ;@b.>@, at . . . . . . . . . . . . . . . '@)@!@Y ~@{@]@. . . . . . . ",
+". . . . . . . ^@/@(@_@:@<@[@}@|@1 at 2@3 at 4@5 at 6@7 at 8@9 at 0@9 at a@b at c@d at e@f at . . . . . . . ",
+". . . . . . . g at h@i at j@k at k@l at l@l at m@n at o@p at q@r at r@s at t@s at s@u at v@w@}+ at .^@. . . . . . . ",
+". . . . . . . x at y@z at A@B at C@D at E@F at G@H at I@J at K@L at M@N at O@P at Q@R at S@T at U@@.V at . . . . . . . ",
+". . . . . . . W at X@x 4+Y at Z@. . . . . . . . . . . . }.`@ #C. at .@.D..#. . . . . . . ",
+". . . . . . . +#@#Y 4+##$#%#&#*#*#*#=#-#;#>#,#'#)#!#~##. at .@.:.{#]#. . . . . . . ",
+". . . . . . . . ^#/#(#_#:#<#[#}#|#1#2#3#4#5#6#7#8#9#@. at .D.0#a#b#. . . . . . . . ",
+". . . . . . . . . c#d#!@e#f#g#h#i#j#k#l#m#n#o#/@b. at .@.C.p#q#+ . . . . . . . . . ",
+". . . . . . . . . . r#s#t#y.x ^+u#v#w#(.x#s.b. at .@.a.y#z#A#. . . . . . . . . . . ",
+". . . . . . . . . . . f.B#C#D#E#F#G#a.b. at .@. at .@.e at H#I#. . . . . . . . . . . . . ",
+". . . . . . . . . . . . }.J#K#L#M#r. at .@. at .N#O#P#Q#R#. . . . . . . . . . . . . . ",
+". . . . . . . . . . . S#T#U#V#D. at .@.r.W#X#Y#Z#`# $.$. . . . . . . . . . . . . . ",
+". . . . . . . . . . +$@$#$b. at .@.D.$$%$&$*$=$-$;$>$,$'$. . . . . . . . . . . . . ",
+". . . . . . . . . )$!$~$@. at .s.{$]$^$/$($_$:$<$>$>$x [$}$9+. . . . . . . . . . . ",
+". . . . . . . . |$1$C. at .@.2$3$4$5$6$7$8$9$0$a$b$c$c$]+W d$e$. . . . . . . . . . ",
+". . . . . . . . f$a+ at .g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$. . . . . . . . . ",
+". . . . . . . A$B$#.e at C$D$E$F$&#G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$. . . . . . . . ",
+". . . . . . . W$X$Y$Z$Z.. . . . `$}. %Q..%.%f.+%@%#%$%%%&%*%=%-%. . . . . . . . ",
+". . . . . . . ;%>%,%'%. . . . . . . . . . . . . . . . )%!%~%{%]%. . . . . . . . ",
+". . . . . . . ^%/%(%. . . . . . . . . . . . . . . . . . . _%:%+ . . . . . . . . ",
+". . . . . . . . <%. . . . . . . . . . . . . . . . . . . . <%[%. . . . . . . . . "};
end_of_pixmap
$icon_open = <<'end_of_pixmap';
View it on GitLab: https://salsa.debian.org/med-team/perlprimer/compare/420ef40c813569e261e1ed80427945a54b372c7f...c75d91379279e457985215ed9ac48b514583f4e7
--
View it on GitLab: https://salsa.debian.org/med-team/perlprimer/compare/420ef40c813569e261e1ed80427945a54b372c7f...c75d91379279e457985215ed9ac48b514583f4e7
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20190213/03b984c3/attachment-0001.html>
More information about the debian-med-commit
mailing list