DNA extraction from tissue protocol - source code

From OpenWetWare
Revision as of 22:43, 19 November 2009 by Vaishnavi Ananth (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
#include "BioCoder.h"

void main()
{
	start_protocol("DNA Extraction from Tissue");
	Fluid extraction_buffer = new_fluid("DNA extraction buffer", "98µl ReagentB + 2µl ProteinaseK, mix fresh");
	Fluid chloro_iaa = new_fluid("24:1 Chloroform:Isoamyl alcohol");
	Fluid pci_mix = new_fluid("PCI mix", "One part tris-saturated phenol to one part 24:1 Chloroform:Isoamyl alcohol, shake thoroughly to make emulsion");
	Fluid etoh100 = new_fluid("100% EtOH");
	Fluid naac = new_fluid("3M sodium acetate pH 5.0");
	Fluid etoh70 = new_fluid("70% EtOH");
	Fluid water = new_fluid("MilliQ water");

	Solid tissue = new_solid("small piece of tissue or embryo");

	Container microfuge_tube1 = new_container(STERILE_MICROFUGE_TUBE);
	Container microfuge_tube2 = new_container(STERILE_MICROFUGE_TUBE);
	Container microfuge_tube3 = new_container(STERILE_MICROFUGE_TUBE);

	//Proteinase K digestion
	first_step("Proteinase K digestion");
	//   1. Mix DNA extraction buffer
	//          * 98 μl ReagentB
	//          * 2 μl ProteinaseK
	//          * Mix fresh. 100 μl is enough for a small pea size chunk of tissue or one embryo 
	//   2. Place small piece of tissue or embryo into a microfuge tube containing 100 μl of extraction buffer
	first_sub_step();
	measure_fluid(extraction_buffer, vol(100, UL), microfuge_tube1);
	comment("100 µl is enough for a small pea size chunk of tissue or one embryo.");

	next_sub_step();
	measure_solid(tissue, microfuge_tube1);

	//   3. Incubate at 50°C overnight 
	next_sub_step();
	incubate(microfuge_tube1, 50, time(12, HRS));

	// Phenol/chloroform/isoamyl (PCI)
	next_step("Phenol/chloroform/isoamyl (PCI)");
	//   1. Prepare PCI mix
	//         1. One part tris-saturated phenol to one part 24:1 Chloroform:Isoamyl alcohol
	//         2. Shake thoroughly to make emulsion 
	//   2. Add one volume of PCI to extracted sample
	first_sub_step();
	measure_prop(microfuge_tube1, pci_mix, 1);

	//   3. Shake tubes for 10 seconds
	next_sub_step();
	vortex(microfuge_tube1, time(10, SECS));

	//   4. Centrifuge at max speed for 5 minutes
	//   5. Remove aqueous phase to a new tube
	//   6. Repeat as needed
	next_sub_step();
	centrifuge_phases_top(microfuge_tube1, speed(SPEED_MAX, RPM), RT, time(5, MINS), microfuge_tube2);
	to_do("Repeat this step as needed.");

	//   7. Add one volume 24:1 chloroform:isoamyl alcohol
	next_sub_step();
	measure_prop(microfuge_tube2, chloro_iaa, 1);

	//   8. Shake tubes for 10 seconds
	next_sub_step();
	vortex(microfuge_tube2, time(10, SECS));

	//   9. Centrifuge at max speed for 5 minutes
	//  10. Remove aqueous phase to a new tube
	//  11. Continue to precipitation 
	next_sub_step();
	centrifuge_phases_top(microfuge_tube2, speed(SPEED_MAX, RPM), RT, time(5, MINS), microfuge_tube3);

	// Ethanol precipitation
	next_step("Ethanol precipitation");
	//   1. Add 2 volumes 100% EtOH
	first_sub_step();
	measure_prop(microfuge_tube3, etoh100, 2);

	//   2. Add 1/10 volume 3M Sodium Acetate pH 5.0
	next_sub_step();
	measure_prop(microfuge_tube3, naac, 0.1);

	//   3. Centrifuge at max speed for 10 minutes
	//   4. Decant ethanol
	next_sub_step();
	centrifuge_pellet(microfuge_tube3, speed(SPEED_MAX, RPM), RT, time(10, MINS));

	//   5. Add 150 μl 70% EtOH
	next_sub_step();
	measure_fluid(etoh70, vol(150, UL), microfuge_tube3);

	//   6. Centrifuge at max speed for 2 minutes
	//   7. Pipette out ethanol
	next_sub_step();
	centrifuge_pellet(microfuge_tube3, speed(SPEED_MAX, RPM), RT, time(2, MINS));

	//   8. Airdry pellet
	next_sub_step();
	dry_pellet(microfuge_tube3, "in air");

	//   9. Resuspend pellet in MilliQ water 
	next_sub_step();
	measure_fluid(water, microfuge_tube3);
	resuspend(microfuge_tube3);

	end_protocol();
}