inc/oligoTm.h

Go to the documentation of this file.
00001 /* oligoTm - calculate melting temperature of relatively short DNA sequences.
00002  * This is based on the nearest-neighbor thermodynamics of bases from Breslauer,
00003  * Frank, Bloecker, and Markey, Proc. Natl. Acad. Sci. USA, vol 83, page 3748,
00004  * and uses work from see Rychlik, Spencer, Roads, Nucleic Acids Research, vol 18, 
00005  * no 21.  This code was imported from the oligotm module of Whitehead Institute's
00006  * primer3 program, and adapted into UCSC conventions by Jim Kent.  Any redistribution
00007  * of this code should contain the following copyright notice from Whitehead:
00008  *
00009  * Copyright (c) 1996,1997,1998,1999,2000,2001,2004
00010  *         Whitehead Institute for Biomedical Research. All rights reserved.
00011  * 
00012  * Redistribution and use in source and binary forms, with or without
00013  * modification, are permitted provided that the following conditions are met:
00014  * 
00015  * 1.      Redistributions must reproduce the above copyright notice, this
00016  * list of conditions and the following disclaimer in the  documentation
00017  * and/or other materials provided with the distribution.  Redistributions of
00018  * source code must also reproduce this information in the source code itself.
00019  * 
00020  * 2.      If the program is modified, redistributions must include a notice
00021  * (in the same places as above) indicating that the redistributed program is
00022  * not identical to the version distributed by Whitehead Institute.
00023  * 
00024  * 3.      All advertising materials mentioning features or use of this
00025  * software  must display the following acknowledgment:
00026  *         This product includes software developed by the
00027  *         Whitehead Institute for Biomedical Research.
00028  * 
00029  * 4.      The name of the Whitehead Institute may not be used to endorse or
00030  * promote products derived from this software without specific prior written
00031  * permission.
00032  * 
00033  * We also request that use of this software be cited in publications as 
00034  * 
00035  *   Rozen, S., Skaletsky, H.  \"Primer3 on the WWW for general users
00036  *   and for biologist programmers.\"  In S. Krawetz and S. Misener, eds.
00037  *   Bioinformatics Methods and Protocols in the series Methods in 
00038  *   Molecular Biology.  Humana Press, Totowa, NJ, 2000, pages 365-386.
00039  *   Code available at
00040  *   http://fokker.wi.mit.edu/primer3/.
00041  * 
00042  * THIS SOFTWARE IS PROVIDED BY THE WHITEHEAD INSTITUTE ``AS IS'' AND  ANY
00043  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE  IMPLIED
00044  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE  ARE
00045  * DISCLAIMED. IN NO EVENT SHALL THE WHITEHEAD INSTITUTE BE LIABLE  FOR ANY
00046  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL  DAMAGES
00047  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS  OR
00048  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)  HOWEVER
00049  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00050  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
00051  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00052  * SUCH DAMAGE. */
00053 
00054 #ifndef OLIGOTM_H
00055 #define OLIGOTM_H
00056 
00057 double oligoTm(char *dna, double DNA_nM, double K_mM);
00058 /* Calculate melting point of short DNA sequence given DNA concentration in 
00059  * nanomoles, and salt concentration in millimoles.  This is calculated using eqn
00060  * (ii) in Rychlik, Spencer, Roads, Nucleic Acids Research, vol 18, no 21, page
00061  * 6410, with tables of nearest-neighbor thermodynamics for DNA bases as
00062  * provided in Breslauer, Frank, Bloecker, and Markey,
00063  * Proc. Natl. Acad. Sci. USA, vol 83, page 3748. */
00064 
00065 double oligoDg(char *dna);
00066 /* Calculate dg (change in Gibb's free energy) from melting oligo
00067  * the nearest neighbor model. Seq should be relatively short, given 
00068  * the characteristics of the nearest neighbor model (36 bases or less
00069  * is best). */
00070 
00071 double longSeqTm(char *s, int start, int len, double salt_conc);
00072 /* Calculate the melting temperature of substr(seq, start, length) using the
00073  * formula from Bolton and McCarthy, PNAS 84:1390 (1962) as presented in
00074  * Sambrook, Fritsch and Maniatis, Molecular Cloning, p 11.46 (1989, CSHL
00075  * Press).
00076  *
00077  * Tm = 81.5 + 16.6(log10([Na+])) + .41*(%GC) - 600/length
00078  *
00079  * Where [Na+] is the molar sodium concentration, (%GC) is the percent of Gs
00080  * and Cs in the sequence, and length is the length of the sequence.
00081  *
00082  * A similar formula is used by the prime primer selection program in GCG
00083  * (http://www.gcg.com), which instead uses 675.0 / length in the last term
00084  * (after F. Baldino, Jr, M.-F. Chesselet, and M.E.  Lewis, Methods in
00085  * Enzymology 168:766 (1989) eqn (1) on page 766 without the mismatch and
00086  * formamide terms).  The formulas here and in Baldino et al. assume Na+ rather
00087  * than K+.  According to J.G. Wetmur, Critical Reviews in BioChem. and
00088  * Mol. Bio. 26:227 (1991) 50 mM K+ should be equivalent in these formulae to .2
00089  * M Na+.
00090  *
00091  * This function takes salt_conc to be the millimolar (mM) concentration,
00092  * since mM is the usual units in PCR applications.  */
00093 
00094 double seqTm(char *seq, double dna_conc, double salt_conc);
00095 /* Figure out melting temperature of sequence of any length given
00096  * dna and salt concentration. */
00097 #endif /* OLIGOTM_H */
00098 

Generated on Tue Dec 25 18:39:29 2007 for blat by  doxygen 1.5.2