thermonucleotideBLAST logo

Assay specific, hybridization-based, parallel searching for nucleic acid sequences
Version 2.04
Last Updated February 17, 2017
Contact: J. D. Gans
Los Alamos National Lab, Bioscience Division


Table of contents


Overview

ThermonucleotideBLAST is a software program for searching a target database of nucleic acid sequences using an assay specific query. ThermonucleotideBLAST queries are based on biochemical assays (i.e. a pair of oligonucleotide sequences representing PCR primers or Padlock probes, a triplet of oligos representing PCR primers and a TaqManTM probe or a single oligo representing a hybridization probe). Unlike existing programs (e.g. BLAST) which use heuristic measures of sequence similarity for identifying matches between a query and target sequence, ThermonucleotideBLAST uses physically relevant measures of sequence similarity -- free energy and melting temperature. For example, given a pair of PCR primers, a database of DNA targets and an annealing temperature, ThermonucleotideBLAST will return a list of predicted amplicons that will (ideally) match experimental PCR results. To enable searching of very large sequence databases (i.e. all of Genbank), ThermonucleotideBLAST can use run-time database and query segmentation to distribute the computational load across multiple CPUs.

Features
Change log

Please send all bug reports or feature requests to J. D. Gans.

Getting started

ThermonucleotideBLAST is written in C++ and has been tested on both shared memory and cluster based computers and compiles under Linux, OS X and Windows. To avoid introducing another file format and to allow efficient use of disk space, ThermonucleotideBLAST reads target databases in a number of common formats, including BLAST (i.e. files formatted with NCBI's formatdb command), FASTA and Genbank flat files (GBK). To handle the task of distributing database searches across multiple CPUs, ThermonucleotideBLAST can use either MPI or OpenMP.

Optional prerequisites are:
  1. The NCBI toolkit (for reading BLAST formatted databases and ASN.1 annotation files)
  2. MPI (like OpenMPI or LAM/MPI)
  3. A compiler that supports OpenMP:
    1. gcc/g++ versions 4.2 and higher
    2. VisualC++ 2005 Pro and Team editions (but not the Express edition)
    3. The Intel C++ compiler
  4. ThermonucleotideBLAST uses the DNA hybridization parameters published by the SantaLucia lab to compute duplex stability. However, the parameters for computing the delta G contribution of terminal mismatches (for internal loops) have not been published. Since we have not obtained permission to include these parameters in ThermonucleotideBLAST, they have not been included. The parameters are available as part of the excellent UNAFold suite of programs. To use these terminal mismatch hybridization parameters in ThermonucleotideBLAST, first download the UNAFold package. Then, run the parse_tstacki.pl script (found in the tntblast-*/src directory) with the path to UNAFold as the only argument and pipe the script output to the file "nuc_cruc_santa_lucia_tstacki.cpp".  For example: "parse_tstacki.pl /path/to/UNAFold > nuc_cruc_santa_lucia_tstacki.cpp". After this file has been created, ThermonucleotideBLAST can be compiled as described below. Note that including these parameters is optional: you do not need to include these terminal mismatch parameters to compile and run ThermonucleotideBLAST (although calculation accuracy will be improved by including them).
Building ThermonucleotideBLAST without any of these prerequisites will generate a single CPU version that will not read BLAST-formated databases.

Download

The source code for the current version of ThermonucleotideBLAST.

How to build and install ThermonucleotideBLAST on Unix-like systems

1) Make sure that all of the optional prerequisite software libraries have been installed and are working properly.

2) Download and untar a copy of the source code for ThermonucleotideBLAST. Untarring will create
a directory named tntblast-xx (where xx is the current version).

3) Run "./configure" with any of the following options:

   
Option
Purpose
Default value
--with-ncbi=/path/to/top/level/ncbi/directory Enables reading of NCBI BLAST databases
not set
--enable-mpi Allows parallel searching using MPI
not set
--enable-openmp Allow parallel searching using OpenMP
not set
--enable-profile Collects statistics on parallel searches
not set
--prefix=/directory/to/install
Specifies the target directory to which tntblast will be installed to after running "make install"
/usr/local
  
Both the --enable-mpi and --enable-openmp options can be set to create a single flexible executable that can be used on a single CPU as well as both shared and distributed memory machines.
Currently, ThermonucleotideBLAST uses only MPI or OpenMP (but not both at the same time) to distribute work across multiple processors.

