In [1]:
%matplotlib inline

In [132]:
#%%writefile utils.py
import pandas as pd
import numpy as np
from ggplot import *

def compute_prob_vector(ps_file, prob_paired=True):
    '''
    Given a text file derived from the RNAfold output of the form
    
    i    j    sqrt(prob)   ubox
    
    computes a vector (dict) of probabilities for every nucleotide
    to be in paired (or unpaired) state.
    '''
    prob_vector = {}
    with open(ps_file) as fi:
        for line in fi.readlines():
            line = line.strip()
            posi, posj, sqrt_prob, box = line.split()
            curr_i = prob_vector.get(int(posi), 0)
            curr_j = prob_vector.get(int(posj), 0)
            prob_vector.update({
                int(posi)-1: curr_i + float(sqrt_prob)**2,
                int(posj)-1: curr_j + float(sqrt_prob)**2,
            })
    if prob_paired:
        return prob_vector
    else:
        return dict([(pos, 1-p) for pos,p in prob_vector.items()])
    
def compute_prob_vector_max(ps_file, prob_paired=True):
    '''
    Given a text file derived from the RNAfold output of the form
    
    i    j    sqrt(prob)   ubox
    
    computes a vector (dict) of probabilities for every nucleotide
    to be in paired (or unpaired) state.
    '''
    prob_vector = {}
    with open(ps_file) as fi:
        for line in fi.readlines():
            line = line.strip()
            posi, posj, sqrt_prob, box = line.split()
            curr_i = prob_vector.get(int(posi), 0)
            curr_j = prob_vector.get(int(posj), 0)
            curr_prob = float(sqrt_prob)**2
            indi = int(posi)
            indj = int(posj)
            if indi in prob_vector:
                if curr_prob > prob_vector[indi]:
                    prob_vector[indi] = curr_prob
            else:
                prob_vector[indi] = curr_prob
            if indj in prob_vector:
                if curr_prob > prob_vector[indj]:
                    prob_vector[indj] = curr_prob
            else:
                prob_vector[indj] = curr_prob
                
    if prob_paired:
        return prob_vector
    else:
        return dict([(pos, 1-p) for pos,p in prob_vector.items()])
    

def trange_df(base_name, prob_func=compute_prob_vector, 
              trange=range(35,43), abs_value=True):
    '''
    Same as `compute_diff_df` but builds dataframe in a long format
    suitable for ggplot faceting.
    '''
    T0 = trange[0]
    prob0 = prob_func('%s_%d.txt' % (base_name, T0))
    chunks = []
    for temp in trange[1:]:
        df = pd.DataFrame()
        prob_vector = prob_func('%s_%d.txt' % (base_name,temp))
        npos = max(set(prob0.keys()) | set(prob_vector.keys())) + 1
        d0 = np.zeros(npos)
        dt = np.zeros(npos)
        d0[list(prob0.keys())] = list(prob0.values())
        dt[list(prob_vector.keys())] = list(prob_vector.values())
        df['pos'] = range(npos)
        if abs_value:
            df['Diff'] = abs(d0 - dt)
        else:
            df['Diff'] = dt - d0
        df['Temp'] = temp
        chunks.append(df)
    return pd.concat(chunks)

def sig_positions(df, num_sigma=6):
    mean = df['Diff'].mean()
    sigma = df['Diff'].std()
    threshold = num_sigma * sigma
    return abs(df['Diff'] - mean) > threshold


def compute_diff_df(base_name, trange=range(35,43), abs_value=True):
    '''
    Given the base_name for tab-delimited files containing base
    pairing probabilities calculated by RNAfold computes a
    dataframe containing probability difference vectors for each
    temperature value in the range relative to the lowest T in the
    range.
    '''
    T0 = trange[0]
    prob = compute_prob_vector('%s_%d.txt' % (base_name, T0))
    df = pd.DataFrame(prob.items(), columns=['Position', 'Prob_%d' % T0])
    for temp in trange[1:]:
        prob = compute_prob_vector('%s_%d.txt' % (base_name, temp))
        prob_key = 'Prob_%d' % temp
        df[prob_key] = pd.Series(prob.values())
        if abs_value:
            df['Diff_%d' % temp] = abs(df[prob_key] - df['Prob_%d' % T0])
        else:
            df['Diff_%d' % temp] = df[prob_key] - df['Prob_%d' % T0]
    return df

def get_sig_positions(df, trange=range(37,43), num_sigma=6):
    '''
    Given the dataframe of probability differences for a T range
    and the level of significannce in sigmas returns positions in the
    dataframe where the probability difference at the highest T
    exceeds the sigma threshold.
    '''
    colnames = ['Diff_%d' % temp for temp in trange[1:]]
    diff_cols = [df[colname] for colname in colnames]
    all_diff = pd.concat(diff_cols)
    mean = all_diff.mean()
    sigma = all_diff.std()
    threshold = num_sigma * sigma
    print('Mean:\t%f\nSigma:\t%f\nThreshold:\t%f\n' % (mean, sigma, threshold))
    return df[abs(df['Diff_%d' % trange[-1]] - mean) > threshold].sort(['Position'])

def plot_RSMD(df, trange=range(37,43)):
   df_sum = pd.DataFrame()
   df_sum['Temp'] = trange[1:]
   df_sum['RMSD'] = [np.sqrt(((df[df['Temp'] == T]['Diff'])**2).sum()) for T in trange[1:]]
   p = ggplot(df_sum, aes(x='Temp', y='RMSD')) + geom_line()
   return p


