Primer3 Changelog

What's new in Primer3 2.3.5

Jan 7, 2013
  • Important changes:
  • The tag PRIMER_THERMODYNAMIC_ALIGNMENT was replaced by two new tags:
  • PRIMER_THERMODYNAMIC_OLIGO_ALIGNMENT which governs hairpin and oligo-oligo interactions. Therefore, whenever it is set to 1 (the default) thermodynamic alignments will be used for oligo-oligo interactions and hairpins.
  • PRIMER_THERMODYNAMIC_TEMPLATE_ALIGNMENT which governs the
  • oligo-template interactions and, when set to 1 (default is 0), will
  • cause primer3 to use the thermodynamic alignment against templates.
  • The reason for this change is to provide the option of using the old alignment for oligo-template interactions when the thermodynamic alignment is too slow or the template is too long (there is a hard limit THAL_MAX_SEQ=10k on the length of sequences involved in thermodynamic alignments).
  • Added corresponding functions to libprimer3.c and libprimer3.h:
  • p3_set_gs_primer_thermodynamic_oligo_alignment
  • p3_set_gs_primer_thermodynamic_template_alignment
  • Modified the error handling of non-memory related errors that can occur during the thermodynamic alignment. They are no longer fatal errors.
  • Made a performance improvement for the case when thermodynamic alignment is used for templates: the alignment is done only once for each oligo and the result is kept. This way we avoid performing the same expensive alignment more than once.
  • Removed io_version 3, which was only kept for backward compatibility with very old versions of primer3.
  • Fixed an error in which PRIMER_DNTP_CONC > PRIMER_SALT_DIVALENT causes Primer3 to crash.
  • Fixed a bug that made Primer3 not generate results in some cases when PRIMER_FIRST_BASE_INDEX is negative.
  • Minor corrections:
  • Added function p3_set_max_end_gc (sets max_end_gc in the primer_global_settings struct).
  • Removed intentional compile time division by zero in thal.c if macro INFINITY is defined.
  • Updated text in error messages from function thal() to make them more informative.

New in Primer3 2.3.4 (Jun 1, 2012)

  • Fixed error in which PRIMER_..._..._TEMPLATE_MISPRIMING_TH was calculated incorrectly in libprimer3.c

New in Primer3 2.3.2 (Mar 21, 2012)

  • Minor corrections:
  • _Removed_ warning if PRIMER_INTERNAL_SALT_DIVALENT > 0.0 but
  • PRIMER_INTERNAL_DNTP_CONC

New in Primer3 2.3.1 (Mar 21, 2012)

  • Minor corrections:
  • Added warnings if PRIMER_SALT_DIVALENT > 0.0 but PRIMER_DNTP_CONC
  • 0.0 but
  • PRIMER_INTERNAL_DNTP_CONC

