def plotPoolPage(Proteins, protPoolDict, medDict10, medDict1000, saveFile=None, 
                 figSize=(7,10), yMax=1.0, funcToFit=qMS.maxLabFunc, title=None, double=True, showPools=True):
    time = numpy.linspace(0, doublingTime_10*2, num=200)
    k10 = qMS.growthRate(doublingTime_10)
    k1000 = qMS.growthRate(doublingTime_1000)
    
    fig = pylab.figure(figsize=figSize)
    Large1Ax = []
    a = 0
    for prot in Proteins:
        p_10 = protPoolDict[prot]['10'] 
        p_10String = qMS.calcPercent(p_10, sigfig=2).split('.')[0]+'%'
        if double:
            p_1000 = protPoolDict[prot]['1000']
            p_1000String = qMS.calcPercent(p_1000, sigfig=2).split('.')[0]+'%'

        ax = fig.add_subplot(5,2,a+1)
        if showPools:
            textstr2 = '\n\n'+'10 $\mu$M : P=' + p_10String
            props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
            ax.text(0.025, .95, textstr2, transform=ax.transAxes, fontsize=8, verticalalignment='top', horizontalalignment='left', bbox=props, color='r')
            if double:
                textstr1 = '1 mM : P=' + p_1000String
                ax.text(0.025, .925, textstr1, transform=ax.transAxes, fontsize=8, verticalalignment='top', horizontalalignment='left', color='b')
        
        ax.scatter([i[0] for i in medDict10[prot]], [i[1] for i in medDict10[prot]], c = 'r')
        ax.plot(time, qMS.maxLabFunc(k10, time), c='r')
        if double:
            ax.scatter([i[0] for i in medDict1000[prot]], [i[1] for i in medDict1000[prot]], c = 'b')
            ax.plot(time, qMS.maxLabFunc(k1000, time), c='b')

        ax.plot(time, funcToFit(k10, time, p_10), c='r', ls='--')
        if double:
            ax.plot(time, funcToFit(k1000, time, p_1000), c='b', ls='--')
            
        ax.set_xlim([0,doublingTime_10*2])
        ax.set_ylim([0,yMax])
        ax.set_yticks([0,yMax/4, yMax/2, 3*yMax/4, yMax])
        ax.set_xticks([0,doublingTime_10*2/5, doublingTime_10*2*2/5, doublingTime_10*2*3/5, doublingTime_10*2*4/5, doublingTime_10*2])
        ax.yaxis.tick_left()
        ax.xaxis.tick_bottom()
        
        ax.text(0.5, 0.95, prot[4:], transform=ax.transAxes, fontsize=12, verticalalignment='top', horizontalalignment='center')
        Large1Ax.append(ax)
        a = a+1
    
    fig.text(0.005, 0.1165, "fraction labeled", fontsize=12, rotation='vertical', verticalalignment='center')
    fig.text(0.005, 0.317, "fraction labeled", fontsize=12, rotation='vertical', verticalalignment='center')
    fig.text(0.005, 0.505, "fraction labeled", fontsize=12, rotation='vertical', verticalalignment='center')
    fig.text(0.005, 0.7, "fraction labeled", fontsize=12, rotation='vertical', verticalalignment='center')
    fig.text(0.005, 0.9, "fraction labeled", fontsize=12, rotation='vertical', verticalalignment='center')
    fig.text(0.25, 0.0025, "time (mins)", fontsize=12, horizontalalignment='center')
    fig.text(0.75, 0.0025, "time (mins)", fontsize=12, horizontalalignment='center')
    if not (title is None):
        fig.text(0.5, 1, title, fontsize=16, horizontalalignment='center', verticalalignment='top')
    fig.tight_layout()
    if not (saveFile is None):
        pylab.savefig(saveFile)
    return fig