Writing utils.py

In [131]:
ls -lah


total 4.7M
drwxrwxr-x 4 ilya ilya 4.0K Jul 16 16:56 ./
drwxrwxr-x 5 ilya ilya 4.0K Jul 16 11:19 ../
-rw-rw-r-- 1 ilya ilya  19K Jul 16 11:19 BASH basics.ipynb
-rw-rw-r-- 1 ilya ilya 5.0K Jul 16 11:19 Environments.ipynb
-rw-rw-r-- 1 ilya ilya 9.0K Jul 16 11:19 Formats.ipynb
-rw-rw-r-- 1 ilya ilya  55K Jul 16 11:19 grad.ipynb
-rw-rw-r-- 1 ilya ilya 1.9K Jul 16 11:19 Intro.ipynb
drwxrwxr-x 2 ilya ilya 4.0K Jul 16 15:19 .ipynb_checkpoints/
-rw-rw-r-- 1 ilya ilya  47K Jul 16 11:19 kallisto.ipynb
drwxrwxr-x 2 ilya ilya 4.0K Jul 16 14:17 nbdime_test/
-rw-rw-r-- 1 ilya ilya 7.1K Jul 16 11:19 ocean.ipynb
-rw-rw-r-- 1 ilya ilya  59K Jul 16 11:19 Python.ipynb
-rw-rw-r-- 1 ilya ilya 2.1M Jul 16 11:19 rnafold.ipynb
-rw-rw-r-- 1 ilya ilya 279K Jul 16 16:56 ROSE-analysis.ipynb
-rw-rw-r-- 1 ilya ilya  20K Jul 16 12:49 ROSE.ipynb
-rw-rw-r-- 1 ilya ilya  56K Jul 16 11:19 sleuth.ipynb
-rw-rw-r-- 1 ilya ilya 7.5K Jul 16 11:19 Stats.ipynb
-rw-rw-r-- 1 ilya ilya 1.8K Jul 16 11:19 Tools.ipynb
-rw-rw-r-- 1 ilya ilya 1.7M Jul 16 11:19 utr_bcm.ipynb
-rw-rw-r-- 1 ilya ilya 403K Jul 16 11:19 UTR_heatmap.ipynb
-rw-rw-r-- 1 ilya ilya 1.1K Jul 16 11:19 Visualization.ipynb

In [112]:
df = trange_df('../data/ROSE1', trange=range(25,37))
df


Out[112]:
pos Diff Temp
0 0 0.000010 26
1 1 0.000008 26
2 2 0.000005 26
3 3 0.000023 26
4 4 0.000002 26
5 5 0.000028 26
6 6 0.000000 26
7 7 0.000000 26
8 8 0.000000 26
9 9 0.000000 26
10 10 0.000586 26
11 11 0.000558 26
12 12 0.000556 26
13 13 0.000534 26
14 14 0.000505 26
15 15 0.000046 26
16 16 0.000014 26
17 17 0.000013 26
18 18 0.000270 26
19 19 0.000288 26
20 20 0.000002 26
21 21 0.000074 26
22 22 0.000008 26
23 23 0.000025 26
24 24 0.000005 26
25 25 0.000005 26
26 26 0.000014 26
27 27 0.000006 26
28 28 0.000006 26
29 29 0.000006 26
... ... ... ...
87 87 0.001913 36
88 88 0.923514 36
89 89 0.842443 36
90 90 0.000402 36
91 91 0.000163 36
92 92 0.000185 36
93 93 0.026345 36
94 94 0.006814 36
95 95 0.002289 36
96 96 0.003556 36
97 97 0.007331 36
98 98 0.563151 36
99 99 0.097356 36
100 100 0.009975 36
101 101 0.016912 36
102 102 0.023816 36
103 103 0.000520 36
104 104 0.000181 36
105 105 0.227608 36
106 106 0.227659 36
107 107 2.832688 36
108 108 2.832662 36
109 109 2.834077 36
110 110 0.011973 36
111 111 0.012209 36
112 112 0.001694 36
113 113 0.000977 36
114 114 0.003033 36
115 115 0.001619 36
116 116 0.000229 36

1287 rows × 3 columns


In [113]:
compute_prob_vector('../data/ROSE1_25.txt')