New in Primer3 2.3.0 (Mar 21, 2012)

  • Changed the following default values:
  • Changing default oligo temperature calculations PRIMER_TM_FORMULA=1 (was 0) PRIMER_SALT_CORRECTIONS=1 (was 0)
  • Making thermodynamic secondary structure calculations the default:
  • PRIMER_THERMODYNAMIC_ALIGNMENT=1 (was 0)
  • The following need reasonable values to support the changes in 1.1 and 1.2 above:
  • PRIMER_SALT_DIVALENT=1.5 (was 0.0)
  • PRIMER_DNTP_CONC=0.6 (was 0.0)
  • To make old defaults easily accessible, we added a command line
  • argument, --default_version=1, which directs primer3_core to use the
  • old defaults. --default_version=2 directs primer3_core to use the new
  • defaults. The default is --default_version=2.
  • IMPORTANT: because PRIMER_THERMODYNAMIC_ALIGNMENT=1,
  • PRIMER_THERMODYNAMIC_PARAMETERS_PATH must point to the right location.
  • This tag specifies the path to the directory that contains all the
  • parameter files used by the thermodynamic approach. In Linux, there
  • are two *default* locations that are tested if this tag is not
  • defined: ./primer3_config/ and /opt/primer3_config/. For Windows,
  • there is only one default location: .\primer3_config\. If the the
  • parameter files are not in one these locations, be sure to set
  • PRIMER_THERMODYNAMIC_PARAMETERS_PATH
  • Changed default for
  • PRIMER_LIB_AMBIGUITY_CODES_CONSENSUS=0 (was 1)
  • (0 is almost always the the behavior one wants.)
  • To get the behavior of -default_version=1 when -default_version=2
  • set the following:
  • PRIMER_TM_FORMULA=0
  • PRIMER_SALT_CORRECTIONS=0
  • PRIMER_THERMODYNAMIC_ALIGNMENT=0
  • PRIMER_SALT_DIVALENT=0.0
  • PRIMER_DNTP_CONC=0.0
  • PRIMER_LIB_AMBIGUITY_CODES_CONSENSUS=1
  • To get the behavior of -default_version=2 when -default_version=1
  • set the following:
  • PRIMER_TM_FORMULA=1
  • PRIMER_SALT_CORRECTIONS=1
  • PRIMER_THERMODYNAMIC_ALIGNMENT=1
  • PRIMER_SALT_DIVALENT=1.5
  • PRIMER_DNTP_CONC=0.6
  • PRIMER_LIB_AMBIGUITY_CODES_CONSENSUS=0
  • We changed the NULL value for SEQUENCE_FORCE_{LEFT,RIGHT}_START_END to and made it an error to select PRIMER_FIRST_BASE_INDEX

New in Primer3 2.2.3 (Mar 21, 2012)

  • Minor error corrections, minor cleanup.
  • This is a stable release.

New in Primer3 2.2.2 Beta (Mar 21, 2012)

  • This release adds a performance enhancement for inputs involving
  • SEQUENCE_PRIMER_PAIR_OK_REGION_LIST.
  • This release adds two new tags, PRIMER_MIN_LEFT_THREE_PRIME_DISTANCE
  • and PRIMER_MIN_RIGHT_THREE_PRIME_DISTANCE

New in Primer3 2.2.1 Alpha (Mar 21, 2012)

  • This release adds several performance enhancements.

New in Primer3 2.2.0 Alpha (Mar 21, 2012)

  • This release adds multiple new features to primer3_core and related
  • C code.
  • The enhancements fall under several categories:
  • . PRIMER/OLIGO SECONDARY STRUCTURE AND PRIMER-DIMER AND TEMPLATE
  • MISPRIMING PREDICTION
  • We added capabilities for predicting secondary structure,
  • primer-dimer, and template mispriming based on a thermodynamic model.
  • INPUT/OUTPUT TAGS:
  • Added tags PRIMER_THERMODYNAMIC_ALIGNMENT,
  • PRIMER_INTERNAL_MAX_{HAIRPIN,SELF_ANY_TH,SELF_END_TH,TEMPLATE_MISHYB_TH},
  • PRIMER_INTERNAL_WT_{HAIRPIN,SELF_ANY_TH,SELF_END_TH,TEMPLATE_MISHYB_TH},
  • PRIMER_MAX_{HAIRPIN,SELF_ANY_TH,SELF_END_TH,TEMPLATE_MISPRIMING_TH},
  • PRIMER_PAIR_MAX_{COMPL_ANY_TH,COMPL_END_TH,HAIRPIN,TEMPLATE_MISPRIMING_TH},
  • PRIMER_PAIR_WT_{COMPL_ANY_TH,COMPL_END_TH,HAIRPIN,TEMPLATE_MISPRIMING_TH},
  • PRIMER_WT_{HAIRPIN,SELF_ANY_TH,SELF_END_TH,TEMPLATE_MISPRIMING_TH}
  • See the documentation for details. The tag PRIMER_THERMODYNAMICAL_ALIGNMENT=1 directs primer3_core to use the
  • thermodynamic alignments.
  • NEW EXECUTABLE: ntthal
  • ntthal is analogous to ntdpal. Between two sequences, ntthal finds
  • alignment/sec structure, that has the highest melting
  • temperature. Ntthal is based on nearest-neighbor thermodynamical
  • approach. For input parameters to ntthal, execute: ./ntthal (without
  • arguments).
  • . NEW COMMAND LINE FLAGS AND ARGUMENTS
  • primer3_core now has a more conventional command line. For example,
  • you can type primer3_core -output my_output -error my_error my_input
  • and primer3_core will take its input from my_input and put
  • its outputs in the files my_output and my_error. There is also a command line flag -echo_settings_file to cause the settings file contents to be echoed to output.
  • . NEW INPUT TAGS TO CONTROL PRIMER LOCATION
  • See the documentation for SEQUENCE_PRIMER_PAIR_OK_REGION_LIST. Tags
  • SEQUENCE_OVERLAP_JUNCTION_LIST,
  • PRIMER_MIN_3_PRIME_OVERLAP_OF_JUNCTION,
  • PRIMER_MIN_5_PRIME_OVERLAP_OF_JUNCTION have _replaced_
  • SEQUENCE_PRIMER_OVERLAP_POS and PRIMER_POS_OVERLAP_TO_END_DIST. See the documentation.

