IGEM:Harvard/2006/Container Design 4: Difference between revisions

From OpenWetWare
Jump to navigationJump to search
Line 508: Line 508:
Image:latch_design4_barrel_schematic.gif|Barrel schematic showing where oligos need to be cut and latches added<br>([[Media:latch_design4_barrel_schematic.ai|ai file]])
Image:latch_design4_barrel_schematic.gif|Barrel schematic showing where oligos need to be cut and latches added<br>([[Media:latch_design4_barrel_schematic.ai|ai file]])
Image:latch_design4_lid_schematic.gif|Lid schematic showing where oligos need to be cut and latches added<br>([[Media:latch_design4_lid_schematic.ai|ai file]])
Image:latch_design4_lid_schematic.gif|Lid schematic showing where oligos need to be cut and latches added<br>([[Media:latch_design4_lid_schematic.ai|ai file]])
Iamge:design4_updatedlid-latch_schematic.gif|Updated lid schematic showering latch position and oligo cutting<br>([[Media:Box4_lid1or2_schematiclatch.ai|aifile]]}
Image:design4_updatedlid-latch_schematic.gif|Updated lid schematic showering latch position and oligo cutting<br>([[Media:Box4_lid1or2_schematiclatch.ai|ai file]]}
</gallery>
</gallery>

Revision as of 08:56, 7 July 2006

Design details

based on n = 0.324 nm, d = 3.0 nm

Shape Lid ply Cylinder design Lid design Total scaffold length
honeycomb hexagon single 30 tubes (29.0 nm dia) x (84+12)bp long (30.8 nm) = 2880bp 14 tubes (34.2 nm) x (84+12)bp long (30.8 nm) = 1344bp each 2880+(2*1344) + (3*200)bp linkers = 6168 bp

ASCII Files

Lid 1:

000   002   004   006   008   010   012   ...
   001   003   005   007   009   011   013   

Barrel:

...   ...   000   002   004   ...   
  ...   029   001   003   005   ...

   ...   028   ...   ...   006   ...
...   027   ...   ...   ...   007   

...   026   ...   ...   ...   008   
   025   ...   ...   ...   ...   009

   024   ...   ...   ...   ...   010
...   023   ...   ...   ...   011   

...   022   ...   ...   ...   012   
   ...   021   ...   ...   013   ...

   ...   020   018   016   014   ...
...   ...   019   017   015   ...   

Lid 2:

000   002   004   006   008   010   012   ...
   001   003   005   007   009   011   013   

Sequence Chunks (KV, 6.27.06)

Script for adding aptamers:

#######
# Add aptamers to the ends of the appropriate oligos.
#######

# Constants
apt_seq = 'GGTTGGTGTGGTTGG'
T_linker = 'TTT'
        
print oligo_ra
num_aptamers = int(raw_input('How many aptamers do you want to add? '))
i = 0   
while i < num_aptamers:
        oligo_num = int(raw_input('Which oligo needs an aptamer? '))
        if oligo_num < len(oligo_ra):
                # Add the aptamer to that oligo
                oligo_ra[oligo_num] = oligo_ra[oligo_num] + T_linker + apt_seq
                i = i + 1
        else:
                print 'oligo ' + str(oligo_num) + ' out of range.'

print oligo_ra

Script for splitting up as many oligos as you want. The first part goes in main. The second part goes in honeycomb_pointers_v1.py


#####
# Oligo splitting:
# get new list of oligos given user input specifying which oligo to cut
#####

num_to_split = int(raw_input('How many oligos do you want to split?'))
i = 0
new_OTP_ra = OTP_ra[:]
while i < num_to_split:  

        oligo_num = int(raw_input('Enter the number oligo you wish to split:'))
        print '\n'
        print 'How many tokens should the first new oligo be?'
        num_toks = int(raw_input('Number of toks starting from 5 prime: '))

        new_OTP_ra = split_oligo(new_OTP_ra, oligo_num, num_toks)
        
        print new_OTP_ra
        print len(OTP_ra)
        print len(new_OTP_ra)
        i = i + 1

####
# given an oligo to split, split it and return the new list of oligos
####    
def split_oligo(new_OTP_ra, oligo_num, num_toks):
        
        print new_OTP_ra[oligo_num]

        original_oligo = new_OTP_ra[oligo_num]
        
        oligo_1 = original_oligo[:num_toks]  
        oligo_2 = original_oligo[num_toks:]
        print oligo_1
        print'\n'
        print oligo_2
                
        new_OTP_ra[oligo_num] = oligo_1
        new_OTP_ra.insert(oligo_num + 1, oligo_2)
        return new_OTP_ra    


Script for generating sequence chunks

#!/usr/bin/python

import string
import sys
import fileinput

def nowhite(s):
  return ''.join([c for c in s if c in string.letters])

seq = ''

# read in sequence
for line in fileinput.input("-"):
  seq = seq + nowhite(line)

lid_1 = 96 * 13
linker_1 = 30
box = 29 * 96
linker_2 = 30
lid_2 = 96 * 14
linker_3 = 200
box_2 = 96

#store first segment up to end of lid 1
lid_1_seq = seq[:lid_1]
#reset sequence to start at end of lid 1
seq = seq[lid_1:]
linker_1_seq = seq[:linker_1]
seq = seq[linker_1:]
box_1_seq = seq[:box]
seq = seq[box:]
linker_2_seq = seq[:linker_2]
seq = seq[linker_2:]
lid_2_seq = seq[:lid_2]
seq = seq[lid_2:]
linker_3_seq = seq[:linker_3]
seq = seq[linker_3:]
box_2_seq = seq[:box_2]
seq = seq[box_2:]
extra_scaffold = seq
barrel = box_1_seq + box_2_seq

#print out the length of each segment and its sequence

barrel_file = file('barrel_scaffold.txt', 'w')
lid_1_file = file('lid_1_scaffold.txt', 'w')
lid_2_file = file('lid_2_scaffold.txt', 'w')

print len(lid_1_seq)
print lid_1_seq
lid_1_file.write(lid_1_seq)
print len(linker_1_seq)
print linker_1_seq
print len(barrel)
print barrel
barrel_file.write(barrel)
print len(linker_2_seq)
print linker_2_seq  
print len(lid_2_seq)
print lid_2_seq
lid_2_file.write(lid_2_seq)
print len(linker_3_seq)
print linker_3_seq

Oligo sorting - find an print out those with aptamers


#####   
# oligo sorting
#####

# sort based on whether or not there's an aptamer attached to the end of
# an oligo
        
apt = re.compile('TTTGGTTGGTGTGGTTGG')
oligo_num = 0
for oligo in oligo_ra:   
        m = apt.search(oligo)
        if m:
                print 'Match found: ', oligo + ' : ' + str(oligo_num)
        else: 
                print 'No match' + str(oligo_num)
        oligo_num = oligo_num + 1


Modifications to William's program to print each oligo number next to what tokens it represents

oligo_num = 0
for oligo in OTP_ra:
        for token in oligo:
                print str(oligo_num) + ": ", token
        oligo_num = oligo_num + 1

Modifications to William's program to print a grid of oligo numbers completely filled in

  • add this part to main (AAA or BBB)
####
# generate and print the oligo grid
####

# Initialize the grid with all periods
num_strands = len(TPP_ra)
num_subzones = len(TPP_ra[0])

sub_token_visit_ra = ['.' for subzone_num in range(num_subzones)]
grid_ra = [sub_token_visit_ra[:] for strand_num in range(num_strands)]
        
oligo_num = 0
for oligo in OTP_ra:
        grid_ra = generate_oligo_path(oligo, oligo_num, grid_ra)
        oligo_num = oligo_num + 1
print grid_ra
        
print_all_oligos(grid_ra, num_strands, num_subzones)

  • add this part to honeycomb_pointers_v1.py
# The idea here is to have a function that adds the numbers of one oligo path
# to the appropriate places in the big grid array. Eventually this will be printed
# in main. Also it needs to be initialized in main. Oligo_path is the path of
# one oligo, while grid_ra is the grid that is constantly being updated until 
# it is printed in main. oligo_num is number that will be inputed to the grid_ra.
                        
def generate_oligo_path(oligo_path, oligo_num, grid_ra):
        num_path_tokens = len(oligo_path)
                
# Assign visits
        for path_token_num in range(num_path_tokens):
                token = oligo_path[path_token_num]
                strand = token[0]
                subzone = token[1]
                grid_ra[strand][subzone] = oligo_num
        
        
        return grid_ra

def print_all_oligos(grid_ra, num_strands, num_subzones):
        spacer = '   '
        for strand_num in range(num_strands):
                for subzone_num in range(num_subzones):
                        visitor_string = str(grid_ra[strand_num][subzone_num])   
                        sys.stdout.write(visitor_string)
                        sys.stdout.write(spacer[:4 - len(visitor_string)])
                sys.stdout.write('\n')   

Sequence Chunks (TChan, 7.5.06)

Sequence Chunks (TChan, 6.27.06)

  • Media:Chunk2p7308_TC_62706.txt
    • Chunk of p8256 sequence for container4's barrel (skips 6bp after lid1's chunk, 6bp right before lid2, the 96bp*13helices that is lid2, 6bp after lid2, and appends the final helix).

Oligos (TChan, 6.27.06)

  • Media:lid1_7308_TC_62706.txt
    • Oligos for lid 1 (correct wordcount: 30lines, 30words, 1122chars (includes 30 carriage returns) for (96bp-12ssbp)*13helices)
  • Media:barrel_7308_TC_62706.txt
    • Oligos for barrel (correct wordcount: 74lines, 74words, 2594chars (includes 74 carriage returns) for (96bp-12ssbp)*30helices)
  • Media:lid2_7308_TC_62706.txt
    • Oligos for lid 2 (correct wordcount: 30lines, 30words, 1122chars (includes 30 carriage returns) for (96bp-12ssbp)*13helices)

2D Schematics

Face F-A-B inside view

Face C-D-E Inside view

Face F-A-B outside view

Face C-D-E Outside view

Latches

4-Oligo Latch Sequences


*FIRST ATTACHED-to-BARREL OLIGO: 
5'---3Ts---Ts for spacers---7 rand bp (called '1A')---8 rand bp (called '1B')---3'

*FIRST ZIPPER OLIGO: 
5'---8bp complementing 2A---7 bp reverse complementing 1A--12 rand bp toehold---3'

*SECOND ZIPPER OLIGO: 
5'---8bp reverse complementing 1B---7 bp complementing 2A--12 rand bp toehold---3'

*SECOND ATTACHED-to-BARREL OLIGO: 
3'---8 rand bp (called '2A')---8 rand bp (called '2B')---Ts for spacers---3Ts---5'


*STRAND DISPLACERS FOR ZIPPER OLIGOS:
5'---12 bp pairing w/ toehold---15 bp pairing w/ the rest of the zipper oligo---3'

------

*S10B, top of barrel*

5'TTT CCGGTGC|AAAAGTTT

5'GTATGGTC|GCACCGG TGAGTACCGCTA
5'AAACTTTT|GTCTCTA TCTCTTCAGTCG

    3'CATACCAG|CAGAGAT TTT 


5'TAGCGGTACTCA CCGGTGC GACCATAC
5'CGACTGAAGAGA TAGAGAC AAAAGTTT


---

*S24B, top of barrel*

5'TTT TTT GGATCGG|TACATTGT

5'GTATTCGA|CCGATCC GGACTTTCTAGG
5'ACAATGTA|GTTGCCT GGTTAAGGGTAC

        3'CATAAGCT|CAACGGA TTT TTT


5'CCTAGAAAGTCC GGATCGG TCGAATAC
5'GTACCCTTAACC AGGCAAC TACATTGT

---

*S10B, bottom of barrel*

5' TTT T GGCACTC|CTACAATT

5' GTTGGTCT|GAGTGCC GCACGGCAATAA
5' AATTGTAG|CTACTAC CGAAGGCTATTC

       3'CAACCAGA|GATGATG T TTT


5'TTATTGCCGTGC GGCACTC AGACCAAC
5'GAATAGCCTTCG GTAGTAG CTACAATT

---

*S24B, bottom of barrel*

5'TTT T GACGATA|GGGAAACA

5' TGATCTTC|TATCGTC GTTGTGAGCGAT
5' TGTTTCCC|TCGTAGG TCAGTGCTTGTG

      3'ACTAGAAG|AGCATCC T TTT


5'ATCGCTCACAAC GACGATA GAAGATCA
5'CACAAGCACTGA CCTACGA GGGAAACA

2-Oligo Latch Sequences


* 3Ts---any necessary additional bps---15bp overlap---12bp random toehold
* all given 5' -> 3'
* STRAND DISPLACERS: 5'---12 bp pairing w/ toehold---15 bp pairing w/ rest of oligo, except the T spacers---3'

---

*S10B, top, BARREL
TTT GTAACGAAGTTGCAC CACACAACGCTA

*strand displacer
TAGCGTTGTGTG GTGCAACTTCGTTAC


*S10B, top, LID
TTT GTGCAACTTCGTTAC ACGAGTAATGCG

*strand displacer
CGCATTACTCGT GTAACGAAGTTGCAC

---

*S24B, top, BARREL
TTT TTT GTACGCATGGCAAAT TACCACTCTAGC

*strand displacer
GCTAGAGTGGTA ATTTGCCATGCGTAC



*S24B, top, LID
TTT TTT ATTTGCCATGCGTAC CGGTTAGATAGC

*strand displacer
GCTATCTAACCG GTACGCATGGCAAAT

---

*S10B, bottom, BARREL
TTT T TCGAGTTGACAAAGC TACCGGTTCAAG

*strand displacer
CTTGAACCGGTA GCTTTGTCAACTCGA



*S10B, bottom, LID
TTT T GCTTTGTCAACTCGA ACTGGCCCTTAA

*strand displacer
TTAAGGGCCAGT TCGAGTTGACAAAGC

---

*S24B, bottom, BARREL
TTT T CAGGATACCATCATC TACTAACCGGTG

*strand displacer
CACCGGTTAGTA GATGATGGTATCCTG



*S24B, bottom, LID
TTT T GATGATGGTATCCTG GTGGAGTAGTTG

*strand displacer
CAACTACTCCAC CAGGATACCATCATC

Latch-Including Schematics