Out[113]:
{0: 7.293650204236902e-05,
 1: 5.0568624990244e-05,
 2: 0.9999576804477457,
 3: 0.9995141630237306,
 4: 0.9999912980189313,
 5: 0.9996765861533583,
 10: 5.983055353786881,
 11: 4.983378767633523,
 12: 3.9833874696145917,
 13: 2.983873306590861,
 14: 0.984090824872533,
 15: 0.0020798875342546565,
 16: 7.237818580636902e-05,
 17: 6.7494029475625e-05,
 18: 0.047785248678247134,
 19: 0.9960192435103237,
 20: 1.6493970870729002e-05,
 21: 0.9989927683104574,
 22: 0.99993502608774,
 23: 0.9997558053908696,
 24: 6.291659227200399e-05,
 25: 7.276281073254398e-05,
 26: 8.283158660659601e-05,
 27: 8.380162958832901e-05,
 28: 8.391926727651602e-05,
 29: 8.389999417363598e-05,
 30: 3.9153302707599996e-05,
 32: 3.995928260085956,
 33: 3.9957898004220054,
 34: 3.9957485469890996,
 35: 3.995705051646407,
 36: 2.995813078904309,
 37: 1.9968852523860037,
 38: 1.9967990393597042,
 39: 0.002821775132529754,
 40: 0.002805281161659025,
 41: 0.7431697907446666,
 42: 0.09825090353030147,
 43: 0.09816677241079158,
 44: 0.09808784731690694,
 45: 0.09824524111557974,
 46: 0.0979499528594066,
 47: 0.09786851582932996,
 48: 0.14068692860520077,
 49: 0.0990914367492694,
 50: 0.011146040693268237,
 51: 0.004291868638810109,
 52: 0.0006832526963487619,
 53: 0.9716337911391087,
 54: 0.9864283803584382,
 55: 0.9999779461215947,
 56: 0.9997974642562206,
 57: 0.9999908800207935,
 58: 0.9999786021144687,
 59: 0.9999769321330332,
 60: 0.999082148709459,
 61: 0.001347909425220996,
 65: 0.001347909425220996,
 67: 8.124446822175562,
 68: 7.125364673466104,
 69: 6.12538774133307,
 70: 5.125409139218601,
 71: 4.125418259197808,
 72: 3.1256207949415873,
 73: 2.1256428488199925,
 74: 1.1392144684615544,
 75: 1.082483315845699,
 76: 0.9576471448090583,
 77: 0.002136160574986266,
 78: 0.002002137475258346,
 79: 0.00010122175483711401,
 80: 8.2937045469818e-05,
 81: 0.03748870755202088,
 82: 0.030573480472356966,
 83: 0.998655973905273,
 84: 1.8392124268815998e-05,
 85: 1.8443769533641002e-05,
 86: 1.7521859271744e-05,
 87: 0.0019716275634781687,
 88: 0.924376140675894,
 89: 0.8431191625814802,
 90: 6.327961006574802e-05,
 91: 2.7278997784899997e-05,
 92: 1.0353509629968999e-05,
 93: 0.006929884695073041,
 94: 0.006951754978524226,
 95: 0.006113560751788229,
 96: 0.000251604082199174,
 97: 0.005545114265268724,
 98: 4.713622430861858,
 99: 0.026008626393035198,
 100: 0.020146669723446142,
 101: 0.013194914744921914,
 102: 0.006265030049848875,
 103: 0.00013242124439824898,
 105: 3.8147323363556507,
 106: 3.8147389807183694,
 107: 3.8148948661094035,
 108: 3.814873195727413,
 109: 3.8146394116274127,
 110: 0.9925122105913486,
 111: 0.9924946887320769,
 112: 0.00027197458896405404,
 113: 0.000171981388848454,
 114: 0.0004900202629077449,
 115: 0.000256236162907745,
 116: 2.8036950870048997e-05}

In [114]:
compute_prob_vector_max('../data/ROSE1_25.txt')


Out[114]:
{1: 0.9840499156343959,
 2: 0.9998657105087196,
 3: 0.9999576804477457,
 4: 0.9995141630237306,
 5: 0.9999912980189313,
 6: 0.9996765861533583,
 11: 0.9996765861533583,
 12: 0.9999912980189313,
 13: 0.9995141630237306,
 14: 0.9999576804477457,
 15: 0.9998657105087196,
 16: 0.9840499156343959,
 17: 0.5398343211381459,
 18: 0.5403344632144405,
 19: 0.5398945210575226,
 20: 0.9960192435103237,
 21: 0.9979745146877215,
 22: 0.9989277116048189,
 23: 0.9998919969163239,
 24: 0.9997348195824949,
 25: 0.9988510602053833,
 26: 7.276281073254398e-05,
 27: 0.9979466191768194,
 28: 0.9982364182415525,
 29: 8.5073210508196e-05,
 30: 8.389999417363598e-05,
 31: 3.9153302707599996e-05,
 33: 0.9982364182415525,
 34: 0.9979466191768194,
 35: 0.9988510602053833,
 36: 0.9997348195824949,
 37: 0.9998919969163239,
 38: 0.9989277116048189,
 39: 0.9979745146877215,
 40: 0.9960192435103237,
 41: 0.002805281161659025,
 42: 0.3597551588441567,
 43: 0.3700935246972657,
 44: 0.5398945210575226,
 45: 0.5403344632144405,
 46: 0.5398343211381459,
 47: 0.003608591359688704,
 48: 0.042297478934193077,
 49: 0.04291757215043149,
 50: 0.047785248678247134,
 51: 0.04781697300301377,
 52: 0.04778869428791251,
 53: 0.0271097739782116,
 54: 0.9716337911391087,
 55: 0.9864283803584382,
 56: 0.9999779461215947,
 57: 0.9997974642562206,
 58: 0.9999908800207935,
 59: 0.9999786021144687,
 60: 0.9999769321330332,
 61: 0.999082148709459,
 62: 0.001347909425220996,
 66: 0.001347909425220996,
 68: 0.999082148709459,
 69: 0.9999769321330332,
 70: 0.9999786021144687,
 71: 0.9999908800207935,
 72: 0.9997974642562206,
 73: 0.9999779461215947,
 74: 0.9864283803584382,
 75: 0.9716337911391087,
 76: 0.9535864590548103,
 77: 0.9540995356693154,
 78: 0.04291757215043149,
 79: 0.9529477946712026,
 80: 0.9600543968572063,
 81: 0.9608843927423637,
 82: 0.9405621288972789,
 83: 0.0305528865019456,
 84: 0.998655973905273,
 85: 0.9995895021357728,
 86: 0.9977049822897563,
 87: 0.00040599985171584394,
 88: 0.0019716275634781687,
 89: 0.9242683651593354,
 90: 0.84304708250381,
 91: 3.6055737557448994e-05,
 92: 0.9796145562050017,
 93: 0.9852477899751271,
 94: 0.9813122157741857,
 95: 0.006951754978524226,
 96: 0.005861956669589055,
 97: 6.314134749940899e-05,
 98: 0.002968604001100609,
 99: 0.9813122157741857,
 100: 0.9852477899751271,
 101: 0.9796145562050017,
 102: 0.84304708250381,
 103: 0.9242683651593354,
 104: 0.000199219533685225,
 106: 0.9977049822897563,
 107: 0.9995895021357728,
 108: 0.998655973905273,
 109: 0.0002337841,
 110: 0.9405621288972789,
 111: 0.9608843927423637,
 112: 0.9600543968572063,
 113: 0.9529477946712026,
 114: 0.03758937878683802,
 115: 0.9540995356693154,
 116: 0.9535864590548103,
 117: 2.8036950870048997e-05}

