1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in

Unitig Consensus in Version 7.0

From wgs-assembler

Jump to: navigation, search

The unitig consensus algorithm in Celera Assembler 7 was greatly modified to resolve several long-standing issues with the quality of the consensus sequences.

A little background on how the algorithm works will help in understanding the flaws. Consensus sequences are generated by iteratively adding fragments to a multi-alignment structure. After all fragments are added, other algorithms process the multi-alignment structure to smooth columns with variation, for example, by merging a column with only A's and gaps with a column with only C's and gaps when no fragment contains both an A and a C.

When fragments are not added to the multi-alignment structure correctly, the following errors can occur.

Stairstep

The first flaw noticed was dubbed "the stairstep bug" because of the pattern in the consensus multi-alignment. This was caused by failing to add the insertion to the partial consensus sequence. The multialignment structure is seeded with 'fragment 1'. Then 'fragment 2' is aligned to the partial consensus sequence. The multialignment structure is updated to show a 'GT' insertion. When we align 'fragment 3', if the 'GT' insertion was not added to the partial consensus sequence, 'fragment 3' will cause the multialignment structure to add another 'GT' insertion. At the end, every fragment with the GT insertion has added a new, independent, copy of that insertion to the multialignment structure.

CCGACAGTTGTAAC-----GTGTGTGTGC-AAGGGGAAATAC (consensus)
llllllllllllllllllllllllllllllllllllllllll (quality)
ccgacagttgtaac-----gtgtgtgtgc-aaggggaaatac (fragment 1)
ccgacagttgtaacGT---gtgtgtgtgc-aaggggaaatac (fragment 2)
ccgacagttgtaac-GT--gtgtgtgtgc-aaggggaaatac (fragment 3)
ccgacagttgtaac--GT-gtgtgtgtgcAaaggggaaatac (fragment)
ccgacagttgtaac---GTgtgtgtgtgc-aaggggaaatac (fragment)
ccgacagttgtaac-----gtgtgtgtgc-aaggggaaatac (fragment)

Unaligned Ends =

When the end of a fragment fails to align, the multialignment structure is updated to show an insertion for the unaligned end. Since we are constructing unitigs based on overlaps, and no overlap would be constructed for such unaligned ends, these are false. From the picture below, it is easy to see that the aligner failed to align the start of some reads.

There were two causes of this particular flaw. In first, a large block was left unaligned. In the second, multiple gaps were added to the fragment alignment which pushed a single base to an incorrect location.

AACGTAATC-----AACTCCATGCGTAAGATTGCG--CGTAAGG---------------CTATAAG-TC (consensus)
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll (quality)
aacgtGatcTAAT---ctccatgGgt--gattgcgGGcgtaGgg---TT-----------tataagCtc (fragment)
aacgtaatc-----aactccatgcgtaagattgc--Gcgtaagg---------------ctataag-tc (fragment)
aacgtaatc-----aactccatgcgtaagattgc--Gcgtaagg---------------ctataag-tc (fragment)
aacgtaatc-----aactccatgcgtaagattgcg--cgtaagg---------------ctataag-tc (fragment)
aacgtaatc-----aactccatgcgtaagattgcg--cgtaagg---------------ctataag-tc (fragment)
aacgtaatc-----aactccatgcgtaagattgcg--cgtaagg---------------ctataag-tc (fragment)
aacgtaatc-----aactccatgcgtaagattgcg--cgtaagg---------------ctataag-tc (fragment)
aacgtaatc-----aactccatgcgtaagattgcg--cgtaagg---------------ctataag-tc (fragment)
aacgtaatc-----aactccatgcgtaagattgcg--cgtaagg---------------ctataag-tc (fragment)
aacgtaatc-----aactccatgcgtaagattgcg--cgtaagg---------------ctataag-tc (fragment)
aacgtaatc-----aactccatgcgtaagattgcg--cgtaagg---------------ctataag-tc (fragment)
        GTAATCaactccatgcgtaagattgcg--cgtaagg---------------ctataag-tc (fragment)
        GTAATCaactccatgcgtaagattgcg--cgtaagg---------------ctataag-tc (fragment)
         TAATCaactccatgcgtaagattgcg--cgtaagg---------------ctataag-tc (fragment)
             Caactccatgcgtaagattgcg--cgtaagg---------------ctataag-tc (fragment)
              aactccatgcgtaagattgcg--cgtaagg---------------ctataag-tc (fragment)
                     tgcgtaagattgcg--cgtaagg---------------ctataag-tc (fragment)
                       cgtaagattgc--Gcgtaagg---------------ctataag-tc (fragment)
                       cgtaagattgc--Gcgtaagg---------------ctataag-tc (fragment)
                            gattgc--Gcgtaagg---------------ctataag-tc (fragment)
                             attgc--Gcgtaagg---------------ctataag-tc (fragment)
                             attgc--Gcgtaagg---------------ctataag-tc (fragment)
                             attgc--Gcgtaagg---------------ctataag-tc (fragment)
                                  gCGcgtaagg---------------ctataag-tc (fragment)
                                   CGcgtaagg---------------ctataag-tc (fragment)
                                           AAGATTGCGCGTAAGGctataag-tc (fragment)
                                                           ctataag-tc (fragment)
