TChan/Notebook/2007-2-8: Difference between revisions

From OpenWetWare
Jump to navigationJump to search
No edit summary
 
Line 44: Line 44:
for a in range(len(contiguous_Hs)-1):
for a in range(len(contiguous_Hs)-1):
     num_of_Hs = ('H'*a) + 'H'
     num_of_Hs = ('H'*a) + 'H'
     print contiguous_Hs[len(num_of_Hs)], num_of_Hs
     print '%12s %d' % (num_of_Hs, contiguous_Hs[len(num_of_Hs)])


print '\n'
print '\n'
Line 51: Line 51:
for b in range(len(contiguous_Ts)-1):
for b in range(len(contiguous_Ts)-1):
     num_of_Ts = ('T'*b) + 'T'
     num_of_Ts = ('T'*b) + 'T'
     print  contiguous_Ts[len(num_of_Ts)], num_of_Ts
     print  '%12s %d' % (num_of_Ts, contiguous_Ts[len(num_of_Ts)])
                                   
</pre>
</pre>


<pre>
<pre>
Contiguous Hs:
Contiguous Hs:
22330 H
          H 22780
9921 HH
          HH 10285
4340 HHH
        HHH 4629
1871 HHHH
        HHHH 2047
802 HHHHH
      HHHHH 839
332 HHHHHH
      HHHHHH 343
124 HHHHHHH
    HHHHHHH 133
46 HHHHHHHH
    HHHHHHHH 45
13 HHHHHHHHH
  HHHHHHHHH 11




Contiguous Ts:
Contiguous Ts:
22699 T
          T 22314
10156 TT
          TT 9909
4412 TTT
        TTT 4369
1910 TTTT
        TTTT 1873
778 TTTTT
      TTTTT 771
312 TTTTTT
      TTTTTT 303
117 TTTTTTT
    TTTTTTT 110
41 TTTTTTTT
    TTTTTTTT 38
12 TTTTTTTTT
  TTTTTTTTT 5
</pre>
</pre>

Latest revision as of 01:53, 8 February 2007

BP 101: Script 1

Assignment:

  • Write a python script that generates 10,000 strings of 10 random coinflips (H or T) and outputs the tally of continguous (overlapping) stretches of 2, 3, 4, 5, 6, 7, 8, 9, and 10 H's or T's in that set of 10,000 10-mers.
  • Post your code to your personal calendar entry for Feb 8, along with the output when it is run.
#!/usr/bin/python

import sys
import random

head_tail_set = ['H', 'T']

contiguous_Hs = [0,0,0,0,0,0,0,0,0,0]
contiguous_Ts = [0,0,0,0,0,0,0,0,0,0]

max_repeat = 10


for i in range(10000):
    flip_unit = ''
    for j in range(10):
        H_or_T = random.choice(head_tail_set)
        flip_unit = flip_unit + H_or_T
    for k in range(max_repeat):
        substr_H = ''.join(['H' for n in range(k+1)])
        substr_T = ''.join(['T' for p in range(k+1)])
        count_H = 0
        count_T = 0
        pos_H = flip_unit.find(substr_H,0)
        pos_T = flip_unit.find(substr_T,0)
        while not pos_H == -1:
            count_H = count_H + 1
            pos_H = flip_unit.find(substr_H,pos_H+1)
        while not pos_T == -1:
            count_T = count_T + 1
            pos_T = flip_unit.find(substr_T,pos_T+1)
        contiguous_Hs[(len(substr_H)-1)] = contiguous_Hs[(len(substr_H)-1)] + count_H
        contiguous_Ts[(len(substr_T)-1)] = contiguous_Ts[(len(substr_T)-1)] + count_T

print 'Contiguous Hs:'
for a in range(len(contiguous_Hs)-1):
    num_of_Hs = ('H'*a) + 'H'
    print '%12s %d' % (num_of_Hs, contiguous_Hs[len(num_of_Hs)])

print '\n'
                                    
print 'Contiguous Ts:'
for b in range(len(contiguous_Ts)-1):
    num_of_Ts = ('T'*b) + 'T'
    print  '%12s %d' % (num_of_Ts, contiguous_Ts[len(num_of_Ts)])
                                    


Contiguous Hs:
           H 22780
          HH 10285
         HHH 4629
        HHHH 2047
       HHHHH 839
      HHHHHH 343
     HHHHHHH 133
    HHHHHHHH 45
   HHHHHHHHH 11


Contiguous Ts:
           T 22314
          TT 9909
         TTT 4369
        TTTT 1873
       TTTTT 771
      TTTTTT 303
     TTTTTTT 110
    TTTTTTTT 38
   TTTTTTTTT 5