In [115]:
df = trange_df('../data/ROSE1', trange=range(25,37))
df


Out[115]:
pos Diff Temp
0 0 0.000010 26
1 1 0.000008 26
2 2 0.000005 26
3 3 0.000023 26
4 4 0.000002 26
5 5 0.000028 26
6 6 0.000000 26
7 7 0.000000 26
8 8 0.000000 26
9 9 0.000000 26
10 10 0.000586 26
11 11 0.000558 26
12 12 0.000556 26
13 13 0.000534 26
14 14 0.000505 26
15 15 0.000046 26
16 16 0.000014 26
17 17 0.000013 26
18 18 0.000270 26
19 19 0.000288 26
20 20 0.000002 26
21 21 0.000074 26
22 22 0.000008 26
23 23 0.000025 26
24 24 0.000005 26
25 25 0.000005 26
26 26 0.000014 26
27 27 0.000006 26
28 28 0.000006 26
29 29 0.000006 26
... ... ... ...
87 87 0.001913 36
88 88 0.923514 36
89 89 0.842443 36
90 90 0.000402 36
91 91 0.000163 36
92 92 0.000185 36
93 93 0.026345 36
94 94 0.006814 36
95 95 0.002289 36
96 96 0.003556 36
97 97 0.007331 36
98 98 0.563151 36
99 99 0.097356 36
100 100 0.009975 36
101 101 0.016912 36
102 102 0.023816 36
103 103 0.000520 36
104 104 0.000181 36
105 105 0.227608 36
106 106 0.227659 36
107 107 2.832688 36
108 108 2.832662 36
109 109 2.834077 36
110 110 0.011973 36
111 111 0.012209 36
112 112 0.001694 36
113 113 0.000977 36
114 114 0.003033 36
115 115 0.001619 36
116 116 0.000229 36

1287 rows × 3 columns


In [116]:
df_max = trange_df('../data/ROSE1', prob_func=compute_prob_vector_max, 
                   trange=range(25,37))
df_max


Out[116]:
pos Diff Temp
0 0 0.000000 26
1 1 0.000510 26
2 2 0.000019 26
3 3 0.000005 26
4 4 0.000023 26
5 5 0.000002 26
6 6 0.000028 26
7 7 0.000000 26
8 8 0.000000 26
9 9 0.000000 26
10 10 0.000000 26
11 11 0.000028 26
12 12 0.000002 26
13 13 0.000023 26
14 14 0.000005 26
15 15 0.000019 26
16 16 0.000510 26
17 17 0.000889 26
18 18 0.000836 26
19 19 0.000864 26
20 20 0.000288 26
21 21 0.000144 26
22 22 0.000076 26
23 23 0.000009 26
24 24 0.000025 26
25 25 0.000119 26
26 26 0.000005 26
27 27 0.000230 26
28 28 0.000208 26
29 29 0.000014 26
... ... ... ...
88 88 0.002699 36
89 89 0.197149 36
90 90 0.241634 36
91 91 0.000469 36
92 92 0.043934 36
93 93 0.039040 36
94 94 0.041914 36
95 95 0.026220 36
96 96 0.021152 36
97 97 0.001135 36
98 98 0.003633 36
99 99 0.041914 36
100 100 0.039040 36
101 101 0.043934 36
102 102 0.241634 36
103 103 0.197149 36
104 104 0.000804 36
105 105 0.000036 36
106 106 0.011634 36
107 107 0.004148 36
108 108 0.006043 36
109 109 0.001415 36
110 110 0.063477 36
111 111 0.052235 36
112 112 0.053485 36
113 113 0.060236 36
114 114 0.043249 36
115 115 0.059424 36
116 116 0.060063 36
117 117 0.000229 36

1298 rows × 3 columns


In [117]:
df.describe()


Out[117]:
pos Diff Temp
count 1287.000000 1287.000000 1287.000000
mean 58.000000 0.176883 31.000000
std 33.786886 0.609991 3.163507
min 0.000000 0.000000 26.000000
25% 29.000000 0.000072 28.000000
50% 58.000000 0.001462 31.000000
75% 87.000000 0.016712 34.000000
max 116.000000 5.976818 36.000000

In [118]:
df['Diff'].mean()


Out[118]:
0.17688279916248378

In [119]:
df['Diff'].std()


Out[119]:
0.60999103690574574

In [120]:
df[df['Temp'] == 35]


Out[120]:
pos Diff Temp
0 0 0.000211 35
1 1 0.000159 35
2 2 0.999939 35
3 3 0.999485 35
4 4 0.999962 35
5 5 0.999647 35
6 6 0.000028 35
7 7 0.000026 35
8 8 0.000022 35
9 9 5.975916 35
10 10 1.006378 35
11 11 1.006606 35
12 12 3.983335 35
13 13 2.983817 35
14 14 0.984065 35
15 15 0.002064 35
16 16 0.000355 35
17 17 0.000321 35
18 18 0.047705 35
19 19 0.995980 35
20 20 0.000005 35
21 21 0.998883 35
22 22 0.999858 35
23 23 0.999713 35
24 24 0.000068 35
25 25 0.000051 35
26 26 0.000071 35
27 27 0.000072 35
28 28 0.000072 35
29 29 0.000073 35
... ... ... ...
87 87 0.001929 35
88 88 0.923660 35
89 89 0.842565 35
90 90 0.000310 35
91 91 0.000115 35
92 92 0.000141 35
93 93 0.022414 35
94 94 0.006848 35
95 95 0.002856 35
96 96 0.002992 35
97 97 0.006458 35
98 98 0.492285 35
99 99 0.082959 35
100 100 0.006429 35
101 101 0.013368 35
102 102 0.020278 35
103 103 0.000425 35
104 104 0.000130 35
105 105 0.197216 35
106 106 0.197252 35
107 107 2.831002 35
108 108 2.830975 35
109 109 2.832105 35
110 110 0.009996 35
111 111 0.010180 35
112 112 0.001313 35
113 113 0.000746 35
114 114 0.002420 35
115 115 0.001290 35
116 116 0.000180 35

117 rows × 3 columns


In [122]:
g = df.groupby('Temp')
for name,group in g:
    print(name, group)


26      pos      Diff  Temp
0      0  0.000010    26
1      1  0.000008    26
2      2  0.000005    26
3      3  0.000023    26
4      4  0.000002    26
5      5  0.000028    26
6      6  0.000000    26
7      7  0.000000    26
8      8  0.000000    26
9      9  0.000000    26
10    10  0.000586    26
11    11  0.000558    26
12    12  0.000556    26
13    13  0.000534    26
14    14  0.000505    26
15    15  0.000046    26
16    16  0.000014    26
17    17  0.000013    26
18    18  0.000270    26
19    19  0.000288    26
20    20  0.000002    26
21    21  0.000074    26
22    22  0.000008    26
23    23  0.000025    26
24    24  0.000005    26
25    25  0.000005    26
26    26  0.000014    26
27    27  0.000006    26
28    28  0.000006    26
29    29  0.000006    26
..   ...       ...   ...
87    87  0.000184    26
88    88  0.010753    26
89    89  0.015384    26
90    90  0.000016    26
91    91  0.000009    26
92    92  0.000003    26
93    93  0.001187    26
94    94  0.001190    26
95    95  0.001062    26
96    96  0.000079    26
97    97  0.000472    26
98    98  0.032594    26
99    99  0.004437    26
100  100  0.003455    26
101  101  0.002264    26
102  102  0.001077    26
103  103  0.000018    26
104  104  0.000000    26
105  105  0.013625    26
106  106  0.013625    26
107  107  0.013602    26
108  108  0.013610    26
109  109  0.013651    26
110  110  0.000570    26
111  111  0.000575    26
112  112  0.000053    26
113  113  0.000034    26
114  114  0.000087    26
115  115  0.000046    26
116  116  0.000006    26

[117 rows x 3 columns]
27      pos      Diff  Temp
0      0  0.000023    27
1      1  0.000016    27
2      2  0.000010    27
3      3  0.000047    27
4      4  0.000004    27
5      5  0.000057    27
6      6  0.000000    27
7      7  0.000000    27
8      8  0.000000    27
9      9  0.000000    27
10    10  0.001192    27
11    11  0.001135    27
12    12  0.001131    27
13    13  1.001021    27
14    14  0.001023    27
15    15  0.000092    27
16    16  0.000031    27
17    17  0.000029    27
18    18  0.000564    27
19    19  0.000602    27
20    20  0.000003    27
21    21  0.000156    27
22    22  0.000016    27
23    23  0.000052    27
24    24  0.000011    27
25    25  0.000011    27
26    26  0.000031    27
27    27  0.000012    27
28    28  0.000012    27
29    29  0.000012    27
..   ...       ...   ...
87    87  0.000382    27
88    88  0.022758    27
89    89  0.032051    27
90    90  0.000001    27
91    91  0.000015    27
92    92  0.000008    27
93    93  0.002551    27
94    94  0.002557    27
95    95  0.002291    27
96    96  0.000183    27
97    97  0.000978    27
98    98  0.068479    27
99    99  0.009530    27
100  100  0.007422    27
101  101  0.004865    27
102  102  0.002314    27
103  103  0.000038    27
104  104  0.000000    27
105  105  0.028209    27
106  106  0.028209    27
107  107  0.028160    27
108  108  0.028178    27
109  109  0.028268    27
110  110  0.001187    27
111  111  0.001198    27
112  112  0.000050    27
113  113  0.000008    27
114  114  0.000192    27
115  115  0.000101    27
116  116  0.000013    27