<pre>

<pre>
CTCCTTCTGCAATTCCTCGTTAGGCATAGGCTCTCCCAGTACATTGAGTTTGTTCTCTGCTATATAACGATAGAGTTCACGACCGACTACGCGGTTGAT
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ctccttctgcaattcctcgttaggcataggctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccgactacgcggttgat
ctccttctgcaattcctcgttaggcataggctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccgactacgcggttgat
-------------tcctcgttaggcataggctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccgactacgcggttgat
       tgcaattcctcgttaggcGtaggctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccg              
ctccttctgcaattcctcgttaggcataggctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccgactacgcggttgat
          T----------a-g-----gctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccgactacgcggttgat
ctccttctgcaattcctcgttaggcataggctctcccagtacattgagtttAttctctgctatataacgatagagttcacgaccgactacgcggttgat
ctccttctgcaattcctcgttaggcataggctctcccagtacattgagtttgttctctgctata                                   
ctccttctgcaattcctcgttaggcataggctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccgac            
ctccttctAcaattcctcgttaggcataggctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccga             
ctccttctgcaattcctcgttaggcataggctctcccagtaca                              agttcacgaccgactacgcggttgat
ctccttctgcaattcctcgttaggcataggctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccgact           
ctccttctgcaattcctcgttaggcataggctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccgactacgcggttgat
ctccttctgcaattcctcgttaggcataggctctcccagtacattgagtttgttctctgctatataacg                              
ctccttctgcaattcctcgttaggcataggctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccgactacgcggttgat
ctccttctgcaattcctcgttaggcataggctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccgactacgcggttgat
                       g-----gctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccgactacgcggttgat
ctccttctgcaattcctcgttaggcataggctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccgactacgcggttgat
                        cataggctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccgactacgcggttgat
ctccttctgcaattcctcgttaggcataTgctctcccagtacattgagtttgttctctgctatataacgatagagttcacgaccgactacgcggttgat
                                           C----------------tatataacgatagagttcacgaccgactacgcggttgat
                                            C---------------tatataacgatagagttcacgaccgactacgcggttgat
                                            t----------------atataacgatagagttcacgaccgactacgcggttgat
                                                tttgttctctgctatataacgatagagttcacgaccgactacgcggttgat
                                                 t---------------aacgatagagttcacgaccgactacgcggttgat
                                                       A----------------gagttcacgaccgactacgcggttgat
                                                         tgctatataacgatagagttcacgaccgactacgcggttgat
                                                             atataacgatagagttcacgaccgactacgcggttgat
                                                               ataacgatagagttcacgaccgactacgcggttgat
                                                                      C----------------tacgcggttgat
                                                                                    gactacgcggttgat

Lost in the Noise

The final error exhibited itself only in regions of extreme depth, usually at least 250x. In this, the alignment routines worked perfectly, but the mathematics for computing the final quality value for a column suffered from underflow - the probability that the consensus base call was a specific base became so small that is underflowed to become exactly zero. When this occurred for all possible bases, the final consensus base was a gap, even though the reads had plenty of evidence. This only occurred in deep coverage, when a column had more than one strong choice for the final base.

CACTGCG--TTCGCTGC--GTCGTTAT
lllllll0lllllllll0lllllllll
cactgcgA-ttcgct            
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctg           
cactgcgG-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
c                          
cactgcgA-ttcgctgcT-gtcg    
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcg                    
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgt   
cactgcgA-ttcgctgcT-gtcgtt  
                cT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
             ctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-g       
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
                       ttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
         ttcgctgcT-gtcgttat
         ttcgctgcT-gtcgttat
     cgA-ttcgctgcT-gtcgttat
           cgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactAcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
           cgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
c                          
cactgcgG-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
c                          
    gcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
c                          
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
                   gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgG-ttcgctg           
cactgcgA-ttcgctg           
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gt      
cactgcgA-ttcgctg           
cactgcgA-ttcgctgcT-gtcgtta 
              tgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcg    
cactgcgA-ttcgctgcT-gtcg    
cactgcgA-ttcgctg           
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgt   
cactgcg                    
                cT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
                cA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgAgG-ttcgctgcA-gtcgttat
  ctgcgG-ttcgctgcA-gtcgttaN
cactgcgG-ttcgctgcA-gtcgttaA
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcTAgtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gt      
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
                 G-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
                 G-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgtCat
   tgcgA-ttcgctgcT-gtcgttat
cactgcgA-tt                
cactgcgG-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
                 T-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgAtat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cacCgcgG-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
   tgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
     cgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgt   
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgtt  
cactgcgG-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcC-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcg              
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcg              
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgGGttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcg              
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcAttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgct            
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcA-gtcAttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgAAttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcT-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
cactgcgA-ttcgctgcT-gtcgttat
cactgcgG-ttcgctgcA-gtcgttat
Personal tools
Navigation
documentation