Difference between revisions of "DNA Melting: Simulating DNA Melting - Intermediate Topics"

From Course Wiki
Jump to: navigation, search
Line 1: Line 1:
 +
You should read the [[Lab Manuals:DNA Melting|DNA Melting Lab Manual]] before this document. You may also find it helpful to review [[DNA Melting Thermodynamics]].
 +
 +
==DNA melting lab data analysis==
 +
In the DNA Melting Lab, you will measure the current from a photodiode and the voltage across an RTD. This raw data must be processed in order to produce a DNA melting curve (<math>f</math> versus <math>T</math>) and its derivative. The steps are:
 +
 +
# Filter raw data to remove noise.
 +
# Transform RTD voltage to temperature.
 +
# Transform photodiode current to relative fluorescence.
 +
# If necessary, combine multiple samples with identical temperature readings to ensure a uniquely valued function f(t).
 +
# Differentiate the resulting function.
 +
 +
It will be helpful to have your data analysis scripts working before you come to the lab. This tutorial will demonstrate a way to generate simulated data that can help you develop your scripts.
 +
 
==Write a function to compute f==
 
==Write a function to compute f==
Begin by writing a function that will compute <math>\left . f \right .</math> from the equation derived [[DNA Melting Thermodynamics|in class]]. This function must be in its own file called DnaFraction.m.
+
The first useful piece of code is a function that will compute <math>\left . f \right .</math> from the equation derived [[DNA Melting Thermodynamics|in class]]. This function must be in its own file called DnaFraction.m.  
  
 
<include src="http://web.mit.edu/~20.309/www/Matlab/DnaFraction.m" />
 
<include src="http://web.mit.edu/~20.309/www/Matlab/DnaFraction.m" />
 +
 +
 +
{{Template:Note|The element-by-element divide operator (./) is used instead of the matrix divide operator(/) so that the temperature parameter T can be a vector. If T is a single value, both operators are equivalent. But the / operator will try to do a matrix divide if T is a vector or matrix and give an error since the dimension of the two operands do not match. A '''for'''...'''end''' loop could also be used to call DnaFraction once for each value of <math>T</math>. But '''for''' loops have terrible performance in Matlab and your program will run much faster if you use a vector of <math>T</math> values instead.}}
  
 
<pre style="background:#DDDDFF">
 
<pre style="background:#DDDDFF">

Revision as of 21:03, 10 April 2008

You should read the DNA Melting Lab Manual before this document. You may also find it helpful to review DNA Melting Thermodynamics.

DNA melting lab data analysis

In the DNA Melting Lab, you will measure the current from a photodiode and the voltage across an RTD. This raw data must be processed in order to produce a DNA melting curve ($ f $ versus $ T $) and its derivative. The steps are:

  1. Filter raw data to remove noise.
  2. Transform RTD voltage to temperature.
  3. Transform photodiode current to relative fluorescence.
  4. If necessary, combine multiple samples with identical temperature readings to ensure a uniquely valued function f(t).
  5. Differentiate the resulting function.

It will be helpful to have your data analysis scripts working before you come to the lab. This tutorial will demonstrate a way to generate simulated data that can help you develop your scripts.

Write a function to compute f

The first useful piece of code is a function that will compute $ \left . f \right . $ from the equation derived in class. This function must be in its own file called DnaFraction.m.

<include src="http://web.mit.edu/~20.309/www/Matlab/DnaFraction.m" />



Note Icon.jpg The element-by-element divide operator (./) is used instead of the matrix divide operator(/) so that the temperature parameter T can be a vector. If T is a single value, both operators are equivalent. But the / operator will try to do a matrix divide if T is a vector or matrix and give an error since the dimension of the two operands do not match. A for...end loop could also be used to call DnaFraction once for each value of $ T $. But for loops have terrible performance in Matlab and your program will run much faster if you use a vector of $ T $ values instead.


%Returns the fraction of dsDNA given total DNA concentration, temperature, Delta S, and Delta H
%Usage: f = DnaFraction(Ct, T, DeltaS, DeltaH)
function f = DnaFraction(Ct, T, DeltaS, DeltaH)

%Constants
R=8.3;

%first compute Ct * Keq
CtKeq = Ct * exp(DeltaS / R - DeltaH / (R * T));

%now compute f
f = (1 + CtKeq + sqrt(1 + 2 * CtKeq))/CtKeq;

Test the function

First, create a temperature vector. Then call DnaFraction with some reasonable parameters and plot the result. Units are calorie, mole.

t = [20:90] + 273;
f = DnaFraction(.1E-6, t, 304E3, 786);
plot(t,f)