[med-svn] r209 - in trunk/packages/primer3/branches/upstream/current: . src test test/primer_global_err

Charles Plessy charles-guest at alioth.debian.org
Sat Feb 17 05:15:43 CET 2007


Author: charles-guest
Date: 2007-02-17 05:15:41 +0100 (Sat, 17 Feb 2007)
New Revision: 209

Added:
   trunk/packages/primer3/branches/upstream/current/primer3-1.1.0-beta
   trunk/packages/primer3/branches/upstream/current/test/Makefile
   trunk/packages/primer3/branches/upstream/current/test/oligotm.txt
   trunk/packages/primer3/branches/upstream/current/test/oligotm_test.pl
   trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_1.in
   trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_1.out
   trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_1.out2
   trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_2.in
   trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_2.out
   trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_2.out2
   trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_3.in
   trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_3.out
   trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_3.out2
   trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_4.in
   trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_4.out
   trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_4.out2
   trunk/packages/primer3/branches/upstream/current/test/primer_tm_lc_masking_formatted_output
   trunk/packages/primer3/branches/upstream/current/test/primer_tm_lc_masking_input
   trunk/packages/primer3/branches/upstream/current/test/primer_tm_lc_masking_output
Modified:
   trunk/packages/primer3/branches/upstream/current/COPYING.txt
   trunk/packages/primer3/branches/upstream/current/README.txt
   trunk/packages/primer3/branches/upstream/current/src/Makefile
   trunk/packages/primer3/branches/upstream/current/src/boulder_input.c
   trunk/packages/primer3/branches/upstream/current/src/dpal.c
   trunk/packages/primer3/branches/upstream/current/src/format_output.c
   trunk/packages/primer3/branches/upstream/current/src/long_seq_tm_test_main.c
   trunk/packages/primer3/branches/upstream/current/src/oligotm.c
   trunk/packages/primer3/branches/upstream/current/src/oligotm.h
   trunk/packages/primer3/branches/upstream/current/src/oligotm_main.c
   trunk/packages/primer3/branches/upstream/current/src/primer3.c
   trunk/packages/primer3/branches/upstream/current/src/primer3.h
   trunk/packages/primer3/branches/upstream/current/src/primer3_main.c
   trunk/packages/primer3/branches/upstream/current/src/primer3_release.h
   trunk/packages/primer3/branches/upstream/current/src/release_notes.txt
   trunk/packages/primer3/branches/upstream/current/test/dpal_test.pl
   trunk/packages/primer3/branches/upstream/current/test/long_seq_tm_test.pl
   trunk/packages/primer3/branches/upstream/current/test/p3test.pl
   trunk/packages/primer3/branches/upstream/current/test/primer_boundary1_formatted_output
   trunk/packages/primer3/branches/upstream/current/test/primer_boundary_formatted_output
   trunk/packages/primer3/branches/upstream/current/test/primer_global_err/empty_1.out2
   trunk/packages/primer3/branches/upstream/current/test/primer_internal1_formatted_output
   trunk/packages/primer3/branches/upstream/current/test/primer_internal_formatted_output
   trunk/packages/primer3/branches/upstream/current/test/primer_mispriming_boundary1_formatted_output
   trunk/packages/primer3/branches/upstream/current/test/primer_mispriming_boundary2_formatted_output
   trunk/packages/primer3/branches/upstream/current/test/primer_mispriming_formatted_output
   trunk/packages/primer3/branches/upstream/current/test/primer_must_use_formatted_output
   trunk/packages/primer3/branches/upstream/current/test/primer_position_penalty_formatted_output
   trunk/packages/primer3/branches/upstream/current/test/primer_task_formatted_output
Log:
Load /tmp/tmp.0iQF5i/primer3-1.1.0~beta into
trunk/packages/primer3/branches/upstream/current.


Modified: trunk/packages/primer3/branches/upstream/current/COPYING.txt
===================================================================
--- trunk/packages/primer3/branches/upstream/current/COPYING.txt	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/COPYING.txt	2007-02-17 04:15:41 UTC (rev 209)
@@ -1,31 +1,2 @@
-Copyright (c) 1996,1997,1998,1999,2000,2001,2004,2006
-Whitehead Institute for Biomedical Research, Steve Rozen
-(http://jura.wi.mit.edu/rozen), and Helen Skaletsky
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-   * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-   * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-   * Neither the names of the copyright holders nor contributors may
-be used to endorse or promote products derived from this software
-without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
+Most of primer3 is released under the NEW BSD license; see the copyright notice in src/primer3.h.
+The oligotm library is released under GPL; see the file src/gpl.txt.

Modified: trunk/packages/primer3/branches/upstream/current/README.txt
===================================================================
--- trunk/packages/primer3/branches/upstream/current/README.txt	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/README.txt	2007-02-17 04:15:41 UTC (rev 209)
@@ -1,10 +1,13 @@
-primer3 release 1.0.1  (This version identical to 1.0b except version number.)
+primer3 release 1.1.0
+---------------------
 
 Copyright (c) 1996,1997,1998,1999,2000,2001,2004,2006
 Whitehead Institute for Biomedical Research, Steve Rozen
 (http://jura.wi.mit.edu/rozen), and Helen Skaletsky
 All rights reserved.
 
+Most of primer3 is released under the following _new_ BSD license:
+
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:
@@ -31,6 +34,8 @@
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+The oligtm library and tests are released under the GPL.  See
+file src/gpl.txt or go to http://www.gnu.org/licenses/gpl.txt.
 
 INTRODUCTION
 ------------
@@ -50,24 +55,34 @@
 characterizes an optimal primer pair.
 
 Whitehead Institute for Biomedical Research provides a web-based
-front end to Primer3 at
+front end to primer3 at
 http://fokker.wi.mit.edu/cgi-bin/primer3/primer3_www.cgi
 
+
 CITING PRIMER3
 --------------
 We request but do not require that use of this software be cited in
 publications as
 
-Steve Rozen and Helen J. Skaletsky (2000)
-Primer3 on the WWW for general users and for biologist programmers.
-In: Krawetz S, Misener S (eds)
-Bioinformatics Methods and Protocols: Methods in Molecular Biology.
-Humana Press, Totowa, NJ, pp 365-386
+Steve Rozen and Helen J. Skaletsky (2000) Primer3 on the WWW for
+general users and for biologist programmers.
+In: Krawetz S, Misener S (eds) Bioinformatics Methods and
+Protocols: Methods in Molecular Biology.  Humana Press, Totowa,
+NJ, pp 365-386
+Source code available at http://sourceforge.net/projects/primer3/
 
-Source code available at http://fokker.wi.mit.edu/primer3/.
 The paper above is available at
 http://jura.wi.mit.edu/rozen/papers/rozen-and-skaletsky-2000-primer3.pdf
 
+
+REPORTING BUGS AND PROBLEMS AND SUGGESTING ENHANCEMENTS
+-------------------------------------------------------
+
+For error reports or requests for enhancements, please send e-mail
+to primer3-mail (at) lists.sourceforge.net after replacing (at)
+with @.
+
+
 INSTALLATION INSTRUCTIONS
 -------------------------
 Unzip and untar the distribution.
@@ -99,39 +114,70 @@
 scripts).
 
 ntdpal (NucleoTide Dynamic Programming ALignment) is a
-stand-alone program that provides Primer3's alignment
+stand-alone program that provides primer3's alignment
 functionality (local, a.k.a. Smith-Waterman, global,
 a.k.a. Needleman-Wunsch, plus "half global").  It is provided
 strictly as is; for further documentation please see the code.
 
+
 SYSTEM REQUIREMENTS
 -------------------
-Primer3 has been successfully installed and tested on the
-following systems
 
-     o Sparc running SunOS 4.1 (gcc 2.7.0)
-     o Alpha running DEC Unix 3.2 (gcc 2.7.0 and DEC cc)
-     o Pentium running Linux 1.2 (Red Hat) (gcc 2.7.0)
+Please see http://sourceforge.net/projects/primer3/ for up-to-date
+information.  Primer3 should compile on any Linux/Unix system
+including MacOS 10 and on other systems with POSIX C
+(e.g. MSWindows).  The Makefile may need to be modified for
+compilation with C compilers other than gcc.  Our hope is to
+distribute binarie for SourceForge in the near future.  Primer3
+still uses many Kernighan-&-Richie-style function headers, so
+you might have to force your compiler to accept them.
 
-Primer3 will likely compile and run on other POSIX architectures with
-ANSI C compilers.
 
+INVOKING primer3_core
+---------------------
 
+By default, the executable program produced by the Makefile is
+called primer3_core.  This is the C program that does the heavy
+lifting of primer picking.  There is also a more user-friendly
+web interface (distributed separately).
+
+The command line for primer3 is:
+
+primer3_core [ -format_output ] [ -strict_tags ] < input_file.txt
+
+-format_output indicates that primer3_core should generate
+   user-oriented (rather than program-oriented) output.
+
+-strict_tags indicates that primer3_core should generate
+   a fatal error if there is any tag in the input that
+   it does not recognize (see INPUT AND OUTPUT CONVENTIONS).
+
+WARNING: primer3_core only reads its input on stdin, so the usual
+unix convention of
+
+primer3_core input_file.txt
+
+*will not work*.  Primer3_core will just sit there forever
+waiting for its input on stdin.
+
+Note: The old flag -2x_compat is no longer supported.
+
+
 INPUT AND OUTPUT CONVENTIONS
 ----------------------------
 
-By default, Primer3 accepts input and produces output in
-Boulder-io format, a pre-XML text-based input/output format
-for program-to-program data interchange format.  When run
-with the -format_output command-line flag, Primer3 prints a
-more user-oriented report for each sequence.  Additional
-command-line flags include -2x_compat (which causes Primer3
-to print its output using Primer v2 compatible tag names),
-and -strict_tags (both discussed below).  Primer3 exits with
-0 status if it operates correctly.  See EXIT STATUS CODES
-below for additional information.
+By default, primer3 accepts input in Boulder-io format, a
+pre-XML, pre-RDF, text-based input/output format for
+program-to-program data interchange.  By default, primer3 also
+produces output in the same format.  
 
-The syntax of the version of Boulder-io recognized by Primer3 is
+When run with the -format_output command-line flag, primer3
+prints a more user-oriented report for each sequence.
+
+Primer3 exits with 0 status if it operates correctly.  See EXIT
+STATUS CODES below for additional information.
+
+The syntax of the version of Boulder-io recognized by primer3 is
 as follows:
 
   o Input consists of a sequence of RECORDs.
@@ -178,10 +224,10 @@
 programming errors by a message on stderr and a non-zero exit
 status.
 
-Below is the list of input tags that Primer3 recognizes.
+Below is the list of input tags that primer3 recognizes.
 Primer3 echos and ignores any tags it does not recognize, unless
 the -strict_tags flag is set on the command line, in which case
-Primer3 prints an error in the PRIMER_ERROR output tag (see
+primer3 prints an error in the PRIMER_ERROR output tag (see
 below), and prints additional information on stdout; this option
 can be useful for debugging systems that incorporate primer.
 
@@ -190,16 +236,17 @@
 systematically checked in this beta release: use care.
 
 There are 2 major classes of input tags.  "Sequence" input tags
-describe a particular input sequence to Primer3, and are reset
+describe a particular input sequence to primer3, and are reset
 after every boulder record.  "Global" input tags describe the
-general parameters that Primer3 should use in its searches, and
+general parameters that primer3 should use in its searches, and
 the values of these tags persist between input boulder records
 until or unless they are explicitly reset.  Errors in "Sequence"
-input tags invalidate the current record, but Primer3 will
+input tags invalidate the current record, but primer3 will
 continue to process additional records.  Errors in "Global" input
 tags are fatal because they invalidate the basic conditions under
 which primers are being picked.
 
+
 "Sequence" Input Tags
 ---------------------
 
@@ -246,7 +293,7 @@
 pairs where <start> is the index of the first base of a
 Target, and <length> is its length.
 
-For backward compatibility Primer3 accepts (but ignores)
+For backward compatibility primer3 accepts (but ignores)
 a trailing ,<description> for each element of this argument.
 
 EXCLUDED_REGION (interval list, default empty)
@@ -298,24 +345,25 @@
 
 This parameter should be considered EXPERIMENTAL at this point.
 Please check the output carefully; some erroneous inputs might
-cause an error in Primer3.
+cause an error in primer3.
 
 Index of the first base of a start codon.  This parameter allows
-Primer3 to select primer pairs to create in-frame amplicons
+primer3 to select primer pairs to create in-frame amplicons
 e.g. to create a template for a fusion protein.  Primer3 will
 attempt to select an in-frame left primer, ideally starting at or
 to the left of the start codon, or to the right if necessary.
 Negative values of this parameter are legal if the actual start
 codon is to the left of available sequence. If this parameter is
-non-negative Primer3 signals an error if the codon at the
+non-negative primer3 signals an error if the codon at the
 position specified by this parameter is not an ATG.  A value less
-than or equal to -10^6 indicates that Primer3 should ignore this
+than or equal to -10^6 indicates that primer3 should ignore this
 parameter.
 
 Primer3 selects the position of the right primer by scanning
 right from the left primer for a stop codon.  Ideally the right
 primer will end at or after the stop codon.
 
+
 "Global" Input Tags
 -------------------
 
@@ -333,7 +381,7 @@
 not be amplified.)  The file must be in (a slightly restricted)
 FASTA format (W. B. Pearson and D.J. Lipman, PNAS 85:8 pp
 2444-2448 [1988]); we briefly discuss the organization of this
-file below.  If this parameter is specified then Primer3 locally
+file below.  If this parameter is specified then primer3 locally
 aligns each candidate primer against each library sequence and
 rejects those primers for which the local alignment score times a
 specified weight (see below) exceeds PRIMER_MAX_MISPRIMING.
@@ -341,7 +389,7 @@
 
 Each sequence entry in the FASTA-format file must begin with an
 "id line" that starts with '>'.  The contents of the id line is
-"slightly restricted" in that Primer3 parses everything after any
+"slightly restricted" in that primer3 parses everything after any
 optional asterisk ('*') as a floating point number to use as the
 weight mentioned above.  If the id line contains no asterisk then
 the weight defaults to 1.0.  The alignment scoring system used is
@@ -368,7 +416,7 @@
 others, 1995-1996, ftp://ncbi.nlm.nih.gov/repository/repbase)
 is an excellent source of repeat sequences and pointers to the
 literature. (The Repbase files need to be converted to Fasta
-format before they can be used by Primer3.)
+format before they can be used by primer3.)
 
 
 PRIMER_LIB_AMBIGUITY_CODES_CONSENSUS (boolean, default 1)
@@ -456,7 +504,7 @@
 If this flag is non-0, produce PRIMER_LEFT_EXPLAIN,
 PRIMER_RIGHT_EXPLAIN, and PRIMER_INTERNAL_OLIGO_EXPLAIN output
 tags, which are intended to provide information on the number of
-oligos and primer pairs that Primer3 examined, and statistics on
+oligos and primer pairs that primer3 examined, and statistics on
 the number discarded for various reasons.  If -format_output is
 set similar information is produced in the user-oriented output.
 
@@ -479,11 +527,11 @@
 Primer3 will return legal primers pairs in the first range
 regardless the value of the objective function for these pairs.
 Only if there are an insufficient number of primers in the first
-range will Primer3 return primers in a subsequent range.
+range will primer3 return primers in a subsequent range.
 
 PRIMER_PICK_INTERNAL_OLIGO (boolean, default 0)
 
-If the associated value is non-0, then Primer3 will attempt to
+If the associated value is non-0, then primer3 will attempt to
 pick an internal oligo (hybridization probe to detect the PCR
 product).  This tag is maintained for backward compatibility.
 Use PRIMER_TASK.
@@ -513,54 +561,205 @@
 
 Maximum acceptable length (in bases) of a primer.  Currently this
 parameter cannot be larger than 35.  This limit is governed by
-maximum oligo size for which Primer3's melting-temperature is
+maximum oligo size for which primer3's melting-temperature is
 valid.
 
 PRIMER_OPT_TM (float, default 60.0C)
 
 Optimum melting temperature(Celsius) for a primer oligo. Primer3
 will try to pick primers with melting temperatures are close to
-this temperature.  The oligo melting temperature formula in
-Primer3 is that given in Rychlik, Spencer and Rhoads, Nucleic
-Acids Research, 18(21): 6409-6412 and Breslauer,
-Frank, Bloeker and Marky, PNAS, 83: 3746-3750.
-Please refer to the former paper for background discussion.
+this temperature.  The oligo melting temperature formula used can
+be specified by user. Please see PRIMER_TM_SANTALUCIA for more
+information.
 
+
 PRIMER_MIN_TM (float, default 57.0C)
 
 Minimum acceptable melting temperature(Celsius) for a primer
 oligo.
 
+
 PRIMER_MAX_TM (float, default 63.0C)
 
 Maximum acceptable melting temperature(Celsius) for a primer
 oligo.
 
+
 PRIMER_MAX_DIFF_TM (float, default 100.0C)
 
 Maximum acceptable (unsigned) difference between the melting
 temperatures of the left and right primers.
 
+
+PRIMER_TM_SANTALUCIA (int, default 0)
+
+Specifies details of melting temperature calculation.  (New in
+v. 1.1.0, added by Maido Remm and Triinu Koressaar.)
+
+A value of 1 (*RECOMMENDED*) directs primer3 to use the table of
+thermodynamic values and the method for melting temperature
+calculation suggested in the paper [SantaLucia JR (1998) "A unified
+view of polymer, dumbbell and oligonucleotide DNA nearest-neighbor
+thermodynamics", Proc Natl Acad Sci 95:1460-65
+http://dx.doi.org/10.1073/pnas.95.4.1460].
+
+A value of 0 directs primer3 to a backward compatible calculation
+(in other words, the only calculation availble in previous
+version of primer3).
+
+This backward compatible calculation uses the table of
+thermodynamic parameters in the paper [Breslauer KJ, Frank R,
+Blöcker H and Marky LA (1986) "Predicting DNA duplex stability
+from the base sequence" Proc Natl Acad Sci 83:4746-50
+http://dx.doi.org/10.1073/pnas.83.11.3746],
+and the method in the paper [Rychlik W, Spencer WJ and Rhoads
+RE (1990) "Optimization of the annealing temperature for DNA
+amplification in vitro", Nucleic Acids Res 18:6409-12
+http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pubmed&pubmedid=2243783].
+
+Use tag PRIMER_SALT_CORRECTIONS, to specify the salt correction
+method for melting temperature calculation.
+
+Example of calculating the melting temperature of an oligo if
+PRIMER_TM_SANTALUCIA=1 and PRIMER_SALT_CORRECTIONS=1
+recommended values):
+
+primer=CGTGACGTGACGGACT
+
+Using default salt and DNA concentrations we have
+
+Tm = deltaH/(deltaS + R*ln(C/4)), 
+
+where R is the gas constant (1.987 cal/K mol)
+and C is the DNA concentration.
+
+deltaH(predicted) =
+
+  = dH(CG) + dH(GT) + dH(TG) + .. + dH(CT) +
+     + dH(init.w.term.GC) + dH(init.w.term.AT) =
+
+  = -10.6 + (-8.4) + (-8.5) + .. + (-7.8) + 0.1 + 2.3  =
+
+  = -128.8 kcal/mol
+
+where 'init.w.term GC' and 'init.w.term AT' are two
+initiation parameters for duplex formation: 'initiation with
+terminal GC' and 'initiation with terminal AT'
+
+deltaS(predicted) =
+
+  = dS(CG) + dS(GT) + dS(TG) + .. + dS(CT) +
+    + dS(init.w.term.GC) + dS(init.w.term.AT) =
+
+  = -27.2 + (-22.4) + (-22.7) + .. + (-21.0) + (-2.8) + 4.1 =
+ 
+  = -345.2 cal/k*mol
+
+deltaS(salt corrected) = 
+  = deltaS(predicted) + 0.368*15(NN pairs)*ln(0.05M monovalent cations) =
+  = -361.736
+
+Tm = -128.800/(-361.736+1.987*ln((5*10^(-8))/4)) =
+   = 323.704 K
+
+Tm(C) = 323.704 - 273.15 = 50.554 C
+
+
+PRIMER_SALT_CONC (float, default 50.0 mM)
+
+The millimolar concentration of monovalent salt cations (usually KCl) in the PCR.
+Primer3 uses this argument to calculate oligo and primer melting
+temperatures. Use tag PRIMER_DIVALENT_CONC to specify the concentration
+of divalent cations (in this case you also should use tag PRIMER_DNTP_CONC).
+
+PRIMER_DIVALENT_CONC (float, default 0.0 mM)
+
+The millimolar concentration of divalent salt cations (usually MgCl^(2+)) in
+the PCR. (New in v. 1.1.0, added by Maido Remm and Triinu Koressaar) 
+
+Primer3 converts concentration of divalent cations to concentration
+of monovalent cations using formula suggested in the paper [Ahsen von N,
+Wittwer CT, Schutz E (2001) "Oligonucleotide Melting Temperatures under PCR
+Conditions: Nearest-Neighbor Corrections for Mg^(2+), Deoxynucleotide Triphosphate,
+and Dimethyl Sulfoxide Concentrations with Comparision to Alternative Empirical 
+Formulas", Clinical Chemistry 47:1956-61 http://www.clinchem.org/cgi/content/full/47/11/1956].
+
+[Monovalent cations] = [Monovalent cations] + 120*(([divalent cations] - [dNTP])^0.5)
+
+According to the formula concentration of desoxynucleotide triphosphate
+[dNTP] must be smaller than concentration of divalent cations. If the
+specified concentration of dNTPs is larger than specified concentration of
+divalent cations then the effect of divalent cations is not considered. The
+concentration of dNTPs is included to the formula beacause of some magnesium is bound by the
+dNTP. Attained concentration of monovalent cations is used to calculate oligo/primer
+melting temperature. Use tag PRIMER_DNTP_CONC to specify the concentration of dNTPs.
+
+PRIMER_DNTP_CONC (float, default 0.0 mM)
+
+The millimolar concentration of deoxyribonucleotide triphosphate. This
+argument is considered only if PRIMER_DIVALENT_CONC is specified. See
+PRIMER_DIVALENT_CONC.
+
+PRIMER_SALT_CORRECTIONS (int, default 0)
+
+Specifies the salt correction formula for the melting temperature
+calculation.  (New in v. 1.1.0, added by Maido Remm and Triinu
+Koressaar)
+
+A value of 1 (*RECOMMENDED*) directs primer3 to use the salt correction
+formula in the paper [SantaLucia JR (1998) "A unified view of polymer,
+dumbbell and oligonucleotide DNA nearest-neighbor thermodynamics",
+Proc Natl Acad Sci 95:1460-65
+http://dx.doi.org/10.1073/pnas.95.4.1460]
+
+A value of 0 directs primer3 to use the the salt correction
+formula in the paper [Schildkraut, C, and Lifson, S (1965)
+"Dependence of the melting temperature of DNA on salt
+concentration", Biopolymers 3:195-208 (not available on-line)].
+This was the formula used in previous version of primer3.
+
+A value of 2 directs primer3 to use the salt correction formula
+in the paper [Owczarzy R, You Y, Moreira BG, Manthey JA, Huang L,
+Behlke MA and Walder JA (2004) "Effects of sodium ions on DNA
+duplex oligomers: Improved predictions of melting temperatures",
+Biochemistry 43:3537-54 http://dx.doi.org/10.1021/bi034621r].
+
+
+PRIMER_LOWERCASE_MASKING (int, default 0)
+
+This option allows for intelligent design of primers in sequence in
+which masked regions (for example repeat-masked regions) are
+lower-cased.  (New in v. 1.1.0, added by Maido Remm and Triinu
+Koressaar)
+
+A value of 1 directs primer3 to reject primers overlapping
+lowercase a base exactly at the 3' end.
+
+This property relies on the assumption that masked features
+(e.g. repeats) can partly overlap primer, but they cannot overlap
+the 3'-end of the primer.  In other words, lowercase bases at
+other positions in the primer are accepted, assuming that the
+masked features do not influence the primer performance if they
+do not overlap the 3'-end of primer.
+
+
 PRIMER_MIN_GC (float, default 20.0%)
 
 Minimum allowable percentage of Gs and Cs in any primer.
 
+
 PRIMER_OPT_GC_PERCENT (float, default 50.0%)
 
 Optimum GC percent.  This parameter influences primer selection only if
 PRIMER_WT_GC_PERCENT_GT or PRIMER_WT_GC_PERCENT_LT are non-0.
 
+
 PRIMER_MAX_GC (float, default 80.0%)
 
 Maximum allowable percentage of Gs and Cs in any primer generated
 by Primer.
 
-PRIMER_SALT_CONC (float, default 50.0 mM)
 
-The millimolar concentration of salt (usually KCl) in the PCR.
-Primer3 uses this argument to calculate oligo melting
-temperatures.
-
 PRIMER_DNA_CONC (float, default 50.0 nM)
 
 The nanomolar concentration of annealing oligos in the PCR.
@@ -572,16 +771,20 @@
 template, 0.025 units/microliter Taq polymerase in 0.1 mM each
 dNTP, 1.5mM MgCl2, 50mM KCl, 10mM Tris-HCL (pH 9.3) using 35
 cycles with an annealing temperature of 56 degrees Celsius.  This
-parameter corresponds to 'c' in Rychlik, Spencer and Rhoads'
-equation (ii) (Nucleic Acids Research, 18(21): 6409-6412)
-where a suitable value (for a lower initial concentration of template)
-is "empirically determined".  The value of this parameter is less
-than the actual concentration of oligos in the reaction because
-it is the concentration of annealing oligos, which in turn
-depends on the amount of template (including PCR product) in a
-given cycle.  This concentration increases a great deal during a
-PCR; fortunately PCR seems quite robust for a variety of oligo
-melting temperatures.
+parameter corresponds to 'c' in equation (ii) of the paper
+[Rychlik W, Spencer WJ and Rhoads
+RE (1990) "Optimization of the annealing temperature for DNA
+amplification in vitro", Nucleic Acids Res 18:6409-12
+http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pubmed&pubmedid=2243783],
+where a suitable value (for a
+lower initial concentration of template) is "empirically
+determined".  The value of this parameter is less than the actual
+concentration of oligos in the reaction because it is the
+concentration of annealing oligos, which in turn depends on the
+amount of template (including PCR product) in a given cycle.
+This concentration increases a great deal during a PCR;
+fortunately PCR seems quite robust for a variety of oligo melting
+temperatures.
 
 See ADVICE FOR PICKING PRIMERS.
 
@@ -654,13 +857,13 @@
 
 PRIMER_FILE_FLAG (boolean, default 0)
 
-If the associated value is non-0, then Primer3 creates two output
+If the associated value is non-0, then primer3 creates two output
 files for each input SEQUENCE.  File <sequence_id>.for lists all
 acceptable left primers for <sequence_id>, and <sequence_id>.rev
 lists all acceptable right primers for <sequence_id>, where
 <sequence_id> is the value of the PRIMER_SEQUENCE_ID tag (which
 must be supplied).  In addition, if the input tag
-PRIMER_PICK_INTERNAL_OLIGO is non-0, Primer3 produces a file
+PRIMER_PICK_INTERNAL_OLIGO is non-0, primer3 produces a file
 <sequence_id>.int, which lists all acceptable internal oligos.
 
 PRIMER_MAX_POLY_X (int, default 5)
@@ -670,7 +873,7 @@
 
 PRIMER_LIBERAL_BASE (boolean, default 0)
 
-This parameter provides a quick-and-dirty way to get Primer3 to
+This parameter provides a quick-and-dirty way to get primer3 to
 accept IUB / IUPAC codes for ambiguous bases (i.e. by changing
 all unrecognized bases to N).  If you wish to include an
 ambiguous
@@ -722,41 +925,40 @@
 
 PRIMER_INSIDE_PENALTY (float, default -1.0)
 
-This experimental parameter might not be maintained in this form
-in the next release.  Non-default values valid only for sequences
-with 0 or 1 target regions.  If the primer is part of a pair that
-spans a target and overlaps the target, then multiply this value
-times the number of nucleotide positions by which the primer
-overlaps the (unique) target to get the 'position penalty'.  The
-effect of this parameter is to allow Primer3 to include overlap
-with the target as a term in the objective function.
+Non-default values are valid only for sequences with 0 or 1
+target regions.  If the primer is part of a pair that spans a
+target and overlaps the target, then multiply this value times
+the number of nucleotide positions by which the primer overlaps
+the (unique) target to get the 'position penalty'.  The effect of
+this parameter is to allow primer3 to include overlap with the
+target as a term in the objective function.
 
 PRIMER_OUTSIDE_PENALTY (float, default 0.0)
 
-This experimental parameter might not be maintained in this form
-in the next release.  Non-default values valid only for sequences
-with 0 or 1 target regions.  If the primer is part of a pair that
-spans a target and does not overlap the target, then multiply
-this value times the number of nucleotide positions from the 3'
-end to the (unique) target to get the 'position penalty'.
-The effect of this parameter is to allow Primer3 to include
-nearness to the target as a term in the objective function.
+Non-default values are valid only for sequences with 0 or 1
+target regions.  If the primer is part of a pair that spans a
+target and does not overlap the target, then multiply this value
+times the number of nucleotide positions from the 3' end to the
+(unique) target to get the 'position penalty'.  The effect of
+this parameter is to allow primer3 to include nearness to the
+target as a term in the objective function.
 
 PRIMER_MAX_END_STABILITY (float 999.9999, default 100.0)
 
-The maximum stability for the five 3' bases of a left or right
-primer.  Bigger numbers mean more stable 3' ends.  The value is
-the maximum delta G for duplex disruption for the five 3' bases
-as calculated using the nearest neighbor parameters published in
-Breslauer, Frank, Bloeker and Marky, Proc. Natl. Acad. Sci. USA,
-vol 83, pp 3746-3750.  Primer3 uses a completely permissive
-default value for backward compatibility (which we may change in
-the next release).  Rychlik recommends a maximum value of 9
-(Wojciech Rychlik, "Selection of Primers for Polymerase Chain
-Reaction" in BA White, Ed., "Methods in Molecular Biology,
-Vol. 15: PCR Protocols: Current Methods and Applications", 1993,
-pp 31-40, Humana Press, Totowa NJ).
+The maximum stability for the last five 3' bases of a left or
+right primer.  Bigger numbers mean more stable 3' ends.  The
+value is the maximum delta G (kcal/mol) for duplex disruption for
+the five 3' bases as calculated using the nearest-neighbor
+parameter values specified by PRIMER_TM_SANTALUCIA.
 
+If PRIMER_TM_SANTALUCIA=1, then delta G for the most stable 5-mer
+duplex (GCGCG) is 6.86 kcal/mol, and delta G for the most labile
+5-mer (TATAT) is 0.86 kcal/mol.
+
+If PRIMER_TM_SANTALUCIA=0, then delta G for the most stable 5-mer
+duplex (GCGCG) is 13.4 kcal/mol, and delta G for the most labile
+5-mer duplex (TATAC) is 4.6 kcal/mol.
+
 PRIMER_PRODUCT_OPT_TM (float, default 0.0)
 
 The optimum melting temperature for the PCR product. 0 indicates
@@ -772,7 +974,7 @@
 
 PRIMER_TASK (string, default pick_pcr_primers)
 
-Tell Primer3 what task to perform. Legal values are pick_pcr_primers,
+Tell primer3 what task to perform. Legal values are pick_pcr_primers,
 pick_pcr_primers_and_hyb_probe, pick_left_only, pick_right_only,
 pick_hyb_probe_only.  The tasks should be self explanatory, except
 that we note that pick_pcr_primers_and_hyb_probe is
@@ -840,6 +1042,7 @@
 used for hybridization might be considerably lower
 than that used as a PCR primer.
 
+
 Internal Oligo "Sequence" Input Tags
 ------------------------------------
 
@@ -859,6 +1062,7 @@
 The sequence of an internal oligo to check and around which to
 design left and right primers.  Must be a substring of SEQUENCE.
 
+
 Internal Oligo "Global" Input Tags
 ----------------------------------
 
@@ -880,6 +1084,8 @@
 PRIMER_INTERNAL_OLIGO_MIN_GC (float, default 20.0%)
 PRIMER_INTERNAL_OLIGO_MAX_GC (float, default 80.0%)
 PRIMER_INTERNAL_OLIGO_SALT_CONC (float, default 50.0 mM)
+PRIMER_INTERNAL_OLIGO_DIVALENT_CONC (float, default 0.0 mM)
+PRIMER_INTERNAL_OLIGO_DNTP_CONC (float, default 0.0 mM)
 PRIMER_INTERNAL_OLIGO_DNA_CONC (float, default 50.0 nM)
 PRIMER_INTERNAL_OLIGO_SELF_ANY (decimal 9999.99, default 12.00)
 PRIMER_INTERNAL_OLIGO_MAX_POLY_X (int, default 5)
@@ -917,13 +1123,14 @@
 PRIMER_IO_WT_SEQ_QUAL (float, default 0.0)
 PRIMER_IO_WT_END_QUAL (float, default 0.0)
 
+
 AN EXAMPLE
 ----------
 One might be interested in performing PCR on an STS with a CA
 repeat in the middle of it. Primers need to be chosen based on
 the criteria of the experiment.
 
-We need to come up with a boulder-io record to send to Primer3 via
+We need to come up with a boulder-io record to send to primer3 via
 stdin. There are lots of ways to accomplish this. We could save
 the record into a text file called 'input', and then type the
 UNIX command 'primer3 < input'. 
@@ -950,30 +1157,30 @@
 PRIMER_SEQUENCE_ID=example
 
 The main intent of this tag is to provide an identifier for the
-sequence that is meaningful to the user, for example when Primer3
+sequence that is meaningful to the user, for example when primer3
 processes multiple records, and by default this tag is optional.
 However, this tag is _required_ when PRIMER_FILE_FLAG is non-0
 Because it provides the names of the files that contain lists
-of oligos that Primer3 considered.
+of oligos that primer3 considered.
 
 SEQUENCE=GTAGTCAGTAGACNATGACNACTGACGATGCAGACNACACACACACACACAGCACACAGGTATTAGTGGGCCATTCGATCCCGACCCAAATCGATAGCTACGATGACG
 
-The SEQUENCE tag is of ultimate importance. Without it, Primer3
+The SEQUENCE tag is of ultimate importance. Without it, primer3
 has no idea what to do. This sequence is 92 bases long. Note that
 there is no newline until the sequence terminates completely.
 
 TARGET=37,21
 
 There is a simple sequence repeat in our sequence, which starts
-at base 37, and has a length of 21 bases. We want Primer3 to
-choose primers which flank the repeat site, so we let Primer3 know
+at base 37, and has a length of 21 bases. We want primer3 to
+choose primers which flank the repeat site, so we let primer3 know
 that we consider this site to be important.
 
 PRIMER_OPT_SIZE=18
 
 Since our sequence length is rather small (only 92 bases
 long), we lower the PRIMER_OPT_SIZE from 20 to 18. It's
-more likely that Primer3 will succeed if it shoots for smaller
+more likely that primer3 will succeed if it shoots for smaller
 primers with such a small sequence.
 
 PRIMER_MIN_SIZE=15
@@ -986,14 +1193,14 @@
 
 Again, since we've got such a small sequence with a
 non-negligible amount of unknown bases (N's) in it, let's make
-Primer3's job easier by allowing it to pick primers that have
+primer3's job easier by allowing it to pick primers that have
 at most 1 unknown base.
 
 PRIMER_PRODUCT_SIZE_RANGE=75-100
 
 We reduce the product size range from the default of 100-300
 because our source sequence is only 108 base pairs long.  If we
-insisted on a product size of 100 base pairs Primer3 would have
+insisted on a product size of 100 base pairs primer3 would have
 few possibilities to choose from.
 
 PRIMER_FILE_FLAG=1
@@ -1019,7 +1226,7 @@
 PRIMER_EXPLAIN_FLAG=1
 
 We want to see statistics about the oligos and oligo triples
-(left primer, internal oligo, right primer) that Primer3
+(left primer, internal oligo, right primer) that primer3
 examined.
 
 =
@@ -1108,7 +1315,7 @@
 
 All the categories are exclusive, except the 'considered' category.
 
-In some cases Primer3 will examine a primer pair before it
+In some cases primer3 will examine a primer pair before it
 discovers that one of the primers in the pair violates specified
 constraints.  In this case PRIMER_PAIR_EXPLAIN might have a non-0
 number 'considered', even though one or more of
@@ -1176,8 +1383,11 @@
 
 PRIMER_PRODUCT_TM=f
 
-f is the melting temperature of the product. Calculated using equation (iii)
-from Rychlik, Spencer and Rhoads, Nucleic Acids Research 18(21) pg. 6410.
+f is the melting temperature of the product. Calculated using
+equation (iii) from the paper [Rychlik W, Spencer WJ and Rhoads
+RE (1990) "Optimization of the annealing temperature for DNA
+amplification in vitro", Nucleic Acids Res 18:6409-12
+http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pubmed&pubmedid=2243783].
 Printed only if a non-default value of PRIMER_MAX_PRODUCT_TM or
 PRIMER_MIN_PRODUCT_TM is specified.
 
@@ -1190,9 +1400,13 @@
 
 PRIMER_PAIR_T_OPT_A=f
 
-f is T sub a super OPT from equation (i) in Rychlik, Spencer, and
-Rhoads, Nucleic Acids Research 18(21), page 6410.  Printed only if
-PRIMER_MAX_PRODUCT_TM or PRIMER_MIN_PRODUCT_TM is specified.
+f is T sub a super OPT from equation (i) in [Rychlik W, Spencer
+WJ and Rhoads RE (1990) "Optimization of the annealing
+temperature for DNA amplification in vitro", Nucleic Acids Res
+18:6409-12
+http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pubmed&pubmedid=2243783].
+Printed only if PRIMER_MAX_PRODUCT_TM or PRIMER_MIN_PRODUCT_TM is
+specified.
 
 PRIMER_INTERNAL_OLIGO_MISHYB_SCORE=f, s
 
@@ -1216,10 +1430,11 @@
 PRIMER_STOP_CODON_POSITION=i
 
 i is the position of the first base of the stop codon,
-if Primer3 found one, or -1 if Primer3 did not.  Printed
+if primer3 found one, or -1 if primer3 did not.  Printed
 only if the input tag PRIMER_START_CODON_POSITION with a
 non-default value is supplied.
 
+
 EXAMPLE OUTPUT
 --------------
 You should run it youself.  Use the file 'example' in this
@@ -1228,16 +1443,16 @@
 
 ADVICE FOR PICKING PRIMERS
 --------------------------
-We suggest referring to: Wojciech Rychlik, "Selection of Primers
-for Polymerase Chain Reaction" in BA White, Ed., "Methods in
-Molecular Biology, Vol. 15: PCR Protocols: Current Methods and
-Applications", 1993, pp 31-40, Humana Press, Totowa NJ
+We suggest consulting: Wojciech Rychlik (1993) "Selection of
+Primers for Polymerase Chain Reaction" in BA White, Ed., "Methods
+in Molecular Biology, Vol. 15: PCR Protocols: Current Methods and
+Applications", pp 31-40, Humana Press, Totowa NJ.
 
 
-Cautions
+CAUTIONS
 --------
 Some of the most important issues in primer picking can be
-addressed only before using Primer3.  These are sequence quality
+addressed only before using primer3.  These are sequence quality
 (including making sure the sequence is not vector and not
 chimeric) and avoiding repetitive elements.
 
@@ -1249,7 +1464,7 @@
 others, 1995-1996, ftp://ncbi.nlm.nih.gov/repository/repbase)
 is an excellent source of repeat sequences and pointers to the
 literature.  (The Repbase files need to be converted to Fasta format
-before they can be used by Primer3.) Primer3 now allows you to screen
+before they can be used by primer3.) Primer3 now allows you to screen
 candidate oligos against a Mispriming Library (or a Mishyb Library in
 the case of internal oligos).
 
@@ -1262,19 +1477,16 @@
 often contains many low-quality or even meaningless called bases.
 Therefore when picking primers from single-pass sequence it is
 often best to use the INCLUDED_REGION parameter to ensure that
-Primer3 chooses primers in the high quality region of the read.
+primer3 chooses primers in the high quality region of the read.
 
-In addition, Primer3 takes as input a Sequence Quality list for
+In addition, primer3 takes as input a Sequence Quality list for
 use with those base calling programs 
 
 (e.g. Phred, Bass/Grace, Trout) that output this information.
 
 
-
-
-
-What to do if Primer3 cannot find a primers?
---------------------------------------------
+WHAT TO DO IF PRIMER3 CANNOT FIND ANY PRIMERS?
+----------------------------------------------
 Try relaxing various parameters, including the
 self-complementarity parameters and max and min oligo melting
 temperatures.  For example, for very A-T-rich regions you might
@@ -1289,62 +1501,13 @@
 
 Try setting the PRIMER_EXPLAIN_FLAG input tag.
 
+
 DIFFERENCES FROM EARLIER VERSIONS
 ---------------------------------
 
 See the file release_notes.txt in this directory.
 
-Compared to 0.5
----------------
-Completely different input format.  
 
-It has been reported the 0.5 deleted Ns when they occurred in
-primers.  
-
-More stringent self-complementarity defaults.
-
-Primer3 selects internal oligos on request (and produces .int
-files if requested).
-
-Compared to both 0.5 and v2
----------------------------
-The format of the contents of .for, .rev (and .int) files is
-different.
-
-Primer3 returns a user-specifiable number of primer pairs (or
-triples) sorted by "goodness".
-
-Primer3 will find a primer pair if any acceptable pair exists.
-
-Optional n-based indexing into source sequence.
-
-Use of sequence quality and 3' stability as constraints in primer
-picking.  Optional positional component to objective function.
-
-Compared to v2
--------------
-Tag name changes.  However, Primer3 should understand most or
-all Primer v2 input tags, and should produce v2-compatible output
-tag names when the -v2_compat command-line switch is used.
-
-The one exception is that the PRIMER_RECOMMEND tag is no longer
-produced. Instead Primer3 produces the PRIMER_x_EXPLAIN output
-tags.  The format of the data in this tags is different from the
-data in v2's PRIMER_RECOMMEND output tag.
-
-Numerous fixes.
-
-Uses the PRIMER_SELF_ANY and PRIMER_SELF_END parameters to govern
-maximum allowable complementarity between left and right primers,
-as well as complementarity between copies of a single oligo or
-within a single oligo.  This behaviour is very close to that of
-primer 0.5; self complementarity calculations in v2 were
-unreliable.
-
-Primer3 produces much more output information, including the TMs
-and self complementarity measures of selected primers.
-
-
 EXIT STATUS CODES
 -----------------
 
@@ -1367,97 +1530,38 @@
 
 In all of the error cases above Primer3 prints a message to stderr.
 
-THE NEW PRIMER3 WWW INTERFACE
+
+THE PRIMER3 WWW INTERFACE
 -----------------------------
-This distribution does not contain the Primer3 WWW interface.  A
-snapshot of the interface used at Whitehead Institute may be available
-strictly 'AS-IS' and without support by e-mail request to
-primer3(at)wi.mit.edu, replacing (at) with @.
+This distribution does not contain the Primer3 WWW interface.
+Web interface code is likely available at (or linked to from)
+http://sourceforge.net/projects/primer3/.
 
-The remainder of this section is out-of-date.
 
-The web interface consists of:
-
-primer3_www.cgi              (the user input screen)
-primer3_www_help.html        (user help for the input screen)
-primer3_www_results.cgi      (the results screen)
-primer3_www_results_help.cgi (user help for the results screen)
-
-To use this interface you will need perl5 and the perl5
-module CGI.pm.  Refer to your perl book to locate the perl5
-distribution.  CGI.pm was written by Lincoln D. Stein and is
-available from CPAN (www.cpan.org). You will also need to
-know enough about your operating system and web server to
-install a new CGI script, and enough about perl5 to read the
-script and figure out how it does what it does.
-
-You will have to make some modifications to primer3_www.cgi and
-to primer_www_results.cgi:
-
-1. Correct the path to perl5 on the first line of each .cgi file,
-since this path varies from system to system.
-
-2. Change the value of the $MAINTAINER variable near the top of
-both .cgi files so that they address the person maintaining your
-installation of the primer WWW interface.
-
-3. Specify available mispriming libraries.  In primer3_www.cgi
-modify the variable $SELECT_SEQ_LIBRARY as necessary and in
-primer3_www_results modify the value of %SEQ_LIBRARY in a
-corresponding way.
-
-4. Depending on your primer picking application you might want to
-change defaults; many of these are set in primer3_www.cgi, but
-there are some subtleties dealing with the interpretation of
-empty input fields.  You have to read the code to really
-understand what is going on.
-
-5. If primer3_www_help.html is not in the same directory as
-primer3_www.cgi fix $DOC_URL in primer3_www.cgi.
-
-6. If primer3_www_results.cgi is not in the same directory as
-primer3_www.cgi fix $PROCESS_INPUT_URL in primer3_www.cgi.
-
-7. If primer3_core is not in same directory as
-primer3_www_results.cgi, fix $PRIMER_BIN in
-primer3_www_results.cgi.
- 
-8. If primer3_www_results_help.html is not in the same directory
-as primer3_www_results.cgi fix $DOC_URL in
-primer3_www_results.cgi.
-
-
 ACKNOWLEDGMENTS
 ---------------
 
-The development of Primer3 was funded by Howard Hughes Medical
-Institute and by the National Institutes of Health, National
-Human Genome Research Institute under grants R01-HG00257 (to
-David C. Page) and P50-HG00098 (to Eric S. Lander).
+Initial development of Primer3 was funded by Howard Hughes Medical
+Institute and by the National Institutes of Health, National Human
+Genome Research Institute under grants R01-HG00257 (to David C. Page)
+and P50-HG00098 (to Eric S. Lander).
 
-We gratefully acknowledge the support of Digital Equipment
-Corporation, which provided the Alphas which were used for most
-of the development of Primer3, and of Centerline Software, Inc.,
-whose TestCenter memory-error, -leak, and test-coverage checker
-helped us discover and correct a number of otherwise latent
-errors in Primer3.
-
-Primer3 was written by Helen J. Skaletsky (Howard Hughes Medical
-Institute, Whitehead Institute) and Steve Rozen (Whitehead
+Primer3 was originally written by Helen J. Skaletsky (Howard Hughes
+Medical Institute, Whitehead Institute) and Steve Rozen (Whitehead
 Institute/MIT Center for Genome Research), based on the design of
 earlier versions: Primer 0.5 (Steve Lincoln, Mark Daly, and Eric
-S. Lander) and Primer v2 (Richard Resnick).  This documentation
-was written by Richard Resnick and Steve Rozen.  The original web
-interface was designed by Richard Resnick.  Lincoln Stein 
-championed the use of the Boulder-IO format and the idea of
-making Primer3 a software component.
+S. Lander) and Primer v2 (Richard Resnick).  This initial version of
+this documentation was written by Richard Resnick and Steve Rozen, and
+the original web interface was designed by Richard Resnick.  Lincoln
+Stein championed the use of the Boulder-IO format and the idea of
+making primer3 a software component.  In addition, among others, Ernst
+Molitor, Carl Foeller, and James Bonfield contributed to the early
+design of primer3. We also thank Centerline Software, Inc., for uses
+of its TestCenter memory-error, -leak, and test-coverage checker,
+which helped us discover and correct a number of otherwise latent
+errors in Primer3.
 
-In addition, following is a partial list of people who kindly
-contributed to the design of Primer3
-
-Ernst Molitor
-Carl Foeller
-
-The authors of the current version would be pleased to receive
-error reports or requests for enhancements.  Please send e-mail
-to primer3(at)wi.mit.edu after replacing (at) with @.
+Primer3 is now operating as open software development project hosted
+on SourceForge, and we are working out how to acknowledge all who have
+contributed to its enahancement.  Current active developers can be
+found at http://sourceforge.net/projects/primer3/.

Added: trunk/packages/primer3/branches/upstream/current/primer3-1.1.0-beta
===================================================================
(Binary files differ)


Property changes on: trunk/packages/primer3/branches/upstream/current/primer3-1.1.0-beta
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: trunk/packages/primer3/branches/upstream/current/src/Makefile
===================================================================
--- trunk/packages/primer3/branches/upstream/current/src/Makefile	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/src/Makefile	2007-02-17 04:15:41 UTC (rev 209)
@@ -1,123 +1,137 @@
-# ======================================================================
-# (c) Copyright 1996,1997,1998,1999,2000,2001,2004,2006 Whitehead
-# Institute for Biomedical Research, Steve Rozen, and Helen Skaletsky
-# All rights reserved.
-# 
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-# 
-#    * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#    * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#    * Neither the names of the copyright holders nor contributors may
-# be used to endorse or promote products derived from this software
-# without specific prior written permission.
-# 
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# ======================================================================
-
-# ======================================================================
-# CITING PRIMER3
-# 
-# Steve Rozen and Helen J. Skaletsky (2000) Primer3 on the WWW for
-# general users and for biologist programmers. In: Krawetz S, Misener S
-# (eds) Bioinformatics Methods and Protocols: Methods in Molecular
-# Biology. Humana Press, Totowa, NJ, pp 365-386.  Source code available
-# at http://fokker.wi.mit.edu/primer3/.
-# ======================================================================
-
-MAX_PRIMER_LENGTH = 36
-
-LDLIBS = -lm
-CC      = gcc
-O_OPTS  = -O2
-WHITEHEAD_SPECIFIC_HACK = -include /usr/include/sys/types.h
-CC_OPTS = -g -Wall -D__USE_FIXED_PROTOTYPES__ $(WHITEHEAD_SPECIFIC_HACK)
-P_DEFINES = -DDPAL_MAX_ALIGN=$(MAX_PRIMER_LENGTH) -DMAX_PRIMER_LENGTH=$(MAX_PRIMER_LENGTH)
-
-CFLAGS  = $(CC_OPTS) $(O_OPTS)
-LDFLAGS = -g
-
-# ======================================================================
-# IMPORTANT: on MacOS X and some other Unix/Linux systems where
-# static libraries are not routinely available, -static has to
-# be removed.
-LIBOPTS ='-static'
-
-PRIMER_EXE = primer3_core
-
-PRIMER_OBJECTS=primer3_main.o\
-               primer3.o\
-               oligotm.o\
-               dpal_primer.o\
-               format_output.o\
-               boulder_input.o
-
-EXES=$(PRIMER_EXE) ntdpal oligotm long_seq_tm_test
-
-all: $(EXES)
-
-clean:
-	-rm *.o $(EXES) *~
-
-$(PRIMER_EXE): $(PRIMER_OBJECTS)
-	$(CC) $(LDFLAGS) -o $@ $(PRIMER_OBJECTS) $(LIBOPTS) $(LDLIBS)
-
-# For use with the "testcenter" testing program (CenterLine Software
-# Inc, http://www.centerline.com)
-$(PRIMER_EXE).tc: $(PRIMER_OBJECTS) /usr/lib/debug/malloc.o
-	proof $(CC) $(CFLAGS) -o $@ $(PRIMER_OBJECTS) $(LIBOPTS) $(LDLIBS)
-
-ntdpal: ntdpal_main.o dpal.o
-	$(CC) $(LDFLAGS) -o $@ ntdpal_main.o dpal.o
-
-oligotm: oligotm_main.c oligotm.o
-	$(CC) $(CFLAGS) -o $@ oligotm_main.c oligotm.o $(LIBOPTS) $(LDLIBS)
-
-long_seq_tm_test: long_seq_tm_test_main.c oligotm.o
-	$(CC) $(CFLAGS) -o $@ long_seq_tm_test_main.c oligotm.o $(LIBOPTS) $(LDLIBS)
-
-boulder_input.o: boulder_input.c boulder_input.h primer3.h primer3_release.h dpal.h
-	$(CC) -c $(CFLAGS) $(P_DEFINES) -o $@ boulder_input.c
-
-dpal.o: dpal.c dpal.h primer3_release.h
-	$(CC) -c $(CFLAGS) -o $@ dpal.c
-
-dpal_primer.o: dpal.c dpal.h primer3_release.h
-	$(CC) -c $(CFLAGS) $(P_DEFINES) -o $@ dpal.c
-
-format_output.o: format_output.c primer3_release.h format_output.h primer3.h dpal.h
-	$(CC) -c $(CFLAGS) $(P_DEFINES) -o $@ format_output.c
-
-ntdpal_main.o: ntdpal_main.c dpal.h
-	$(CC) -c $(CC_OPTS) -o $@ ntdpal_main.c
-# We use CC_OPTS above rather than CFLAGS because
-# gcc 2.7.2 crashes while compiling ntdpal_main.c with -O2
-
-oligotm_main.o: oligotm_main.c oligotm.h
-	$(CC) -c $(CFLAGS) -o $@ ntdpal_main.c
-
-oligotm.o: oligotm.c oligotm.h primer3_release.h
-
-primer3.o: primer3.c primer3.h primer3_release.h
-	$(CC) -c $(CFLAGS) $(P_DEFINES) primer3.c
-
-primer3_main.o: primer3_main.c primer3.h primer3_release.h dpal.h oligotm.h format_output.h
-	$(CC) -c $(CFLAGS) $(P_DEFINES) primer3_main.c
-
-primer_test: $(PRIMER_EXE)
-	cd ../test; primer_test.pl
+# ======================================================================
+# (c) Copyright 1996,1997,1998,1999,2000,2001,2004,2006 Whitehead
+# Institute for Biomedical Research, Steve Rozen, and Helen Skaletsky
+# All rights reserved.
+# 
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+# 
+#    * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#    * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#    * Neither the names of the copyright holders nor contributors may
+# be used to endorse or promote products derived from this software
+# without specific prior written permission.
+# 
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# ======================================================================
+
+# ======================================================================
+# CITING PRIMER3
+# 
+# Steve Rozen and Helen J. Skaletsky (2000) Primer3 on the WWW for
+# general users and for biologist programmers. In: Krawetz S, Misener S
+# (eds) Bioinformatics Methods and Protocols: Methods in Molecular
+# Biology. Humana Press, Totowa, NJ, pp 365-386.  Source code available
+# at http://fokker.wi.mit.edu/primer3/.
+# ======================================================================
+
+MAX_PRIMER_LENGTH = 36
+
+LDLIBS = -lm
+CC      = gcc
+O_OPTS  = -O2
+CC_OPTS = -g -Wall -D__USE_FIXED_PROTOTYPES__
+P_DEFINES = -DDPAL_MAX_ALIGN=$(MAX_PRIMER_LENGTH) -DMAX_PRIMER_LENGTH=$(MAX_PRIMER_LENGTH)
+
+CFLAGS  = $(CC_OPTS) $(O_OPTS)
+LDFLAGS = -g
+
+# ======================================================================
+# If you have trouble with library skew when moving primer3 executables
+# between systems, you might want to set LIBOPTS to -static
+LIBOPTS =
+
+PRIMER_EXE      = primer3_core
+OLIGOTM_LIB     = liboligotm.a
+OLIGOTM_DYN_LIB = liboligotm.so.1.2.0
+LIBRARIES       = $(OLIGOTM_LIB)
+RANLIB          = ranlib
+
+PRIMER_OBJECTS1=primer3_main.o\
+                primer3.o\
+                dpal_primer.o\
+                format_output.o\
+                boulder_input.o\
+
+PRIMER_OBJECTS=$(PRIMER_OBJECTS1) $(OLIGOTM_LIB)
+PRIMER_DYN_OBJECTS=$(PRIMER_OBJECTS1) $(OLIGOTM_DYN_LIB)
+
+EXES=$(PRIMER_EXE) ntdpal oligotm long_seq_tm_test
+
+all: $(EXES) $(LIBRARIES)
+
+clean_src:
+	-rm -f *.o $(EXES) $(PRIMER_EXE).dyn *~ $(LIBRARIES)
+
+clean: clean_src
+	cd ../test/; make clean
+
+$(OLIGOTM_LIB): oligotm.o
+	ar rv $@ oligotm.o
+	$(RANLIB) $@
+
+$(OLIGOTM_DYN_LIB): oligotm.o
+	gcc -shared -W1,-soname,liboligotm.so.1 -o $(OLIGOTM_DYN_LIB) oligotm.o
+
+$(PRIMER_EXE): $(PRIMER_OBJECTS)
+	$(CC) $(LDFLAGS) -o $@ $(PRIMER_OBJECTS) $(LIBOPTS) $(LDLIBS)
+
+# For use with valgrind, which requires at lease one
+# dynamically linked library.  Automatic testing with
+# valgrind is not implemented at this point.
+$(PRIMER_EXE).dyn: $(PRIMER_DYN_OBJECTS)
+	$(CC) $(CFLAGS) -o $@ $(PRIMER_DYN_OBJECTS) $(LIBOPTS) $(LDLIBS)
+
+ntdpal: ntdpal_main.o dpal.o
+	$(CC) $(LDFLAGS) -o $@ ntdpal_main.o dpal.o
+
+oligotm: oligotm_main.c oligotm.h $(OLIGOTM_LIB)
+	$(CC) $(CFLAGS) -o $@ oligotm_main.c $(OLIGOTM_LIB) $(LIBOPTS) $(LDLIBS)
+
+long_seq_tm_test: long_seq_tm_test_main.c oligotm.o
+	$(CC) $(CFLAGS) -o $@ long_seq_tm_test_main.c oligotm.o $(LIBOPTS) $(LDLIBS)
+
+boulder_input.o: boulder_input.c boulder_input.h primer3.h primer3_release.h dpal.h
+	$(CC) -c $(CFLAGS) $(P_DEFINES) -o $@ boulder_input.c
+
+dpal.o: dpal.c dpal.h primer3_release.h
+	$(CC) -c $(CFLAGS) -o $@ dpal.c
+
+dpal_primer.o: dpal.c dpal.h primer3_release.h
+	$(CC) -c $(CFLAGS) $(P_DEFINES) -o $@ dpal.c
+
+format_output.o: format_output.c primer3_release.h format_output.h primer3.h dpal.h
+	$(CC) -c $(CFLAGS) $(P_DEFINES) -o $@ format_output.c
+
+ntdpal_main.o: ntdpal_main.c dpal.h
+	$(CC) -c $(CC_OPTS) -o $@ ntdpal_main.c
+# We use CC_OPTS above rather than CFLAGS because
+# gcc 2.7.2 crashes while compiling ntdpal_main.c with -O2
+
+oligotm.o: oligotm.c oligotm.h primer3_release.h
+
+primer3.o: primer3.c primer3.h primer3_release.h
+	$(CC) -c $(CFLAGS) $(P_DEFINES) primer3.c
+
+primer3_main.o: primer3_main.c primer3.h primer3_release.h dpal.h oligotm.h format_output.h
+	$(CC) -c $(CFLAGS) $(P_DEFINES) primer3_main.c
+
+primer_test: test
+
+test: $(PRIMER_EXE) ntdpal
+	cd ../test; make test

Modified: trunk/packages/primer3/branches/upstream/current/src/boulder_input.c
===================================================================
--- trunk/packages/primer3/branches/upstream/current/src/boulder_input.c	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/src/boulder_input.c	2007-02-17 04:15:41 UTC (rev 209)
@@ -219,9 +219,16 @@
 	    COMPARE_FLOAT("PRIMER_MIN_TM", pa->min_tm);
 	    COMPARE_FLOAT("PRIMER_MAX_TM", pa->max_tm);
 	    COMPARE_FLOAT("PRIMER_MAX_DIFF_TM", pa->max_diff_tm);
+
+	    COMPARE_INT("PRIMER_TM_SANTALUCIA",
+			pa->tm_santalucia);    /* added by T.Koressaar */
+	    COMPARE_INT("PRIMER_SALT_CORRECTIONS",
+			pa->salt_corrections); /* added by T.Koressaar */
 	    COMPARE_FLOAT("PRIMER_MIN_GC", pa->min_gc);
 	    COMPARE_FLOAT("PRIMER_MAX_GC", pa->max_gc);
 	    COMPARE_FLOAT("PRIMER_SALT_CONC", pa->salt_conc);
+	    COMPARE_FLOAT("PRIMER_DIVALENT_CONC", pa->divalent_conc); /* added by T.Koressaar */
+	    COMPARE_FLOAT("PRIMER_DNTP_CONC", pa->dntp_conc); /* added by T.Koressaar */
 	    COMPARE_FLOAT("PRIMER_DNA_CONC", pa->dna_conc);
 	    COMPARE_INT("PRIMER_NUM_NS_ACCEPTED", pa->num_ns_accepted);
 	    COMPARE_INT("PRIMER_PRODUCT_OPT_SIZE", pa->product_opt_size);
@@ -260,11 +267,12 @@
 	    COMPARE_FLOAT("PRIMER_INTERNAL_OLIGO_MIN_GC", pa->io_min_gc);
             COMPARE_FLOAT("PRIMER_INTERNAL_OLIGO_MAX_GC", pa->io_max_gc);
 	    COMPARE_FLOAT("PRIMER_INTERNAL_OLIGO_SALT_CONC",pa->io_salt_conc);
-            COMPARE_FLOAT("PRIMER_INTERNAL_OLIGO_DNA_CONC", pa->io_dna_conc);
+           COMPARE_FLOAT("PRIMER_INTERNAL_OLIGO_DIVALENT_CONC",pa->io_divalent_conc); /* added by T.Koressaar */
+	   COMPARE_FLOAT("PRIMER_INTERNAL_OLIGO_DNTP_CONC",pa->io_dntp_conc); /* added by T.Koressaar */
+	   COMPARE_FLOAT("PRIMER_INTERNAL_OLIGO_DNA_CONC", pa->io_dna_conc);
 	    COMPARE_INT("PRIMER_INTERNAL_OLIGO_NUM_NS", pa->io_num_ns_accepted);
 	    COMPARE_INT("PRIMER_INTERNAL_OLIGO_MIN_QUALITY", pa->io_min_quality);
 
-
 	    COMPARE_ALIGN_SCORE("PRIMER_INTERNAL_OLIGO_SELF_ANY",
 				pa->io_self_any);
 	    COMPARE_ALIGN_SCORE("PRIMER_INTERNAL_OLIGO_SELF_END", 
@@ -276,7 +284,6 @@
 	    COMPARE_ALIGN_SCORE("PRIMER_PAIR_MAX_MISPRIMING",
 				pa->pair_repeat_compl);
 
-	    /* NEW */
 	    /* Mispriming / mishybing in the template. */
 	    COMPARE_ALIGN_SCORE("PRIMER_MAX_TEMPLATE_MISPRIMING",
 				pa->max_template_mispriming);
@@ -285,7 +292,6 @@
 	    COMPARE_ALIGN_SCORE("PRIMER_INTERNAL_OLIGO_MAX_TEMPLATE_MISHYB",
 				pa->io_max_template_mishyb);
 
-            /* NEW */
             /* Control interpretation of ambiguity codes in mispriming
                and mishyb libraries. */
 	    COMPARE_INT("PRIMER_LIB_AMBIGUITY_CODES_CONSENSUS",
@@ -321,8 +327,10 @@
 	    if (COMPARE("PRIMER_COMMENT") || COMPARE("COMMENT")) continue;
 	    COMPARE_FLOAT("PRIMER_MAX_END_STABILITY", pa->max_end_stability);
 
+	    COMPARE_INT("PRIMER_LOWERCASE_MASKING",
+			pa->lowercase_masking); /* added by T. Koressaar */
+
 	    /* weights for objective functions  */
-
             /* CHANGE TEMP/temp -> TM/tm */
 	    COMPARE_FLOAT("PRIMER_WT_TM_GT", pa->primer_weights.temp_gt);
 	    COMPARE_FLOAT("PRIMER_WT_TM_LT", pa->primer_weights.temp_lt);
@@ -339,7 +347,6 @@
 	    COMPARE_FLOAT("PRIMER_WT_POS_PENALTY", pa->primer_weights.pos_penalty);
 	    COMPARE_FLOAT("PRIMER_WT_END_STABILITY",
 			  pa->primer_weights.end_stability);
-	    /* NEW */
 	    COMPARE_FLOAT("PRIMER_WT_TEMPLATE_MISPRIMING",
 			  pa->primer_weights.template_mispriming);
 
@@ -355,7 +362,6 @@
 	    COMPARE_FLOAT("PRIMER_IO_WT_REP_SIM", pa->io_weights.repeat_sim);
 	    COMPARE_FLOAT("PRIMER_IO_WT_SEQ_QUAL", pa->io_weights.seq_quality);
 	    COMPARE_FLOAT("PRIMER_IO_WT_END_QUAL", pa->io_weights.end_quality);
-	    /* NEW */
 	    COMPARE_FLOAT("PRIMER_IO_WT_TEMPLATE_MISHYB",
 			  pa->io_weights.template_mispriming);
 
@@ -382,7 +388,6 @@
 	    COMPARE_FLOAT("PRIMER_PAIR_WT_REP_SIM",
 					   pa->pr_pair_weights.repeat_sim);
 
-	    /* NEW */
 	    COMPARE_FLOAT("PRIMER_PAIR_WT_TEMPLATE_MISPRIMING",
 			  pa->pr_pair_weights.template_mispriming);
 	}

Modified: trunk/packages/primer3/branches/upstream/current/src/dpal.c
===================================================================
--- trunk/packages/primer3/branches/upstream/current/src/dpal.c	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/src/dpal.c	2007-02-17 04:15:41 UTC (rev 209)
@@ -37,7 +37,6 @@
 #include <string.h>
 #include <unistd.h>
 #include "dpal.h"
-#include "primer3_release.h"
 
 /* 
  * Panic messages for when the program runs out of memory.

Modified: trunk/packages/primer3/branches/upstream/current/src/format_output.c
===================================================================
--- trunk/packages/primer3/branches/upstream/current/src/format_output.c	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/src/format_output.c	2007-02-17 04:15:41 UTC (rev 209)
@@ -57,7 +57,7 @@
 			    primer_rec *h, const pair_array_t *, int);
 static void print_seq_lines(FILE *, const char *s, const char *n, int, int,
 			    int, const primer_args *);
-static void print_stat_line(FILE *, const char *, oligo_stats s, int);
+static void print_stat_line(FILE *, const char *, oligo_stats s, int, int);
 static void print_summary(FILE *, const primer_args *, 
 			  const seq_args *, const pair_array_t *, int);
 static void print_oligo_summary(FILE *, const primer_args *, 
@@ -455,10 +455,22 @@
     int print_lib_sim;
 {
   const pair_stats *x;
-  const char *format = print_lib_sim
-    ? "%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s\n"
-    : "%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s\n";
+  char *format;
 
+  if (print_lib_sim) {
+    if (pa->lowercase_masking) {
+      format = "%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s\n";
+    } else {
+      format = "%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s\n";
+    }
+  } else {
+    if (pa->lowercase_masking) {
+      format = "%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s\n";
+    } else {
+      format = "%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s\n";
+    }
+  }
+
   fprintf(f, "\nStatistics\n");
 
   if (!pa->pick_anyway
@@ -474,31 +486,61 @@
 	      && sa->internal_input))) {
 
     if (print_lib_sim) {
-      fprintf(f, format,
-	      "", "con", "too",  "in",  "in",  "",    "no",
-	      "tm",  "tm",  "high", "high", "high",
-	      "", "high", "");
-      fprintf(f, format,
-	      "", "sid", "many", "tar", "excl", "bad","GC",
-	      "too", "too", "any",  "3'", "lib",
-	      "poly", "end", "");
-      fprintf(f, format,
-	      "", "ered","Ns",   "get", "reg",  "GC%", "clamp",
-	      "low", "high","compl", "compl", "sim",
-	      "X",  "stab", "ok");
+      if (pa->lowercase_masking) {
+	fprintf(f, format,
+		"", "con", "too",  "in",  "in",  "",    "no",
+		"tm",  "tm",  "high", "high", "high",
+		"", "high", " lower", "");
+	fprintf(f, format,
+		"", "sid", "many", "tar", "excl", "bad","GC",
+		"too", "too", "any",  "3'", "lib",
+		"poly", "end", " case", "");
+	fprintf(f, format,
+		"", "ered","Ns",   "get", "reg",  "GC%", "clamp",
+		"low", "high","compl", "compl", "sim",
+		"X",  "stab", " end", "ok  ");
+      } else {
+	fprintf(f, format,
+		"", "con", "too",  "in",  "in",  "",    "no",
+		"tm",  "tm",  "high", "high", "high",
+		"", "high", "");
+	fprintf(f, format,
+		"", "sid", "many", "tar", "excl", "bad","GC",
+		"too", "too", "any",  "3'", "lib",
+		"poly", "end", "");
+	fprintf(f, format,
+		"", "ered","Ns",   "get", "reg",  "GC%", "clamp",
+		"low", "high","compl", "compl", "sim",
+		"X",  "stab", "ok");
+      }
     } else {
-      fprintf(f, format,
-	      "", "con", "too",  "in",  "in",  "",    "no",
-	      "tm",  "tm",  "high", "high",
-	      "", "high", "");
-      fprintf(f, format,
-	      "", "sid", "many", "tar", "excl", "bad","GC",
-	      "too", "too", "any",  "3'",
-	      "poly", "end", "");
-      fprintf(f, format,
-	      "", "ered","Ns",   "get", "reg",  "GC%", "clamp",
-	      "low", "high","compl", "compl",
-	      "X", "stab", "ok");
+      if (pa->lowercase_masking) {
+	fprintf(f, format,
+		"", "con", "too",  "in",  "in",  "",    "no",
+		"tm",  "tm",  "high", "high",
+		"", "high", " lower", "");
+	fprintf(f, format,
+		"", "sid", "many", "tar", "excl", "bad","GC",
+		"too", "too", "any",  "3'",
+		"poly", "end", " case", "");
+	fprintf(f, format,
+		"", "ered","Ns",   "get", "reg",  "GC%", "clamp",
+		"low", "high","compl", "compl",
+		"X", "stab", " end", "ok  ");
+      } else {
+	fprintf(f, format,
+		"", "con", "too",  "in",  "in",  "",    "no",
+		"tm",  "tm",  "high", "high",
+		"", "high", "");
+	fprintf(f, format,
+		"", "sid", "many", "tar", "excl", "bad","GC",
+		"too", "too", "any",  "3'",
+		"poly", "end", "");
+	fprintf(f, format,
+		"", "ered","Ns",   "get", "reg",  "GC%", "clamp",
+		"low", "high","compl", "compl",
+		"X", "stab", "ok");
+      }
     }
 
   }
@@ -507,18 +549,21 @@
        || pick_left_only == pa->primer_task
        || pick_pcr_primers_and_hyb_probe == pa->primer_task)
       && !(pa->pick_anyway && sa->left_input))
-    print_stat_line(f, "Left", sa->left_expl, print_lib_sim);
+    print_stat_line(f, "Left", sa->left_expl, 
+		    print_lib_sim, pa->lowercase_masking);
 
   if ((pick_pcr_primers == pa->primer_task
        || pick_right_only  == pa->primer_task
        || pick_pcr_primers_and_hyb_probe == pa->primer_task)
       && !(pa->pick_anyway && sa->right_input))
-    print_stat_line(f, "Right", sa->right_expl, print_lib_sim);
+    print_stat_line(f, "Right", sa->right_expl,
+		    print_lib_sim, pa->lowercase_masking);
 
   if ((pick_pcr_primers_and_hyb_probe == pa->primer_task
        || pick_hyb_probe_only == pa->primer_task)
       && !(pa->pick_anyway && sa->internal_input))
-    print_stat_line(f, "Intl", sa->intl_expl, print_lib_sim);
+    print_stat_line(f, "Intl", sa->intl_expl, 
+		    print_lib_sim, pa->lowercase_masking);
 
   if (pick_pcr_primers == pa->primer_task
       || pick_pcr_primers_and_hyb_probe == pa->primer_task) {
@@ -530,29 +575,48 @@
 }
 
 static void
-print_stat_line(f, t, s, print_lib_sim)
+print_stat_line(f, t, s, print_lib_sim, lowercase_masking)
     FILE *f;
     const char *t;
     oligo_stats s;
     int print_lib_sim;
+    int lowercase_masking;
 {
-    const char *format = print_lib_sim
-	? "%-6s%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d\n"
-	: "%-6s%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d\n";
-
-    if (print_lib_sim)
-	fprintf(f, format,
+  /* Modified by T. Koressaar to output statistics
+     for lowercase masking. */
+  if (print_lib_sim)
+    if (lowercase_masking) {
+      fprintf(f,
+	      "%-6s%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d\n",
+	      t, s.considered, s.ns, s.target, s.excluded,
+	      s.gc, s.gc_clamp, s.temp_min, s.temp_max,
+	      s.compl_any, s.compl_end, s.repeat_score,
+	      s.poly_x, s.stability, s.gmasked, s.ok);
+    } else {
+      fprintf(f,
+	      "%-6s%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d\n",
+	      t, s.considered, s.ns, s.target, s.excluded,
+	      s.gc, s.gc_clamp, s.temp_min, s.temp_max,
+	      s.compl_any, s.compl_end, s.repeat_score,
+	      s.poly_x, s.stability, s.ok);
+    } else {
+      if (lowercase_masking) {
+	fprintf(f,
+		"%-6s%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d\n",
 		t, s.considered, s.ns, s.target, s.excluded,
 		s.gc, s.gc_clamp, s.temp_min, s.temp_max,
-		s.compl_any, s.compl_end, s.repeat_score,
-		s.poly_x, s.stability, s.ok);
-    else 
-	fprintf(f, format,
+		s.compl_any, s.compl_end, s.poly_x, s.stability, s.gmasked, s.ok);
+      } else {
+	fprintf(f,
+		"%-6s%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d\n",
 		t, s.considered, s.ns, s.target, s.excluded,
 		s.gc, s.gc_clamp, s.temp_min, s.temp_max,
 		s.compl_any, s.compl_end, s.poly_x, s.stability, s.ok);
+      }
+    }
 }
 
+
 /* 
  * Return true iff a check for library similarity has been specified for
  * either the primer pair or the internal oligo.

Modified: trunk/packages/primer3/branches/upstream/current/src/long_seq_tm_test_main.c
===================================================================
--- trunk/packages/primer3/branches/upstream/current/src/long_seq_tm_test_main.c	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/src/long_seq_tm_test_main.c	2007-02-17 04:15:41 UTC (rev 209)
@@ -54,7 +54,8 @@
 #include <string.h>
 #include <math.h>
 
-double long_seq_tm(const char* s, int start, int len, double salt_conc);
+#include "oligotm.h"
+  /* double long_seq_tm(const char* s, int start, int len, double salt_conc, double divalent_conc, double dntp_conc); */
 
 int
 main(argc, argv)
@@ -63,6 +64,8 @@
 {
   const char *s;
   double salt_conc = 50;
+  double divalent_conc = 0;
+  double dntp_conc = 0;
   double tm;
   int start, len;
   char *endptr;
@@ -77,7 +80,7 @@
   len = strtol(argv[3], &endptr, 10);
   printf("s=%s, start=%d, length=%d\n", s, start, len);
   
-  tm = long_seq_tm(s, start, len, salt_conc);
+  tm = long_seq_tm(s, start, len, salt_conc, divalent_conc, dntp_conc);
   printf("tm = %f\n", tm);
   return 0;
 }

Modified: trunk/packages/primer3/branches/upstream/current/src/oligotm.c
===================================================================
--- trunk/packages/primer3/branches/upstream/current/src/oligotm.c	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/src/oligotm.c	2007-02-17 04:15:41 UTC (rev 209)
@@ -4,72 +4,115 @@
 (http://jura.wi.mit.edu/rozen), and Helen Skaletsky
 All rights reserved.
 
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
+    This file is part of the oligotm library.
 
-   * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-   * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-   * Neither the names of the copyright holders nor contributors may
-be used to endorse or promote products derived from this software
-without specific prior written permission.
+    The oligotm library is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+    The oligotm library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with the oligtm library (file gpl.txt in the source
+    distribution); if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
 */
 
 #include <limits.h>
 #include <math.h>
 #include <string.h>
 #include "oligotm.h"
-#include "primer3_release.h"
 
-/* 
- * Tables of nearest-neighbor thermodynamics for DNA bases.
- * See Breslauer, Frank, Blocker, and Markey, 
- * "Predicting DNA duplex stability from the base sequence."
- * Proc. Natl. Acad. Sci. USA, vol 83, page 3746 (1986).
- * Article free at
- * http://www.pubmedcentral.nih.gov/picrender.fcgi?artid=323600&blobtype=pdf
- * See table 2.
+#define A_CHAR 'A'
+#define G_CHAR 'G'
+#define T_CHAR 'T'
+#define C_CHAR 'C'
+#define N_CHAR 'N'
+
+#define CATID5(A,B,C,D,E) A##B##C##D##E
+#define CATID2(A,B) A##B
+
+#define DO_PAIR(LAST,THIS)          \
+  if (CATID2(THIS,_CHAR) == c) {    \
+     dh += CATID5(H,_,LAST,_,THIS); \
+     ds += CATID5(S,_,LAST,_,THIS); \
+     goto CATID2(THIS,_STATE);      \
+  }
+
+#define STATE(LAST)     \
+   CATID2(LAST,_STATE): \
+   c = *s; s++;         \
+   DO_PAIR(LAST,A)      \
+   else DO_PAIR(LAST,T) \
+   else DO_PAIR(LAST,G) \
+   else DO_PAIR(LAST,C) \
+   else DO_PAIR(LAST,N) \
+   else if ('\0' == c)  \
+             goto DONE; \
+   else goto ERROR \
+
+#define DO_PAIR2(LAST,THIS)          \
+     if (CATID2(THIS,_CHAR) == c) { \
+      dh += CATID5(DH,_,LAST,_,THIS); \
+      ds += CATID5(DS,_,LAST,_,THIS); \
+      goto CATID2(THIS,_STATE2);      \
+   }
+#define STATE2(LAST)     \
+   CATID2(LAST,_STATE2): \
+   c = *s; s++;         \
+   DO_PAIR2(LAST,A)      \
+   else DO_PAIR2(LAST,T) \
+   else DO_PAIR2(LAST,G) \
+   else DO_PAIR2(LAST,C) \
+   else DO_PAIR2(LAST,N) \
+   else if ('\0' == c)  \
+   goto DONE; \
+   else goto ERROR \
+
+/*
+ * Two tables of nearest-neighbor parameters for di-nucleotide
+ * base pairs.
+ *
+ * These are included in this file because they are not needed by
+ * clients (callers) of oligtm().
  */
+
+/* Table 1 (old parameters):
+ * See table 2 in the paper [Breslauer KJ, Frank R, Blöcker H and
+ * Marky LA (1986) "Predicting DNA duplex stability from the base
+ * sequence" Proc Natl Acad Sci 83:4746-50
+ * http://dx.doi.org/10.1073/pnas.83.11.3746]
+ */
+
 #define S_A_A 240
 #define S_A_C 173
 #define S_A_G 208
 #define S_A_T 239
 #define S_A_N 215
-  
+
 #define S_C_A 129
 #define S_C_C 266
 #define S_C_G 278
 #define S_C_T 208
-#define S_C_N 220  
-  
+#define S_C_N 220
+
 #define S_G_A 135
 #define S_G_C 267
 #define S_G_G 266
 #define S_G_T 173
 #define S_G_N 210
-  
+
 #define S_T_A 169
 #define S_T_C 135
 #define S_T_G 129
 #define S_T_T 240
 #define S_T_N 168
-  
+
 #define S_N_A 168
 #define S_N_C 210
 #define S_N_G 220
@@ -114,7 +157,7 @@
 #define G_A_T  1500
 #define G_A_N  1575
 
-#define G_C_A  1900 
+#define G_C_A  1900
 #define G_C_C  3100
 #define G_C_G  3600
 #define G_C_T  1600
@@ -138,45 +181,174 @@
 #define G_N_T  1575
 #define G_N_N  1994
 
-#define A_CHAR 'A'
-#define G_CHAR 'G'
-#define T_CHAR 'T'
-#define C_CHAR 'C'
-#define N_CHAR 'N'
+/* Table 2, new parameters:
+ * Tables of nearest-neighbor thermodynamics for DNA bases, from the
+ * paper [SantaLucia JR (1998) "A unified view of polymer, dumbbell
+ * and oligonucleotide DNA nearest-neighbor thermodynamics", Proc Natl
+ * Acad Sci 95:1460-65 http://dx.doi.org/10.1073/pnas.95.4.1460]
+ */
 
-#define CATID5(A,B,C,D,E) A##B##C##D##E
-#define CATID2(A,B) A##B
-#define DO_PAIR(LAST,THIS)          \
-  if (CATID2(THIS,_CHAR) == c) {    \
-     dh += CATID5(H,_,LAST,_,THIS); \
-     ds += CATID5(S,_,LAST,_,THIS); \
-     goto CATID2(THIS,_STATE);      \
-  }
+#define DS_A_A 222
+#define DS_A_C 224
+#define DS_A_G 210
+#define DS_A_T 204
+#define DS_A_N 224
 
-#define STATE(LAST)     \
-   CATID2(LAST,_STATE): \
-   c = *s; s++;         \
-   DO_PAIR(LAST,A)      \
-   else DO_PAIR(LAST,T) \
-   else DO_PAIR(LAST,G) \
-   else DO_PAIR(LAST,C) \
-   else DO_PAIR(LAST,N) \
-   else if ('\0' == c)  \
-             goto DONE; \
-   else goto ERROR \
+#define DS_C_A 227
+#define DS_C_C 199
+#define DS_C_G 272
+#define DS_C_T 210
+#define DS_C_N 272
 
+#define DS_G_A 222
+#define DS_G_C 244
+#define DS_G_G 199
+#define DS_G_T 224
+#define DS_G_N 244
+
+#define DS_T_A 213
+#define DS_T_C 222
+#define DS_T_G 227
+#define DS_T_T 222
+#define DS_T_N 227
+
+#define DS_N_A 168
+#define DS_N_C 210
+#define DS_N_G 220
+#define DS_N_T 215
+#define DS_N_N 220
+
+
+#define DH_A_A  79
+#define DH_A_C  84
+#define DH_A_G  78
+#define DH_A_T  72
+#define DH_A_N  72
+
+#define DH_C_A  85
+#define DH_C_C  80
+#define DH_C_G 106
+#define DH_C_T  78
+#define DH_C_N  78
+
+#define DH_G_A  82
+#define DH_G_C  98
+#define DH_G_G  80
+#define DH_G_T  84
+#define DH_G_N  80
+
+#define DH_T_A  72
+#define DH_T_C  82
+#define DH_T_G  85
+#define DH_T_T  79
+#define DH_T_N  72
+
+#define DH_N_A  72
+#define DH_N_C  80
+#define DH_N_G  78
+#define DH_N_T  72
+#define DH_N_N  72
+
+/* Delta G's of disruption * 1000. */
+#define DG_A_A  1000
+#define DG_A_C  1440
+#define DG_A_G  1280
+#define DG_A_T  880
+#define DG_A_N  880
+
+#define DG_C_A  1450
+#define DG_C_C  1840
+#define DG_C_G  2170
+#define DG_C_T  1280
+#define DG_C_N  1450
+
+#define DG_G_A  1300
+#define DG_G_C  2240
+#define DG_G_G  1840
+#define DG_G_T  1440
+#define DG_G_N  1300
+
+#define DG_T_A   580
+#define DG_T_C  1300
+#define DG_T_G  1450
+#define DG_T_T  1000
+#define DG_T_N   580
+
+#define DG_N_A   580
+#define DG_N_C  1300
+#define DG_N_G  1280
+#define DG_N_T   880
+#define DG_N_N   580
+
+/* End of tables nearest-neighbor parameter. */
+
+
+/* Calculate the melting temperature of oligo s.  See
+   oligotm.h for documentation of arguments.
+*/
 double 
-oligotm(s, DNA_nM, K_mM)
+oligotm(s, DNA_nM, K_mM, divalent_conc, dntp_conc, tm_santalucia, salt_corrections)
      const  char *s;
      double DNA_nM;
      double K_mM;
+     double divalent_conc;
+     double dntp_conc;
+     int tm_santalucia;
+     int salt_corrections;
 {
-    register int dh = 0, ds = 108;
-    register char c;
-    double delta_H, delta_S;
+  register int dh = 0, ds = 0;
+  register char c;
+  double delta_H, delta_S;
+  int len, sym;
+  const char* d = s;
+   if(divalent_to_monovalent(divalent_conc, dntp_conc) == OLIGOTM_ERROR) return OLIGOTM_ERROR;
+   
+   K_mM = K_mM + divalent_to_monovalent(divalent_conc, dntp_conc);
+  if (tm_santalucia != TM_METHOD_BRESLAUER
+      && tm_santalucia != TM_METHOD_SANTALUCIA)
+    return OLIGOTM_ERROR;
+  if (salt_corrections != SALT_CORRECTION_SCHILDKRAUT
+      && salt_corrections != SALT_CORRECTION_SANTALUCIA
+      && salt_corrections != SALT_CORRECTION_OWCZARZY)
+    return OLIGOTM_ERROR;
 
-    /* Use a finite-state machine (DFA) to calucluate dh and ds for s. */
-    c = *s; s++;
+  len = (strlen(s)-1);
+
+  sym = symmetry(s); /*Add symmetry correction if seq is symmetrical*/
+  if( tm_santalucia == TM_METHOD_BRESLAUER ) {
+    ds=108;
+  }
+  else {
+    if(sym == 1) {
+      ds+=14;
+    }
+	 
+    /** Terminal AT penalty **/
+      
+    if(strncmp("A", s, 1)==0
+       || strncmp("T", s, 1)==0)  {
+      ds += -41;
+      dh += -23;
+    } else if (strncmp("C", s, 1)==0 
+	       || strncmp("G", s, 1)==0) {
+      ds += 28;
+      dh += -1;
+    }
+    s+=len;
+    if(strncmp("T", s, 1)==0 
+       || strncmp("A", s, 1)==0) {
+      ds += -41;
+      dh += -23;
+    } else if (strncmp("C", s, 1)==0 
+	       || strncmp("G", s, 1)==0) {
+      ds += 28;
+      dh += -1;
+    }
+    s-=len;
+  }
+  /* Use a finite-state machine (DFA) to calucluate dh and ds for s. */
+  c = *s; s++;
+  if (tm_santalucia == TM_METHOD_BRESLAUER) {
     if (c == 'A') goto A_STATE;
     else if (c == 'G') goto G_STATE;
     else if (c == 'T') goto T_STATE;
@@ -188,36 +360,82 @@
     STATE(G);
     STATE(C);
     STATE(N);
-
+  } else {
+    if (c == 'A') goto A_STATE2;
+    else if (c == 'G') goto G_STATE2;
+    else if (c == 'T') goto T_STATE2;
+    else if (c == 'C') goto C_STATE2;
+    else if (c == 'N') goto N_STATE2;
+    else goto ERROR;
+    STATE2(A);
+    STATE2(T);
+    STATE2(G);
+    STATE2(C);
+    STATE2(N);
+  }
+   
+   
  DONE:  /* dh and ds are now computed for the given sequence. */
-    delta_H = dh * -100.0;  /* 
-			     * Nearest-neighbor thermodynamic values for dh
-			     * are given in 100 cal/mol of interaction.
-			     */
-    delta_S = ds * -0.1;     /*
-			      * Nearest-neighbor thermodynamic values for ds
-			      * are in in .1 cal/K per mol of interaction.
-			      */
+  delta_H = dh * -100.0;  /* 
+			   * Nearest-neighbor thermodynamic values for dh
+			   * are given in 100 cal/mol of interaction.
+			   */
+  delta_S = ds * -0.1;     /*
+			    * Nearest-neighbor thermodynamic values for ds
+			    * are in in .1 cal/K per mol of interaction.
+			    */
+  double Tm=0;  /* Melting temperature */
+  len=len+1;
+  if (salt_corrections == SALT_CORRECTION_SCHILDKRAUT) {
+    double correction=- 273.15 + 16.6 * log10(K_mM/1000.0);
+    Tm = delta_H / (delta_S + 1.987 * log(DNA_nM/4000000000.0)) + correction;
+  } else if (salt_corrections== SALT_CORRECTION_SANTALUCIA) {
+    delta_S = delta_S + 0.368 * (len - 1) * log(K_mM / 1000.0 );
+    if(sym == 1) { /* primer is symmetrical */
+      /* Equation A */
+      Tm = delta_H / (delta_S + 1.987 * log(DNA_nM/1000000000.0)) - 273.15;
+    } else {
+      /* Equation B */
+      Tm = delta_H / (delta_S + 1.987 * log(DNA_nM/4000000000.0)) - 273.15;
+    }      
+  } else if (salt_corrections== SALT_CORRECTION_OWCZARZY) {
+    double gcPercent=0;
+    int i;
+    for(i=0; i<=len && d != NULL && d != '\0';) {
+      if(*d == 'C' || *d == 'G') {
+	gcPercent++;
+      }
+      *d++;
+      i++;
+    }      
+    gcPercent = (double)gcPercent/((double)len);
 
-    /* 
-     * See Rychlik, Spencer, Rhoads,
-     * "Optimization of the annealing temperature for
-     * DNA amplification in vitro."
-     * Nucleic Acids Research, vol 18, no 21, page 6409 (1990).
-     * Article free at 
-     * http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pubmed&pubmedid=2243783
-     * See eqn (ii).
-     */
-    return delta_H / (delta_S + 1.987 * log(DNA_nM/4000000000.0))
-	- 273.15 + 16.6 * log10(K_mM/1000.0);
+    double correction 
+      = (((4.29 * gcPercent) - 3.95) * pow(10,-5) * log(K_mM / 1000.0))
+      + (9.40 * pow(10,-6) * (pow(log(K_mM / 1000.0),2)));
 
+    if (sym == 1) { /* primer is symmetrical */
+      /* Equation A */
+      Tm 
+	= (1/((1/(delta_H / (delta_S + 1.9872 * log(DNA_nM/1000000000.0)))) + correction))
+	- 273.15;
+    } else {
+      /* Equation B */
+      Tm 
+	= (1/((1/(delta_H / (delta_S + 1.9872 * log(DNA_nM/4000000000.0)))) + correction))
+	- 273.15;
+    }
+            
+  }
+  return Tm;
  ERROR:  /* 
 	  * length of s was less than 2 or there was an illegal character in
 	  * s.
 	  */
-    return OLIGOTM_ERROR;
+  return OLIGOTM_ERROR;
 }
 #undef DO_PAIR
+#undef DO_PAIR2
 
 #define DO_PAIR(LAST,THIS)          \
   if (CATID2(THIS,_CHAR) == c) {    \
@@ -225,15 +443,43 @@
      goto CATID2(THIS,_STATE);      \
   }
 
+#define DO_PAIR2(LAST,THIS)          \
+     if (CATID2(THIS,_CHAR) == c) { \
+     dg += CATID5(DG,_,LAST,_,THIS); \
+     goto CATID2(THIS,_STATE2);      \
+}
+
 double 
-oligodg(s)
+oligodg(s, tm_santalucia)
     const char *s;       /* The sequence. */
+    int tm_santalucia; 
 {
-    register int dg = 0;
-    register char c;
+   register int dg = 0;
+   register char c;
 
-    /* Use a finite-state machine (DFA) to calucluate dg s. */
-    c = *s; s++;
+  if (tm_santalucia != TM_METHOD_BRESLAUER
+      && tm_santalucia != TM_METHOD_SANTALUCIA)
+    return OLIGOTM_ERROR;
+
+   /* Use a finite-state machine (DFA) to calucluate dg s. */
+   c = *s; s++;
+   if(tm_santalucia != TM_METHOD_BRESLAUER) {      
+      dg=-1960; /* Initial dG */
+      if(c == 'A' || c == 'T')  {
+	 dg += -50; /* terminal AT penalty */
+      }
+      if (c == 'A') goto A_STATE2;
+      else if (c == 'G') goto G_STATE2;
+      else if (c == 'T') goto T_STATE2;
+      else if (c == 'C') goto C_STATE2;
+      else if (c == 'N') goto N_STATE2;
+      else goto ERROR;
+      STATE2(A);
+      STATE2(T);
+      STATE2(G);
+      STATE2(C);
+      STATE2(N);
+     } else {
     if (c == 'A') goto A_STATE;
     else if (c == 'G') goto G_STATE;
     else if (c == 'T') goto T_STATE;
@@ -246,8 +492,20 @@
     STATE(C);
     STATE(N);
 
- DONE:  /* dg is now computed for the given sequence. */
-    return dg / 1000.0;
+     }
+DONE:  /* dg is now computed for the given sequence. */
+   if(tm_santalucia != TM_METHOD_BRESLAUER) {
+      int sym;
+      --s; --s; c = *s;
+      if(c == 'A' || c == 'T')  {
+	 dg += -50; /* terminal AT penalty */
+      }
+      sym = symmetry(s);
+      if(sym==1)   {
+	 dg +=-430; /* symmetry correction for dG */
+      }
+   }
+   return dg / 1000.0;
 
  ERROR:  /* 
 	  * length of s was less than 2 or there was an illegal character in
@@ -256,41 +514,71 @@
     return OLIGOTM_ERROR;
 }
 
-double end_oligodg(s, len)
-  const char *s;
+double end_oligodg(s, len, tm_santalucia)
+  const char *s;  
   int len; /* The number of characters to return. */
+  int tm_santalucia;
 {
   int x = strlen(s);
-  return x < len ? oligodg(s) : oligodg(s + (x - len));
+
+  if (tm_santalucia != TM_METHOD_BRESLAUER
+      && tm_santalucia != TM_METHOD_SANTALUCIA)
+    return OLIGOTM_ERROR;
+
+  return 
+    x < len 
+    ? oligodg(s,tm_santalucia) :
+    oligodg(s + (x - len),tm_santalucia);
 }
 
-double seqtm(seq, dna_conc, salt_conc, nn_max_len)
+/* See oligotm.h for documentation of arguments. */
+double seqtm(seq, dna_conc, salt_conc, divalent_conc, dntp_conc, nn_max_len,
+	     tm_santalucia, salt_corrections)
   const  char *seq;
   double dna_conc;
   double salt_conc;
+  double divalent_conc;
+  double dntp_conc;
   int    nn_max_len;
+  int    tm_santalucia;
+  int    salt_corrections;
 {
   int len = strlen(seq);
+   if (tm_santalucia != TM_METHOD_BRESLAUER
+      && tm_santalucia != TM_METHOD_SANTALUCIA)
+    return OLIGOTM_ERROR;
+  if (salt_corrections != SALT_CORRECTION_SCHILDKRAUT
+      && salt_corrections != SALT_CORRECTION_SANTALUCIA
+      && salt_corrections != SALT_CORRECTION_OWCZARZY)
+    return OLIGOTM_ERROR;
+
   return (len > nn_max_len)
-    ? long_seq_tm(seq, 0, len, salt_conc) : oligotm(seq, dna_conc, salt_conc);
+    ? long_seq_tm(seq, 0, len, salt_conc, divalent_conc, dntp_conc) 
+    : oligotm(seq, dna_conc, salt_conc, divalent_conc, dntp_conc, tm_santalucia, salt_corrections);
 }
 
 /* See oligotm.h for documentation on this function and the formula it
    uses. */
 double
-long_seq_tm(s, start, len, salt_conc)
+long_seq_tm(s, start, len, salt_conc, divalent_conc, dntp_conc)
   const char *s;
   int start, len;
   double salt_conc;
+  double divalent_conc;
+  double dntp_conc;
 {
-  int GC_count = 0;
+   if(divalent_to_monovalent(divalent_conc, dntp_conc) == OLIGOTM_ERROR) return OLIGOTM_ERROR;
+   
+   salt_conc = salt_conc + divalent_to_monovalent(divalent_conc, dntp_conc);
+   int GC_count = 0;
   const char *p, *end;
 
-  if(start + len > strlen(s) || start < 0 || len <= 0) return OLIGOTM_ERROR;
+  if(start + len > strlen(s) || start < 0 || len <= 0)
+    return OLIGOTM_ERROR;
   end = &s[start + len];
   /* Length <= 0 is nonsensical. */
   for (p = &s[start]; p < end; p++) {
-    if ('G' == *p || 'g' == *p || 'C' == *p || 'c' == *p)
+    if ('G' == *p || 'C' == *p)
       GC_count++;
   }
 
@@ -301,3 +589,45 @@
     - (600.0 / len);
 
 }
+
+int symmetry(const char* seq) { /* for testing if string is symmetrical*/ 
+   register char s;
+   register char e;
+   const char *seq_end=seq;
+   int i = 0;
+   int seq_len=strlen(seq);
+   int mp = seq_len/2;
+   if(seq_len%2==1) {
+      return 0;
+   }
+   seq_end+=seq_len;
+   seq_end--;
+   while(i<mp) {
+      i++;
+      s=*seq;
+      e=*seq_end;
+      if ((s=='A' && e!='T') 
+	  || (s=='T' && e!='A') 
+	  || (e=='A' && s!='T') 
+	  || (e=='T' && s!='A')) {
+	 return 0;
+      }
+      if ((s=='C' && e!='G')
+	  || (s=='G' && e!='C')
+	  || (e=='C' && s!='G')
+	  || (e=='G' && s!='C')) {
+	 return 0;
+      }
+      seq++;
+      seq_end--;
+   }
+   return 1;
+}
+
+double divalent_to_monovalent(double divalent, double dntp){ /* converting divalent salt concentration to monovalent */
+   if(divalent==0) dntp=0;
+   if(divalent<0 || dntp<0) return OLIGOTM_ERROR;
+   if(divalent<dntp) /* according to theory melting temperature doesn't depend on divalent cations */
+     divalent=dntp;  
+   return 120*(sqrt(divalent-dntp));
+}

Modified: trunk/packages/primer3/branches/upstream/current/src/oligotm.h
===================================================================
--- trunk/packages/primer3/branches/upstream/current/src/oligotm.h	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/src/oligotm.h	2007-02-17 04:15:41 UTC (rev 209)
@@ -4,40 +4,32 @@
 (http://jura.wi.mit.edu/rozen), and Helen Skaletsky
 All rights reserved.
 
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
+    This file is part of the oligotm library.
 
-   * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-   * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-   * Neither the names of the copyright holders nor contributors may
-be used to endorse or promote products derived from this software
-without specific prior written permission.
+    The oligotm library is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+    The oligotm library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with the oligtm library (file gpl.txt in the source
+    distribution); if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
 */
-
+     
 #ifndef _OLIGO_TM
 #define _OLIGO_TM 1
 #define OLIGOTM_ERROR -999999.9999
 
 /* Return the delta G of the last len bases of oligo if oligo is at least len
    bases long; otherwise return the delta G of oligo. */
-double end_oligodg(const char *oligo, int len);
+double end_oligodg(const char *oligo, int len, int tm_santalucia);
 
 /* Calculate the melting temperature of substr(seq, start, length) using the
    formula from Bolton and McCarthy, PNAS 84:1390 (1962) as presented in
@@ -62,32 +54,123 @@
    since mM is the usual units in PCR applications.
 
  */
-double long_seq_tm(const char *seq, int start, int length, double salt_conc);
+double long_seq_tm(const char *seq, int start, int length, double salt_conc, double divalent_conc, double dntp_conc);
 
-/* Return the melting temperature of the given oligo, as calculated using eqn
-    (ii) in Rychlik, Spencer, Roads, Nucleic Acids Research, vol 18, no 21, page
-    6410, with tables of nearest-neighbor thermodynamics for DNA bases as
-    provided in Breslauer, Frank, Bloecker, and Markey,
-    Proc. Natl. Acad. Sci. USA, vol 83, page 3748. */
-double oligotm(const  char *seq, /* The sequence. */
-               double dna_conc,  /* DNA concentration (nanomolar). */
-               double salt_conc  /* Salt concentration (millimolar). */
+/* 
+   For olgigotm() and seqtm()
+
+   Both functions return the melting temperature of the given oligo
+   calculated as specified by user, but oligotm _should_ only be used on
+   DNA sequences of length <= MAX_PRIMER_LENGTH (which is defined
+   elsewhere).  seqtm uses oligotm for sequences of length <=
+   MAX_PRIMER_LENGTH, and a different, G+C% based formula for longer
+   sequences.  For oligotm(), no error is generated on sequences
+   longer than MAX_PRIMER_LENGTH, but the formula becomes less
+   accurate as the sequence grows longer.  Caveat emptor.
+
+   We use the folowing defines:
+*/
+
+#define TM_METHOD_SANTALUCIA 1
+#define TM_METHOD_BRESLAUER  0
+#define SALT_CORRECTION_SCHILDKRAUT 0
+#define SALT_CORRECTION_SANTALUCIA  1
+#define SALT_CORRECTION_OWCZARZY    2
+
+/* 
+   If tm_santalucia==TM_METHOD_SANTALUCIA, then the table of
+   nearest-neighbor thermodynamic parameters and method for Tm
+   calculation in the paper [SantaLucia JR (1998) "A unified view of
+   polymer, dumbbell and oligonucleotide DNA nearest-neighbor
+   thermodynamics", Proc Natl Acad Sci 95:1460-65
+   http://dx.doi.org/10.1073/pnas.95.4.1460] is used.
+   *THIS IS THE RECOMMENDED VALUE*.
+   Added by T. Koressaar
+ 
+   If tm_santalucia==TM_METHOD_BRESLAUER, then method for Tm
+   calculations in the paper [Rychlik W, Spencer WJ and Rhoads RE
+   (1990) "Optimization of the annealing temperature for DNA
+   amplification in vitro", Nucleic Acids Res 18:6409-12
+   http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pubmed&pubmedid=2243783].
+   and the thermodynamic parameters in the paper [Breslauer KJ, Frank
+   R, Blöcker H and Marky LA (1986) "Predicting DNA duplex stability
+   from the base sequence" Proc Natl Acad Sci 83:4746-50
+   http://dx.doi.org/10.1073/pnas.83.11.3746], are is used.  This is
+   the method and the table that primer3 used up to and including
+   version 1.0.1
+ 
+   If salt_corrections==SALT_CORRECTION_SCHILDKRAUT, then formula for
+   salt correction in the paper [Schildkraut, C, and Lifson, S (1965)
+   "Dependence of the melting temperature of DNA on salt
+   concentration", Biopolymers 3:195-208 (not available on-line)] is
+   used.  This is the formula that primer3 used up to and including
+   version 1.0.1.
+
+   If salt_corrections==SALT_CORRECTION_SANTALUCIA, then formula for
+   salt correction suggested by the paper [SantaLucia JR (1998) "A
+   unified view of polymer, dumbbell and oligonucleotide DNA
+   nearest-neighbor thermodynamics", Proc Natl Acad Sci 95:1460-65
+   http://dx.doi.org/10.1073/pnas.95.4.1460] is used.
+
+   *THIS IS THE RECOMMENDED VALUE*. 
+   Added by T.Koressaar
+ 
+   If salt_corrections==SALT_CORRECTION_OWCZARZY, then formula for
+   salt correction in the paper [Owczarzy R, You Y, Moreira BG,
+   Manthey JA, Huang L, Behlke MA and Walder JA (2004) "Effects of
+   sodium ions on DNA duplex oligomers: Improved predictions of
+   melting temperatures", Biochemistry 43:3537-54
+   http://dx.doi.org/10.1021/bi034621r] is used.
+   Added by T.Koressaar
+
+ */
+
+double oligotm(const  char *seq,     /* The sequence. */
+               double dna_conc,      /* DNA concentration (nanomolar). */
+               double salt_conc,     /* Salt concentration (millimolar). */
+	       double divalent_conc, /* Concentration of divalent cations (millimolar) */
+	       double dntp_conc,     /* Concentration of dNTPs (millimolar) */
+	       int tm_santalucia,    /* See description above. */
+	       int salt_corrections  /* See description above. */
 	       );
 
-/* Return the delta G of disruption of oligo using the nearest neighbor model;
-   seq should be relatively short, given the characteristics of the nearest
-   neighbor model. */
-double oligodg(const char *oligo);
-
-/* Return the melting temperature of a given sequence, 'seq'. */
+/* Return the melting temperature of a given sequence, 'seq', of any
+   length.
+*/
 double seqtm(const  char *seq,  /* The sequence. */
              double dna_conc,   /* DNA concentration (nanomolar). */
-             double salt_conc,  /* Salt concentration (millimolar). */
-             int    nn_max_len  /* The maximum sequence length for using the
-				   nearest neighbor model (as implemented
-				   in oligotm. For sequences longer
-				   than this use the "GC%" formula implemented
-				   in long_seq_tm. */
+             double salt_conc,  /* Concentration of divalent cations (millimolar). */
+	     double divalent_conc, /* Concentration of divalent cations (millimolar) */
+	     double dntp_conc,     /* Concentration of dNTPs (millimolar) */
+             int    nn_max_len,  /* The maximum sequence length for
+				    using the nearest neighbor model
+				    (as implemented in oligotm.  For
+				    sequences longer than this, seqtm
+				    uses the "GC%" formula implemented
+				    in long_seq_tm.
+				 */
+
+	     int tm_santalucia,   /* See description above. */
+	     int salt_corrections /* See description above. */
 	     );
+
+
+/* Return the delta G of disruption of oligo using the nearest neighbor model.
+   The length of seq should be relatively short, 
+   given the characteristics of the nearest
+   neighbor model.
+*/
+double oligodg(const char *seq, 
+	       int tm_santalucia /* See description above. */
+	       );
+
+/* Returns 1 if the sequence is self-complementary or symmetrical; 0
+   otherwise
+*/
+int symmetry(const char *seq);
+
+/* Converts divalent salt concentration to monovalent salt concentration */
+
+double divalent_to_monovalent(double divalent, double dntp);
+
 #endif
-

Modified: trunk/packages/primer3/branches/upstream/current/src/oligotm_main.c
===================================================================
--- trunk/packages/primer3/branches/upstream/current/src/oligotm_main.c	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/src/oligotm_main.c	2007-02-17 04:15:41 UTC (rev 209)
@@ -4,94 +4,194 @@
 (http://jura.wi.mit.edu/rozen), and Helen Skaletsky
 All rights reserved.
 
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
+    This file is part of the oligotm library.
 
-   * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-   * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-   * Neither the names of the copyright holders nor contributors may
-be used to endorse or promote products derived from this software
-without specific prior written permission.
+    The oligotm library is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+    The oligotm library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with the oligtm library (file gpl.txt in the source
+    distribution); if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
 */
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <ctype.h>
 #include "oligotm.h"
 
-/* Print the melting tm of an oligo on stdout. */
+/* Print the melting temperature of an oligo on stdout. */
+/* This program provides a command line interface to
+   the function oligotm() in oligtm.c
+*/
 int
 main(argc, argv)
     int argc;
-    const char **argv;
+    char **argv;
 {
-    double tm;
-    char *msg = "Usage: %s [-k salt-conc] [-d template-conc] oligo\n\n"
-                "where oligo is an oligonucleotide sequence of between 2 and 36 bases.\n"
-		"(Bases in oligo must be uppercase.)\n"
-                "salt-conc is mM salt (usually K) concentration; defaults to 50mM\n"
-                "template-conc is nM template concentration\n; defaults to 50nM\n"
-		"Prints oligo's melting temperature on stdout.\n";
-    char *endptr;
-    long k = 50, d = 50;
-    int i;
+  double tm;
 
-    if (argc < 2 || argc > 6) {
-	fprintf(stderr, msg, argv[0]);
-        return -1;
-    }
+  char *msg = "USAGE: %s OPTIONS oligo\n"
+    "\n"
+    "where oligo is a DNA sequence of between 2 and 36 bases\n"
+    "\n"
+    "and\n"
+     "\n"
+     "OPTIONS can include any of the the following:\n"
+     "\n"
+     "-mv monovalent_conc - concentration of monovalent cations in mM, by default 50mM\n"
+     "\n"
+     "-dv divalent_conc   - concentration of divalent cations in mM, by default 0mM\n"
+     "\n"
+     "-n  dNTP_conc       - concentration of deoxynycleotide triphosphate in mM, by default 0mM\n"
+     "\n"
+     "-d  dna_conc        - concentration of DNA strands in nM, by default 50nM\n"
+     "\n"
 
-    for (i=1; i < argc; ++i) {
-	if (!strncmp("-k", argv[i], 2)) {
-	    k = strtol(argv[i+1], &endptr, 10);
-	    if ('\0' != *endptr) {
-		fprintf(stderr, msg, argv[0]);
-		exit(-1);
-	    }
-	    i++;
-	} else if (!strncmp("-d", argv[i], 2)) {
-	    d = strtol(argv[i+1], &endptr, 10);
-	    if ('\0' != *endptr) {
-		fprintf(stderr, msg, argv[0]);
-		exit(-1);
-	    }
-	    i++;
-	} else if (!strncmp("-", argv[i], 1)) {
-	    /* Unknown option. */
-	    fprintf(stderr, msg, argv[0]);
-	    exit(-1);
-	} else
-	    break;		/* all args processed. go on to sequences. */
-    }
+    "-tp [0|1]     - Specifies the table of thermodynamic parameters and\n"
+    "                the method of melting temperature calculation:\n"
+    "                 0  Breslauer et al., 1986 and Rychlik et al., 1990\n"
+    "                    (used by primer3 up to and including release 1.1.0).\n"
+    "                    This is the default, but _not_ the recommended value.\n"
+    "                 1  Use nearest neighbor parameters from SantaLucia 1998\n"
+    "                    *THIS IS THE RECOMMENDED VALUE*\n"
+    "\n"
+    "-sc [0..2]    - Specifies salt correction formula for the melting \n"
+    "                 temperature calculation\n"
+    "                  0  Schildkraut and Lifson 1965, used by primer3 up to \n"
+    "                     and including release 1.1.0.\n"
+    "                     This is the default but _not_ the recommended value.\n"
+    "                  1  SantaLucia 1998\n"
+    "                     *THIS IS THE RECOMMENDED VAULE*\n"
+    "                  2  Owczarzy et al., 2004\n\n"
+    "-i             - prints references to publications which were used for thermodynamic calculations\n"
+    "\n\n"
+    "Prints oligo's melting temperature on stdout.\n";
+   
+  char *info = "1. Breslauer KJ, Frank R, Blöcker H and Marky LA. (1986) Predicting DNA duplex stability from the base sequence. Proc. Natl. Acad. Sci., 83, 4746-50.\n\n"
+    "2. Rychlik W, Spencer WJ and Rhoads RE. (1990) Optimization of the annealing temperature for DNA amplification in vitro. Nucleic Acids Res., 118, 6409-12.\n\n"
+    "3. SantaLucia JR. (1998). A unified view of polymer, dumbbell and oligonucleotide DNA nearest-neighbor thermodynamics. Proc. Natl. Acad. Sci., 95, 1460-65.\n\n"
+    "4. Schildkraut, C, and Lifson, S. (1965) Dependence of the melting temperature of DNA on salt concentration. Biopolymers, 3, 195-208.\n\n"
+    "5. Owczarzy R, You Y, Moreira BG, Manthey JA, Huang L, Behlke MA and Walder JA. (2004) Effects of Sodium Ions on DNA Duplex Oligomers: Improved Predictions of Melting Temperatures. Biochemistry, 43, 3537-54.\n";
+   
+   char *copyright = 
+"Copyright (c) 1996,1997,1998,1999,2000,2001,2004,2006\n"
+"Whitehead Institute for Biomedical Research, Steve Rozen\n"
+"(http://jura.wi.mit.edu/rozen), and Helen Skaletsky\n"
+"All rights reserved.\n"
+"\n"
+"    This file is part of the oligotm library.\n"
+"\n"
+"    The oligotm library is free software; you can redistribute it and/or modify\n"
+"    it under the terms of the GNU General Public License as published by\n"
+"    the Free Software Foundation; either version 2 of the License, or\n"
+"    (at your option) any later version.\n"
+"\n"
+"    The oligotm library is distributed in the hope that it will be useful,\n"
+"    but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"    GNU General Public License for more details.\n"
+"\n"
+"    You should have received a copy of the GNU General Public License\n"
+"    along with the oligtm library (file gpl.txt in the source\n"
+"    distribution or see http://www.gnu.org/licenses/gpl.txt);\n"
+"    if not, write to the Free Software Foundation, Inc.,\n"
+"    51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA\n";
 
-    tm = oligotm(argv[i], d, k);
-    if (OLIGOTM_ERROR == tm) {
-	fprintf(stderr,
-		"%s: length of %s is less than 2 or it contains an illegal character\n",
-		argv[0], argv[i]);
-        return -1;
-    }
-    fprintf(stdout, "%f\n", tm);
-    return 0;
+   char *endptr;
+   long mv = 50, d = 50;
+   double dv = 0, n = 0;
+   int tm_santalucia=0, salt_corrections=0;
+   int i;
+  if (argc < 2 || argc > 14) {
+    fprintf(stderr, msg, argv[0]);       
+    fprintf(stderr, copyright);
+    return -1;
+  }
+
+  for (i=1; i < argc; ++i) {
+    if (!strncmp("-mv", argv[i], 3)) { /* conc of monovalent cations */
+      mv = strtol(argv[i+1], &endptr, 10);
+      if ('\0' != *endptr) {
+	fprintf(stderr, msg, argv[0]);
+	exit(-1);
+      }
+      i++;
+    } else if (!strncmp("-dv", argv[i], 3)) { /* conc of divalent cations; added by T.Koressaar */
+       dv = strtod(argv[i+1], &endptr);
+       if('\0' != *endptr) {
+	  fprintf(stderr, msg, argv[0]);
+	  exit(-1);
+       }
+       i++;
+    } else if (!strncmp("-n", argv[i], 2)) { /* conc of dNTP; added by T.Koressaar */
+       n = strtod(argv[i+1], &endptr);
+       if('\0' != *endptr) {
+	  fprintf(stderr, msg, argv[0]);
+	  exit(-1);
+       }
+       i++;
+    } else if (!strncmp("-d", argv[i], 2)) {
+       d = strtol(argv[i+1], &endptr, 10);
+       if ('\0' != *endptr) {
+	  fprintf(stderr, msg, argv[0]);
+	  exit(-1);
+       }
+       i++;
+    } else if (!strncmp("-tp", argv[i], 3)) { /* added by T.Koressaar */
+       tm_santalucia = (int)strtol(argv[i+1], &endptr, 10);
+       if ('\0' != *endptr || tm_santalucia<0 || tm_santalucia>1) {	  
+	  fprintf(stderr, msg, argv[0]);
+	  exit(-1);
+       }
+       i++;
+    } else if (!strncmp("-sc", argv[i], 3)) { /* added by T.Koressaar */
+       salt_corrections = (int)strtol(argv[i+1], &endptr, 10);
+       if ('\0' != *endptr || salt_corrections<0 || salt_corrections>2) {
+	 fprintf(stderr, msg, argv[0]);
+	 exit(-1);
+      }
+       i++;
+    } else if (!strncmp("-i", argv[i], 2)) {
+       fprintf(stderr, info, argv[0]);
+       exit(-1);	    
+    } else if (!strncmp("-", argv[i], 1)) {
+       /* Unknown option. */
+       fprintf(stderr, msg, argv[0]);
+       exit(-1);
+    } else
+      break;		/* all args processed. go on to sequences. */
+  }
+   
+  if(!argv[i]) { /* if no oligonucleotide sequence is specified */
+    fprintf(stderr, msg, argv[0]);
+    exit(-1);
+  }
+   /* input sequence to uppercase */
+   int j,len;
+   char *seq = argv[i];
+   len=strlen(seq);
+   for(j=0;j<len;j++) seq[j]=toupper(seq[j]);
+   
+   tm = oligotm(seq, d, mv, dv, n, tm_santalucia, salt_corrections);
+   if (OLIGOTM_ERROR == tm) {
+    fprintf(stderr,
+	    "%s ERROR: length of sequence %s is less than 2 or\n"
+	    "             the sequence contains an illegal character or\n" 
+	    "             you have specified incorrect value for concentration of divalent cations or\n"
+	    "             you have specified incorrect value for concentration of dNTPs\n",
+	    argv[0], argv[i]);
+    return -1;
+  }
+  fprintf(stdout, "%f\n", tm);
+  return 0;
 }
-
-
-
-

Modified: trunk/packages/primer3/branches/upstream/current/src/primer3.c
===================================================================
--- trunk/packages/primer3/branches/upstream/current/src/primer3.c	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/src/primer3.c	2007-02-17 04:15:41 UTC (rev 209)
@@ -53,10 +53,79 @@
 #define MIN_TM             57.0
 #define MAX_TM             63.0
 #define MAX_DIFF_TM       100.0
+
+
+/* 
+Added by T.Koressaar for updated table thermodynamics.  Specifies
+details of melting temperature calculation.  (New in v. 1.1.0, added
+by Maido Remm and Triinu Koressaar.)
+
+A value of 1 (recommended) directs primer3 to use the table of
+thermodynamic values and the method for melting temperature
+calculation suggested in the paper [SantaLucia JR (1998) "A unified
+view of polymer, dumbbell and oligonucleotide DNA nearest-neighbor
+thermodynamics", Proc Natl Acad Sci 95:1460-65
+http://dx.doi.org/10.1073/pnas.95.4.1460].
+
+A value of 0 directs primer3 to a backward compatible calculation
+(in other words, the only calculation availble in previous
+version of primer3).
+
+This backward compatible calculation uses the table of
+thermodynamic parameters in the paper [Breslauer KJ, Frank R,
+Blöcker H and Marky LA (1986) "Predicting DNA duplex stability
+from the base sequence" Proc Natl Acad Sci 83:4746-50
+http://dx.doi.org/10.1073/pnas.83.11.3746],
+and the method in the paper [Rychlik W, Spencer WJ and Rhoads
+RE (1990) "Optimization of the annealing temperature for DNA
+amplification in vitro", Nucleic Acids Res 18:6409-12
+http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pubmed&pubmedid=2243783].
+
+The default value is 0 only for backward compatibility.
+*/
+#define TM_SANTALUCIA       0
+
+/* 
+Added by T.Koressaar for salt correction for Tm calculation.
+A value of 1 (recommended) directs primer3 to use the salt
+correction formula in the paper [SantaLucia JR (1998) "A unified view
+of polymer, dumbbell and oligonucleotide DNA nearest-neighbor
+thermodynamics", Proc Natl Acad Sci 95:1460-65
+http://dx.doi.org/10.1073/pnas.95.4.1460]
+
+A value of 0 directs primer3 to use the the salt correction
+formula in the paper [Schildkraut, C, and Lifson, S (1965)
+"Dependence of the melting temperature of DNA on salt
+concentration", Biopolymers 3:195-208 (not available on-line)].
+This was the formula used in previous version of primer3.
+
+A value of 2 directs primer3 to use the salt correction formula
+in the paper [Owczarzy R, You Y, Moreira BG, Manthey JA, Huang L,
+Behlke MA and Walder JA (2004) "Effects of sodium ions on DNA
+duplex oligomers: Improved predictions of melting temperatures",
+Biochemistry 43:3537-54 http://dx.doi.org/10.1021/bi034621r].
+
+The default is 0 only for backward compatibility.
+*/
+#define SALT_CORRECTIONS    0
+
 #define DEFAULT_OPT_GC_PERCENT PR_UNDEFINED_INT_OPT
 #define MIN_GC             20.0
 #define MAX_GC             80.0
 #define SALT_CONC          50.0
+
+/*
+ DIVALENT_CONC and DNTP_CONC are both needed for enabling to use divalent cations for 
+ calculation of melting temperature of short and long oligos. 
+ The formula for converting the divalent cations to monovalent cations is in the paper 
+ [Ahsen von N, Wittwer CT, Schutz E (2001) "Oligonucleotide Melting Temperatures under PCR Conditions:
+ Nearest-Neighbor Corrections for Mg^2+, Deoxynucleotide Triphosphate, and Dimethyl Sulfoxide Concentrations
+ with Comparision to Alternative Empirical Formulas", Clinical Chemistry 47:1956-61 
+ http://www.clinchem.org/cgi/content/full/47/11/1956]
+ The default is 0. (New in v. 1.1.0, added by Maido Remm and Triinu Koressaar.)
+ */
+#define DIVALENT_CONC       0.0
+#define DNTP_CONC           0.0
 #define DNA_CONC           50.0
 #define NUM_NS_ACCEPTED       0
 #define MAX_POLY_X            5
@@ -79,6 +148,8 @@
 #define INTERNAL_OLIGO_MIN_GC     20.0
 #define INTERNAL_OLIGO_MAX_GC     80.0
 #define INTERNAL_OLIGO_SALT_CONC         50.0
+#define INTERNAL_OLIGO_DIVALENT_CONC      0.0
+#define INTERNAL_OLIGO_DNTP_CONC          0.0
 #define INTERNAL_OLIGO_DNA_CONC          50.0
 #define INTERNAL_OLIGO_NUM_NS               0
 #define INTERNAL_OLIGO_MAX_POLY_X           5 
@@ -87,12 +158,27 @@
 #define INTERNAL_OLIGO_REPEAT_SIMILARITY 1200
 #define REPEAT_SIMILARITY                1200
 #define PAIR_REPEAT_SIMILARITY           2400
-#define FIRST_BASE_INDEX            0
-#define NUM_RETURN                  5
-#define MIN_QUALITY                 0
-#define QUALITY_RANGE_MIN           0
-#define QUALITY_RANGE_MAX         100
-#define DEFAULT_MAX_END_STABILITY    100.0
+#define FIRST_BASE_INDEX                    0
+#define NUM_RETURN                          5
+#define MIN_QUALITY                         0
+#define QUALITY_RANGE_MIN                   0
+#define QUALITY_RANGE_MAX                 100
+#define DEFAULT_MAX_END_STABILITY         100.0
+
+/* 
+Added by T.Koressaar. Enables design of primers from lowercase masked
+template.  A value of 1 directs primer3 to reject primers overlapping
+lowercase a base exactly at the 3' end.
+
+This property relies on the assumption that masked features
+(e.g. repeats) can partly overlap primer, but they cannot overlap the
+3'-end of the primer.  In other words, lowercase bases at other
+positions in the primer are accepted, assuming that the masked
+features do not influence the primer performance if they do not
+overlap the 3'-end of primer.
+*/
+#define LOWERCASE_MASKING                   0
+
 #define PRIMER_PRODUCT_OPT_SIZE      PR_UNDEFINED_INT_OPT
 #define PRIMER_PRODUCT_OPT_TM        PR_UNDEFINED_DBL_OPT
 #define MAX_TEMPLATE_MISPRIMING      PR_UNDEFINED_ALIGN_OPT
@@ -158,10 +244,14 @@
     a->min_tm           = MIN_TM;
     a->max_tm           = MAX_TM;
     a->max_diff_tm      = MAX_DIFF_TM;
+    a->tm_santalucia    = TM_SANTALUCIA; /* added by T.Koressaar */
+    a->salt_corrections = SALT_CORRECTIONS; /* added by T.Koressaar */
     a->min_gc           = MIN_GC;
     a->opt_gc_content   = DEFAULT_OPT_GC_PERCENT;
     a->max_gc           = MAX_GC;
     a->salt_conc        = SALT_CONC;
+    a->divalent_conc    = DIVALENT_CONC;
+    a->dntp_conc        = DNTP_CONC;
     a->dna_conc         = DNA_CONC;
     a->num_ns_accepted  = NUM_NS_ACCEPTED;
     a->self_any         = SELF_ANY;
@@ -188,6 +278,7 @@
     a->outside_penalty   = PR_DEFAULT_OUTSIDE_PENALTY;
     a->inside_penalty    = PR_DEFAULT_INSIDE_PENALTY;
     a->max_end_stability = DEFAULT_MAX_END_STABILITY;
+    a->lowercase_masking = LOWERCASE_MASKING; /* added by T.Koressaar */
     a->product_max_tm    = PR_DEFAULT_PRODUCT_MAX_TM;
     a->product_min_tm    = PR_DEFAULT_PRODUCT_MIN_TM;
     a->product_opt_tm    = PRIMER_PRODUCT_OPT_TM;
@@ -208,6 +299,8 @@
     a->io_max_gc          = INTERNAL_OLIGO_MAX_GC;
     a->io_max_poly_x      = INTERNAL_OLIGO_MAX_POLY_X;
     a->io_salt_conc       = INTERNAL_OLIGO_SALT_CONC;
+    a->io_divalent_conc   = INTERNAL_OLIGO_DIVALENT_CONC;
+    a->io_dntp_conc       = INTERNAL_OLIGO_DNTP_CONC;
     a->io_dna_conc        = INTERNAL_OLIGO_DNA_CONC;
     a->io_num_ns_accepted = INTERNAL_OLIGO_NUM_NS;
     a->io_self_any        = INTERNAL_OLIGO_SELF_ANY;
@@ -264,7 +357,7 @@
 
 /*
  * Return 1 on error, 0 on success.  Set sa->trimmed_seq and possibly modify
- * sa->tar.  Upcase and check all bases in sa->trimmed_seq.
+ * sa->tar.  Upcase and check all bases in sa->trimmed_seq
  */
 int
 _pr_data_control(pa, sa)
@@ -419,12 +512,15 @@
 
     sa->trimmed_seq = pr_safe_malloc(sa->incl_l + 1);
     _pr_substr(sa->sequence, sa->incl_s, sa->incl_l, sa->trimmed_seq);
-
+   
+    /* edited by T. Koressaar for lowercase masking */
+    sa->trimmed_orig_seq = pr_safe_malloc(sa->incl_l + 1);
+    _pr_substr(sa->sequence, sa->incl_s, sa->incl_l, sa->trimmed_orig_seq);
+   
     sa->upcased_seq = pr_safe_malloc(strlen(sa->sequence) + 1);
     strcpy(sa->upcased_seq, sa->sequence);
     if ((offending_char = dna_to_upper(sa->upcased_seq, 1))) {
       offending_char = '\0';
-      /* NEW */
       /* TODO add warning or error (depending on liberal base)
          here. */
     }
@@ -537,11 +633,22 @@
 	      "Illegal value for primer salt or dna concentration");
 	  return 1;
     }
-    if(pa->io_salt_conc<=0||pa->io_dna_conc<=0){
+   if((pa->dntp_conc<0 && pa->divalent_conc!=0)||pa->divalent_conc<0){ /* added by T.Koressaar */
+      pr_append_new_chunk(&pa->glob_err, "Illegal value for primer divalent salt or dNTP concentration");
+      return 1;
+   }
+   
+    if(pa->io_salt_conc<=0||pa->io_dna_conc<=0){ 
 	  pr_append_new_chunk(&pa->glob_err,
 	      "Illegal value for internal oligo salt or dna concentration");
 	  return 1;
     }
+   if((pa->io_dntp_conc<0 && pa->io_divalent_conc!=0)||pa->io_divalent_conc<0) { /* added by T.Koressaar */
+      pr_append_new_chunk(&pa->glob_err,
+			  "Illegal value for internal oligo divalent salt or dNTP concentration");
+      return 1;
+   }
+   
     if (!_PR_DEFAULT_POSITION_PENALTIES(pa) && sa->num_targets > 1) {
       pr_append_new_chunk(&sa->error,
 			  "Non-default inside penalty or outside penalty ");

Modified: trunk/packages/primer3/branches/upstream/current/src/primer3.h
===================================================================
--- trunk/packages/primer3/branches/upstream/current/src/primer3.h	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/src/primer3.h	2007-02-17 04:15:41 UTC (rev 209)
@@ -102,7 +102,8 @@
 			       OV_POLY_X=11,
 			       OV_SEQ_QUALITY=12,
                                OV_LIB_SIM=13,
-			       OV_TEMPLATE_MISPRIMING=14
+			       OV_TEMPLATE_MISPRIMING=14,
+                               OV_GMASKED=14 /* edited by T. Koressaar for lowercase masking */ 
 } oligo_violation;
 
 typedef struct rep_sim {
@@ -192,6 +193,7 @@
   double diff_tm;       /* Absolute value of the difference between melting
 			 * temperatures for left and right primers. 
 			 */
+   
   double product_tm;    /* Estimated melting temperature of the product. */
 
   double product_tm_oligo_tm_diff;
@@ -316,25 +318,32 @@
 
     pr_append_str glob_err;
 
-    double opt_tm;
-    double min_tm;
-    double max_tm;
-    double max_diff_tm;
-    double opt_gc_content;
-    double max_gc;
-    double min_gc;
-    double salt_conc;
-    double dna_conc;
+   double opt_tm;
+   double min_tm;
+   double max_tm;
+   double max_diff_tm;
+   double opt_gc_content;
+   double max_gc;
+   double min_gc;
+   double salt_conc;
+   double divalent_conc; /* added by T.Koressaar, divalent salt concentration mmol/l */
+   double dntp_conc; /* added by T.Koressaar, for considering divalent salt concentration */
+   double dna_conc;
 
-    double io_opt_tm;
-    double io_min_tm;
-    double io_max_tm;
-    double io_opt_gc_content;
-    double io_max_gc;
-    double io_min_gc;
-    double io_salt_conc;
-    double io_dna_conc;
-
+   double io_opt_tm;
+   double io_min_tm;
+   double io_max_tm;
+   double io_opt_gc_content;
+   double io_max_gc;
+   double io_min_gc;
+   double io_salt_conc;
+   double io_divalent_conc; /* added by T.Koressaar, divalent salt concentration mmol/l */
+   double io_dntp_conc; /* added by T.Koressaar, for considering divalent salt concentration */
+   double io_dna_conc;
+   int tm_santalucia;  /* added by T.Koressaar table of thermodynamic parameters of SantaLucia 1998 */
+   int salt_corrections; /* added by T.Koressaar salt correction formula for Tm calculation */
+   int lowercase_masking; /* added by T.Koressaar for primer design from lowercase masked template */
+   
     double outside_penalty; /* Multiply this value times the number of NTs
                              * from the 3' end to the the (unique) target to
                              * get the 'position penalty'.
@@ -482,6 +491,7 @@
 			     (valid for left primers only).                 */
   int template_mispriming; /* Template mispriming score too high.           */
   int ok;                  /* Number of acceptable oligos.                  */
+   int gmasked;            /* edited by T. Koressaar, number of gmasked oligo*/
 } oligo_stats;
 
 /*
@@ -524,13 +534,20 @@
 			     * is to the right of sa->start_codon_pos.
 			     */
     int  *quality;          /* Vector of quality scores. */
-    char *sequence;         /* The sequence itself. */
+    char *sequence;         /* The template sequence itself as input, 
+			       not trimmed, not up-cased. */
     char *sequence_name;    /* An identifier for the sequence. */
     char *sequence_file;    /* Another identifer for the sequence. */
+    char *trimmed_seq;      /* The included region only, _UPCASED_. */
 
-    char *trimmed_seq;      /* The included region only. */
-    char *upcased_seq;      /* Upper case version of sequence. */
-    char *upcased_seq_r;    /* Upper case version of sequence, other strand. */
+    /* Element add by T. Koressaar support lowercase masking: */
+    char *trimmed_orig_seq; /* Trimmed version of the original,
+			       mixed-case sequence. */
+
+    char *upcased_seq;      /* Upper case version of sequence
+			       (_not_ trimmed). */
+    char *upcased_seq_r;    /* Upper case version of sequence, 
+			       other strand (_not_ trimmed). */
     char *left_input;       /* A left primer to check or design around. */
     char *right_input;      /* A right primer to check or design around. */
     char *internal_input;   /* An internal oligo to check or design around. */

Modified: trunk/packages/primer3/branches/upstream/current/src/primer3_main.c
===================================================================
--- trunk/packages/primer3/branches/upstream/current/src/primer3_main.c	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/src/primer3_main.c	2007-02-17 04:15:41 UTC (rev 209)
@@ -43,7 +43,6 @@
 #include "primer3.h"
 #include "boulder_input.h"
 
-/* Type definitions. */
 /* #define's */
 
 /* 
@@ -57,10 +56,12 @@
 #define OOM_ERROR OOM_STMT1, OOM_STMT2
 
 #ifndef MAX_PRIMER_LENGTH
-Important note: MAX_PRIMER_LENGTH must be defined in
-the makefile, because its value must be <= the
-value of DPAL_MAX_ALIGN.
+#error "Define MAX_PRIMER_LENGTH in Makefile..."
+  /* to ensure that MAX_PRIMER_LENGTH <= DPAL_MAX_ALIGN. */
 #endif
+#if (MAX_PRIMER_LENGTH > DPAL_MAX_ALIGN) 
+#error "MAX_PRIMER_LENGTH must be <= DPAL_MAX_ALIGN"
+#endif
 
 #define MAX_NN_TM_LENGTH 36 /* The maxium length for which to use the
 			       nearest neighbor model when calculating
@@ -149,13 +150,21 @@
 static void   oligo_compl(primer_rec *, const primer_args *, seq_args *,
 			  oligo_type, const dpal_args *, 
 			  const dpal_args*, const dpal_args *);
-static void   oligo_mispriming(primer_rec *, const primer_args *, seq_args *,
-			       oligo_type, const dpal_args *);
+static void   oligo_mispriming(primer_rec *,
+			       const primer_args *,
+			       seq_args *,
+			       oligo_type, 
+			       const dpal_args *);
 static int    pair_repeat_sim(primer_pair *, const primer_args *);
 static void   boulder_print_oligos(const primer_args *, 
-					 const seq_args *, int, oligo_type);
+				   const seq_args *, int, oligo_type);
 static void   free_repeat_sim_score(int, int, int);
 
+/* edited by T. Koressaar for lowercase masking:  */
+static void   check_if_lowercase_masked(const int position,
+					const char *sequence,
+					primer_rec *h);
+
 /* Global static variables. */
 static const char * copyright[] = {
 "",
@@ -294,13 +303,11 @@
 	input_found = 1;
 
 	*lib_local_dpal_args = *local_args;
-	/* NEW */
 	if (pa->lib_ambiguity_codes_consensus) {
 	  PR_ASSERT(dpal_set_ambiguity_code_matrix(lib_local_dpal_args));
 	}
 
 	*lib_local_end_dpal_args = *local_end_args;
-	/* NEW */
 	if (pa->lib_ambiguity_codes_consensus) {
 	  PR_ASSERT(dpal_set_ambiguity_code_matrix(lib_local_end_dpal_args));
 	}
@@ -348,7 +355,12 @@
 	if (NULL != sa->sequence) free(sa->sequence);
 	if (NULL != sa->quality)  free(sa->quality);
 	if (NULL != sa->trimmed_seq) free(sa->trimmed_seq);
+
+	/* edited by T. Koressaar for lowercase masking */
+	if (NULL != sa->trimmed_orig_seq) free(sa->trimmed_orig_seq);
+
 	if (NULL != sa->upcased_seq) free(sa->upcased_seq);
+	if (NULL != sa->upcased_seq_r) free(sa->upcased_seq_r);
 	if (NULL != sa->sequence_name) free(sa->sequence_name);
 	if (NULL != sa->error.data) free(sa->error.data);
 	if (NULL != sa->warning.data) free(sa->warning.data);
@@ -505,6 +517,10 @@
   if (stats->stability) pr_append_w_sep(&s, sep, "High 3' stability");
   if (stats->no_orf) pr_append_w_sep(&s, sep, "Would not amplify any ORF");
 
+  /* edited by T. Koressaar for lowercase masking: */
+  if (stats->gmasked)
+    pr_append_w_sep(&s, sep, "Masked with lowercase letter");
+
   if (s.data) {
     pr_append_new_chunk(&sa->warning, text);
     pr_append(&sa->warning, " is unacceptable: ");
@@ -835,7 +851,6 @@
     h->ok = OV_UNINITIALIZED;
     h->target = h->gc_content = h->num_ns=h->excl=0;
 
-    /* NEW */
     h->template_mispriming = h->template_mispriming_r = ALIGN_SCORE_UNDEF;
 
     PR_ASSERT(OT_LEFT == l || OT_RIGHT == l || OT_INTL == l);
@@ -845,6 +860,21 @@
 
     PR_ASSERT(k >= 0);
     PR_ASSERT(k < TRIMMED_SEQ_LEN(sa));
+   
+    /* edited by T. Koressaar for lowercase masking */
+    if(pa->lowercase_masking==1) {
+      if(l==OT_LEFT) {
+	 check_if_lowercase_masked(k, sa->trimmed_orig_seq,h);
+      }
+      if(l==OT_RIGHT) {
+	 check_if_lowercase_masked(j, sa->trimmed_orig_seq,h);
+      }
+      if(h->ok==OV_GMASKED) {
+	 stats->gmasked++;
+	 if (!must_use) return;
+      }
+    }
+    /* end T. Koressar's changes */
 
     gc_and_n_content(j, k-j+1, sa->trimmed_seq, h);
 
@@ -922,18 +952,18 @@
     }
     if(pa->gc_clamp != 0){
        if(OT_LEFT == l){
-	   for(i=k-pa->gc_clamp+1; i<= k; i++)if(seq[i] !='G'&&seq[i] !='C'){
-	       h->ok = OV_GC_CLAMP;
-	       stats->gc_clamp++;
-	       if (!must_use) return; else break;
-           }
+	 for(i=k-pa->gc_clamp+1; i<= k; i++)if(seq[i] !='G'&&seq[i] !='C'){
+	   h->ok = OV_GC_CLAMP;
+	   stats->gc_clamp++;
+	   if (!must_use) return; else break;
+	 }
        }
        if(OT_RIGHT == l){
-	   for(i=j; i<j+pa->gc_clamp; i++)if(seq[i] != 'G' && seq[i] != 'C'){
-	       h->ok = OV_GC_CLAMP;
-	       stats->gc_clamp++;
-	       if (!must_use) return; else break;
-           }
+	 for(i=j; i<j+pa->gc_clamp; i++)if(seq[i] != 'G' && seq[i] != 'C'){
+	   h->ok = OV_GC_CLAMP;
+	   stats->gc_clamp++;
+	   if (!must_use) return; else break;
+	 }
        }
     }
             
@@ -976,10 +1006,20 @@
      }
 
     _pr_substr(seq,j,k-j+1,s1);
-    if(OT_LEFT == l || OT_RIGHT == l) 
-      h->temp = seqtm(s1, pa->dna_conc, pa->salt_conc, MAX_NN_TM_LENGTH);
-    else
-      h->temp = seqtm(s1, pa->io_dna_conc, pa->io_salt_conc, MAX_NN_TM_LENGTH);
+                   
+   if(OT_LEFT == l || OT_RIGHT == l)
+     h->temp 
+     = seqtm(s1, pa->dna_conc, pa->salt_conc, pa->divalent_conc, pa->dntp_conc, 
+	     MAX_NN_TM_LENGTH,
+	     pa->tm_santalucia,
+	     pa->salt_corrections); 
+   else
+     h->temp
+     = seqtm(s1, pa->io_dna_conc, pa->io_salt_conc, pa->io_divalent_conc, pa->io_dntp_conc,
+	     MAX_NN_TM_LENGTH,
+	     pa->tm_santalucia,
+	     pa->salt_corrections);
+         
     if (((l == OT_LEFT || l == OT_RIGHT) && h->temp < pa->min_tm)
 	|| (l==OT_INTL && h->temp<pa->io_min_tm)) {
 	h->ok = OV_TM_LOW;
@@ -993,7 +1033,8 @@
 	if (!must_use) return;
     }
     if (OT_LEFT == l) {
-      if ((h->end_stability = end_oligodg(s1, 5))
+      if ((h->end_stability = end_oligodg(s1, 5,
+					  pa->tm_santalucia))
 	  > pa->max_end_stability) {
 	h->ok = OV_END_STAB;
 	stats->stability++;
@@ -1001,7 +1042,8 @@
       }
     } else if (OT_RIGHT == l) {
       _pr_reverse_complement(s1, s1_rev);
-      if ((h->end_stability = end_oligodg(s1_rev, 5))
+      if ((h->end_stability = end_oligodg(s1_rev, 5,
+					  pa->tm_santalucia))
 	  > pa->max_end_stability) {
 	  h->ok = OV_END_STAB;
 	  stats->stability++;
@@ -1634,9 +1676,10 @@
     }
 
     /* Compute product Tm and related parameters; check constraints. */
-    h->product_tm 
-      = long_seq_tm(sa->trimmed_seq, h->left->start,
-		   h->right->start - h->left->start + 1, pa->salt_conc);
+   h->product_tm 
+     = long_seq_tm(sa->trimmed_seq, h->left->start,
+		   h->right->start - h->left->start + 1, pa->salt_conc, pa->divalent_conc, pa->dntp_conc);
+      
     PR_ASSERT(h->product_tm != OLIGOTM_ERROR);
 
     min_oligo_tm 
@@ -2074,7 +2117,6 @@
 	printf("PRIMER_RIGHT%s_END_STABILITY=%.4f\n",
 	       suffix, rev->end_stability);
 
-	/* NEW */
 	if (oligo_max_template_mispriming(fwd) != ALIGN_SCORE_UNDEF)
 	  printf("PRIMER_LEFT%s_TEMPLATE_MISPRIMING=%.4f\n", suffix,
 		 oligo_max_template_mispriming(fwd)
@@ -2201,7 +2243,6 @@
 	    printf("%s%s_END_STABILITY=%.4f\n", type, suffix,
 		    oligo[i].end_stability);
 
-	/* NEW */
 	if (oligo_max_template_mispriming(&oligo[i]) != ALIGN_SCORE_UNDEF)
 	  printf("%s%s_TEMPLATE_MISPRIMING=%.2f\n", type, suffix,
 		 oligo_max_template_mispriming(&oligo[i])
@@ -2298,7 +2339,9 @@
     if (stat->stability) printf(",high 3' stability %d", stat->stability);
     if (stat->template_mispriming) printf(",high template mispriming score %d",
 					  stat->template_mispriming);
-
+    /* edited by T. Koressaar for lowercase masking */
+    if(stat->gmasked) printf(",lowercase masking of 3' end %d",stat->gmasked);
+   
     printf(", ok %d\n", stat->ok);
 }
 
@@ -2381,17 +2424,17 @@
     memset(a, 0, sizeof(*a));
     for (i = 0; i <= UCHAR_MAX; i++)
 	for (j = 0; j <= UCHAR_MAX; j++)
-	    if (('A' == i || 'C' == i || 'G' == i || 'T' == i || 'N' == i)
-		&& ('A' == j || 'C' == j || 'G' == j || 'T' == j 
-		    || 'N' == j)) {
-		    if (i == 'N' || j == 'N') 
-			a->ssm[i][j] = -25;
-		    else if (i == j)
-			a->ssm[i][j] = 100;
-		    else 
-			a->ssm[i][j] = -100;
-		} else
-		    a->ssm[i][j] = INT_MIN;
+	  if (('A' == i || 'C' == i || 'G' == i || 'T' == i || 'N' == i)
+	      && ('A' == j || 'C' == j || 'G' == j || 'T' == j 
+		  || 'N' == j)) {
+	    if (i == 'N' || j == 'N') 
+	      a->ssm[i][j] = -25;
+	    else if (i == j)
+	      a->ssm[i][j] = 100;
+	    else 
+	      a->ssm[i][j] = -100;
+	  } else
+	    a->ssm[i][j] = INT_MIN;
 
     a->gap                = -200;
     a->gapl               = -200;
@@ -2573,14 +2616,6 @@
     ? h->start + h->length - 1
     : h->start;
 
-  /* NOT USED
-  if (pa->short_match && pa->short_match < h->length) {
-    match_length = pa->short_match;
-    if (!warned) 
-      fprintf(stderr, "Using short_match of %d\n", pa->short_match);
-    warned = 1;
-  } else
-  */
   match_length = h->length;
 
   _pr_substr(sa->trimmed_seq, first, h->length, s_tmp);
@@ -2694,7 +2729,7 @@
 
     /* 4. Align to the reverse strand of the template. */
     h->template_mispriming_r
-      = align(oseq, target_r, align_args); /* lib_local_end_dpal_args); */
+      = align(oseq, target_r, align_args);
 
     if (debug)
       fprintf(stderr, "other strand Score %d aligning %s against %s\n\n", 
@@ -2804,43 +2839,8 @@
   return -1;
 }
 
-/* =========================================================== */
-/* Various fail-stop wrappers for standard library functions.  */
-
-void *
-pr_safe_malloc(x)
-    size_t x;
-{
-    void *r = malloc(x);
-    if (NULL == r) OOM_ERROR;
-    return r;
-}
-
-void *
-pr_safe_realloc(p, x)
-    void *p;
-    size_t x;
-{
-    void *r = realloc(p, x);
-    if (NULL == r) OOM_ERROR;
-    return r;
-}
-
-static FILE *
-safe_fopen(path, mode)
-    const char *path, *mode;
-{
-    FILE *r = fopen(path, mode);
-    if (NULL == r) {
-	fprintf(stderr, "%s: unable to open file %s:",
-		pr_program_name, path);
-	perror("");
-	exit (-1);
-    }
-    return r;
-}
-
-int strcmp_nocase(s1, s2)
+int
+strcmp_nocase(s1, s2)
 char *s1, *s2;
 {
    static char M[UCHAR_MAX];
@@ -2899,5 +2899,57 @@
      { free(mid[i].repeat_sim.score); mid[i].repeat_sim.score = NULL; }
 }
 
+/*  Edited by T. Koressaar for lowercase masking. This function checks
+ if the 3' end of the primer has been masked by lowercase letter.
+ Function created/Added by Eric Reppo, July 9, 2002
+ */
+static void
+check_if_lowercase_masked(position, sequence, h)
+     const int position;
+     const char *sequence;
+     primer_rec *h;
+{   
+   const char* p = &sequence[position];
+   if ('a' == *p || 'c' == *p ||'g' == *p || 't' == *p) {
+      h->ok=OV_GMASKED;
+   }
+}
 
 /* =========================================================== */
+/* Various fail-stop wrappers for standard library functions.  */
+
+void *
+pr_safe_malloc(x)
+    size_t x;
+{
+    void *r = malloc(x);
+    if (NULL == r) OOM_ERROR;
+    return r;
+}
+
+void *
+pr_safe_realloc(p, x)
+    void *p;
+    size_t x;
+{
+    void *r = realloc(p, x);
+    if (NULL == r) OOM_ERROR;
+    return r;
+}
+
+static FILE *
+safe_fopen(path, mode)
+    const char *path, *mode;
+{
+    FILE *r = fopen(path, mode);
+    if (NULL == r) {
+	fprintf(stderr, "%s: unable to open file %s:",
+		pr_program_name, path);
+	perror("");
+	exit (-1);
+    }
+    return r;
+}
+
+/* End of fail-stop wrappers. */
+/* =========================================================== */

Modified: trunk/packages/primer3/branches/upstream/current/src/primer3_release.h
===================================================================
--- trunk/packages/primer3/branches/upstream/current/src/primer3_release.h	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/src/primer3_release.h	2007-02-17 04:15:41 UTC (rev 209)
@@ -33,7 +33,7 @@
 
 #ifndef RELEASE_H
 #define RELEASE_H 1
-static const char * pr_release = "primer3 release 1.0.1";
+static const char * pr_release = "primer3 release 1.1.0";
 /* This is a beta release, identical to release 1.0b
    except for version number */
 #endif

Modified: trunk/packages/primer3/branches/upstream/current/src/release_notes.txt
===================================================================
--- trunk/packages/primer3/branches/upstream/current/src/release_notes.txt	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/src/release_notes.txt	2007-02-17 04:15:41 UTC (rev 209)
@@ -1,5 +1,42 @@
-release 1.0a  9/06 ==================================================
+release 1.1.0 1/17/2007 ==================================================
 
+ Added tags PRIMER_TM_SANTALUCIA, PRIMER_SALT_CORRECTIONS,
+   PRIMER_LOWERCASE_MASKING, PRIMER_DIVALENT_CONC,
+   and PRIMER_DNTP_CONC.  See the README for
+   details of what these tags do.  Briefly, the first two
+   tags allow the use of modern melting temperature 
+   calculations.  New tests for this functionality
+   were added to the tests/ subdirectory
+
+ NOTE: The oligotm executable now takes additional
+   arguments.
+
+ Cleaned up Makefile, and created Makefile for the test
+   directory with a target to clean up after tests
+
+ Most (but not all) temporary files created by the
+   tests now end in .tmp or .tmp2
+
+ Tried to create more informative test for 
+   MAX_PRIMER_LENGTH > DPAL_MAX_ALIGN in primer3_main.c
+
+ NOTE: The oligtotm() function is now provided as
+   a library, liboligotm.
+
+ NOTE: non-backward compatible change: removed support of
+   flag -2x_compat.
+
+release 1.0.1 11/06 ==================================================
+
+ Identical to 1.0b except for release number
+
+release 1.0b 11/06 ==================================================
+
+  Corrected bug involving check for template mispriming
+  Minor code cleanup
+
+release 1.0a   9/06 ==================================================
+
   No new functionality (bug fixes and minor code cleanup only)
 
   Bug fixes:
@@ -195,3 +232,57 @@
   Tweaked error reporting of negative-length excluded regions,
   internal oligo excluded regions, and target.
 
+
+==============================================================
+==============================================================
+Compared to non-primer3 progenitors:
+
+Compared to primer 0.5
+---------------
+Completely different input format.  
+
+It has been reported the 0.5 deleted Ns when they occurred in
+primers.  
+
+More stringent self-complementarity defaults.
+
+Primer3 selects internal oligos on request (and produces .int
+files if requested).
+
+Compared to both primer 0.5 and primer v2
+---------------------------
+The format of the contents of .for, .rev (and .int) files is
+different.
+
+Primer3 returns a user-specifiable number of primer pairs (or
+triples) sorted by "goodness".
+
+Primer3 will find a primer pair if any acceptable pair exists.
+
+Optional n-based indexing into source sequence.
+
+Use of sequence quality and 3' stability as constraints in primer
+picking.  Optional positional component to objective function.
+
+Compared to primer v2
+-------------
+Tag name changes.  However, primer3 should understand most or
+all Primer v2 input tags, and should produce v2-compatible output
+tag names when the -v2_compat command-line switch is used.
+
+The one exception is that the PRIMER_RECOMMEND tag is no longer
+produced. Instead primer3 produces the PRIMER_x_EXPLAIN output
+tags.  The format of the data in this tags is different from the
+data in v2's PRIMER_RECOMMEND output tag.
+
+Numerous fixes.
+
+Uses the PRIMER_SELF_ANY and PRIMER_SELF_END parameters to govern
+maximum allowable complementarity between left and right primers,
+as well as complementarity between copies of a single oligo or
+within a single oligo.  This behaviour is very close to that of
+primer 0.5; self complementarity calculations in v2 were
+unreliable.
+
+Primer3 produces much more output information, including the TMs
+and self complementarity measures of selected primers.

Added: trunk/packages/primer3/branches/upstream/current/test/Makefile
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/Makefile	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/Makefile	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1,47 @@
+# ======================================================================
+# (c) Copyright 1996,1997,1998,1999,2000,2001,2004,2006 Whitehead
+# Institute for Biomedical Research, Steve Rozen, and Helen Skaletsky
+# All rights reserved.
+# 
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+# 
+#    * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#    * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#    * Neither the names of the copyright holders nor contributors may
+# be used to endorse or promote products derived from this software
+# without specific prior written permission.
+# 
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# ======================================================================
+
+test: 
+	cd ../src; make
+	echo 'Testing Tm calcs'; perl oligotm_test.pl;
+	echo 'Testing alignment calcs'; perl dpal_test.pl; 
+	echo 'Testing primer3_core'; perl p3test.pl
+
+clean:
+	-rm -rf primer_list_tmp/*
+	-rm -rf primer1_list_tmp/*
+	-rm -f primer_global_err/*.tmp primer_global_err/*.tmp2 primer_global_err/*.bak
+	-rm -f *.tmp *.bak *~
+	-rm -f hyb_probe_only.for hyb_probe_only.int 
+	-rm -f right_only.for right_only.rev left_only.for
+	-rm -f pcr_primers_and_io.int pcr_primers_and_io.rev pcr_primers_and_io.for
+	-rm -f pcr_primers.rev pcr_primers.for

Modified: trunk/packages/primer3/branches/upstream/current/test/dpal_test.pl
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/dpal_test.pl	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/dpal_test.pl	2007-02-17 04:15:41 UTC (rev 209)
@@ -6,8 +6,8 @@
 # Test error handling on over-long input sequence:
 
 print STDERR 'Long sequence error handling...';
-$r = system '../src/ntdpal ACGTGTTCGTCGTAAATAACATGCTATATT GACGTAGACAACCCTGTGTTTAGCCTGCGTTTTGTGCCATCCTAATGCTTTACTAGATCACTGAGCCACCTCCCAAGGACTACACCTAGCGGTATTTCGTACATTAACTAGGATCCTTTTCCACATGGACTACAATGTCTGCCGAGCATGCGATGGGGTACCGCGCCCGCGCACATACGCGCGCAGAGCTTTTGGAGGCATACCTACACCGGCGAGGGGCTGCGGTTTATTGACACTGAAACGGGATAACGAGTCGCTGAATTGAGCCAAAAATATGCAAGCGTCACAAATTGTGACAAAAATTTTAAAGGAAAAATTAGACCATTGATTCTGAAGTGGTGCGTATAGGACCAGTCGTGGCAATGAGACCGATTTGAGTAGCACTAGCTCAAACACTGTCTGGGTCGCCATCAAGGCCACAAGAACTTAAGCAGCCGTCACCCTATAGAAGGTTAAGCGACGGTTAGGGCTTCTGGCAACGAAAGTTGTCGGTTCGTCCTGTGCCAACGTGTGGCAAAGTCTACTATGATTCGATTGTTGACGTGTCGACAGGCTGTTTCGCTGGATACCCCACCTTGATAATTTTTCTCGTCGAACGCTAGCAGTTTTTTTTTCAACGGCCCGGAATCTGTAAGAGGCCGTTGCAGGAACGCGTGTGTATGTAAATGCCCACTACTTCTGTTATGTACCCAAATGGCGTGCGGCGTGGATGTATAGTGTCGACCCTCCATAATCGGGCGGACGGTCGTGGGGTATGTATGATCTTCGGCACTGATTCGCCTCGAGTCTATATGTTCTTAATCCAGACCTTCGGGGAAAGCCTACTTTCCATCCGTTGTCTAGCGTCATGCCAGTGACTACTGTTGTATTGTCTGGTTCCTAAGATAGCCATGGATTCCGGACATCGACGATGCACAAGAGCGTTAGCGCTGGTGTGCAACGCAACGTCGCGAAGGCTGGGTTACAGCGTGATCTCCTGGCTGCACCCAGATGCAGAGGGACATACCTACGATGAATAGGTGCGTCTGTTTATAAACGCCCAATCCTAGCAAAAATCACAACTAAGACAGTGTATGGAAGACCCACCAGTTGTGGGCGAATGGTCAGGTATACAAGATCGTGTCAAGACGGAACTTAAGCTTCTGTGCGCTCTCCATGCGAGCTGGTACGTCTGGACGGCGAGGTATGAGTGAATGACCATCCATGGCAACTTTCGTGTTCTACGACAGATACGAGCTCGACGGACGACCTGGTGACCAGTAGTATATGCGCGTCCGTCGGCCAGACTTTCCAAACGCCCTTTCAACGAGATACATGCGAACACGCTACAATTTCTCGTTCCGTCTAAAGTCGATACTCGCAAGCCCAGGCCCGTTACTACAACGCTGTTAATAGGATCAGAAGGGCCATAAGACTTTGGCAGCGGTAGCTAGGAAAGTGATGGTTGTGATGGCCCTAGTAAGGAGTCAGCCATCTACCCAACTATTTGAATGGGACCATAGCCAAGGGACCCAGCTGTTCCTTAGAAACCTGGTGACTCCCTTAGCCAATTGTGTAACTTCGTGCGTGCCAGTATTACACCTATAATCACAAGACCCCTTCAATACGAGTCCTGTGGCGTAGTGTTCCATCAAAACAATCAAGAACAGATTTCCGGTCCCCGTTGTGTTGGGATCTAGCGGACGTTGTCGGTAGATCAATAACGTAAATGCGAATCGAAGTTCTCTGGCCTAAAACAACTGCGCGCAGGGCCTCCGGTCATTGCATCTTTCTTGTCTCTCGTGAGGGCGTGATTCGTTTACCTGGAGCGAGCCGGGCACAAGAGCTATGGATTATTGGCTGGTGCAAAAACCATTCTAGCTACAATTATACTCGCGTGTCGACGATAAGAGTGAAATCACTGCGTAGGCAAACTGCCGGGTCACCAAGAGAGGCTGATACCGCGGTTCACCC l > dpal_tmp 2>&1';
-open X, 'dpal_tmp';
+$r = system '../src/ntdpal ACGTGTTCGTCGTAAATAACATGCTATATT GACGTAGACAACCCTGTGTTTAGCCTGCGTTTTGTGCCATCCTAATGCTTTACTAGATCACTGAGCCACCTCCCAAGGACTACACCTAGCGGTATTTCGTACATTAACTAGGATCCTTTTCCACATGGACTACAATGTCTGCCGAGCATGCGATGGGGTACCGCGCCCGCGCACATACGCGCGCAGAGCTTTTGGAGGCATACCTACACCGGCGAGGGGCTGCGGTTTATTGACACTGAAACGGGATAACGAGTCGCTGAATTGAGCCAAAAATATGCAAGCGTCACAAATTGTGACAAAAATTTTAAAGGAAAAATTAGACCATTGATTCTGAAGTGGTGCGTATAGGACCAGTCGTGGCAATGAGACCGATTTGAGTAGCACTAGCTCAAACACTGTCTGGGTCGCCATCAAGGCCACAAGAACTTAAGCAGCCGTCACCCTATAGAAGGTTAAGCGACGGTTAGGGCTTCTGGCAACGAAAGTTGTCGGTTCGTCCTGTGCCAACGTGTGGCAAAGTCTACTATGATTCGATTGTTGACGTGTCGACAGGCTGTTTCGCTGGATACCCCACCTTGATAATTTTTCTCGTCGAACGCTAGCAGTTTTTTTTTCAACGGCCCGGAATCTGTAAGAGGCCGTTGCAGGAACGCGTGTGTATGTAAATGCCCACTACTTCTGTTATGTACCCAAATGGCGTGCGGCGTGGATGTATAGTGTCGACCCTCCATAATCGGGCGGACGGTCGTGGGGTATGTATGATCTTCGGCACTGATTCGCCTCGAGTCTATATGTTCTTAATCCAGACCTTCGGGGAAAGCCTACTTTCCATCCGTTGTCTAGCGTCATGCCAGTGACTACTGTTGTATTGTCTGGTTCCTAAGATAGCCATGGATTCCGGACATCGACGATGCACAAGAGCGTTAGCGCTGGTGTGCAACGCAACGTCGCGAAGGCTGGGTTACAGCGTGATCTCCTGGCTGCACCCAGATGCAGAGGGACATACCTACGATGAATAGGTGCGTCTGTTTATAAACGCCCAATCCTAGCAAAAATCACAACTAAGACAGTGTATGGAAGACCCACCAGTTGTGGGCGAATGGTCAGGTATACAAGATCGTGTCAAGACGGAACTTAAGCTTCTGTGCGCTCTCCATGCGAGCTGGTACGTCTGGACGGCGAGGTATGAGTGAATGACCATCCATGGCAACTTTCGTGTTCTACGACAGATACGAGCTCGACGGACGACCTGGTGACCAGTAGTATATGCGCGTCCGTCGGCCAGACTTTCCAAACGCCCTTTCAACGAGATACATGCGAACACGCTACAATTTCTCGTTCCGTCTAAAGTCGATACTCGCAAGCCCAGGCCCGTTACTACAACGCTGTTAATAGGATCAGAAGGGCCATAAGACTTTGGCAGCGGTAGCTAGGAAAGTGATGGTTGTGATGGCCCTAGTAAGGAGTCAGCCATCTACCCAACTATTTGAATGGGACCATAGCCAAGGGACCCAGCTGTTCCTTAGAAACCTGGTGACTCCCTTAGCCAATTGTGTAACTTCGTGCGTGCCAGTATTACACCTATAATCACAAGACCCCTTCAATACGAGTCCTGTGGCGTAGTGTTCCATCAAAACAATCAAGAACAGATTTCCGGTCCCCGTTGTGTTGGGATCTAGCGGACGTTGTCGGTAGATCAATAACGTAAATGCGAATCGAAGTTCTCTGGCCTAAAACAACTGCGCGCAGGGCCTCCGGTCATTGCATCTTTCTTGTCTCTCGTGAGGGCGTGATTCGTTTACCTGGAGCGAGCCGGGCACAAGAGCTATGGATTATTGGCTGGTGCAAAAACCATTCTAGCTACAATTATACTCGCGTGTCGACGATAAGAGTGAAATCACTGCGTAGGCAAACTGCCGGGTCACCAAGAGAGGCTGATACCGCGGTTCACCC l > dpal.tmp 2>&1';
+open X, 'dpal.tmp';
 @foo = <X>;
 close X;
 print STDERR
@@ -17,51 +17,50 @@
 runtest('Default implementations + alignment',
 	"perl dpal_gen.pl '../src/ntdpal' <dpal_input",
 	'dpal_output');
-system "cat dpal_tmp > dpal_output1";
+system "cat dpal.tmp > dpal_output1.tmp";
 
 runtest('Default implementations + NO alignment 1',
 	"perl dpal_gen.pl '../src/ntdpal -s' <dpal_input",
 	'dpal_score_output');
-system "cat dpal_tmp > dpal_score_output1";
+system "cat dpal.tmp > dpal_score_output1.tmp";
 
 runtest('Default implementations + NO alignment 2',
 	"perl dpal_gen.pl '../src/ntdpal -s' <dpal_long_input",
 	'dpal_long_score_output');
-system "cat dpal_tmp > dpal_long_score_output1";
+system "cat dpal.tmp > dpal_long_score_output1.tmp";
 
 runtest('Force _dpal_generic',
 	"perl dpal_gen.pl '../src/ntdpal -s -f1' <dpal_input",
 	'dpal_score_output');
-system "cat dpal_tmp > dpal_score_output4";
+system "cat dpal.tmp > dpal_score_output4.tmp";
 
 runtest('Force _dpal_long_nopath_generic 1',
 	"perl dpal_gen.pl '../src/ntdpal -s -f2' <dpal_input",
 	'dpal_score_output');
-system "cat dpal_tmp > dpal_score_output2";
+system "cat dpal.tmp > dpal_score_output2.tmp";
 
 runtest('Force _dpal_long_nopath_generic 2',
 	"perl dpal_gen.pl '../src/ntdpal -s -f2' <dpal_long_input",
 	'dpal_long_score_output');
-system "cat dpal_tmp > dpal_long_score_output2";
+system "cat dpal.tmp > dpal_long_score_output2.tmp";
 
 runtest('Force long maxgap1 functions 1',
 	"perl dpal_gen.pl '../src/ntdpal -s -f3' <dpal_input",
 	'dpal_score_output');
-system "cat dpal_tmp > dpal_score_output3";
+system "cat dpal.tmp > dpal_score_output3.tmp";
 
 runtest('Force long maxgap1 functions 2',
 	"perl dpal_gen.pl '../src/ntdpal -s -f3' <dpal_long_input",
 	'dpal_long_score_output');
-system "cat dpal_tmp > dpal_long_score_output3";
+system "cat dpal.tmp > dpal_long_score_output3.tmp";
 
 exit;
 
 sub runtest {
     my ($desc, $cmd, $benchfile) = @_;
     print STDERR $desc, '...';
-#    system $cmd .  ' > dpal_tmp 2>&1';
-    system $cmd .  ' > dpal_tmp';
-    $r = system "diff $benchfile dpal_tmp";
+    system $cmd .  ' > dpal.tmp';
+    $r = system "diff $benchfile dpal.tmp";
     print STDERR $r == 0 ? "OK\n" : "FAILED\n";
 }
 

Modified: trunk/packages/primer3/branches/upstream/current/test/long_seq_tm_test.pl
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/long_seq_tm_test.pl	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/long_seq_tm_test.pl	2007-02-17 04:15:41 UTC (rev 209)
@@ -1,13 +1,17 @@
 #!/usr/local/bin/perl
 
-# Script for checking output of executable src/long_seq_tm_test
-# To make long_seq_tm_test go to ../src, and do
-# make long_seq_tm_test
+# Script that re-implements the calculation for long sequences.
+# Compare output to that of long_seq_tm_test.pl
 
 my ($seq, $start, $len) = @ARGV;
 my $s = substr($seq, $start, $len);
 my $GC_count = $s =~ tr/gGcC/gGcC/;
 
-$r = log(50/1000.0)/log(10);
+$salt=50;
+$divalent=0;
+$dntp=0;
+
+$salt = $salt + 120*sqrt(($divalent-$dntp));
+$r = log($salt/1000.0)/log(10);
 $tm = 81.5 + 16.6*$r + 41*$GC_count/$len - 600./$len;
 print "tm = $tm\n";

Added: trunk/packages/primer3/branches/upstream/current/test/oligotm.txt
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/oligotm.txt	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/oligotm.txt	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1,45 @@
+SEQ	TM_MODEL	SALT_CORRECTION	SALT_CONC	DIVALENT_CONC	DNTP_CONC	TM
+AAAGAAAGACCCAGTGATATGCTGTCT	0	0	50	0	0	63.684650
+ACAACCCAGGCCCTGTGGAC	0	0	50	0	0.8	66.783376
+ACTGGGATGACAGCAAGGCCC	0	0	50	0	1	67.947254
+ACTTTCCTGTTGGACAAGCCCTTT	0	0	50	0	10	65.349952
+AGCCTGGCCAACATGGTGAA	0	0	50	1	0	74.932401
+AGGCTGAGGCGGGAGAATCA	0	0	50	1	0.8	71.934895
+ATCTTGCCCGCCTCCACTTC	0	0	50	1	1	65.948961
+CAACAAACCGTGGCCCTCTC	0	0	50	1.5	0	74.997943
+CAAGGCCAGAGAATGGTTTCCAA	0	0	50	1.5	0.8	74.456879
+CACTTTGGGAGGCCGAGGAG	0	0	50	2.5	0	77.815533
+CAGTGGAAGTGACGCCGTGTG	0	0	50	2.5	0.8	77.633141
+CCAAGCCCTTGGGCAGCTC	0	1	50	0	0	73.707812
+CCACCTCAGCCTCCCGAGAA	0	1	50	0	1	72.289173
+CCCAAAGCAATCTACAGATTCAAAGAA	0	1	50	0	0.8	68.920648
+CCCGCGTGTGGTTTCTCTATTTG	0	1	50	0	0	71.826149
+CCTCCCGGGTTCACACCATT	0	1	50	1.5	0	79.028727
+CCTTCTGACAAGGGATTAATAACCAGA	0	1	50	2.5	0.8	75.999617
+CGCAAGCCACCACTGTCCAT	0	2	50	0	2	72.669877
+CTCGGTTATCCCTGGAATCTGGA	0	2	50	1	0	79.555900
+CTGCCTGCACCCGCTTGTTT	0	2	50	1.5	0.9	81.481372
+CTTCATGATCCACTGGCTATTACGG	0	2	50	2.5	1.0	79.444698
+GAAACCTCACCCGGAGCCAGTA	1	0	50	0	2	51.910898
+GACAACACCTGGACACCGGTTA	1	0	50	0	10	50.261568
+GAGGCAGAGAGAGAGGAAGAGACAGA	1	0	50	0	0	52.569759
+GATCCTCGGGCAGGCAGTTG	1	0	50	1	0	59.683669
+GCAAGACAAAGGCATGCTTACAAGA	1	0	50	1.5	1	57.513748
+GCACAGTGGCCCTTGTGACTG	1	0	50	2.5	1.0	61.599017
+GCAGCCTGGACATAGCCCTGTA	1	1	50	0	0	58.108426
+GCAGGCCAGAAGGCAGGATT	1	1	50	0	5	56.916950
+GCCATGGACGTGGTCTACGC	1	1	50	0	0	57.801174
+GCGACCCAAGCGAGTTACCA	1	1	50	1	0	62.957534
+GCTTCATGTCAGATTTGTTATACCACTGGG	1	1	50	1	1	58.091721
+GGCAGGCAGTTGGTCGGTGT	1	1	50	1.5	1.5	59.552734
+GGGCCATGGGATTAGTCTGC	1	1	50	2.5	0	62.463700
+GGTATGGTGTTTTAATACCTGTGGCAGA	1	1	50	2.5	1	64.204218
+GTGAAACTCACGGTCACGCAAA	1	1	50	2.5	0	64.004323
+TCACGCTCACAAACGAGAGGAAG	1	2	50	0	1	56.755143
+TCCCTTGCCTCGTTCAGTGC	1	2	50	0	0	57.675190
+TCGGCCTCCCAAAGTGCTG	1	2	50	0	1.5	57.961561
+TCTCGCCATTTTGGTCTTGCAG	1	2	50	1	0	63.883992
+TGATCAGCACAGTGGCTCACG	1	2	50	1.5	0	66.423917
+TGCCGTTCACGTCGTAGCTG	1	2	50	1.5	0.8	65.072778
+TGGGCCTCCCAAAGTGCTG	1	2	50	2.5	0.1	67.538996
+TTGCATGCCCAGAGTTGACG	1	2	50	2.5	1	64.547466

Added: trunk/packages/primer3/branches/upstream/current/test/oligotm_test.pl
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/oligotm_test.pl	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/oligotm_test.pl	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1,59 @@
+# Copyright (c) 2007
+# Triinu Koressaar an Maido Remm
+# All rights reserved.
+# 
+#     This file is part of the oligotm library.
+# 
+#     The oligotm library is free software; you can redistribute it and/or modify
+#     it under the terms of the GNU General Public License as published by
+#     the Free Software Foundation; either version 2 of the License, or
+#     (at your option) any later version.
+# 
+#     The oligotm library is distributed in the hope that it will be useful,
+#     but WITHOUT ANY WARRANTY; without even the implied warranty of
+#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#     GNU General Public License for more details.
+# 
+#     You should have received a copy of the GNU General Public License
+#     along with the oligtm library (file gpl.txt in the source
+#     distribution); if not, write to the Free Software
+#     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+use constant EPSILON => 1e-5;
+$nr=1;
+$failure=0;
+
+die "Cannot execute ../src/oligotm" unless -x '../src/oligotm';
+
+print STDERR "Tests nr $nr-";
+
+open F, "./oligotm.txt" or die "Cannot open oligotm.txt\n";
+while(<F>){
+    chomp;
+    next if $. == 1;
+    @tmp=split(/\t/);
+    $cmd="../src/oligotm -tp $tmp[1] -sc $tmp[2] -mv $tmp[3] -dv $tmp[4] -n $tmp[5] $tmp[0] |";
+    open(CMD, $cmd); # execute the command and take the output
+    $tm=<CMD>;
+    chomp $tm;
+    close(CMD);
+    if($tm){
+	if(($tm-$tmp[6])>EPSILON) {
+	    $failure++;
+	    print STDERR "$cmd FAILED (expected $tm, got $tmp[6])\n";
+	}
+    } else {
+	$failure++;
+	print STDERR  "$cmd FAILED (no output)\n";
+    }
+    $nr++;
+}
+close F;
+
+$nr--;
+if(!$failure){
+    print STDERR "$nr: OK\n";
+}
+else{
+    print STDERR "$nr: $failure FAILURES\n";
+}

Modified: trunk/packages/primer3/branches/upstream/current/test/p3test.pl
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/p3test.pl	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/p3test.pl	2007-02-17 04:15:41 UTC (rev 209)
@@ -1,34 +1,32 @@
 # Regression test driver for primer3 executable.
 #
-# Usage: perl primer_test.pl [<primer3>]
+# Usage: perl p3test.pl [<primer3>]
 #
-# <primer3> defaults to primer3_core, in which case the executable
-# run is ../src/primer3_core.
+# <primer3> defaults to ../src/ primer3_core
 #
 # If <primer3> is specified, the executable run is 
-# ../src/<primer3>.
+# <primer3>.
 #
 # Stderr difference tests for fatal errors are performed only
-# if <primer3> is 'primer3_core' (because the executable name
+# if <primer3> is '<any dir>/primer3_core' (because the executable name
 # is part of the text written to stderr).
 
-$ENV{TC_SILENT} = '1';	# TestCenter proofed executables will not 
+# $ENV{TC_SILENT} = '1';	# TestCenter proofed executables will not 
                         # write extra stuff to std{err,out}, and
                         # consequently will not cause spurious diff's.
 
-$ENV{TC_RESULTDIR} = './tc_results'; # Directory for testcenter results.
+# $ENV{TC_RESULTDIR} = './tc_results'; # Directory for testcenter results.
     
 
-$exe = 'primer3_core';
+$exe = '../src/primer3_core';
 $exe = $ARGV[0] if defined $ARGV[0];
-$p1 =  "../src/$exe";
 $EXIT_STAT = 0;
 
-die "Cannot execute $p1" unless -x $p1;
+die "Cannot execute $exe" unless -x $exe;
 
-print STDERR "\n\n$0: testing $p1\n\nSTART, ", scalar(localtime), "\n";
+print STDERR "\n\n$0: testing $exe\n\nSTART, ", scalar(localtime), "\n";
 
-test_fatal_errors($p1);
+test_fatal_errors($exe);
 
 my $cmd;
 for $test (
@@ -62,11 +60,13 @@
            'primer_mispriming_long_lib',
            'primer_rat',
            'primer_human',
-           'primer_ch',
            'long_seq',
            'primer_position_penalty',
            'primer_position_penalty_formatted',
 	   'p3-tmpl-mispriming',
+	   'primer_tm_lc_masking',
+	   'primer_tm_lc_masking_formatted',
+	   # Put primer_lib_amb_codes last because it is slow
 	   'primer_lib_amb_codes',
 	   ) {
     print STDERR "$test...";
@@ -79,7 +79,7 @@
     $testx =~ s/_formatted$//;
     $input = $testx . '_input';
     $output = $test . '_output';
-    $tmp = $test . '_tmp';
+    $tmp = $test . '.tmp';
     if ($test ne 'primer_ch') {
 	die "Cannot read $input"  unless -r $input;
 	die "Cannot read $output"  unless -r $output;
@@ -90,28 +90,28 @@
 	# We need to chdir below because primer3 puts the 'list' files
         # in the current working directory.  Therefore we adjust
 	# the TestCenter result directory.
-	$cmd = "rm -f $list_tmp/*.*; "
-	    . "cd $list_tmp; ../$p1 -strict_tags <../$input >../$tmp";
-	$ENV{TC_COMMENT} = $cmd;
+	$cmd = "rm -f $list_tmp/*; "
+	    . "cd $list_tmp; ../$exe -strict_tags <../$input >../$tmp";
+
+	# $ENV{TC_COMMENT} = $cmd; OLD CODE
 	# Reset the TestCenter result directory.
-	$save_results = $ENV{TC_RESULTDIR};
-	$ENV{TC_RESULTDIR} = "../$save_results";
+	# $save_results = $ENV{TC_RESULTDIR};
+	# $ENV{TC_RESULTDIR} = "../$save_results";
+
 	$r = system $cmd;
-	$ENV{TC_RESULTDIR} = $save_results;
-	$ENV{TC_COMMENT} = '';
+
+	# $ENV{TC_RESULTDIR} = $save_results;
+	# $ENV{TC_COMMENT} = '';
     } elsif ($test =~ /formatted$/) {
-	$cmd = "$p1 -strict_tags -format_output <$input >$tmp";
-	$ENV{TC_COMMENT} = $cmd;
+	$cmd = "$exe -strict_tags -format_output <$input >$tmp";
+	# $ENV{TC_COMMENT} = $cmd;
 	$r = system $cmd;
-	$ENV{TC_COMMENT} = '';
+	# $ENV{TC_COMMENT} = '';
     } else {
-	# We do not distribute primer_ch_input.
-	unless ($test eq 'primer_ch' && !-e 'primer_ch_input') {
-	    $cmd = "$p1 -strict_tags <$input >$tmp";
-	    $ENV{TC_COMMENT} = $cmd;
-	    $r = system $cmd;
-	    $ENV{TC_COMMENT} = '';
-	}
+	$cmd = "$exe -strict_tags <$input >$tmp";
+	# $ENV{TC_COMMENT} = $cmd;
+	$r = system $cmd;
+	# $ENV{TC_COMMENT} = '';
     }
 
     unless ($r == 0) {
@@ -169,9 +169,9 @@
     for (@inputs) {
 	($root) = /(.*)\.in$/;
 	$cmd = "$exe <$_ > $root.tmp 2> $root.tmp2";
-	$ENV{TC_COMMENT} = $cmd;
+	# $ENV{TC_COMMENT} = $cmd;
 	system $cmd;
-	$ENV{TC_COMMENT} = '';
+	# $ENV{TC_COMMENT} = '';
 	if ($? == 0) {
 	    $r = $? >> 8;
 	    print STDERR "\nErroneous 0 exit status ($?) from command $cmd\n";

Modified: trunk/packages/primer3/branches/upstream/current/test/primer_boundary1_formatted_output
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_boundary1_formatted_output	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_boundary1_formatted_output	2007-02-17 04:15:41 UTC (rev 209)
@@ -26,7 +26,7 @@
 Right     10     9     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_01
@@ -57,7 +57,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_02
@@ -88,7 +88,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_03
@@ -112,7 +112,7 @@
 Right      4     3     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, unacceptable product size 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_04
@@ -136,7 +136,7 @@
 Right     10     9     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, unacceptable product size 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_05
@@ -167,7 +167,7 @@
 Right      5     3     0     0     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 4, unacceptable product size 3, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_06
@@ -191,7 +191,7 @@
 Right      5     5     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_07
@@ -223,7 +223,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_08
@@ -251,7 +251,7 @@
 Right      6     5     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_09
@@ -279,7 +279,7 @@
 Right      5     5     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_10
@@ -303,7 +303,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_11
@@ -334,7 +334,7 @@
 Right      5     2     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 3, unacceptable product size 2, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_11
@@ -358,7 +358,7 @@
 Right      5     2     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_12
@@ -389,7 +389,7 @@
 Right      5     0     0     0     0     0     0     0     0     0     0     0     5
 Pair Stats:
 considered 5, unacceptable product size 4, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_13
@@ -420,7 +420,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_14
@@ -444,7 +444,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_15
@@ -475,7 +475,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_16
@@ -499,7 +499,7 @@
 Right      5     4     0     0     1     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_17
@@ -531,7 +531,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_18
@@ -559,7 +559,7 @@
 Right      1     1     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_19
@@ -591,7 +591,7 @@
 Right      1     1     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_21
@@ -624,7 +624,7 @@
 Right      3     2     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_22
@@ -653,7 +653,7 @@
 Right      3     2     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_23
@@ -682,7 +682,7 @@
 Right      2     2     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_24
@@ -711,7 +711,7 @@
 Right      2     2     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_25
@@ -744,7 +744,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_26
@@ -773,7 +773,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_27
@@ -802,7 +802,7 @@
 Right      5     4     1     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_28
@@ -831,7 +831,7 @@
 Right      5     4     1     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_29
@@ -864,7 +864,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_30
@@ -897,7 +897,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_31
@@ -926,7 +926,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, no target 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_32
@@ -959,7 +959,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_33
@@ -988,7 +988,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_34
@@ -1017,7 +1017,7 @@
 Right      5     4     0     1     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_35
@@ -1046,7 +1046,7 @@
 Right      5     4     0     1     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_36
@@ -1079,7 +1079,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_37
@@ -1108,7 +1108,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_37
@@ -1137,7 +1137,7 @@
 Right      5     4     0     1     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_38
@@ -1166,7 +1166,7 @@
 Right      5     4     0     1     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_39
@@ -1199,7 +1199,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_40
@@ -1232,7 +1232,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_41
@@ -1258,7 +1258,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_42
@@ -1291,7 +1291,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_43
@@ -1320,7 +1320,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_44
@@ -1353,7 +1353,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_45
@@ -1386,7 +1386,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_46
@@ -1415,7 +1415,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_47
@@ -1448,7 +1448,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_48
@@ -1477,7 +1477,7 @@
 Right      5     4     0     0     0     1     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_49
@@ -1510,7 +1510,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_50
@@ -1539,7 +1539,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_51
@@ -1572,7 +1572,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_52
@@ -1605,7 +1605,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_53
@@ -1634,7 +1634,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, tm diff too large 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_54
@@ -1669,7 +1669,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_55
@@ -1702,7 +1702,7 @@
 Intl       0     0     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR poly_x_2
@@ -1765,7 +1765,7 @@
 Intl    1585     0     0     0     0     0     0     0     0     0     0     0  1585
 Pair Stats:
 considered 72, unacceptable product size 52, ok 20
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR poly_x_3
@@ -1794,7 +1794,7 @@
 Intl     187     0     0     0     0     0     0     0     0     0   187     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_59
@@ -1827,7 +1827,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_60
@@ -1853,7 +1853,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_61
@@ -1893,7 +1893,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_63
@@ -1923,7 +1923,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_64
@@ -1963,7 +1963,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_66
@@ -1993,7 +1993,7 @@
 Right      1     0     0     1     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_67
@@ -2025,7 +2025,7 @@
 Right      6     5     0     1     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_68
@@ -2058,7 +2058,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_69
@@ -2084,7 +2084,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_70
@@ -2120,7 +2120,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, no target 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_72
@@ -2150,7 +2150,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_73
@@ -2186,7 +2186,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, no target 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_75
@@ -2216,7 +2216,7 @@
 Right      0     0     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_76
@@ -2248,7 +2248,7 @@
 Right      6     5     1     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_77
@@ -2282,7 +2282,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_78
@@ -2316,7 +2316,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_79
@@ -2350,7 +2350,7 @@
 Right      6     5     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_80
@@ -2384,7 +2384,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_81
@@ -2418,7 +2418,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_82
@@ -2451,7 +2451,7 @@
 Right     10     9     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_83
@@ -2480,7 +2480,7 @@
 Right     10     9     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, no target 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_84
@@ -2513,7 +2513,7 @@
 Right     10     9     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_85
@@ -2546,7 +2546,7 @@
 Right      3     2     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_86
@@ -2580,7 +2580,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_71
@@ -2616,7 +2616,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_72
@@ -2648,7 +2648,7 @@
 Right      3     2     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 3, unacceptable product size 2, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_73
@@ -2676,7 +2676,7 @@
 Right      3     2     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 2, unacceptable product size 2, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_74
@@ -2708,7 +2708,7 @@
 Right      3     2     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 2, ok 2
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_75
@@ -2740,7 +2740,7 @@
 Right      2     1     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 2, unacceptable product size 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_76
@@ -2772,7 +2772,7 @@
 Right      2     1     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 2, unacceptable product size 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_77
@@ -2813,7 +2813,7 @@
 Right     28    26     0     0     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 4, unacceptable product size 2, ok 2
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_78
@@ -2854,7 +2854,7 @@
 Right     28    26     0     0     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 4, unacceptable product size 2, ok 2
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_79
@@ -2895,7 +2895,7 @@
 Right     28    26     0     0     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 4, unacceptable product size 1, ok 3
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_80
@@ -2936,7 +2936,7 @@
 Right     28    26     0     0     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 4, unacceptable product size 1, ok 3
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_81
@@ -2968,7 +2968,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_82
@@ -2996,7 +2996,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, high any compl 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_83
@@ -3028,7 +3028,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_84
@@ -3056,7 +3056,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, high end compl 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_85
@@ -3088,7 +3088,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 200, ok 200
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_86
@@ -3122,7 +3122,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_87
@@ -3160,7 +3160,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_89

Modified: trunk/packages/primer3/branches/upstream/current/test/primer_boundary_formatted_output
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_boundary_formatted_output	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_boundary_formatted_output	2007-02-17 04:15:41 UTC (rev 209)
@@ -26,7 +26,7 @@
 Right     10     9     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_01
@@ -57,7 +57,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_02
@@ -88,7 +88,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_03
@@ -112,7 +112,7 @@
 Right      4     3     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, unacceptable product size 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_04
@@ -136,7 +136,7 @@
 Right     10     9     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, unacceptable product size 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_05
@@ -167,7 +167,7 @@
 Right      5     3     0     0     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 4, unacceptable product size 3, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_06
@@ -191,7 +191,7 @@
 Right      5     5     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_07
@@ -223,7 +223,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_08
@@ -251,7 +251,7 @@
 Right      6     5     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_09
@@ -279,7 +279,7 @@
 Right      5     5     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_10
@@ -303,7 +303,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_11
@@ -334,7 +334,7 @@
 Right      5     2     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 3, unacceptable product size 2, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_11
@@ -358,7 +358,7 @@
 Right      5     2     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_12
@@ -389,7 +389,7 @@
 Right      5     0     0     0     0     0     0     0     0     0     0     0     5
 Pair Stats:
 considered 5, unacceptable product size 4, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_13
@@ -420,7 +420,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_14
@@ -444,7 +444,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_15
@@ -475,7 +475,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_16
@@ -499,7 +499,7 @@
 Right      5     4     0     0     1     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_17
@@ -531,7 +531,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_18
@@ -559,7 +559,7 @@
 Right      1     1     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_19
@@ -591,7 +591,7 @@
 Right      1     1     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_21
@@ -624,7 +624,7 @@
 Right      3     2     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_22
@@ -653,7 +653,7 @@
 Right      3     2     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_23
@@ -682,7 +682,7 @@
 Right      2     2     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_24
@@ -711,7 +711,7 @@
 Right      2     2     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_25
@@ -744,7 +744,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_26
@@ -773,7 +773,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_27
@@ -802,7 +802,7 @@
 Right      5     4     1     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_28
@@ -831,7 +831,7 @@
 Right      5     4     1     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_29
@@ -864,7 +864,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_30
@@ -897,7 +897,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_31
@@ -926,7 +926,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, no target 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_32
@@ -959,7 +959,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_33
@@ -988,7 +988,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_34
@@ -1017,7 +1017,7 @@
 Right      5     4     0     1     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_35
@@ -1046,7 +1046,7 @@
 Right      5     4     0     1     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_36
@@ -1079,7 +1079,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_37
@@ -1108,7 +1108,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_37
@@ -1137,7 +1137,7 @@
 Right      5     4     0     1     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_38
@@ -1166,7 +1166,7 @@
 Right      5     4     0     1     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_39
@@ -1199,7 +1199,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_40
@@ -1232,7 +1232,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_41
@@ -1258,7 +1258,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_42
@@ -1291,7 +1291,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_43
@@ -1320,7 +1320,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_44
@@ -1353,7 +1353,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_45
@@ -1386,7 +1386,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_46
@@ -1415,7 +1415,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_47
@@ -1448,7 +1448,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_48
@@ -1477,7 +1477,7 @@
 Right      5     4     0     0     0     1     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_49
@@ -1510,7 +1510,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_50
@@ -1539,7 +1539,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_51
@@ -1572,7 +1572,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_52
@@ -1605,7 +1605,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_53
@@ -1634,7 +1634,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, tm diff too large 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_54
@@ -1669,7 +1669,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_55
@@ -1702,7 +1702,7 @@
 Intl       0     0     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR poly_x_2
@@ -1765,7 +1765,7 @@
 Intl    1585     0     0     0     0     0     0     0     0     0     0     0  1585
 Pair Stats:
 considered 72, unacceptable product size 52, ok 20
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR poly_x_3
@@ -1794,7 +1794,7 @@
 Intl     187     0     0     0     0     0     0     0     0     0   187     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_59
@@ -1827,7 +1827,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_60
@@ -1853,7 +1853,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_61
@@ -1893,7 +1893,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_63
@@ -1923,7 +1923,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_64
@@ -1963,7 +1963,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_66
@@ -1993,7 +1993,7 @@
 Right      1     0     0     1     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_67
@@ -2025,7 +2025,7 @@
 Right      6     5     0     1     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_68
@@ -2058,7 +2058,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_69
@@ -2084,7 +2084,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_70
@@ -2120,7 +2120,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, no target 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_72
@@ -2150,7 +2150,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_73
@@ -2186,7 +2186,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, no target 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_75
@@ -2216,7 +2216,7 @@
 Right      0     0     0     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_76
@@ -2248,7 +2248,7 @@
 Right      6     5     1     0     0     0     0     0     0     0     0     0     0
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_77
@@ -2282,7 +2282,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_78
@@ -2316,7 +2316,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_79
@@ -2350,7 +2350,7 @@
 Right      6     5     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_80
@@ -2384,7 +2384,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_81
@@ -2418,7 +2418,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_82
@@ -2451,7 +2451,7 @@
 Right     10     9     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_83
@@ -2480,7 +2480,7 @@
 Right     10     9     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, no target 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_84
@@ -2513,7 +2513,7 @@
 Right     10     9     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_85
@@ -2546,7 +2546,7 @@
 Right      3     2     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_86
@@ -2580,7 +2580,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_71
@@ -2616,7 +2616,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_72
@@ -2648,7 +2648,7 @@
 Right      3     2     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 3, unacceptable product size 2, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_73
@@ -2676,7 +2676,7 @@
 Right      3     2     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 2, unacceptable product size 2, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_74
@@ -2708,7 +2708,7 @@
 Right      3     2     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 2, ok 2
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_75
@@ -2740,7 +2740,7 @@
 Right      2     1     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 2, unacceptable product size 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_76
@@ -2772,7 +2772,7 @@
 Right      2     1     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 2, unacceptable product size 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_77
@@ -2813,7 +2813,7 @@
 Right     28    26     0     0     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 4, unacceptable product size 2, ok 2
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_78
@@ -2854,7 +2854,7 @@
 Right     28    26     0     0     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 4, unacceptable product size 2, ok 2
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_79
@@ -2895,7 +2895,7 @@
 Right     28    26     0     0     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 4, unacceptable product size 1, ok 3
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_80
@@ -2936,7 +2936,7 @@
 Right     28    26     0     0     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 4, unacceptable product size 1, ok 3
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_81
@@ -2968,7 +2968,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_82
@@ -2996,7 +2996,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, high any compl 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_83
@@ -3028,7 +3028,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_84
@@ -3056,7 +3056,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, high end compl 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_85
@@ -3088,7 +3088,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 200, ok 200
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_86
@@ -3122,7 +3122,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_87
@@ -3160,7 +3160,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_89
@@ -3195,7 +3195,7 @@
 Right     10     9     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_91
@@ -3219,7 +3219,7 @@
 Right     10     9     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 0, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_92
@@ -3254,7 +3254,7 @@
 Right      5     2     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 9, unacceptable product size 8, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_93
@@ -3289,7 +3289,7 @@
 Right      5     0     0     0     0     0     0     0     0     0     0     0     5
 Pair Stats:
 considered 5, unacceptable product size 4, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_94
@@ -3324,7 +3324,7 @@
 Right      5     0     0     0     0     0     0     0     0     0     0     0     5
 Pair Stats:
 considered 5, unacceptable product size 4, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_95
@@ -3359,7 +3359,7 @@
 Right      5     4     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 5, unacceptable product size 4, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_96
@@ -3394,7 +3394,7 @@
 Right      5     0     0     0     0     0     0     0     0     0     0     0     5
 Pair Stats:
 considered 5, unacceptable product size 4, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_97
@@ -3429,7 +3429,7 @@
 Right      5     0     0     0     0     0     0     0     0     0     0     0     5
 Pair Stats:
 considered 5, unacceptable product size 4, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR test_098
@@ -3461,7 +3461,7 @@
 Right      5     0     0     0     0     0     0     0     0     0     0     0     5
 Pair Stats:
 considered 5, unacceptable product size 4, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR test_099
@@ -3485,7 +3485,7 @@
 Right      5     0     0     0     0     0     0     0     0     0     0     0     5
 Pair Stats:
 considered 5, unacceptable product size 4, high product Tm 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR test_100
@@ -3516,7 +3516,7 @@
 Right      5     0     0     0     0     0     0     0     0     0     0     0     5
 Pair Stats:
 considered 5, unacceptable product size 4, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR test_101
@@ -3548,7 +3548,7 @@
 Right      5     0     0     0     0     0     0     0     0     0     0     0     5
 Pair Stats:
 considered 5, unacceptable product size 4, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR test_102
@@ -3572,7 +3572,7 @@
 Right      5     0     0     0     0     0     0     0     0     0     0     0     5
 Pair Stats:
 considered 5, unacceptable product size 4, low product Tm 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR test_103
@@ -3603,6 +3603,6 @@
 Right      5     0     0     0     0     0     0     0     0     0     0     0     5
 Pair Stats:
 considered 5, unacceptable product size 4, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 

Added: trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_1.in
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_1.in	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_1.in	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1,11 @@
+PRIMER_SEQUENCE_ID=oligotm_io_1
+PRIMER_NUM_RETURN=1
+PRIMER_EXPLAIN_FLAG=1
+SEQUENCE=GTCGCCCGGCTGCGCGCCTGTATCCACATCCAAGAGCTTCAGTTTCCCGTCTGCCGTGGCGGCACTCAAATTTTCGTCCACCAGGGCAAGCGGCCCGTGCTTCAGTTCGCCGGCAGGATAGGCTTCGGCGTGGATGTAGG
+PRIMER_INTERNAL_OLIGO_DIVALENT_CONC=-1
+PRIMER_INTERNAL_OLIGO_DNTP_CONC=1
+COMMENT=Should fail
+PRIMER_INTERNAL_OLIGO_MAX_TM=100
+PRIMER_INTERNAL_OLIGO_MIN_TM=30
+PRIMER_PICK_INTERNAL_OLIGO=1
+=

Added: trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_1.out
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_1.out	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_1.out	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1,12 @@
+PRIMER_SEQUENCE_ID=oligotm_io_1
+PRIMER_NUM_RETURN=1
+PRIMER_EXPLAIN_FLAG=1
+SEQUENCE=GTCGCCCGGCTGCGCGCCTGTATCCACATCCAAGAGCTTCAGTTTCCCGTCTGCCGTGGCGGCACTCAAATTTTCGTCCACCAGGGCAAGCGGCCCGTGCTTCAGTTCGCCGGCAGGATAGGCTTCGGCGTGGATGTAGG
+PRIMER_INTERNAL_OLIGO_DIVALENT_CONC=-1
+PRIMER_INTERNAL_OLIGO_DNTP_CONC=1
+COMMENT=Should fail
+PRIMER_INTERNAL_OLIGO_MAX_TM=100
+PRIMER_INTERNAL_OLIGO_MIN_TM=30
+PRIMER_PICK_INTERNAL_OLIGO=1
+PRIMER_ERROR=Illegal value for internal oligo divalent salt or dNTP concentration
+=

Added: trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_1.out2
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_1.out2	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_1.out2	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1 @@
+../src/primer3_core: Illegal value for internal oligo divalent salt or dNTP concentration

Added: trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_2.in
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_2.in	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_2.in	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1,11 @@
+PRIMER_NUM_RETURN=1
+PRIMER_EXPLAIN_FLAG=1
+PRIMER_INTERNAL_OLIGO_MAX_TM=100
+PRIMER_INTERNAL_OLIGO_MIN_TM=30
+PRIMER_PICK_INTERNAL_OLIGO=1
+PRIMER_SEQUENCE_ID=oligotm_io_2
+SEQUENCE=CGTCGGTGCGGAAACTTATCGGGTAAAAAGGTTTCTTTAGTTTGGTGTCGATTTTGTCGGTGCCGGTGGCGCAGAACCATTTTACCGAACCGTTTTGACGCTTGGCCCACAGGGAGAGTTTTTTGCCTTGGATTTCTTTG
+PRIMER_INTERNAL_OLIGO_DIVALENT_CONC=1
+PRIMER_INTERNAL_OLIGO_DNTP_CONC=-1
+COMMENT=Should fail
+=

Added: trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_2.out
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_2.out	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_2.out	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1,12 @@
+PRIMER_NUM_RETURN=1
+PRIMER_EXPLAIN_FLAG=1
+PRIMER_INTERNAL_OLIGO_MAX_TM=100
+PRIMER_INTERNAL_OLIGO_MIN_TM=30
+PRIMER_PICK_INTERNAL_OLIGO=1
+PRIMER_SEQUENCE_ID=oligotm_io_2
+SEQUENCE=CGTCGGTGCGGAAACTTATCGGGTAAAAAGGTTTCTTTAGTTTGGTGTCGATTTTGTCGGTGCCGGTGGCGCAGAACCATTTTACCGAACCGTTTTGACGCTTGGCCCACAGGGAGAGTTTTTTGCCTTGGATTTCTTTG
+PRIMER_INTERNAL_OLIGO_DIVALENT_CONC=1
+PRIMER_INTERNAL_OLIGO_DNTP_CONC=-1
+COMMENT=Should fail
+PRIMER_ERROR=Illegal value for internal oligo divalent salt or dNTP concentration
+=

Added: trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_2.out2
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_2.out2	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_2.out2	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1 @@
+../src/primer3_core: Illegal value for internal oligo divalent salt or dNTP concentration

Added: trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_3.in
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_3.in	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_3.in	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1,8 @@
+PRIMER_SEQUENCE_ID=oligotm_1
+PRIMER_MAX_TM=100
+PRIMER_MIN_TM=0
+PRIMER_DIVALENT_CONC=-1
+PRIMER_DNTP_CONC=1
+COMMENT=Should fail
+SEQUENCE=GGCGAGCTGCATCGCGTATTCCATACTTTCCCTGCTGCGGACTTCGCCGATGCAGACCACGTCGGGGGATCAGGTGTGTATCGAGGTGAACATTGCGGGCGAGGCGGTGAAGCACGGTGTCGCGCCCGAAGAAGCAGTCG
+=

Added: trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_3.out
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_3.out	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_3.out	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1,9 @@
+PRIMER_SEQUENCE_ID=oligotm_1
+PRIMER_MAX_TM=100
+PRIMER_MIN_TM=0
+PRIMER_DIVALENT_CONC=-1
+PRIMER_DNTP_CONC=1
+COMMENT=Should fail
+SEQUENCE=GGCGAGCTGCATCGCGTATTCCATACTTTCCCTGCTGCGGACTTCGCCGATGCAGACCACGTCGGGGGATCAGGTGTGTATCGAGGTGAACATTGCGGGCGAGGCGGTGAAGCACGGTGTCGCGCCCGAAGAAGCAGTCG
+PRIMER_ERROR=Illegal value for primer divalent salt or dNTP concentration
+=

Added: trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_3.out2
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_3.out2	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_3.out2	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1 @@
+../src/primer3_core: Illegal value for primer divalent salt or dNTP concentration

Added: trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_4.in
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_4.in	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_4.in	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1,8 @@
+PRIMER_MAX_TM=100
+PRIMER_MIN_TM=0
+PRIMER_SEQUENCE_ID=oligotm_2
+PRIMER_DIVALENT_CONC=1
+PRIMER_DNTP_CONC=-1
+COMMENT=Should succeed
+SEQUENCE=ACAAGATAATGTTTTGAACATTGTCCTGTTGGTTTCTTTGAAGCAGACCAGAAGTTAAAAAGTTAGAGATCCATAGTGGGTGACAGTCCCGTATTCGAAATCTCAACAGCGGTACTAAGCGTACGAAAAGTAGGGCGGGG
+=

Added: trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_4.out
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_4.out	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_4.out	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1,9 @@
+PRIMER_MAX_TM=100
+PRIMER_MIN_TM=0
+PRIMER_SEQUENCE_ID=oligotm_2
+PRIMER_DIVALENT_CONC=1
+PRIMER_DNTP_CONC=-1
+COMMENT=Should succeed
+SEQUENCE=ACAAGATAATGTTTTGAACATTGTCCTGTTGGTTTCTTTGAAGCAGACCAGAAGTTAAAAAGTTAGAGATCCATAGTGGGTGACAGTCCCGTATTCGAAATCTCAACAGCGGTACTAAGCGTACGAAAAGTAGGGCGGGG
+PRIMER_ERROR=Illegal value for primer divalent salt or dNTP concentration
+=

Added: trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_4.out2
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_4.out2	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_global_err/bad_divalent_dntp_conc_4.out2	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1 @@
+../src/primer3_core: Illegal value for primer divalent salt or dNTP concentration

Modified: trunk/packages/primer3/branches/upstream/current/test/primer_global_err/empty_1.out2
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_global_err/empty_1.out2	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_global_err/empty_1.out2	2007-02-17 04:15:41 UTC (rev 209)
@@ -32,7 +32,7 @@
 
 
 USAGE: ../src/primer3_core [-format_output] [-2x_compat] [-strict_tags]
-This is primer3 (primer3 release 1.0.1)
+This is primer3 (primer3 release 1.1.0)
 Input must be provided on standard input.
 For example:
 $ primer3_core < my_input_file

Modified: trunk/packages/primer3/branches/upstream/current/test/primer_internal1_formatted_output
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_internal1_formatted_output	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_internal1_formatted_output	2007-02-17 04:15:41 UTC (rev 209)
@@ -33,7 +33,7 @@
 Intl      60    57     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 4, unacceptable product size 1, no internal oligo 2, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_01
@@ -71,7 +71,7 @@
 Intl      60    57     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 2, unacceptable product size 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_02
@@ -109,7 +109,7 @@
 Intl      60    57     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_05
@@ -147,7 +147,7 @@
 Intl      60    57     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 4, unacceptable product size 3, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_11
@@ -174,7 +174,7 @@
 Intl      60    59     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 8, unacceptable product size 6, no internal oligo 2, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_11
@@ -219,7 +219,7 @@
 Intl      60    52     0     0     0     0     0     0     0     0     0     0     8
 Pair Stats:
 considered 10, unacceptable product size 8, ok 2
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_12
@@ -264,7 +264,7 @@
 Intl      60    52     0     0     0     0     0     0     0     0     0     0     8
 Pair Stats:
 considered 10, unacceptable product size 8, ok 2
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_13
@@ -302,7 +302,7 @@
 Intl      60    23     0     0     0     0     0     0     0     0     0     0    37
 Pair Stats:
 considered 4, unacceptable product size 3, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_14
@@ -340,7 +340,7 @@
 Intl      60    25     0     0     0     0     0     0     0     0     0     0    35
 Pair Stats:
 considered 6, unacceptable product size 5, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_15
@@ -378,7 +378,7 @@
 Intl      60    25     0     0     0     0     0     0     0     0     0     0    35
 Pair Stats:
 considered 6, unacceptable product size 5, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_16
@@ -404,7 +404,7 @@
 Intl      35     0     0     0     0     0     0     0     0     0     0     0    35
 Pair Stats:
 considered 4, no internal oligo 4, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_17
@@ -431,7 +431,7 @@
 Intl      60     0     0     0    29     0     0     0     0     0     0     0    31
 Pair Stats:
 considered 16, unacceptable product size 4, no internal oligo 12, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_18
@@ -465,7 +465,7 @@
 Intl      87    39     0    40     0     0     0     0     0     0     0     0     8
 Pair Stats:
 considered 81, unacceptable product size 49, no internal oligo 32, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_19
@@ -527,7 +527,7 @@
 Intl      91    84     0     5     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 18, unacceptable product size 3, no internal oligo 8, ok 7
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_20
@@ -599,7 +599,7 @@
 Intl     226   175     0    47     0     0     0     0     0     0     0     0     4
 Pair Stats:
 considered 23, no internal oligo 15, ok 8
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_21
@@ -662,7 +662,7 @@
 Intl     152    57     0     0     0     0     1    93     0     0     0     0     1
 Pair Stats:
 considered 323, unacceptable product size 223, no internal oligo 87, ok 13
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_22
@@ -700,7 +700,7 @@
 Intl      60    57     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_23
@@ -743,7 +743,7 @@
 Intl      56    53     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_24
@@ -784,7 +784,7 @@
 Intl      56    53     0     1     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_25
@@ -827,7 +827,7 @@
 Intl      56    53     0     1     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_26
@@ -868,7 +868,7 @@
 Intl      56    53     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_27
@@ -903,7 +903,7 @@
 Intl      56    53     0     1     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 1, no internal oligo 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_28
@@ -938,7 +938,7 @@
 Intl      56    53     0     1     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 1, no internal oligo 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_29
@@ -979,7 +979,7 @@
 Intl      56    53     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_30
@@ -1020,7 +1020,7 @@
 Intl      56    53     0     1     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_31
@@ -1063,7 +1063,7 @@
 Intl      56    53     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_32
@@ -1106,7 +1106,7 @@
 Intl      56    53     0     1     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_33
@@ -1147,7 +1147,7 @@
 Intl      56    53     0     1     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_34

Modified: trunk/packages/primer3/branches/upstream/current/test/primer_internal_formatted_output
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_internal_formatted_output	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_internal_formatted_output	2007-02-17 04:15:41 UTC (rev 209)
@@ -33,7 +33,7 @@
 Intl      60    57     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 4, unacceptable product size 1, no internal oligo 2, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_01
@@ -71,7 +71,7 @@
 Intl      60    57     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 2, unacceptable product size 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_02
@@ -109,7 +109,7 @@
 Intl      60    57     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_05
@@ -147,7 +147,7 @@
 Intl      60    57     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 4, unacceptable product size 3, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_11
@@ -174,7 +174,7 @@
 Intl      60    59     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 8, unacceptable product size 6, no internal oligo 2, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_11
@@ -219,7 +219,7 @@
 Intl      60    52     0     0     0     0     0     0     0     0     0     0     8
 Pair Stats:
 considered 10, unacceptable product size 8, ok 2
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_12
@@ -264,7 +264,7 @@
 Intl      60    52     0     0     0     0     0     0     0     0     0     0     8
 Pair Stats:
 considered 10, unacceptable product size 8, ok 2
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_13
@@ -302,7 +302,7 @@
 Intl      60    23     0     0     0     0     0     0     0     0     0     0    37
 Pair Stats:
 considered 4, unacceptable product size 3, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_14
@@ -340,7 +340,7 @@
 Intl      60    25     0     0     0     0     0     0     0     0     0     0    35
 Pair Stats:
 considered 6, unacceptable product size 5, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_15
@@ -378,7 +378,7 @@
 Intl      60    25     0     0     0     0     0     0     0     0     0     0    35
 Pair Stats:
 considered 6, unacceptable product size 5, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_16
@@ -404,7 +404,7 @@
 Intl      35     0     0     0     0     0     0     0     0     0     0     0    35
 Pair Stats:
 considered 4, no internal oligo 4, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_17
@@ -431,7 +431,7 @@
 Intl      60     0     0     0    29     0     0     0     0     0     0     0    31
 Pair Stats:
 considered 16, unacceptable product size 4, no internal oligo 12, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_18
@@ -465,7 +465,7 @@
 Intl      87    39     0    40     0     0     0     0     0     0     0     0     8
 Pair Stats:
 considered 81, unacceptable product size 49, no internal oligo 32, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_19
@@ -527,7 +527,7 @@
 Intl      91    84     0     5     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 18, unacceptable product size 3, no internal oligo 8, ok 7
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_20
@@ -599,7 +599,7 @@
 Intl     226   175     0    47     0     0     0     0     0     0     0     0     4
 Pair Stats:
 considered 23, no internal oligo 15, ok 8
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_21
@@ -662,7 +662,7 @@
 Intl     152    57     0     0     0     0     1    93     0     0     0     0     1
 Pair Stats:
 considered 323, unacceptable product size 223, no internal oligo 87, ok 13
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_22
@@ -700,7 +700,7 @@
 Intl      60    57     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_23
@@ -743,7 +743,7 @@
 Intl      56    53     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_24
@@ -784,7 +784,7 @@
 Intl      56    53     0     1     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_25
@@ -827,7 +827,7 @@
 Intl      56    53     0     1     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_26
@@ -868,7 +868,7 @@
 Intl      56    53     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_27
@@ -903,7 +903,7 @@
 Intl      56    53     0     1     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 1, no internal oligo 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_28
@@ -938,7 +938,7 @@
 Intl      56    53     0     1     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 1, no internal oligo 1, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_29
@@ -979,7 +979,7 @@
 Intl      56    53     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_30
@@ -1020,7 +1020,7 @@
 Intl      56    53     0     1     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_31
@@ -1063,7 +1063,7 @@
 Intl      56    53     0     0     0     0     0     0     0     0     0     0     3
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_32
@@ -1106,7 +1106,7 @@
 Intl      56    53     0     1     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_33
@@ -1147,7 +1147,7 @@
 Intl      56    53     0     1     0     0     0     0     0     0     0     0     2
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR boundary_test_34

Modified: trunk/packages/primer3/branches/upstream/current/test/primer_mispriming_boundary1_formatted_output
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_mispriming_boundary1_formatted_output	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_mispriming_boundary1_formatted_output	2007-02-17 04:15:41 UTC (rev 209)
@@ -39,7 +39,7 @@
 Intl     163     0     0     0     0     0     0     0     0     0   121     0     0    42
 Pair Stats:
 considered 381, unacceptable product size 369, no internal oligo 11, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR pair_0
@@ -67,7 +67,7 @@
 Intl     144     0     0     0     0     0     0     0     0     0     0     0     0   144
 Pair Stats:
 considered 32, unacceptable product size 32, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR pair_1
@@ -111,6 +111,6 @@
 Intl     163     0     0     0     0     0     0     0     0     0   121     0     0    42
 Pair Stats:
 considered 6889, unacceptable product size 3403, no internal oligo 11, high mispriming library similarity 3474, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 

Modified: trunk/packages/primer3/branches/upstream/current/test/primer_mispriming_boundary2_formatted_output
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_mispriming_boundary2_formatted_output	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_mispriming_boundary2_formatted_output	2007-02-17 04:15:41 UTC (rev 209)
@@ -39,7 +39,7 @@
 Intl     163     0     0     0     0     0     0     0     0     0   121     0     0    42
 Pair Stats:
 considered 381, unacceptable product size 369, no internal oligo 11, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR pair_0
@@ -67,6 +67,6 @@
 Intl     144     0     0     0     0     0     0     0     0     0     0     0     0   144
 Pair Stats:
 considered 32, unacceptable product size 32, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 

Modified: trunk/packages/primer3/branches/upstream/current/test/primer_mispriming_formatted_output
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_mispriming_formatted_output	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_mispriming_formatted_output	2007-02-17 04:15:41 UTC (rev 209)
@@ -64,7 +64,7 @@
 Right   1012    19     0    58    25     0     0   702     0     0     0     0     0   208
 Pair Stats:
 considered 23, unacceptable product size 17, ok 6
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR exon2
@@ -130,7 +130,7 @@
 Right    827     0     0    72   314     0   236     0     0     0     0     0     0   205
 Pair Stats:
 considered 14, unacceptable product size 8, ok 6
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR exon2
@@ -204,7 +204,7 @@
 Intl    3079     0     0     0   316     0   517   178     0     0     0    23     0  2045
 Pair Stats:
 considered 14, unacceptable product size 8, ok 6
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR exon1
@@ -281,7 +281,7 @@
 Intl    3237    27     0     0    32     0    23  1880     0     0     0     0     0  1275
 Pair Stats:
 considered 29, unacceptable product size 18, high mispriming library similarity 2, ok 9
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR exon2
@@ -355,7 +355,7 @@
 Intl    3079     0     0     0   316     0   517   178     0     0     0    23     0  2045
 Pair Stats:
 considered 116, unacceptable product size 66, tm diff too large 5, high mispriming library similarity 38, ok 7
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR exon2
@@ -401,6 +401,6 @@
 Intl    3079     0     0     0   316     0   517   178     0     0     0    23     0  2045
 Pair Stats:
 considered 12459, unacceptable product size 6872, tm diff too large 4075, high mispriming library similarity 1512, ok 0
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 

Modified: trunk/packages/primer3/branches/upstream/current/test/primer_must_use_formatted_output
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_must_use_formatted_output	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_must_use_formatted_output	2007-02-17 04:15:41 UTC (rev 209)
@@ -34,7 +34,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR high_tm
@@ -74,7 +74,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR high_tm_and_self_any
@@ -114,7 +114,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR high_tm_and_self_any_and_target
@@ -154,7 +154,7 @@
 Right      3     0     0     0     0     0     0     2     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR high_tm_and_self_any_and_excl_region
@@ -196,7 +196,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR high_tm_and_self_any_and_incl_region
@@ -236,7 +236,7 @@
 Statistics
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR left_high_tm_and_self_any_and_right_bad_gc
@@ -272,7 +272,7 @@
 Statistics
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR left_high_tm_and_self_any_and_right_bad_gc_and_target
@@ -308,7 +308,7 @@
 Statistics
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR internal_too_short
@@ -351,7 +351,7 @@
 Statistics
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR internal_too_cold
@@ -390,7 +390,7 @@
 Statistics
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR internal_too_cold2
@@ -433,7 +433,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR mispriming
@@ -476,6 +476,6 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 

Modified: trunk/packages/primer3/branches/upstream/current/test/primer_position_penalty_formatted_output
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_position_penalty_formatted_output	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_position_penalty_formatted_output	2007-02-17 04:15:41 UTC (rev 209)
@@ -60,7 +60,7 @@
 Right   3504     0   289     0     0     0   655  1723     0     0     0     0     0   837
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR AT3_X2
@@ -143,7 +143,7 @@
 Right   6657     0   289     0   114     0  1327  3439     0     2     0    19     0  1467
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR AT3_X3
@@ -217,7 +217,7 @@
 Right   5254     0   289     0   103     0  1706  1557     0     0     0     0     0  1599
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR AT3_X3'
@@ -288,7 +288,7 @@
 Right   4294     0   289     0   209     0   512  2472     0     0     0    25     0   787
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR AT3_X4
@@ -371,7 +371,7 @@
 Right   7004     0   289     0     0     0  1493  3474     0     0     0     0     0  1748
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR AT3_X5
@@ -439,7 +439,7 @@
 Right   3744     0   289     0     0     0   874  1504     0     8     0     0     0  1069
 Pair Stats:
 considered 21, high end compl 20, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR AT3_X6
@@ -510,7 +510,7 @@
 Right   4414     0   289     0   103     0  1578  1288     0     0    14     0     0  1142
 Pair Stats:
 considered 3, high end compl 2, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X1
@@ -578,7 +578,7 @@
 Right   4274     0   289     0     0     0   375  2978     0     0     0     0     0   632
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X2
@@ -640,7 +640,7 @@
 Right   2584     0   289     0     1     0    95  1901     0     0     0     0     0   298
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X3
@@ -711,7 +711,7 @@
 Right   4444     0   289     0     0     0   400  2950     0     0     0     0     0   805
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X4
@@ -779,7 +779,7 @@
 Right   3804     0   289     0     0     0   348  2565     0     0     0     0     0   602
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X5
@@ -847,7 +847,7 @@
 Right   3974     0   289     0    34     0   889  1971     0     0     0     0     0   791
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X6
@@ -915,7 +915,7 @@
 Right   3794     0   289     0     0     0   274  2616     2     3     0     0     0   610
 Pair Stats:
 considered 40, high end compl 38, ok 2
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X7
@@ -983,7 +983,7 @@
 Right   3593     0   289     0    15     0   752  1654     0     0     0    22     0   861
 Pair Stats:
 considered 102, high any compl 81, high end compl 20, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X8
@@ -1051,7 +1051,7 @@
 Right   3861     0   289     0     8     0   269  2629     0     0     0    22     0   644
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X9
@@ -1116,7 +1116,7 @@
 Right   4589     0   154     0     0     0   711  2838     0     0     0     0     0   886
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X10
@@ -1169,7 +1169,7 @@
 Right   1498     0   226     0     0     0   153   792     0     0     0    22     0   305
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X11
@@ -1222,7 +1222,7 @@
 Right   2741     0   116     0    42     0   336  1775     0     0     0     0     0   472
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X12
@@ -1290,7 +1290,7 @@
 Right   3774     0   289     0     0     0   619  2094     0     0     0     0     0   772
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X13
@@ -1355,7 +1355,7 @@
 Right   3434     0   289     0     0     0   586  1682     0     0     0     0     0   877
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X14
@@ -1411,7 +1411,7 @@
 Right   1454     0   289     0     0     0    83   882     0     0     0     0     0   200
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X15
@@ -1476,7 +1476,7 @@
 Right   3758     0   245     0     1     0   356  2464     0     0     3    22     0   667
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR CETP_X16
@@ -1544,7 +1544,7 @@
 Right   3637     0   289     0     3     0   299  2316     0     0     0    25     0   705
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2_X1
@@ -1612,7 +1612,7 @@
 Right   4194     0   289     0     8     0   235  3082     0     0     2     0     0   578
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2_X2
@@ -1683,7 +1683,7 @@
 Right   4704     0   289     0    96     0   191  3583     0     4     0     0     0   541
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2_X3
@@ -1748,7 +1748,7 @@
 Right   3344     0   289     0     1     0   379  2040     0     0     0     0     0   635
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2_X4
@@ -1813,7 +1813,7 @@
 Right   3497     0   289     0   107     0   371  2132     0     0     0    18     0   580
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2_X5
@@ -1881,7 +1881,7 @@
 Right   4154     0   289     0    14     0   310  2916     0     0     0     0     0   625
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2_X6
@@ -1952,7 +1952,7 @@
 Right   4464     0   289     0    40     0   325  3245     0     0     0     0     0   565
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2_X7
@@ -2032,7 +2032,7 @@
 Right   5938     0   289     0    51     0   580  3983     0     0     0    44     0   991
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2_X8
@@ -2103,7 +2103,7 @@
 Right   4384     0   289     0    97     0   244  3201     0     0     0     0     0   553
 Pair Stats:
 considered 14, high end compl 12, ok 2
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2_X9
@@ -2174,7 +2174,7 @@
 Right   4248     0   289     0    80     0   415  2693     0     0     0    23     0   748
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2_X10
@@ -2245,7 +2245,7 @@
 Right   4621     0   289     0     8     0   474  3110     0     0     0    22     0   718
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2_X11
@@ -2316,7 +2316,7 @@
 Right   4762     0   289     0   176     0   739  2528     0     0     0    13     0  1017
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2_X12
@@ -2390,7 +2390,7 @@
 Right   4914     0   289     0    83     0   976  2660     0     0     0     0     0   906
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2_X13
@@ -2458,7 +2458,7 @@
 Right   3804     0   289     0     0     0   873  1715     0     5     0     0     0   922
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2_X14
@@ -2526,7 +2526,7 @@
 Right   3944     0   289     0    74     0   898  1848     0     2     0     0     0   833
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2R_X1
@@ -2576,7 +2576,7 @@
 Right    951     0   226     0   209     0     0   510     0     0     0     0     0     6
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2R_X2-seg1
@@ -2644,7 +2644,7 @@
 Right   6710     0     0     0     4     0  1540  3376     0     0     2     0     0  1788
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F2R_X2-seg2
@@ -2715,7 +2715,7 @@
 Right   6997     0     0     0   109     0  2483  2360     0     0     0    22     0  2023
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F3_X1
@@ -2783,7 +2783,7 @@
 Right   4094     0   289     0   716     0   101  2783     0     0     0     0     0   205
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F3_X2
@@ -2851,7 +2851,7 @@
 Right   4214     0   289     0   232     0  1968   682     0     0     0     0     0  1043
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F3_X3
@@ -2925,7 +2925,7 @@
 Right   5005     0   289     0   185     0  1231  1945     0     0     0    11     0  1344
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F3_X4
@@ -2996,7 +2996,7 @@
 Right   4770     0   289     0   176     0  1330  1913     0     0     0    21     0  1041
 Pair Stats:
 considered 36, high end compl 33, ok 3
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F3_X5
@@ -3067,7 +3067,7 @@
 Right   4397     0   289     0    28     0  1323  1565     0     4     0    44     0  1144
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F3_X6
@@ -3138,7 +3138,7 @@
 Right   4311     0   289     0    51     0  1766   895     0     0     0    22     0  1288
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F5_X10
@@ -3188,7 +3188,7 @@
 Right   2435     0    50     0     0     0  1068   632     0     0     0     0     0   685
 Pair Stats:
 considered 18, high end compl 16, ok 2
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F7_X1
@@ -3256,7 +3256,7 @@
 Right   3734     0   289     0    17     0   289  2735     0     1     0     0     0   403
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F7_X2
@@ -3324,7 +3324,7 @@
 Right   3601     0   289     0    16     0   390  2278     0     0     0    22     0   606
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F7_X2'
@@ -3395,7 +3395,7 @@
 Right   4704     0   289     0  1078     0   138  2874     0     0     0     0     0   325
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F7_X3
@@ -3460,7 +3460,7 @@
 Right   3344     0   289     0     0     0   284  2312     8    13     7     0     0   431
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F7_X4
@@ -3528,7 +3528,7 @@
 Right   4234     0   289     0    81     0   378  2891     0     0     0     0     0   595
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F7_X5
@@ -3599,7 +3599,7 @@
 Right   4504     0   289     0     1     0   499  3030     0     0     2     0     0   683
 Pair Stats:
 considered 20, high any compl 8, high end compl 10, ok 2
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F7_X6
@@ -3667,7 +3667,7 @@
 Right   3894     0   289     0    11     0   463  2371     0     1     0    44     0   715
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F7_X7
@@ -3738,7 +3738,7 @@
 Right   4181     0   289     0    10     0   236  3155     0     5     0    22     0   464
 Pair Stats:
 considered 126, high any compl 28, high end compl 97, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR F7_X8
@@ -3830,7 +3830,7 @@
 Right   9054     0   289     0    79     0  1105  6374     0     1     0     0     0  1206
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HCF2_X2
@@ -3940,7 +3940,7 @@
 Right  12144     0   289     0    15     0  3651  4687     0     7     0     0     0  3495
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HCF2_X3
@@ -4017,7 +4017,7 @@
 Right   5393     0   289     0    28     0  1331  2335    19     7     0    67     0  1317
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HCF2_X4
@@ -4088,7 +4088,7 @@
 Right   4238     0   289     0    20     0   420  2770     0     0     0    44     0   695
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HCF2_X5
@@ -4195,7 +4195,7 @@
 Right  11432     0   289     0    57     0  2518  5947     0    12     0    20     0  2589
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X1
@@ -4239,7 +4239,7 @@
 Right   1490     0    65     0     0     0   478   584     0     0     0     0     0   363
 Pair Stats:
 considered 11, high end compl 10, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X2
@@ -4277,7 +4277,7 @@
 Right    770     0     0     0    11     0   448    81     7     1     0     0     0   222
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X3
@@ -4315,7 +4315,7 @@
 Right    530     0     0     0     1     0   416     4     0     0     0     0     0   109
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X4
@@ -4353,7 +4353,7 @@
 Right    500     0     0     0     0     0   123   202     0     0     0     0     0   175
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X5
@@ -4391,7 +4391,7 @@
 Right    710     0     0     0     0     0   202   248     0     1     1     0     0   258
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X6
@@ -4429,7 +4429,7 @@
 Right    720     0     0     0     0     0   181   338     0     0     0     0     0   201
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X7
@@ -4467,7 +4467,7 @@
 Right    820     0     0     0     3     0   237   349     0     0     0     0     0   231
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X8
@@ -4508,7 +4508,7 @@
 Right   1260     0     0     0     0     0   530   315     0     0    20     0     0   395
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X9
@@ -4555,7 +4555,7 @@
 Right   1977     0     0     0     0     0  1125   203     0     0     0    22     0   627
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X10
@@ -4593,7 +4593,7 @@
 Right    550     0     0     0     0     0   227   116     0     0     0     0     0   207
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X11
@@ -4631,7 +4631,7 @@
 Right    540     0     0     0     0     0   181   215     0     0     0     0     0   144
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X12
@@ -4675,7 +4675,7 @@
 Right   1600     0     0     0     0     0   707   324     0     0     0     0     0   569
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X13
@@ -4716,7 +4716,7 @@
 Right   1240     0     0     0     1     0   280   628     0     0     0     0     0   331
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X14
@@ -4757,7 +4757,7 @@
 Right   1230     0     0     0     0     0   122   805     0     0     0     0     0   303
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X15
@@ -4795,7 +4795,7 @@
 Right    710     0     0     0     0     0   172   343     0     0     0     0     0   195
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X16
@@ -4836,7 +4836,7 @@
 Right   1360     0     0     0     0     0   616   248     0     1     0     0     0   495
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X17
@@ -4877,7 +4877,7 @@
 Right   1060     0     0     0     1     0   217   601     0     0     0     0     0   241
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X18
@@ -4918,7 +4918,7 @@
 Right   1240     0     0     0    18     0   504   411     0     0     0     0     0   307
 Pair Stats:
 considered 62, high end compl 59, ok 3
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X19
@@ -4959,7 +4959,7 @@
 Right   1200     0     0     0     0     0   167   784     0     0     0     0     0   249
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR HMGCR_X20
@@ -5000,6 +5000,6 @@
 Right   1150     0     0     0    42     0   311   512    26     3     0    20     0   236
 Pair Stats:
 considered 1, ok 1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 

Modified: trunk/packages/primer3/branches/upstream/current/test/primer_task_formatted_output
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_task_formatted_output	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_task_formatted_output	2007-02-17 04:15:41 UTC (rev 209)
@@ -44,7 +44,7 @@
 Right      1     0     0     0     0     0     0     0     0     0     0     0     1
 Pair Stats:
 considered 3, ok 3
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR pcr_primers_and_io
@@ -113,7 +113,7 @@
 Intl     393   280     0     0     0     0    30    46     0     0     3     0    34
 Pair Stats:
 considered 7, ok 7
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR left_only
@@ -152,7 +152,7 @@
          sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end      
         ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab    ok
 Left    1121    38    23     0     0     0    42   866     0     0     0     0   152
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR right_only
@@ -191,7 +191,7 @@
          sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end      
         ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab    ok
 Right    623    27    36     0     5     0   230   145     0     6     0     0   174
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR hyb_probe_only
@@ -228,7 +228,7 @@
          sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end      
         ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab    ok
 Intl    1040    27     0    33     0     0    44   804     0     0     0     0   132
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR left_only
@@ -253,7 +253,7 @@
          sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end      
         ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab    ok
 Left       1     0     0     0     0     0     0     0     0     0     0     0     1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR right_only
@@ -278,7 +278,7 @@
          sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end      
         ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab    ok
 Left       1     0     0     0     0     0     0     0     0     0     0     0     1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 
 PRIMER PICKING RESULTS FOR hyb_probe_only
@@ -303,6 +303,6 @@
          sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end      
         ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab    ok
 Left       1     0     0     0     0     0     0     0     0     0     0     0     1
-primer3 release 1.0.1
+primer3 release 1.1.0
 
 

Added: trunk/packages/primer3/branches/upstream/current/test/primer_tm_lc_masking_formatted_output
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_tm_lc_masking_formatted_output	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_tm_lc_masking_formatted_output	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1,286 @@
+PRIMER PICKING RESULTS FOR 000
+
+No mispriming library specified
+Using 0-based sequence positions
+OLIGO            start  len      tm     gc%   any    3' seq
+LEFT_PRIMER          0   10   15.11   40.00  2.00  2.00 TCCTTGTGAT
+SEQUENCE SIZE: 10
+INCLUDED REGION SIZE: 10
+
+    0 TCCTTGTGAT
+      >>>>>>>>>>
+
+KEYS (in order of precedence):
+>>>>>> left primer
+
+
+
+Statistics
+         con   too    in    in          no    tm    tm  high  high        high      
+         sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end      
+        ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab    ok
+Left       1     0     0     0     0     0     0     0     0     0     0     0     1
+primer3 release 1.1.0
+
+
+PRIMER PICKING RESULTS FOR 001
+
+No mispriming library specified
+Using 0-based sequence positions
+OLIGO            start  len      tm     gc%   any    3' seq
+LEFT_PRIMER          0   10   22.87   40.00  2.00  2.00 TCCTTGTGAT
+SEQUENCE SIZE: 10
+INCLUDED REGION SIZE: 10
+
+    0 TCCTTGTGAT
+      >>>>>>>>>>
+
+KEYS (in order of precedence):
+>>>>>> left primer
+
+
+
+Statistics
+         con   too    in    in          no    tm    tm  high  high        high      
+         sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end      
+        ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab    ok
+Left       1     0     0     0     0     0     0     0     0     0     0     0     1
+primer3 release 1.1.0
+
+
+PRIMER PICKING RESULTS FOR 002
+
+No mispriming library specified
+Using 0-based sequence positions
+OLIGO            start  len      tm     gc%   any    3' seq
+LEFT_PRIMER          0   10   22.82   40.00  2.00  2.00 TCCTTGTGAT
+SEQUENCE SIZE: 10
+INCLUDED REGION SIZE: 10
+
+    0 TCCTTGTGAT
+      >>>>>>>>>>
+
+KEYS (in order of precedence):
+>>>>>> left primer
+
+
+
+Statistics
+         con   too    in    in          no    tm    tm  high  high        high      
+         sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end      
+        ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab    ok
+Left       1     0     0     0     0     0     0     0     0     0     0     0     1
+primer3 release 1.1.0
+
+
+PRIMER PICKING RESULTS FOR 100
+
+No mispriming library specified
+Using 0-based sequence positions
+NO OLIGOS FOUND
+
+    0 TCCTTGTGAt
+
+
+
+Statistics
+         con   too    in    in          no    tm    tm  high  high        high lower      
+         sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end  case      
+        ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab   end  ok  
+Left       1     0     0     0     0     0     0     0     0     0     0     0     1     0
+primer3 release 1.1.0
+
+
+PRIMER PICKING RESULTS FOR 101
+
+No mispriming library specified
+Using 0-based sequence positions
+OLIGO            start  len      tm     gc%   any    3' seq
+LEFT_PRIMER          0   10   22.87   40.00  2.00  2.00 TCCTTGTGaT
+SEQUENCE SIZE: 10
+INCLUDED REGION SIZE: 10
+
+    0 TCCTTGTGaT
+      >>>>>>>>>>
+
+KEYS (in order of precedence):
+>>>>>> left primer
+
+
+
+Statistics
+         con   too    in    in          no    tm    tm  high  high        high lower      
+         sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end  case      
+        ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab   end  ok  
+Left       1     0     0     0     0     0     0     0     0     0     0     0     0     1
+primer3 release 1.1.0
+
+
+PRIMER PICKING RESULTS FOR 102
+
+No mispriming library specified
+Using 0-based sequence positions
+OLIGO            start  len      tm     gc%   any    3' seq
+LEFT_PRIMER          0   10   22.82   40.00  2.00  2.00 tccttgtgat
+SEQUENCE SIZE: 10
+INCLUDED REGION SIZE: 10
+
+    0 tccttgtgat
+      >>>>>>>>>>
+
+KEYS (in order of precedence):
+>>>>>> left primer
+
+
+
+Statistics
+         con   too    in    in          no    tm    tm  high  high        high      
+         sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end      
+        ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab    ok
+Left       1     0     0     0     0     0     0     0     0     0     0     0     1
+primer3 release 1.1.0
+
+
+PRIMER PICKING RESULTS FOR 010
+
+No mispriming library specified
+Using 0-based sequence positions
+OLIGO            start  len      tm     gc%   any    3' seq
+LEFT_PRIMER          0   10    9.73   40.00  2.00  2.00 TCCTTGTGAT
+SEQUENCE SIZE: 10
+INCLUDED REGION SIZE: 10
+
+    0 TCCTTGTGAT
+      >>>>>>>>>>
+
+KEYS (in order of precedence):
+>>>>>> left primer
+
+
+
+Statistics
+         con   too    in    in          no    tm    tm  high  high        high      
+         sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end      
+        ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab    ok
+Left       1     0     0     0     0     0     0     0     0     0     0     0     1
+primer3 release 1.1.0
+
+
+PRIMER PICKING RESULTS FOR 011
+
+No mispriming library specified
+Using 0-based sequence positions
+OLIGO            start  len      tm     gc%   any    3' seq
+LEFT_PRIMER          0   10   20.94   50.00  2.00  0.00 TCCTTGTGAG
+SEQUENCE SIZE: 10
+INCLUDED REGION SIZE: 10
+
+    0 TCCTTGTGAG
+      >>>>>>>>>>
+
+KEYS (in order of precedence):
+>>>>>> left primer
+
+
+
+Statistics
+         con   too    in    in          no    tm    tm  high  high        high      
+         sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end      
+        ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab    ok
+Left       1     0     0     0     0     0     0     0     0     0     0     0     1
+primer3 release 1.1.0
+
+
+PRIMER PICKING RESULTS FOR 012
+
+No mispriming library specified
+Using 0-based sequence positions
+OLIGO            start  len      tm     gc%   any    3' seq
+LEFT_PRIMER          0   10   26.08   60.00  2.00  0.00 GCCTTGTGAG
+SEQUENCE SIZE: 10
+INCLUDED REGION SIZE: 10
+
+    0 GCCTTGTGAG
+      >>>>>>>>>>
+
+KEYS (in order of precedence):
+>>>>>> left primer
+
+
+
+Statistics
+         con   too    in    in          no    tm    tm  high  high        high      
+         sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end      
+        ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab    ok
+Left       1     0     0     0     0     0     0     0     0     0     0     0     1
+primer3 release 1.1.0
+
+
+PRIMER PICKING RESULTS FOR 110
+
+No mispriming library specified
+Using 0-based sequence positions
+NO OLIGOS FOUND
+
+    0 TCCTTGTGAt
+
+
+
+Statistics
+         con   too    in    in          no    tm    tm  high  high        high lower      
+         sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end  case      
+        ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab   end  ok  
+Left       1     0     0     0     0     0     0     0     0     0     0     0     1     0
+primer3 release 1.1.0
+
+
+PRIMER PICKING RESULTS FOR 111
+
+No mispriming library specified
+Using 0-based sequence positions
+OLIGO            start  len      tm     gc%   any    3' seq
+LEFT_PRIMER          0   10   18.40   40.00  2.00  2.00 TCCTTGTGaT
+SEQUENCE SIZE: 10
+INCLUDED REGION SIZE: 10
+
+    0 TCCTTGTGaT
+      >>>>>>>>>>
+
+KEYS (in order of precedence):
+>>>>>> left primer
+
+
+
+Statistics
+         con   too    in    in          no    tm    tm  high  high        high lower      
+         sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end  case      
+        ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab   end  ok  
+Left       1     0     0     0     0     0     0     0     0     0     0     0     0     1
+primer3 release 1.1.0
+
+
+PRIMER PICKING RESULTS FOR 112
+
+No mispriming library specified
+Using 0-based sequence positions
+OLIGO            start  len      tm     gc%   any    3' seq
+LEFT_PRIMER          0   10   17.92   40.00  2.00  2.00 tccttgtgat
+SEQUENCE SIZE: 10
+INCLUDED REGION SIZE: 10
+
+    0 tccttgtgat
+      >>>>>>>>>>
+
+KEYS (in order of precedence):
+>>>>>> left primer
+
+
+
+Statistics
+         con   too    in    in          no    tm    tm  high  high        high      
+         sid  many   tar  excl   bad    GC   too   too   any    3'  poly   end      
+        ered    Ns   get   reg   GC% clamp   low  high compl compl     X  stab    ok
+Left       1     0     0     0     0     0     0     0     0     0     0     0     1
+primer3 release 1.1.0
+
+

Added: trunk/packages/primer3/branches/upstream/current/test/primer_tm_lc_masking_input
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_tm_lc_masking_input	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_tm_lc_masking_input	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1,98 @@
+PRIMER_TM_SANTALUCIA=0
+PRIMER_SALT_CORRECTIONS=0
+PRIMER_LOWERCASE_MASKING=0
+PRIMER_NUM_RETURN=1
+PRIMER_TASK=pick_left_only
+PRIMER_EXPLAIN_FLAG=1
+PRIMER_MIN_SIZE=10
+PRIMER_MAX_SIZE=10
+PRIMER_OPT_SIZE=10
+PRIMER_MIN_TM=0
+PRIMER_MAX_TM=70
+COMMENT=nomasking_Breslauer_Schildkraut
+PRIMER_SEQUENCE_ID=000
+SEQUENCE=TCCTTGTGAT
+=
+PRIMER_TM_SANTALUCIA=0
+PRIMER_SALT_CORRECTIONS=1
+PRIMER_LOWERCASE_MASKING=0
+COMMENT=nomasking_Breslauer_SantaLucia
+PRIMER_SEQUENCE_ID=001
+SEQUENCE=TCCTTGTGAT
+=
+PRIMER_TM_SANTALUCIA=0
+PRIMER_SALT_CORRECTIONS=2
+PRIMER_LOWERCASE_MASKING=0
+COMMENT=nomasking_Breslauer_Owczarzy
+PRIMER_SEQUENCE_ID=002
+SEQUENCE=TCCTTGTGAT
+=
+PRIMER_TM_SANTALUCIA=0
+PRIMER_SALT_CORRECTIONS=0
+PRIMER_LOWERCASE_MASKING=1
+COMMENT=masking_Breslauer_Schildkraut
+COMMENT=Should fail
+PRIMER_SEQUENCE_ID=100
+SEQUENCE=TCCTTGTGAt
+=
+PRIMER_TM_SANTALUCIA=0
+PRIMER_SALT_CORRECTIONS=1
+PRIMER_LOWERCASE_MASKING=1
+PRIMER_SEQUENCE_ID=101
+COMMENT=masking_Breslauer_SantaLucia
+COMMENT=Should succeed
+SEQUENCE=TCCTTGTGaT
+=
+PRIMER_TM_SANTALUCIA=0
+PRIMER_SALT_CORRECTIONS=2
+PRIMER_LOWERCASE_MASKING=0
+COMMENT=masking_Breslauer_Owczarzy
+COMMENT=Should succeed
+PRIMER_SEQUENCE_ID=102
+SEQUENCE=tccttgtgat
+=
+PRIMER_TM_SANTALUCIA=1
+PRIMER_SALT_CORRECTIONS=0
+PRIMER_LOWERCASE_MASKING=0
+COMMENT=nomasking_SantaLucia_Schildkraut
+PRIMER_SEQUENCE_ID=010
+SEQUENCE=TCCTTGTGAT
+=
+PRIMER_TM_SANTALUCIA=1
+PRIMER_SALT_CORRECTIONS=1
+PRIMER_LOWERCASE_MASKING=0
+COMMENT=nomasking_SantaLucia_SantaLucia
+PRIMER_SEQUENCE_ID=011
+SEQUENCE=TCCTTGTGAG
+=
+PRIMER_TM_SANTALUCIA=1
+PRIMER_SALT_CORRECTIONS=2
+PRIMER_LOWERCASE_MASKING=0
+COMMENT=nomasking_SantaLucia_Owczarzy
+PRIMER_SEQUENCE_ID=012
+SEQUENCE=GCCTTGTGAG
+=
+PRIMER_TM_SANTALUCIA=1
+PRIMER_SALT_CORRECTIONS=0
+PRIMER_LOWERCASE_MASKING=1
+COMMENT=masking_SantaLucia_Schildkraut
+COMMENT=Should fail
+PRIMER_SEQUENCE_ID=110
+SEQUENCE=TCCTTGTGAt
+=
+PRIMER_TM_SANTALUCIA=1
+PRIMER_SALT_CORRECTIONS=1
+PRIMER_LOWERCASE_MASKING=1
+COMMENT=masking_SantaLucia_SantaLucia
+COMMENT=Should succeed
+PRIMER_SEQUENCE_ID=111
+SEQUENCE=TCCTTGTGaT
+=
+PRIMER_TM_SANTALUCIA=1
+PRIMER_SALT_CORRECTIONS=2
+PRIMER_LOWERCASE_MASKING=0
+COMMENT=nomasking_SantaLucia_Owczarzy
+COMMENT=Should succeed
+PRIMER_SEQUENCE_ID=112
+SEQUENCE=tccttgtgat
+=

Added: trunk/packages/primer3/branches/upstream/current/test/primer_tm_lc_masking_output
===================================================================
--- trunk/packages/primer3/branches/upstream/current/test/primer_tm_lc_masking_output	2007-02-17 04:15:24 UTC (rev 208)
+++ trunk/packages/primer3/branches/upstream/current/test/primer_tm_lc_masking_output	2007-02-17 04:15:41 UTC (rev 209)
@@ -0,0 +1,190 @@
+PRIMER_TM_SANTALUCIA=0
+PRIMER_SALT_CORRECTIONS=0
+PRIMER_LOWERCASE_MASKING=0
+PRIMER_NUM_RETURN=1
+PRIMER_TASK=pick_left_only
+PRIMER_EXPLAIN_FLAG=1
+PRIMER_MIN_SIZE=10
+PRIMER_MAX_SIZE=10
+PRIMER_OPT_SIZE=10
+PRIMER_MIN_TM=0
+PRIMER_MAX_TM=70
+COMMENT=nomasking_Breslauer_Schildkraut
+PRIMER_SEQUENCE_ID=000
+SEQUENCE=TCCTTGTGAT
+PRIMER_LEFT_EXPLAIN=considered 1, ok 1
+PRIMER_LEFT_PENALTY=44.8937
+PRIMER_LEFT_SEQUENCE=TCCTTGTGAT
+PRIMER_LEFT=0,10
+PRIMER_LEFT_TM=15.106
+PRIMER_LEFT_GC_PERCENT=40.000
+PRIMER_LEFT_SELF_ANY=2.00
+PRIMER_LEFT_SELF_END=2.00
+PRIMER_LEFT_END_STABILITY=6.3000
+=
+PRIMER_TM_SANTALUCIA=0
+PRIMER_SALT_CORRECTIONS=1
+PRIMER_LOWERCASE_MASKING=0
+COMMENT=nomasking_Breslauer_SantaLucia
+PRIMER_SEQUENCE_ID=001
+SEQUENCE=TCCTTGTGAT
+PRIMER_LEFT_EXPLAIN=considered 1, ok 1
+PRIMER_LEFT_PENALTY=37.1275
+PRIMER_LEFT_SEQUENCE=TCCTTGTGAT
+PRIMER_LEFT=0,10
+PRIMER_LEFT_TM=22.873
+PRIMER_LEFT_GC_PERCENT=40.000
+PRIMER_LEFT_SELF_ANY=2.00
+PRIMER_LEFT_SELF_END=2.00
+PRIMER_LEFT_END_STABILITY=6.3000
+=
+PRIMER_TM_SANTALUCIA=0
+PRIMER_SALT_CORRECTIONS=2
+PRIMER_LOWERCASE_MASKING=0
+COMMENT=nomasking_Breslauer_Owczarzy
+PRIMER_SEQUENCE_ID=002
+SEQUENCE=TCCTTGTGAT
+PRIMER_LEFT_EXPLAIN=considered 1, ok 1
+PRIMER_LEFT_PENALTY=37.1758
+PRIMER_LEFT_SEQUENCE=TCCTTGTGAT
+PRIMER_LEFT=0,10
+PRIMER_LEFT_TM=22.824
+PRIMER_LEFT_GC_PERCENT=40.000
+PRIMER_LEFT_SELF_ANY=2.00
+PRIMER_LEFT_SELF_END=2.00
+PRIMER_LEFT_END_STABILITY=6.3000
+=
+PRIMER_TM_SANTALUCIA=0
+PRIMER_SALT_CORRECTIONS=0
+PRIMER_LOWERCASE_MASKING=1
+COMMENT=masking_Breslauer_Schildkraut
+COMMENT=Should fail
+PRIMER_SEQUENCE_ID=100
+SEQUENCE=TCCTTGTGAt
+PRIMER_LEFT_EXPLAIN=considered 1,lowercase masking of 3' end 1, ok 0
+=
+PRIMER_TM_SANTALUCIA=0
+PRIMER_SALT_CORRECTIONS=1
+PRIMER_LOWERCASE_MASKING=1
+PRIMER_SEQUENCE_ID=101
+COMMENT=masking_Breslauer_SantaLucia
+COMMENT=Should succeed
+SEQUENCE=TCCTTGTGaT
+PRIMER_LEFT_EXPLAIN=considered 1, ok 1
+PRIMER_LEFT_PENALTY=37.1275
+PRIMER_LEFT_SEQUENCE=TCCTTGTGaT
+PRIMER_LEFT=0,10
+PRIMER_LEFT_TM=22.873
+PRIMER_LEFT_GC_PERCENT=40.000
+PRIMER_LEFT_SELF_ANY=2.00
+PRIMER_LEFT_SELF_END=2.00
+PRIMER_LEFT_END_STABILITY=6.3000
+=
+PRIMER_TM_SANTALUCIA=0
+PRIMER_SALT_CORRECTIONS=2
+PRIMER_LOWERCASE_MASKING=0
+COMMENT=masking_Breslauer_Owczarzy
+COMMENT=Should succeed
+PRIMER_SEQUENCE_ID=102
+SEQUENCE=tccttgtgat
+PRIMER_LEFT_EXPLAIN=considered 1, ok 1
+PRIMER_LEFT_PENALTY=37.1758
+PRIMER_LEFT_SEQUENCE=tccttgtgat
+PRIMER_LEFT=0,10
+PRIMER_LEFT_TM=22.824
+PRIMER_LEFT_GC_PERCENT=40.000
+PRIMER_LEFT_SELF_ANY=2.00
+PRIMER_LEFT_SELF_END=2.00
+PRIMER_LEFT_END_STABILITY=6.3000
+=
+PRIMER_TM_SANTALUCIA=1
+PRIMER_SALT_CORRECTIONS=0
+PRIMER_LOWERCASE_MASKING=0
+COMMENT=nomasking_SantaLucia_Schildkraut
+PRIMER_SEQUENCE_ID=010
+SEQUENCE=TCCTTGTGAT
+PRIMER_LEFT_EXPLAIN=considered 1, ok 1
+PRIMER_LEFT_PENALTY=50.2651
+PRIMER_LEFT_SEQUENCE=TCCTTGTGAT
+PRIMER_LEFT=0,10
+PRIMER_LEFT_TM=9.735
+PRIMER_LEFT_GC_PERCENT=40.000
+PRIMER_LEFT_SELF_ANY=2.00
+PRIMER_LEFT_SELF_END=2.00
+PRIMER_LEFT_END_STABILITY=3.0600
+=
+PRIMER_TM_SANTALUCIA=1
+PRIMER_SALT_CORRECTIONS=1
+PRIMER_LOWERCASE_MASKING=0
+COMMENT=nomasking_SantaLucia_SantaLucia
+PRIMER_SEQUENCE_ID=011
+SEQUENCE=TCCTTGTGAG
+PRIMER_LEFT_EXPLAIN=considered 1, ok 1
+PRIMER_LEFT_PENALTY=39.0572
+PRIMER_LEFT_SEQUENCE=TCCTTGTGAG
+PRIMER_LEFT=0,10
+PRIMER_LEFT_TM=20.943
+PRIMER_LEFT_GC_PERCENT=50.000
+PRIMER_LEFT_SELF_ANY=2.00
+PRIMER_LEFT_SELF_END=0.00
+PRIMER_LEFT_END_STABILITY=3.5100
+=
+PRIMER_TM_SANTALUCIA=1
+PRIMER_SALT_CORRECTIONS=2
+PRIMER_LOWERCASE_MASKING=0
+COMMENT=nomasking_SantaLucia_Owczarzy
+PRIMER_SEQUENCE_ID=012
+SEQUENCE=GCCTTGTGAG
+PRIMER_LEFT_EXPLAIN=considered 1, ok 1
+PRIMER_LEFT_PENALTY=33.9227
+PRIMER_LEFT_SEQUENCE=GCCTTGTGAG
+PRIMER_LEFT=0,10
+PRIMER_LEFT_TM=26.077
+PRIMER_LEFT_GC_PERCENT=60.000
+PRIMER_LEFT_SELF_ANY=2.00
+PRIMER_LEFT_SELF_END=0.00
+PRIMER_LEFT_END_STABILITY=3.5100
+=
+PRIMER_TM_SANTALUCIA=1
+PRIMER_SALT_CORRECTIONS=0
+PRIMER_LOWERCASE_MASKING=1
+COMMENT=masking_SantaLucia_Schildkraut
+COMMENT=Should fail
+PRIMER_SEQUENCE_ID=110
+SEQUENCE=TCCTTGTGAt
+PRIMER_LEFT_EXPLAIN=considered 1,lowercase masking of 3' end 1, ok 0
+=
+PRIMER_TM_SANTALUCIA=1
+PRIMER_SALT_CORRECTIONS=1
+PRIMER_LOWERCASE_MASKING=1
+COMMENT=masking_SantaLucia_SantaLucia
+COMMENT=Should succeed
+PRIMER_SEQUENCE_ID=111
+SEQUENCE=TCCTTGTGaT
+PRIMER_LEFT_EXPLAIN=considered 1, ok 1
+PRIMER_LEFT_PENALTY=41.6015
+PRIMER_LEFT_SEQUENCE=TCCTTGTGaT
+PRIMER_LEFT=0,10
+PRIMER_LEFT_TM=18.398
+PRIMER_LEFT_GC_PERCENT=40.000
+PRIMER_LEFT_SELF_ANY=2.00
+PRIMER_LEFT_SELF_END=2.00
+PRIMER_LEFT_END_STABILITY=3.0600
+=
+PRIMER_TM_SANTALUCIA=1
+PRIMER_SALT_CORRECTIONS=2
+PRIMER_LOWERCASE_MASKING=0
+COMMENT=nomasking_SantaLucia_Owczarzy
+COMMENT=Should succeed
+PRIMER_SEQUENCE_ID=112
+SEQUENCE=tccttgtgat
+PRIMER_LEFT_EXPLAIN=considered 1, ok 1
+PRIMER_LEFT_PENALTY=42.0803
+PRIMER_LEFT_SEQUENCE=tccttgtgat
+PRIMER_LEFT=0,10
+PRIMER_LEFT_TM=17.920
+PRIMER_LEFT_GC_PERCENT=40.000
+PRIMER_LEFT_SELF_ANY=2.00
+PRIMER_LEFT_SELF_END=2.00
+PRIMER_LEFT_END_STABILITY=3.0600
+=




More information about the debian-med-commit mailing list