Kun:LabNotes/HiResChrPaint
Jump to navigation
Jump to search
Project threads
Overview
Barcode design
- Each barcode has N number of digits, each digit can have M colors. We start with N=7 and M=4.
- To better resolve the barcodes, we require that two adjacent digits have different color. Therefore, the total number of possible barcodes is M*(M-1)^(N-1), which is 8748 when N=7 and M=4.
- The size of a digit depends on how well we can resolve a feature optically. Based on existing publications, this could be anywhere between 10-400kb.
- There could be a spacer between digits, but not necessary as long as two adjacent digits have different colors.
- We do need a spacer between two adjacent barcodes in order to know where the first digit is. As a start, the spacer can be twice as large as a digit.
- Here is an estimation of number of barcodes and probes needed for the entire human genome.
Digit Size | # probes/digit | Digits/barcode | # barcodes | Barcode size | Total region covered | # probes needed for human genome |
50,000 | 400 | 5 | 324 | 350,000 | 113,400,000 | 648,000 |
6 | 972 | 400,000 | 388,800,000 | 2,332,800 | ||
7 | 2916 | 450,000 | 1,312,200,000 | 8,164,800 | ||
8 | 8748 | 500,000 | 4,374,000,000 | 18,560,000 | ||
100,000 | 400 | 5 | 324 | 700,000 | 226,800,000 | 648,000 |
6 | 972 | 800,000 | 777,600,000 | 2,332,800 | ||
7 | 2916 | 900,000 | 2,624,400,000 | 8,164,800 | ||
8 | 8748 | 1,000,000 | 8,748,000,000 | 9,280,000 | ||
200,000 | 400 | 5 | 324 | 1,400,000 | 453,600,000 | 648,000 |
6 | 972 | 1,600,000 | 1,555,200,000 | 2,332,800 | ||
7 | 2916 | 1,800,000 | 5,248,800,000 | 4,511,111 | ||
8 | 8748 | 2,000,000 | 17,496,000,000 | 4,640,000 | ||
- As long as we can resolve individual barcodes, and two adjacent digits have different color, the mapping resolution equals to the size of a digit, not the size of a barcode.
- We can also organize the distribution of the barcodes along the entire genome, such that there is a high-level pattern. For example, all barcodes in the same chromosome or chromosome bands can share the same first three digits, similar to how zip codes are designed.
Probe design
- Criteria for a good probe:
- Fixed probe length (easier for probe production), 70nt for now;
- Relatively homogeneous Tm: calculate the Tm for a reasonably large pool of 70-mers, find the mean and STDEV, then set the range: 76-86C for now;
- Unique across the genome: align each oligo to the genome with BLAT, the second hits (if exist) should have low homology;
- No homopolymers: avoid oligos that have seven bases of the same in a row for now. The threshold of seven is somewhat arbitrary.
- Low tendency to form hairpins or other secondary structures: calculate the folding energy using UNAFold, use a lower bound of -7 for now.
- Update [2/22/2012]
- It turns out that one limiting factor is that few good probes can be found for some genomic regions. When the probe length is reduced to 60nt, more good probes were identified. So we will switch to 60-mer probes, and the Tm is reduced to 73-83C.
- My first attempt in getting enough probes for a list of genomic regions wasn't quite successful, because there were just not enough probes for many regions. Therefore, I decided to change the probe design strategy. I wrote a script findAllProbesInChr.pl to identify all good probes that can densely cover every chromosome first. From the list of good probes, I'll then do partitioning and trimming to assign probes to digits and barcodes.
Step 1: Find all good probes that densely cover the genome.
- Perl Script: findAllProbesInChr.pl. This is the most time consuming step. It can take days on large chromosomes. We do it one chromosome at a time. The probe sequences can be used for a variety of barcoding schemes, so we only need to run the program for all chromosome once.
./findAllProbesInChr.pl /home/kunzhang/HsGenome/hg19.masked/chr15.fa.masked > chr15_probe_search.log &
Step 2: Group the probes into digits based on the digit size, spacing, and probe density.
- Perl Script: probes2digits.pl. In the case that there are more than one possible way to group the oligos, all possibilities are evaluated exhaustively and the best one is chosen.
./probes2digits.pl 200000 100000 100 < chr15_probe_seq.txt > chr15_probe_grouped_by_digits_200k_100k_100.txt &
Step 3: Group the digits into barcodes.
- Perl Script: digits2barcodes.pl. Similar to the previous step, all possible combination of barcodes are evaluated to find the best one.
./digits2barcodes.pl 7 400000 < chr15_probe_grouped_by_digits_200k_20k_100.txt > chr15_probe_grouped_by_7_digits_barcodes_sp400k.txt
Step 4: Create a set of barcodes and allocate them to the genome.
- Perl Script: allocateBarcodeSpace.pl
./allocateBarcodeSpace.pl 7 100000 200000 > HsGenomeBarcodeAllocation.txt
Step 5: Assign the allocated barcodes to digits and probes.
- Perl Script: assignBarcodeColor.pl
./assignBarcodeColor.pl HsGenomeBarcodeAllocation.txt chr15_probe_grouped_by_7_digits_barcodes_sp400k.txt chr15_7_digits_barcodes_sp400k
Step 6: Add adaptors to the probes, group them based on fluorophores.
- Perl Script: probes2oligoPools.pl
./probes2oligoPools.pl < chr15_7_digits_barcodes_sp400k_probe_seq_color.txt > chr15_oligoPools.txt
A master script to link everything together.
- chrPaintingProbeDesignMaster.pl. To complete all steps within a reasonable time frame, Step 1 should be run on different chromosomes in parallel.
Probe synthesis and labeling
Hybridization and imaging
Image analysis
Daily Notes
2012 <calendar> name=Kun:LabNotes/HiResChrPaint format=%name/%year-%month-%day date=2012/02/01 view=oneyear </calendar>