def plotPoolPage(Proteins, protPoolDict, medDict10, medDict1000, fig, name):
    time = numpy.linspace(0, 140, 200)
    k10 = qMS.growthRate(92)
    k1000 = qMS.growthRate(47)
    
    Large1Ax = []
    a = 0
    for prot in Proteins:
        p_10 = protPoolDict[prot]['10']
        p_10String = qMS.calcPercent(p_10, sigfig=2).split('.')[0]+'%'
        p_1000 = protPoolDict[prot]['1000']
        p_1000String = qMS.calcPercent(p_1000, sigfig=2).split('.')[0]+'%'

        ax = fig.add_subplot(5,2,a+1)
        textstr1 = '1 mM : P=' + p_1000String
        textstr2 = '\n\n'+'10 $\mu$M : P=' + p_10String
        props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
        ax.text(0.025, .95, textstr2, transform=ax.transAxes, fontsize=8, verticalalignment='top', horizontalalignment='left', bbox=props, color='r')
        ax.text(0.025, .925, textstr1, transform=ax.transAxes, fontsize=8, verticalalignment='top', horizontalalignment='left', color='b')
        
        ax.scatter([i[0] for i in medDict10[prot]], [i[1] for i in medDict10[prot]], c = 'r')
        ax.scatter([i[0] for i in medDict1000[prot]], [i[1] for i in medDict1000[prot]], c = 'b')
        ax.plot(time, qMS.maxLabFunc(k10, time), c='r')
        ax.plot(time, qMS.maxLabFunc(k1000, time), c='b')
        
        ax.plot(time, qMS.poolFunc(k10, time, p_10), c='r', ls='--')
        ax.plot(time, qMS.poolFunc(k1000, time, p_1000), c='b', ls='--')
        ax.set_xlim([0,140])
        ax.set_ylim([0,1.00])
        ax.set_yticks([0,.25,.50,.75,1.00])
        #if a < 7:
        #    plt.setp(ax.get_xticklabels(), visible=False)
        #if a%2==1:
        #    plt.setp(ax.get_yticklabels(), visible=False)
        ax.set_xticks([0,20,40,60,80,100,120,140])
        ax.yaxis.tick_left()
        ax.xaxis.tick_bottom()
        
        ax.text(0.5, 0.95, prot[4:], transform=ax.transAxes, fontsize=12, verticalalignment='top', horizontalalignment='center')
        Large1Ax.append(ax)
        a = a+1
    fig.text(0.005, 0.1165, "fraction labeled", fontsize=12, rotation='vertical', verticalalignment='center')
    fig.text(0.005, 0.317, "fraction labeled", fontsize=12, rotation='vertical', verticalalignment='center')
    fig.text(0.005, 0.505, "fraction labeled", fontsize=12, rotation='vertical', verticalalignment='center')
    fig.text(0.005, 0.7, "fraction labeled", fontsize=12, rotation='vertical', verticalalignment='center')
    fig.text(0.005, 0.9, "fraction labeled", fontsize=12, rotation='vertical', verticalalignment='center')
    fig.text(0.25, 0.0025, "time (mins)", fontsize=12, horizontalalignment='center')
    fig.text(0.75, 0.0025, "time (mins)", fontsize=12, horizontalalignment='center')
    fig.tight_layout()
    #pylab.savefig(name)
    return Large1Ax
def plotLabelKinsPage(Proteins, protTODict, medDict10, medDict1000, fig, name):
    time = numpy.linspace(0, 140, 200)
    k10 = qMS.growthRate(92)
    k1000 = qMS.growthRate(47)
    
    Large1Ax = []
    a = 0
    for prot in Proteins:
        
        d_10 = protTODict[prot]['10']
        #p_10String = qMS.calcPercent(p_10, sigfig=2).split('.')[0]+'%'
        d_1000 = protTODict[prot]['1000']
        #p_1000String = qMS.calcPercent(p_1000, sigfig=2).split('.')[0]+'%
        
        ax = fig.add_subplot(5,2,a+1)
        
        ax.scatter([i[0] for i in medDict10[prot]], [i[1] for i in medDict10[prot]], c = 'r')
        ax.scatter([i[0] for i in medDict1000[prot]], [i[1] for i in medDict1000[prot]], c = 'b')
        ax.plot(time, qMS.maxLabFunc(k10, time), c='r')
        ax.plot(time, qMS.maxLabFunc(k1000, time), c='b')
        
        ax.plot(time, qMS.overLabelingFunc(k10, time, d_10), c='r', ls='--')
        ax.plot(time, qMS.overLabelingFunc(k1000, time, d_1000), c='b', ls='--')
        
        ax.set_xlim([0,140])
        ax.set_ylim([0,1.00])
        ax.set_yticks([0,.25,.50,.75,1.00])
        #if a < 7:
        #    plt.setp(ax.get_xticklabels(), visible=False)
        #if a%2==1:
        #    plt.setp(ax.get_yticklabels(), visible=False)
        ax.set_xticks([0,20,40,60,80,100,120,140])
        ax.yaxis.tick_left()
        ax.xaxis.tick_bottom()
        
        ax.text(0.5, 0.95, prot[4:], transform=ax.transAxes, fontsize=12, verticalalignment='top', horizontalalignment='center')
        Large1Ax.append(ax)
        a = a+1
    fig.text(0.005, 0.1165, "fraction labeled", fontsize=12, rotation='vertical', verticalalignment='center')
    fig.text(0.005, 0.317, "fraction labeled", fontsize=12, rotation='vertical', verticalalignment='center')
    fig.text(0.005, 0.505, "fraction labeled", fontsize=12, rotation='vertical', verticalalignment='center')
    fig.text(0.005, 0.7, "fraction labeled", fontsize=12, rotation='vertical', verticalalignment='center')
    fig.text(0.005, 0.9, "fraction labeled", fontsize=12, rotation='vertical', verticalalignment='center')
    fig.text(0.25, 0.0025, "time (mins)", fontsize=12, horizontalalignment='center')
    fig.text(0.75, 0.0025, "time (mins)", fontsize=12, horizontalalignment='center')
    fig.tight_layout()
    #pylab.savefig(name)
    return Large1Ax