[117 rows x 3 columns]
28      pos      Diff  Temp
0      0  0.000036    28
1      1  0.000027    28
2      2  0.000017    28
3      3  0.000072    28
4      4  0.000007    28
5      5  0.000090    28
6      6  0.000000    28
7      7  0.000000    28
8      8  0.000000    28
9      9  0.000000    28
10    10  0.001821    28
11    11  0.001731    28
12    12  0.001724    28
13    13  1.001581    28
14    14  0.001552    28
15    15  0.000137    28
16    16  0.000052    28
17    17  0.000048    28
18    18  0.000884    28
19    19  0.000946    28
20    20  0.000005    28
21    21  0.998910    28
22    22  0.000026    28
23    23  0.000082    28
24    24  0.000016    28
25    25  0.000016    28
26    26  0.000050    28
27    27  0.000019    28
28    28  0.000019    28
29    29  0.000019    28
..   ...       ...   ...
87    87  0.000593    28
88    88  0.036098    28
89    89  0.842982    28
90    90  0.000016    28
91    91  0.000011    28
92    92  0.000013    28
93    93  0.004111    28
94    94  0.004121    28
95    95  0.004222    28
96    96  0.000832    28
97    97  0.001519    28
98    98  0.107855    28
99    99  0.015350    28
100  100  0.011960    28
101  101  0.007839    28
102  102  0.003728    28
103  103  0.000060    28
104  104  0.000000    28
105  105  0.043932    28
106  106  0.043933    28
107  107  0.043854    28
108  108  0.043886    28
109  109  0.044036    28
110  110  0.001879    28
111  111  0.001899    28
112  112  0.000112    28
113  113  0.000041    28
114  114  0.000318    28
115  115  0.000169    28
116  116  0.000022    28

[117 rows x 3 columns]
29      pos      Diff  Temp
0      0  0.000052    29
1      1  0.000038    29
2      2  0.000024    29
3      3  0.000099    29
4      4  0.000011    29
5      5  0.000126    29
6      6  0.000000    29
7      7  0.000000    29
8      8  0.000000    29
9      9  0.000000    29
10    10  0.002474    29
11    11  0.002349    29
12    12  0.002338    29
13    13  1.002158    29
14    14  0.002095    29
15    15  0.000180    29
16    16  0.000076    29
17    17  0.000070    29
18    18  0.047775    29
19    19  0.001320    29
20    20  0.000007    29
21    21  0.998906    29
22    22  0.000036    29
23    23  0.000116    29
24    24  0.000023    29
25    25  0.000023    29
26    26  0.000073    29
27    27  0.000026    29
28    28  0.000026    29
29    29  0.000026    29
..   ...       ...   ...
87    87  0.000818    29
88    88  0.050848    29
89    89  0.842952    29
90    90  0.000035    29
91    91  0.000005    29
92    92  0.000020    29
93    93  0.005888    29
94    94  0.005902    29
95    95  0.005851    29
96    96  0.001006    29
97    97  0.002097    29
98    98  0.150904    29
99    99  0.021972    29
100  100  0.017128    29
101  101  0.011226    29
102  102  0.005339    29
103  103  0.000085    29
104  104  0.000000    29
105  105  0.060897    29
106  106  0.060898    29
107  107  0.060785    29
108  108  0.060834    29
109  109  0.061056    29
110  110  0.002649    29
111  111  0.002679    29
112  112  0.000197    29
113  113  0.000091    29
114  114  0.000472    29
115  115  0.000250    29
116  116  0.000032    29

[117 rows x 3 columns]
30      pos      Diff  Temp
0      0  0.000070    30
1      1  0.000052    30
2      2  0.000034    30
3      3  0.000129    30
4      4  0.000016    30
5      5  0.000165    30
6      6  0.000000    30
7      7  0.000000    30
8      8  0.000000    30
9      9  0.000000    30
10    10  0.003155    30
11    11  0.002990    30
12    12  0.002974    30
13    13  1.002754    30
14    14  0.002651    30
15    15  0.000223    30
16    16  0.000105    30
17    17  0.000096    30
18    18  0.047771    30
19    19  0.001729    30
20    20  0.000009    30
21    21  0.998902    30
22    22  0.000048    30
23    23  0.000154    30
24    24  0.000029    30
25    25  0.000029    30
26    26  0.000099    30
27    27  0.000034    30
28    28  0.000034    30
29    29  0.000034    30
..   ...       ...   ...
87    87  0.001055    30
88    88  0.067070    30
89    89  0.842916    30
90    90  0.000059    30
91    91  0.000003    30
92    92  0.000030    30
93    93  0.007902    30
94    94  0.007921    30
95    95  0.007697    30
96    96  0.001210    30
97    97  0.002712    30
98    98  0.197780    30
99    99  0.029474    30
100  100  0.022986    30
101  101  0.015066    30
102  102  0.007163    30
103  103  0.000113    30
104  104  0.000000    30
105  105  0.079225    30
106  106  0.079228    30
107  107  0.079075    30
108  108  0.079148    30
109  109  0.079457    30
110  110  0.003511    30
111  111  0.003555    30
112  112  0.000303    30
113  113  0.000155    30
114  114  0.000659    30
115  115  0.000350    30
116  116  0.000046    30

