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.
The syntax of the version of Boulder-IO recognized by Primer3 is as follows:
An example of a legal (TAG,VALUE) pair is:
PRIMER_SEQUENCE_ID
my_marker
and an example of a Boulder-IO record is:
PRIMER_SEQUENCE_ID
test1
SEQUENCE
GACTGATCGATGCTAGCTACGATCGATCGATGCATG
CTAGCTAGCTAGCTGCTAGC
Many records can be sent, one after another. Below is an example of three different records which might be passed through a Boulder-IO stream:
PRIMER_SEQUENCE_ID
test1
SEQUENCE
GACTGATCGATGCTAGCTACGATCGATCGATGCATG
CTAGCTAGCTAGCTGCTAGC
PRIMER_SEQUENCE_ID
test2
SEQUENCE
CATCATCATCATCGATGCTAGCATCNNACGTACGAN
CANATGCATCGATCGT
PRIMER_SEQUENCE_ID
test3
SEQUENCE
NACGTAGCTAGCATGCACNACTCGACNACGATGCAC
NACAGCTGCATCGATGC
Primer3 reads Boulder-IO on stdin and echos its input and returns results in Boulder-IO format on stdout. Primer3 indicates many user-correctable errors by a value in the PRIMER_ERROR tag (see below) and indicates other errors, including system configuration errors, resource errors (such out-of-memory errors), and detected programming errors by a message on stderr and a non-zero exit status.
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 below), and prints additional information on stdout; this option can be useful for debugging systems that incorporate primer.
Except for tags with the type ``interval list'' each tag is allowed only ONCE in any given input record. This restriction is not 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 after every boulder record. ``Global'' input tags describe the 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 continue to process additional records. Errors in ``Global'' input tags are fatal because they invalidate the basic conditions under which primers are being picked.