4) Run "make" to build the tntblast executable.

5) The resulting executable, tntblast, will be found in the src directory. Run "make install" to copy tntblast to the location specified by the "--prefix" option passed to "./configure". You can also manually copy the tntblast executable.

How to run ThermonucleotideBLAST

In all three examples below, <args> refers to the list of commands that control the behavior of ThermonucleotideBLAST.

On a single CPU machine:

./tntblast <args>

On multiple CPUs using OpenMP:

./tntblast <args>

Note that the number of parallel workers used by OpenMP is determined by the environment variable OMP_NUM_THREADS. Try setting this variable to the number of CPU's times the number of cores per CPU on your machine.

On multiple CPU's using MPI:

The command line required to invoke ThermonucleotideBLAST varies depending on the version and configuration of MPI. For most systems, the command line will be similar to:

mpirun -np N [--hostfile my_hosts] ./tntblast <args>

where N is the number of CPUs to run on, my_hosts is an optional list of machine names and <args> are a list of command arguments that are passed to ThermonucleotideBLAST. ThermonucleotideBLAST employs a master/worker architecture that requires N >= 2.

Example 1: Testing viral hemorrhagic fever virus assays from the literature

In this example, we will computationally test the specificity of PCR and TaqMan PCR based hemorrhagic fever virus (HFV) detection assays obtained from the literature.

1) To begin, we will need a database of sequences to screen. Downloading all ssRNA negative-strand viruses from NCBI will allow us to test the specificity of assays that target a number of HFVs (including Ebola, Marburg, Junin and Lassa viruses) as well as their near neighbors. When downloading these sequences, choose the "FASTA" file format (under "display") and "File" (under "Send to") and be prepared for a wait (the resulting file is approximated 90 MB). When the data has finished downloading, rename the resulting file "ssRNA.fna".

2) Using a text editor, copy the following queries into a text file called "HFV_query.txt": 
gibb-marburg    TTCCCCTTTGGAGGCATC    GGAGGATCCAACAGCAAGG    CGATGGGCTTTCAGGACAGGTGT
towner-ebola    GAAAGAGCGGCTGGCCAAA    AACGATCTCCAACCTTGATCTTT    TGACCGAAGCCATCACGACTGCAT
zhai-filo    TATTCTCYCTACAAAAGCATTGGG    GCTTCTGCGAGTGTTTGGACATT   

Assay "gibb-marburg" is from Gibb et. al., Molecular and Cellular Probes. 15, 259-266, 2001
Assay "towner-ebola" is from Towner et. al., J. Virology 78, 4330-4341, 2004
Assay "zhai-filo" is from Zhai et. al., Clin. Microbiol. 45, 224-226, 2007

Note that (1) PCR and TaqMan PCR assays can be mixed in the same query file, (2) query oligos can have degenerate bases (as in zhai-filo).

3) In the same directory that contains the query and target sequence files, run ThermonucleotideBLAST using the following command line:

./tntblast -i HFV_query.txt -d ssRNA.fna -e 40 -E 45 -o HFV.out

These command arguments instruct ThermonucleotideBLAST to search the target sequences (contained in ssRNA.fna) using the assays (contained in query file HFV_query.txt) and return all matches where the primer oligos bind at 40 °C (or higher; -e 40) and the probe sequences bind at 45 °C (or higher; -E 45). Since we haven't specified as assay format, the queries are assumed to contain PCR primers with an optional TaqMan probe. Unless specified with the -l flag, the maximum amplicon length that will be tested is 2000 bases.

4) After running the command, the output will be in the file HFV.out. A truncated version of the output (showing only a single match) is displayed below:
#####################################################################################
name = gibb-marburg
forward primer = 5'-TTCCCCTTTGGAGGCATC-3'
reverse primer = 5'-GGAGGATCCAACAGCAAGG-3'
forward primer tm = 54.9758
reverse primer tm = 56.0109
forward primer hairpin tm = 21.2137
reverse primer hairpin tm = 45.2609
forward primer homodimer tm = 0
reverse primer homodimer tm = 0
heterodimer tm = 0
forward primer dG[-16.8574] = dH[-135.5] - T*dS[-0.382533]
reverse primer dG[-17.8955] = dH[-146.5] - T*dS[-0.414653]
min 3' clamp = 18
forward primer %GC = 55.5556
reverse primer %GC = 57.8947
forward primer heuristics = MULTI_5_GC, NO_POLY_RUNS
reverse primer heuristics = MULTI_5_GC, NO_POLY_RUNS
amplicon range = 6121 .. 6267
amplicon length = 147
probe = 5'-CGATGGGCTTTCAGGACAGGTGT-3'
probe tm = 62.2047
probe hairpin tm = 26.5141
probe homodimer tm = 0
probe dG[-22.9778] = dH[-180.2] - T*dS[-0.506923]
probe %GC = 56.5217
probe range = 6143 .. 6165
probe contained in forward strand (+)
forward align 5' TTCCCCTTTGGAGGCATC 3'
forward align    ||||||||||||||||||
forward align 3' AAGGGGAAACCTCCGTAG 5'
forward align dimer alignment size = 18
reverse align 5' GGAGGATCCAACAGCAAGG 3'
reverse align    |||||||||||||||||||
reverse align 3' CCTCCTAGGTTGTCGTTCC 5'
reverse align dimer alignment size = 19
probe align 5' CGATGGGCTTTCAGGACAGGTGT 3'
probe align    |||||||||||||||||||||||
probe align 3' GCTACCCGAAAGTCCTGTCCACA 5'
probe align dimer alignment size = 23
>gi|13489275|ref|NC_001608.2| Lake Victoria marburgvirus, complete genome
TTCCCCTTTGGAGGCATCCAAGCGATGGGCTTTCAGGACAGGTGTACCTCCCAAGAATGTTGAGTATACAGAAGGGGAGGAAGCCAAAACATGCTACAATATAAGTGTAACGGATCCCTCTGGAAAATCCTTGCTGTTGGATCCTCC


Output description:
  1. All temperatures are in ºC and energy is in Kcal/Mol.
  2. heterodimer tm refers to interaction between the forward and reverse primer.
  3. min 3' clamp is the number of 3' oligo bases that exactly complement the target sequence.
  4. %GC is the percentage of bases in the oligo that are G or C (as opposed to A or T).
  5. The forward and reverse primer heuristics show how each primer satisfies a list of empirical primer design rules;
    1. POLY_3_GC: Avoid runs of 3 or more G's or C's at the 3' prime end.
    2. MULTI_5_GC: The 5 bases at the 5' end should contain no more than 3 G's or C's if no two pyrimidines (T, C) are adjacent, 2 G's or C's otherwise.
    3. NO_POLY_RUNS: Polyprimidine (T, C) and polypurine (A, G) runs should be avoided.
    4. NO_3_T: Avoid 3' terminal T's.
  6. The alignment range is the zero based location of amplicon in the target sequence.
  7. When a '$' character appears in the sequence alignments, it is a "virtual" base that indicates a dangling base contribution to the free energy calculation (enabled by the --dangle5 or --dangle3 command line arguments that were not used in this example).
  8. The sequence shown at the bottom of the output is the predicted full length amplicon (including primer binding sites).
Example 2: Extracting the annotations of targeted genes

In this example we will extract the annotations of the genes targeted by PCR assays. Using the hemorrhagic fever virus assays from example 1 (shown above), we will use ThermonucleotideBLAST to extract all of the matching annotations from the genome of the Lake Victoria marburgvirus.

1) Since FASTA files only contain very limited annotation information, we first need to download annotations for the Lake Victoria marburgvirus from NCBI. Save the file to disk in "Genbank" display format and call it "NC_001608.gbk". This file contains both annotation and the complete genome sequence for the Lake Victoria marburgvirus.

2) In the same directory that contains the query (the same file from example 1; HFV_query.txt) and target sequence (NC_001608.gbk) files, run ThermonucleotideBLAST using the following command line:

./tntblast -i HFV_query.txt -d NC_001608.gbk -e 40 -E 45 -o HFV.annot.out


3) After running the command, the output will be in the file HFV.annot.out. A truncated version of the output (showing only a single match) is displayed below:
name = gibb-marburg
forward primer = 5'-TTCCCCTTTGGAGGCATC-3'
reverse primer = 5'-GGAGGATCCAACAGCAAGG-3'
forward primer tm = 54.9758
reverse primer tm = 56.0109
forward primer hairpin tm = 21.2137
reverse primer hairpin tm = 45.2609
forward primer homodimer tm = 0
reverse primer homodimer tm = 0
heterodimer tm = 0
forward primer dG[-16.8574] = dH[-135.5] - T*dS[-0.382533]
reverse primer dG[-17.8955] = dH[-146.5] - T*dS[-0.414653]
min 3' clamp = 18
forward primer %GC = 55.5556
reverse primer %GC = 57.8947
forward primer heuristics = MULTI_5_GC, NO_POLY_RUNS
reverse primer heuristics = MULTI_5_GC, NO_POLY_RUNS
amplicon range = 6121 .. 6267
amplicon length = 147
probe = 5'-CGATGGGCTTTCAGGACAGGTGT-3'
probe tm = 62.2047
probe hairpin tm = 26.5141
probe homodimer tm = 0
probe dG[-22.9778] = dH[-180.2] - T*dS[-0.506923]
probe %GC = 56.5217
probe range = 6143 .. 6165
probe contained in forward strand (+)
forward align 5' TTCCCCTTTGGAGGCATC 3'
forward align    ||||||||||||||||||
forward align 3' AAGGGGAAACCTCCGTAG 5'
forward align dimer alignment size = 18
reverse align 5' GGAGGATCCAACAGCAAGG 3'
reverse align    |||||||||||||||||||
reverse align 3' CCTCCTAGGTTGTCGTTCC 5'
reverse align dimer alignment size = 19
probe align 5' CGATGGGCTTTCAGGACAGGTGT 3'
probe align    |||||||||||||||||||||||
probe align 3' GCTACCCGAAAGTCCTGTCCACA 5'
probe align dimer alignment size = 23
annotation(gene)[5939..7984]+: gi|13489279|gb|NP_042028.1| GP GP protein
>gi|13489275|ref|NC_001608.2| Lake Victoria marburgvirus, complete genome
TTCCCCTTTGGAGGCATCCAAGCGATGGGCTTTCAGGACAGGTGTACCTCCCAAGAATGTTGAGTATACAGAAGGGGAGGAAGCCAAAACATGCTACAATATAAGTGTAACGGATCCCTCTGGAAAATCCTTGCTGTTGGATCCTCC

Note that this output is almost identical to the output shown above for example 1. The only change is the addition of annotation information (shown in bold face) for all of the genome features that overlap the amplicon produced by the primer pair gibb-marburg. In this case, the amplicon is contained within the GP protein. The location of the GP protein in the genome is given by the zero based gene coordinates ([5939..7984]), the gene is encoded on the positive strand (as indicated by the "+", genes on the negative strand will be indicated by a "-"). The gene identifier (gi|13489279) and accession (gb|NP_042028.1) are also shown.

Command line arguments

The operation of ThermonucleotideBLAST is controlled through command line arguments.

At minimum, ThermonucleotideBLAST requires
  1. A list of query oligos to search with
  2. A database of nucleic acid sequences to search against
  3. An upper or lower limit specified for Tm and/or delta G

Command line flag
Description
Default value
-i <Query oligo file name>

-o <Output file name>
stdout
-d <Database file name> Database of target sequences to search against. This database must be readable by all CPUs. The file format of the database is automatically detected.
-D <Local database file name> Local database of target sequences to search against. This database only needs to be readable by the master CPU (where tntblast is run). The file format of the database is automatically detected.

-l <Maximum amplicon length> The maximum size, in bases, of a PCR amplicon that ThermonucleotideBLAST will identify
2000
-e <minimum primer Tm> The minimum allowed temperature (in °C) for a primer oligo to bind to a target sequence
50
-E <minimum probe Tm> The minimum allowed temperature (in °C) for a probe oligo to bind to a target sequence 50
-x <maximum primer Tm> The maximum allowed temperature (in °C) for a primer oligo to bind to a target sequence 9999
-X <maximum probe Tm> The maximum allowed temperature (in °C) for a probe oligo to bind to a target sequence 9999
-z <minimum primer delta G> The minimum allowed delta G (in Kcal/Mole) for a primer oligo to bind a target sequence
-9999
-Z <minimum probe delta G> The minimum allowed delta G (in Kcal/Mole) for a probe oligo to bind a target sequence -9999
-g <maximum primer delta G> The maximum allowed delta G (in Kcal/Mole) for a primer oligo to bind a target sequence 9999
-G <maximum probe delta G> The maximum allowed delta G (in Kcal/Mole) for a probe oligo to bind a target sequence 9999
-s <salt concentration> The Molar salt concentration, used to compute double stranded DNA melting temperatures
0.05
-t <primer strand concentration> The Molar concentration of primer oligos, used to compute double stranded DNA melting temperatures 9.0e-07
-T <Probe strand concentration> The Molar concentration of probe oligos, used to compute double stranded DNA melting temperatures Defaults to the current primer strand concentration
-y <ratio of forward/reverse strand concentrations> The ratio of forward to reverse strand concentrations for modeling asymmetric PCR. When this value is not equal to one, the reverse strand concentration is set equal to the primer concentration specified above (by -t) and the forward strand concentration is computed by multiplying the reverse primer concentration by ratio (specified by -y)
1
-A <PCR | PROBE | PADLOCK> The assay format can be one of the following: PCR, PROBE or PADLOCK PCR
-W <2-8> The word length for the exact match between query and target sequence required to initiate a sequence alignment (and Tm calculation). The word length can be a single word of 2-8 bases.
7
-m <output file format>
The output file format is specified by a numeric value:
0 = verbose output file
1 = FASTA output file
2 = network output files (*.atr and *.sif)
3 = "inverse target" (targets that don't match any query)
4 = "inverse query" (queries that don't match any target)
0
-a <T|F>
Toggle the display of sequence alignment in the output file
T(true; show alignments)
-M <T|F>
Show target sequence that matches query assay
T
-k <T|F> Enable the lower-case letter masking of primer binding sites in output results
F (false; don't mask)
-K <T|F> Enable the lower-case letter masking of probe binding sites in output results F (false; don't mask)
-r <T|F> Enable the replacement primer binding sites in output results with the actual primer sequence (only relevant when the primer sequence is not an exact complementary match to the target sequence)
F (false; don't replace)
-v <T|F> Turn off verbose output to the terminal (stdout)
T (true; be verbose)
-p <T|F> Ignore all input probe oligos (i.e. PCR primers + Probe --> PCR primer only)
F (false; don't ignore probes)
-n <T|F> Enable the creation of a single output file for each query assay F (false; produce one output file for all queries)
-L <T|F> Append the assay name to the one line sequence description of any matching output
F (false; don't append assays names to deflines)
-S <T|F> Write a summary of all assays to the terminal (i.e. stdout) after searching is complete
F (false; don't produce a summary)
-?
Print the command line arguments to the terminal and exit

--fasta-mmap <T|F>
Allow memory mapping of fasta formatted database (i.e. target) files
T (true; mmap is enabled)
--primer-clamp <number of bases>
Require that 3' end of each primer exactly complement the target for the specified number of bases.
0
--probe-clamp5 <number of bases>
Require that 5' end of each probe exactly complement the target for the specified number of bases. 0
--probe-clamp3 <number of bases> Require that 3' end of each probe exactly complement the target for the specified number of bases. 0
--dangle5 <T|F>
Allow dangling bases on the 5' query side of an alignment (this will have a slight effect on the computed Tm and/or delta G)
F (false; no dangling base)
--dangle3 <T|F> Allow dangling bases on the 3' query side of an alignment (this will have a slight effect on the computed Tm and/or delta G) F (false; no dangling base)
--plex <T|F>
Predict the products when all input queries are in a single reaction vessel (i.e. multiplex PCR)
F (false; each assay is searched separately)
--temperature <temp>
The temperature (in Kelvin) for computing delta G.
310.15 K
--single-primer-pcr <T|F>
Allow amplicons to be produced by a single PCR primer binding in both forward and reverse orientation
T (true; allow amplicons to be produced from a single primer)
--target-strand <plus|minus|both>
The strand(s) that are valid targets for probes
both
--hash-size <max size>
The maximum allowed number of hash elements (when hashing the target sequences)
65536
--max-target-len <max len>
The largest sequence length (in bases) before targets are split
500000
--query-seq <always|never|adaptive>
The algorithm used for query segmentation
adaptive
--dump-query <T|F>
Write the queries to stdout
F (false; don't write the queries to stdout)
--dinkelbach <T|F>
Use the Dinkelbach fractional programming algorithm
F (false; use fixed temperature dynamic programming)
--max-gap <number of gaps>
The maximum number of allowed gaps in an oligo match
999
--max-mismatch <number of mismatches>
The maximum number of allow mismatches in an oligo match
999
--rescale-ct <T|F>
Use of degenerate bases will cause rescaling of strand concentration
T (true)
--best-match
Only return the best match, in Tm, between a given query assay and given target sequence. Useful when searching with assays that contain degenerate bases
Not enabled

File formats

Input (query) files

Query assays are specified in an ASCII text input file. All strings must be separated by white space and blank lines are ignored. The format of this input file is assay specific:

For PCR primers, each line contains the user defined assay name (no spaces), the sequence of the forward primer (5' -> 3') and the sequence of the reverse primer (5' -> 3'):
assay_name  forward_primer_sequence  reverse_primer_sequence

For PCR primers with a hybridization probe, each line contains the user defined assay name (no spaces), the sequence of the forward primer (5' -> 3'), the sequence of the reverse primer (5' -> 3') and the sequence of the hybridization probe (5' -> 3'):
assay_name  forward_primer_sequence  reverse_primer_sequence  hybridization_probe_sequence

For Padlock probes, each line contains the user defined assay name (no spaces), the sequence of the upstream (5') probe (5' -> 3') and the sequence of the downstream (3') probe (5' -> 3') :
assay_name  upstream_probe_sequence downstream_sequence

For Hybridization probes, each line contains the user defined assay name (no spaces) and the sequence probe (5' -> 3') :
assay_name  hybridization_probe_sequence

Database (target) files

Target sequences are read from a database of nucleic acid sequences in one of the following file formats:

Format
Description
NCBI BLAST
Databases formatted (using the formatdb program) for use with the NCBI BLAST program
FASTA
FASTA formatted nucleic acid sequences
NCBI ASN.1
Genome annotation file in either ASCII or binary ASN.1 format
Genbank flat file US (GBK)
Genome annotation file
Genbank flat file Europe (EMBL)
Genome annotation file
GFF3
Genome annotation file

The format of the file that is read by ThermonucleotideBLAST (the argument provided to -d or -D) is automatically detected.

Output (result) files

Currently, ThermonucleotideBLAST writes the search results in one of 3 formats; "standard", FASTA and network.

The standard output file format is an ASCII text file containing assay specific entries for every query-target match.

Note that the amplicon strand is chosen to match the forward primer (i.e. the strand of the displayed amplicon sequence contains the forward primer).

The FASTA output file format is a FASTA file containing assay-specific sequences for every query-target match. For PCR primers, this is the amplicon sequence, for hybridization and Padlock probes, it is the target sequence that binds to the probe sequence.

The network output file format is actually a pair of files in *.sif and *.atr format suitable for display in the network visualization tool Cytoscape. The *.atr network file contains node labels for "parent" (i.e. assay) nodes and "child" (i.e. target) nodes. The *.sif network file indicates the matches between assay and target (i.e. "assay_A binds target_B").

License

ThermonucleotideBLAST is distributed under the OpenSource BSD license shown below:


Copyright (c) 2007, Los Alamos National Security, LLC
All rights reserved.

Copyright 2007. Los Alamos National Security, LLC. This software was produced under U.S. Government contract DE-AC52-06NA25396 for Los Alamos National Laboratory (LANL), which is operated by Los Alamos National Security, LLC for the U.S. Department of Energy. The U.S. Government has rights to use, reproduce, and distribute this software.  NEITHER THE GOVERNMENT NOR LOS ALAMOS NATIONAL SECURITY, LLC MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LIABILITY FOR THE USE OF THIS SOFTWARE.  If software is modified to produce derivative works, such modified software should be clearly marked, so as not to confuse it with the version available from LANL.

Additionally, 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 name of Los Alamos National Security, LLC, Los Alamos National Laboratory, LANL, the U.S. Government, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY LOS ALAMOS NATIONAL SECURITY, LLC 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 LOS ALAMOS NATIONAL SECURITY, LLC 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.




Los Alamos National Lab
Operated by the Los Alamos National Security, LLC
for the National Nuclear Security Administration,
of the US Department of Energy.
Copyright © 2007 LANSLLC | Disclaimer/Privacy