[117 rows x 3 columns]
31      pos      Diff  Temp
0      0  0.000091    31
1      1  0.000067    31
2      2  0.000045    31
3      3  0.000161    31
4      4  0.000023    31
5      5  0.000208    31
6      6  0.000000    31
7      7  0.000000    31
8      8  0.000000    31
9      9  0.000000    31
10    10  0.003868    31
11    11  0.003659    31
12    12  0.003636    31
13    13  1.003370    31
14    14  0.003221    31
15    15  0.000264    31
16    16  0.000139    31
17    17  0.000127    31
18    18  0.047765    31
19    19  0.996008    31
20    20  0.000012    31
21    21  0.998898    31
22    22  0.000062    31
23    23  0.000196    31
24    24  0.000036    31
25    25  0.000036    31
26    26  0.000129    31
27    27  0.000042    31
28    28  0.000042    31
29    29  0.000042    31
..   ...       ...   ...
87    87  0.001306    31
88    88  0.084812    31
89    89  0.842872    31
90    90  0.000088    31
91    91  0.000013    31
92    92  0.000042    31
93    93  0.010176    31
94    94  0.010200    31
95    95  0.009781    31
96    96  0.001447    31
97    97  0.003363    31
98    98  0.248608    31
99    99  0.037931    31
100  100  0.029597    31
101  101  0.019398    31
102  102  0.009222    31
103  103  0.000143    31
104  104  0.000000    31
105  105  0.099061    31
106  106  0.099067    31
107  107  0.098868    31
108  108  0.098971    31
109  109  0.099387    31
110  110  0.004484    31
111  111  0.004544    31
112  112  0.000408    31
113  113  0.000208    31
114  114  0.000887    31
115  115  0.000471    31
116  116  0.000062    31

[117 rows x 3 columns]
32      pos      Diff  Temp
0      0  0.000115    32
1      1  0.000085    32
2      2  0.000060    32
3      3  0.000196    32
4      4  0.999981    32
5      5  0.999666    32
6      6  0.000010    32
7      7  0.000010    32
8      8  0.000000    32
9      9  0.000000    32
10    10  0.004616    32
11    11  1.004308    32
12    12  1.003635    32
13    13  1.004018    32
14    14  0.003885    32
15    15  0.000304    32
16    16  0.000180    32
17    17  0.000164    32
18    18  0.047756    32
19    19  0.996004    32
20    20  0.000014    32
21    21  0.998893    32
22    22  0.000078    32
23    23  0.000244    32
24    24  0.000044    32
25    25  0.000044    32
26    26  0.000164    32
27    27  0.000051    32
28    28  0.000051    32
29    29  0.000051    32
..   ...       ...   ...
87    87  0.001568    32
88    88  0.104102    32
89    89  0.842819    32
90    90  0.000124    32
91    91  0.000027    32
92    92  0.000059    32
93    93  0.012730    32
94    94  0.012800    32
95    95  0.012124    32
96    96  0.001723    32
97    97  0.004052    32
98    98  0.303470    32
99    99  0.047422    32
100  100  0.037021    32
101  101  0.024262    32
102  102  0.011532    32
103  103  0.000176    32
104  104  0.000000    32
105  105  0.120567    32
106  106  0.120577    32
107  107  0.120325    32
108  108  0.120467    32
109  109  0.121013    32
110  110  0.005588    32
111  111  0.005669    32
112  112  0.000565    32
113  113  0.000300    32
114  114  0.001164    32
115  115  0.000619    32
116  116  0.000083    32

[117 rows x 3 columns]
33      pos      Diff  Temp
0      0  0.000142    33
1      1  0.000106    33
2      2  0.999945    33
3      3  0.999500    33
4      4  0.999977    33
5      5  0.999662    33
6      6  0.000014    33
7      7  0.000013    33
8      8  0.000012    33
9      9  0.000000    33
10    10  1.004762    33
11    11  1.005028    33
12    12  1.004315    33
13    13  1.004680    33
14    14  0.004492    33
15    15  0.000341    33
16    16  0.000229    33
17    17  0.000208    33
18    18  0.047745    33
19    19  0.995998    33
20    20  0.000004    33
21    21  0.998893    33
22    22  0.999865    33
23    23  0.999716    33
24    24  0.000051    33
25    25  0.000061    33
26    26  0.000071    33
27    27  0.000060    33
28    28  0.000060    33
29    29  0.000060    33
..   ...       ...   ...
87    87  0.001840    33
88    88  0.923888    33
89    89  0.842754    33
90    90  0.000170    33
91    91  0.000046    33
92    92  0.000079    33
93    93  0.015655    33
94    94  0.006894    33
95    95  0.014816    33
96    96  0.002115    33
97    97  0.004845    33
98    98  0.362337    33
99    99  0.058089    33
100  100  0.000320    33
101  101  0.007263    33
102  102  0.014180    33
103  103  0.000281    33
104  104  0.000069    33
105  105  0.143930    33
106  106  0.143946    33
107  107  2.828291    33
108  108  2.828263    33
109  109  2.828966    33
110  110  0.006850    33
111  111  0.006959    33
112  112  0.000762    33
113  113  0.000416    33
114  114  0.001503    33
115  115  0.000799    33
116  116  0.000109    33

[117 rows x 3 columns]
34      pos          Diff  Temp
0      0  1.738143e-04    34
1      1  1.306017e-04    34
2      2  9.999444e-01    34
3      3  9.994938e-01    34
4      4  9.999709e-01    34
5      5  9.996562e-01    34
6      6  1.943933e-05    34
7      7  1.809732e-05    34
8      8  1.612893e-05    34
9      9  5.976818e+00    34
10    10  1.005539e+00    34
11    11  1.005786e+00    34
12    12  3.983337e+00    34
13    13  2.983832e+00    34
14    14  9.840605e-01    34
15    15  2.067714e-03    34
16    16  2.862920e-04    34
17    17  2.597401e-04    34
18    18  4.772816e-02    34
19    19  9.959903e-01    34
20    20  2.056258e-07    34
21    21  9.988835e-01    34
22    22  9.998575e-01    34
23    23  9.997101e-01    34
24    24  5.966885e-05    34
25    25  5.708946e-05    34
26    26  6.718035e-05    34
27    27  6.974801e-05    34
28    28  7.022863e-05    34
29    29  7.018128e-05    34
..   ...           ...   ...
87    87  2.133823e-03    34
88    88  9.237897e-01    34
89    89  8.426741e-01    34
90    90  2.268254e-04    34
91    91  7.089995e-05    34
92    92  1.064009e-04    34
93    93  1.885848e-02    34
94    94  6.874259e-03    34
95    95  3.329393e-03    34
96    96  2.520881e-03    34
97    97  5.634180e-03    34
98    98  4.253077e-01    34
99    99  6.989767e-02    34
100  100  3.221555e-03    34
101  101  1.016207e-02    34
102  102  1.707638e-02    34
103  103  3.502324e-04    34
104  104  9.855439e-05    34
105  105  1.693996e-01    34
106  106  1.694238e-01    34
107  107  2.829550e+00    34
108  108  2.829523e+00    34
109  109  2.830419e+00    34
110  110  8.305810e-03    34
111  111  8.447523e-03    34
112  112  1.006767e-03    34
113  113  5.617160e-04    34
114  114  1.915800e-03    34
115  115  1.020211e-03    34
116  116  1.403368e-04    34

[117 rows x 3 columns]
35      pos      Diff  Temp
0      0  0.000211    35
1      1  0.000159    35
2      2  0.999939    35
3      3  0.999485    35
4      4  0.999962    35
5      5  0.999647    35
6      6  0.000028    35
7      7  0.000026    35
8      8  0.000022    35
9      9  5.975916    35
10    10  1.006378    35
11    11  1.006606    35
12    12  3.983335    35
13    13  2.983817    35
14    14  0.984065    35
15    15  0.002064    35
16    16  0.000355    35
17    17  0.000321    35
18    18  0.047705    35
19    19  0.995980    35
20    20  0.000005    35
21    21  0.998883    35
22    22  0.999858    35
23    23  0.999713    35
24    24  0.000068    35
25    25  0.000051    35
26    26  0.000071    35
27    27  0.000072    35
28    28  0.000072    35
29    29  0.000073    35
..   ...       ...   ...
87    87  0.001929    35
88    88  0.923660    35
89    89  0.842565    35
90    90  0.000310    35
91    91  0.000115    35
92    92  0.000141    35
93    93  0.022414    35
94    94  0.006848    35
95    95  0.002856    35
96    96  0.002992    35
97    97  0.006458    35
98    98  0.492285    35
99    99  0.082959    35
100  100  0.006429    35
101  101  0.013368    35
102  102  0.020278    35
103  103  0.000425    35
104  104  0.000130    35
105  105  0.197216    35
106  106  0.197252    35
107  107  2.831002    35
108  108  2.830975    35
109  109  2.832105    35
110  110  0.009996    35
111  111  0.010180    35
112  112  0.001313    35
113  113  0.000746    35
114  114  0.002420    35
115  115  0.001290    35
116  116  0.000180    35

[117 rows x 3 columns]
36      pos      Diff  Temp
0      0  0.000253    36
1      1  0.000192    36
2      2  0.999932    36
3      3  0.999473    36
4      4  0.999950    36
5      5  0.999635    36
6      6  0.000040    36
7      7  0.000036    36
8      8  0.000030    36
9      9  5.974919    36
10    10  1.007279    36
11    11  4.983295    36
12    12  3.983317    36
13    13  2.983797    36
14    14  0.984058    36
15    15  0.002060    36
16    16  0.000437    36
17    17  0.000394    36
18    18  0.047672    36
19    19  0.995965    36
20    20  0.000001    36
21    21  0.998873    36
22    22  0.999850    36
23    23  0.999707    36
24    24  0.000077    36
25    25  0.000044    36
26    26  0.000067    36
27    27  0.000068    36
28    28  0.000068    36
29    29  0.000069    36
..   ...       ...   ...
87    87  0.001913    36
88    88  0.923514    36
89    89  0.842443    36
90    90  0.000402    36
91    91  0.000163    36
92    92  0.000185    36
93    93  0.026345    36
94    94  0.006814    36
95    95  0.002289    36
96    96  0.003556    36
97    97  0.007331    36
98    98  0.563151    36
99    99  0.097356    36
100  100  0.009975    36
101  101  0.016912    36
102  102  0.023816    36
103  103  0.000520    36
104  104  0.000181    36
105  105  0.227608    36
106  106  0.227659    36
107  107  2.832688    36
108  108  2.832662    36
109  109  2.834077    36
110  110  0.011973    36
111  111  0.012209    36
112  112  0.001694    36
113  113  0.000977    36
114  114  0.003033    36
115  115  0.001619    36
116  116  0.000229    36

[117 rows x 3 columns]

In [123]:
%matplotlib inline

In [124]:
for name,group in g:
    group.plot(x='pos', y='Diff', title=name)



In [125]:
g = ggplot(df, aes(xmin='pos-1',xmax='pos', ymin=0, ymax='Diff')) \
    + geom_rect() \
    + facet_wrap('Temp')

In [127]:
print(g)


<ggplot: (8742313465071)>

In [128]:
g = ggplot(df_max, aes(xmin='pos-1',xmax='pos', ymin=0, ymax='Diff')) \
    + geom_rect() \
    + facet_wrap('Temp')
print(g)


<ggplot: (8742317229611)>

In [ ]: