[Bioperl-l] Bioperl Primer3 Tm calculation of a pre-defined primer

Giles Weaver giles.weaver at googlemail.com
Wed Aug 27 10:39:19 UTC 2008

Hi Tony,

It isn't well documented, but Primer3 includes a program called oligotm,
which is used to calculate the Tm of short sequences (up to 32bp). You can
run it directly by typing something like "oligotm ACGTACGTACGTACGT" in the
terminal. Just typing oligotm will give you the options.

If you are using Linux, these snippets of code may help you call oligotm
from within a perl script:

use IPC::Open3;

sub _run_oligotm
    my ($class, $sequence) = @_;

    my $run = "oligotm -tp 1 -sc 1 $sequence";
    my $pid = open3(\*WTRFH, \*RDRFH, \*ERRFH, $run);
    close (WTRFH);

    my ($tm, $errors);
    while (<RDRFH>) { $tm .= $_;}
    while (<ERRFH>) { $errors .= $_;}
    chomp $tm;
    return ($tm, $errors);

You'll need to put this in a package or edit out the $class bit for it to

This is my first post to this list. I'm receiving the digest so replying to
posts is a bit of a faff. Can anyone recommend a better way of replying to
posts than replying to the digest, editing it and pasting the subject into
the subject field?

Giles Weaver
Unilever R&D

> ----------------------------------------------------------------------
> Message: 1
> Date: Tue, 19 Aug 2008 09:57:41 -0700
> From: "XQ Xu" <xxq.t.xu at gmail.com>
> Subject: [Bioperl-l] Bioperl Primer3 Tm calculation of a pre-defined
>        primer
> To: bioperl-l at lists.open-bio.org
> Message-ID:
>        <3fde82050808190957y271aa52eh30e39a438cc8a8e3 at mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
> Hi all,
> I'm using Primer3 to design primers (Bio::Tools::Primer3). I also need use
> Primer3 to calculate Tm for some pre-defined primers; however there is no
> direct way to calculate Tm with Primer3. I have to call Primer3 and supply
> a
> pre-defined primer, a template, etc to let it run and hopefully Primer3
> finds a pair of primers for me, then I have to open the output and find out
> what the Tm is for my pre-defined primer. Do I miss any function that can
> do
> this quickly for me?
> I know there's another module (Bio::SeqFeature::Primer) can do this
> quickly, but the Tm is calculated with different parameters; therefore it's
> not good to use it while I use Primer3 to design primers.
> Any input?
> Thanks!
> -Tony

More information about the Bioperl-l mailing list