New in Primer3 2.0.0 Alpha (Mar 21, 2012)

  • This is major release, involving enhancements to functionality, software architecture, and input and output conventions.
  • INPUT/OUTPUT CHANGES:
  • A new command line flag, -io_version=3 provides backward compatible behavior for boulder IO input, and boulder IO output that is backward compatible except for error messages, warnings, and the text of PRIMER...EXPLAIN tags.
  • io_version=3 IS NOT the default -- you must specify it on the command line.
  • For the new default IO, we renamed many Boulder IO INPUT/OUTPUT TAGS
  • for clarification and easier integration into scripts
  • NEW OR IMPROVED FUNCTIONALITY:
  • Primer3 'settings' files were added. A settings file can be read in at program start up to set global parameters. Our intent is that parameter values suitable for particular primer design objectives can be easily stored and re-used.
  • We added new "tasks" such as selection of primer lists, sequencing primers, or cloning primers, or the checking of primers or primer pairs in the absence of a target sequence. See tag PRIMER_TASK.
  • It is now possible to request only unique primers when multiple primer pairs are requested. (In the past, each _pair_ was unique, but the same primer might occur in more than one pair). The user also has some control over what constitutes a 'unique' primer. See tag PRIMER_MIN_THREE_PRIME_DISTANCE.
  • When an illegal primer pair is specified for checking primer3, the program now assess it. In the past, primer3 assessed individual primers if they violated a constraint, but in some cases not pairs that violated constraints on pairs (such as product size).
  • We added new functionality with tags SEQUENCE_PRIMER_OVERLAP_POS, PRIMER_POS_OVERLAP_TO_END_DIST,
  • PRIMER_MAX_END_GC. Please see the documentation.
  • We added tags PRIMER_PAIR_MAX_COMPL_END and PRIMER_PAIR_MAX_COMPL_ANY, which previously took the same values as
  • PRIMER_SELF_{END,ANY} OTHER CHANGES TO BEHAVIOR:
  • We corrected a few errors and a mis-feature in the ways in which primer3 searches for primer pairs. Consequently, the latest version of primer3 will return different sets of primer pairs in a few instances.
  • INTERNAL CHANGES:
  • It is now possible to use the main primer3 functionality from a single C function. We cleanly separated the functionality of reading in Boulder IO records from the primer choosing / designing functionality. We also substantially simplified the organization and documentation of the main primer picking code, now in libprimer3.[ch]. The file libprimer3.h specifies the external interface, although it is not separately documented. It is also
  • possible to create a binary library file that provides this functionality (libprimer3.a or libprimer3.so in Unix/Linux). All C code is ANSI C.

New in Primer3 1.1.2 (Mar 21, 2012)

  • Updates to dpal.c so that no error forces an exit.
  • Adaptation in primer3_main.c and ntdpal_main.c to updated error handling in dpal().
  • Arranged for primer3_main.c align() to check for and circumvent local alignments to "targets" < nucleotides long, and added tests for this condition.
  • Comment and code readability updates in dpal.h and dpal.c

New in Primer3 1.1.1 (Mar 21, 2012)

  • Minor corrections