def turnoverResid10(d, y, t):
    k = qMS.growthRate(92)
    #return y - qMS.overLabelingFunc(k, t, d)
    return qMS.overLabelingFunc(k, t, d) - y
def poolResid10(P, y, t):
    k = qMS.growthRate(92)
    return y - qMS.poolFunc(k, t, P)
def poolIntermedFracXResid(P, y, t):
    k = qMS.growthRate(doublingTime_10)
    fracX = 0.65
    return y - qMS.poolInterFracXFunc(k, t, P, fracX)
def poolIntermediatesResid10(P, y, t):
    k = qMS.growthRate(doublingTime_10)
    return y - qMS.poolInterFunc(k, t, P)
def poolResid10(P, y, t):
    k = qMS.growthRate(doublingTime_10)
    return y - qMS.poolFunc(k, t, P)
                 saveName=None, yMax=yMax, figSize=figSize, median=median, legendLoc='lower left', legendCols=3, normProtein='BSubL24')

    filtPlots_Inter_1000 = plotDataSets(namesInter_1000, labels1000, num, den, AllSubunits, 'permissive conditions : 50S\nprotein levels', '[Labeled+Unlabeled/[All]', blues,
                 yMax=yMax, figSize=figSize, median=median, legendLoc='lower left', legendCols=3, normProtein='BSubL24')
    
    '''
##################Fit data using pool size equation###########################
    poolSize70SDict = fitPoolSizes(AllSubunits, medDict70S_10, medDict70S_1000)
    poolSizeInterDict = fitPoolIntermediateSizes(Inter45S, medDictInter_10, medDictInter_1000)
    poolSizeInterFixFracXDict = fitPoolFixFracX(Inter45S, medDictInter_10)
    
    poolSize70S_10 = {key : poolSize70SDict[key]['10'] for key in poolSize70SDict.keys()}
    poolSizeInter_10 = {key : poolSizeInterDict[key]['10'] for key in poolSizeInterDict.keys()}    
    poolSizeInterFixFracX_10 = {key : poolSizeInterFixFracXDict[key]['10'] for key in poolSizeInterFixFracXDict.keys()}    
    
    fracX = calcFractionIntermediate(i, poolSizeInter_10.keys(), poolSizeInter_10, poolSize70S_10, qMS.growthRate(doublingTime_10))
    plotPoolBar(fracX, ['fracX'], ['r'], 'calculated fraction intermediate', figname=None, barNames=poolSizeInter_10.keys(), sortingKey=1)

    #print poolSizeInterFixFracXDict
##################Plot the fits###########################
    figSize=(7,10)
    #saveFile='/home/jhdavis/Dropbox/page.png'
    saveFile=None
    '''
    for i in [1,2,3]:
        plotPoolPage(LargeSubunit[(i-1)*10:i*10], poolSize70SDict, medDict70S_10, medDict70S_1000, saveFile=saveFile, figSize=figSize, yMax=1.0, funcToFit=qMS.poolInterFracXFunc, title='45S labeling fitFracX', double=False, showPools=False)
    
    for i in [1,2]:
        plotPoolPage(SmallSubunit[(i-1)*10:i*10], poolSize70SDict, medDict70S_10, medDict70S_1000, saveFile=saveFile, figSize=figSize, yMax=1.0, title='70S labeling')
    
    for i in [1,2,3]: