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
1.5.2