def fingerprint(disp_sim_spin = True,n_sim_spins = 5,xrange = [0,20],):


    ###################
    # Add simulated spins #
    ###################

    if disp_sim_spin == True:
            HF_perp, HF_par = fp_funcs.get_hyperfine_params(ms = 'min')
            #msmp1_f from hdf5 file
            # msm1 from hdf5 file
            # ZFG g_factor from hdf5file
            B_Field = 403.555 # use magnet tools  Bz = (msp1_f**2 - msm1_f**2)/(4.*ZFS*g_factor)


            tau_lst = np.linspace(0,72e-6,10000)
            Mt16 = SC.dyn_dec_signal(HF_par,HF_perp,B_Field,16,tau_lst)
            FP_signal16 = ((Mt16+1)/2)

    ## Data location ##
    timestamp ='20141016_182539'
    ssro_calib_folder = 'D:\\measuring\\data\\20141016\\150451_AdwinSSRO_SSROCalibration_111_1_sil18'
    a, folder = load_mult_dat(timestamp, number_of_msmts = 40, ssro_calib_folder=ssro_calib_folder)

    ###############
    ## Plotting ###
    ###############

    fig = a.default_fig(figsize=(35,5))
    ax = a.default_ax(fig)
    # ax.set_xlim(15.0,15.5)
    ax.set_xlim(xrange)
    start, end = ax.get_xlim()
    ax.xaxis.set_ticks(np.arange(xrange[0], xrange[1], (xrange[1]- xrange[0])/10))

    ax.set_ylim(-0.05,1.05)
    ax.plot(a.sweep_pts, a.p0, '.-k', lw=0.4,label = 'data') #N = 16
    if disp_sim_spin == True:
      colors = cm.rainbow(np.linspace(0, 1, n_sim_spins))
      for tt in range(n_sim_spins):
        ax.plot(tau_lst*1e6, FP_signal16[tt,:] ,'-',lw=.8,label = 'spin' + str(tt+1), color = colors[tt])
    if False:
        tot_signal = np.ones(len(tau_lst))
        for tt in range(n_sim_spins):
          tot_signal = tot_signal * Mt16[tt,:]
        fin_signal = (tot_signal+1)/2.0
        ax.plot(tau_lst*1e6, fin_signal,':g',lw=.8,label = 'tot')


    plt.legend(loc=4)

    print folder
    plt.savefig(os.path.join(folder, str(disp_sim_spin)+'fingerprint.pdf'),
        format='pdf')
    plt.savefig(os.path.join(folder, str(disp_sim_spin)+'fingerprint.png'),
        format='png')
Ejemplo n.º 2
0
def fingerprint(disp_sim_spin = True,n_sim_spins = 8,xrange = [0,20]):


    ###################
    # Add simulated spins #
    ###################

    if disp_sim_spin == True:
            HF_perp, HF_par = fp_funcs.get_hyperfine_params(ms = 'min')
            #msmp1_f from hdf5 file
            # msm1 from hdf5 file
            # ZFG g_factor from hdf5file
            B_Field = 403.555 # use magnet tools  Bz = (msp1_f**2 - msm1_f**2)/(4.*ZFS*g_factor)


            tau_lst = np.linspace(0,72e-6,10000)
            Mt16 = SC.dyn_dec_signal(HF_par,HF_perp,B_Field,64,tau_lst)
            FP_signal16 = ((Mt16+1)/2)

    ## Data location ##
    timestamp ='20141016_234534'
    ssro_calib_folder = 'D:\\measuring\\data\\20141016\\150451_AdwinSSRO_SSROCalibration_111_1_sil18'
    a, folder = load_mult_dat(timestamp, number_of_msmts = 50, ssro_calib_folder=ssro_calib_folder)

    ###############
    ## Plotting ###
    ###############

    fig = a.default_fig(figsize=(35,5))
    ax = a.default_ax(fig)
    # ax.set_xlim(15.0,15.5)
    ax.set_xlim(xrange)
    start, end = ax.get_xlim()
    ax.xaxis.set_ticks(np.arange(xrange[0], xrange[1], (xrange[1]- xrange[0])/10))
    ax.set_ylim(-0.05,1.05)
    ax.plot(a.sweep_pts, a.p0, '.-k', lw=0.4,label = 'data') #N = 16
    if disp_sim_spin == True:
      colors = cm.rainbow(np.linspace(0, 1, n_sim_spins))
      for tt in range(n_sim_spins):
        ax.plot(tau_lst*1e6, FP_signal16[tt,:] ,'-',lw=.8,label = 'spin' + str(tt+1), color = colors[tt])
    if False:
        tot_signal = np.ones(len(tau_lst))
        for tt in range(n_sim_spins):
          tot_signal = tot_signal * Mt16[tt,:]
        fin_signal = (tot_signal+1)/2.0
        ax.plot(tau_lst*1e6, fin_signal,':g',lw=.8,label = 'tot')


    plt.legend(loc=4)

    print folder
    plt.savefig(os.path.join(folder, str(disp_sim_spin)+'fingerprint.pdf'),
        format='pdf')
    plt.savefig(os.path.join(folder, str(disp_sim_spin)+'fingerprint.png'),
        format='png')
def fingerprint(disp_sim_spin = True, RO = 'x'):
    
    ###################
    ## Data location ##
    ###################
    
    if RO == '-x':
        timestamp ='20140730_140911' # for the -x msmt
    elif RO == 'x':
        timestamp ='20140730_134956' # for the +x msmt
        timestamp = '20140730_184039'
    
    ssro_calib_folder = 'D:\\measuring\data\\20140730\\115839_AdwinSSRO_SSROCalibration_Hans_sil1'
    a, folder = fp_funcs.load_mult_dat(timestamp, 
                number_of_msmts = 80, 
                x_axis_step     = 0.5,
                x_axis_pts_per_msmnt= 51,
                ssro_calib_folder=ssro_calib_folder)

    #######################
    # Add simulated spins #
    #######################

    if disp_sim_spin == True:
            
            HF_perp, HF_par = fp_funcs.get_hyperfine_params(ms = 'min')
            B_Field = 304.49 
            tau_lst = np.linspace(0, 72e-6, 10000)
            Mt16 = SC.dyn_dec_signal(HF_par,HF_perp,B_Field,16,tau_lst)
            FP_signal16 = ((Mt16+1)/2)
 
    ###############
    ## Plotting ###
    ###############

    fig = a.default_fig(figsize=(35,5))
    ax = a.default_ax(fig)
    ax.set_xlim(0,40)
    start, end = ax.get_xlim()
    ax.xaxis.set_ticks(np.arange(start, end, 0.5))

    ax.set_ylim(-0.05,1.05)
   
    ax.plot(a.sweep_pts, a.p0, '.-k', lw=0.4,label = 'data') #N = 16
    
    if disp_sim_spin == True:
      colors = cm.rainbow(np.linspace(0, 1, len(HF_par)))
      for tt in range(len(HF_par)):
        ax.plot(tau_lst*1e6, FP_signal16[tt,:] ,'-',lw=.8,label = 'spin' + str(tt+1), color = colors[tt])
    if False:
        tot_signal = np.ones(len(tau_lst))
        for tt in range(len(HF_par)):
          tot_signal = tot_signal * Mt16[tt,:]
        fin_signal = (tot_signal+1)/2.0   
        ax.plot(tau_lst*1e6, fin_signal,':g',lw=.8,label = 'tot')
    

    plt.legend(loc=4)

    print folder
    plt.savefig(os.path.join(folder, str(disp_sim_spin)+'fingerprint.pdf'),
        format='pdf')
    plt.savefig(os.path.join(folder, str(disp_sim_spin)+'fingerprint.png'),
        format='png')
Ejemplo n.º 4
0
def fingerprint(disp_sim_spin=True, xlim=None):

    ###################
    ## Data location ##
    ###################

    timestamp = '20140730_145444'  # for the -x msmt
    timestamp = '20140730_142833'  # for the +x msmt
    timestamp = '20140730_213811'
    ssro_calib_folder = 'D:\\measuring\data\\20140730\\115839_AdwinSSRO_SSROCalibration_Hans_sil1'
    a, folder = fp_funcs.load_mult_dat(timestamp,
                                       number_of_msmts=80,
                                       x_axis_step=0.5,
                                       x_axis_pts_per_msmnt=51,
                                       ssro_calib_folder=ssro_calib_folder)

    #######################
    # Add simulated spins #
    #######################

    if disp_sim_spin == True:

        HF_perp, HF_par = fp_funcs.get_hyperfine_params(ms='min')
        B_Field = 304.49
        tau_lst = np.linspace(0, 72e-6, 10000)
        Mt16 = SC.dyn_dec_signal(HF_par, HF_perp, B_Field, 32, tau_lst)
        FP_signal16 = ((Mt16 + 1) / 2)

    ###############
    ## Plotting ###
    ###############

    fig = a.default_fig(figsize=(35, 5))
    ax = a.default_ax(fig)
    if xlim == None:
        ax.set_xlim(0, 40)
    else:
        ax.set_xlim(xlim)
    start, end = ax.get_xlim()
    ax.xaxis.set_ticks(np.arange(start, end, 0.5))

    ax.set_ylim(-0.05, 1.05)

    ax.plot(a.sweep_pts, a.p0, '.-k', lw=0.4, label='data')  #N = 16

    if disp_sim_spin == True:
        colors = cm.rainbow(np.linspace(0, 1, len(HF_par)))
        for tt in range(len(HF_par)):
            ax.plot(tau_lst * 1e6,
                    FP_signal16[tt, :],
                    '-',
                    lw=.8,
                    label='spin' + str(tt + 1),
                    color=colors[tt])
    if False:
        tot_signal = np.ones(len(tau_lst))
        for tt in range(len(HF_par)):
            tot_signal = tot_signal * Mt16[tt, :]
        fin_signal = (tot_signal + 1) / 2.0
        ax.plot(tau_lst * 1e6, fin_signal, ':g', lw=.8, label='tot')

    plt.legend(loc=4)

    print folder
    plt.savefig(os.path.join(folder,
                             str(disp_sim_spin) + 'fingerprint.pdf'),
                format='pdf')
    plt.savefig(os.path.join(folder,
                             str(disp_sim_spin) + 'fingerprint.png'),
                format='png')
Ejemplo n.º 5
0
def fingerprint(disp_sim_spin = True,xlim =None):
    
    ###################
    ## Data location ##
    ###################
    
    timestamp ='20160110_170758'
    ssro_calib_folder = 'd:\\measuring\\data\\20160107\\172632_AdwinSSRO_SSROCalibration_Pippin_SIL1'
    a, folder = fp_funcs.load_mult_dat(timestamp,
            number_of_msmts = 100,
            x_axis_step     = 0.1,
            x_axis_start    = 3.5,
            x_axis_pts_per_msmnt= 51,
            ssro_calib_folder=ssro_calib_folder)

    #######################
    # Add simulated spins #
    #######################

    if disp_sim_spin == True:
            
            print 'Starting Simulation'  
            HF_perp, HF_par = fp_funcs.get_hyperfine_params(ms = 'min', NV = 'Pippin')
            print 'HF_perp = ' + str(HF_perp)
            print 'HF_par = ' + str(HF_par)
            B_Field = 417.268
            tau_lst = np.linspace(0, 72e-6, 10000)
            Mt16 = SC.dyn_dec_signal(HFs_par = HF_par, HFs_orth = HF_perp,
              B_field = B_Field, N = 32, tau = tau_lst)
            FP_signal16 = ((Mt16+1)/2)
 
    ###############
    ## Plotting ###
    ###############

    fig = a.default_fig(figsize=(35,5))
    ax = a.default_ax(fig)
    if xlim == None:
        ax.set_xlim(3.5,13.5)
    else:
        ax.set_xlim(xlim)
    start, end = ax.get_xlim()
    ax.xaxis.set_ticks(np.arange(start, end, 0.5))

    ax.set_ylim(-0.05,1.05)
   
    ax.plot(a.sweep_pts, a.p0, '.-k', lw=0.4,label = 'data') #N = 16
    
    if disp_sim_spin == True:
      colors = cm.rainbow(np.linspace(0, 1, len(HF_par)))
      for tt in range(len(HF_par)):
        ax.plot(tau_lst*1e6, FP_signal16[tt,:] ,'-',lw=.8,label = 'spin' + str(tt+1), color = colors[tt])
    if False:
        tot_signal = np.ones(len(tau_lst))
        for tt in range(len(HF_par)):
          tot_signal = tot_signal * Mt16[tt,:]
        fin_signal = (tot_signal+1)/2.0   
        ax.plot(tau_lst*1e6, fin_signal,':g',lw=.8,label = 'tot')
    

    plt.legend(loc=4)

    print folder
    plt.savefig(os.path.join(folder, str(disp_sim_spin)+'fingerprint.pdf'),
        format='pdf')
    plt.savefig(os.path.join(folder, str(disp_sim_spin)+'fingerprint.png'),
        format='png')
def fingerprint(disp_sim_spin=True,
                n_sim_spins=5,
                N=32,
                xrange=[0, 20],
                carbons=[1, 2, 3, 4, 5]):

    ###################
    # Add simulated spins #
    ###################

    if disp_sim_spin == True:
        HF_perp, HF_par = fp_funcs.get_hyperfine_params(ms='min',
                                                        carbon_spins=carbons)
        #msmp1_f from hdf5 file
        # msm1 from hdf5 file
        # ZFG g_factor from hdf5file
        B_Field = 403.555  # use magnet tools  Bz = (msp1_f**2 - msm1_f**2)/(4.*ZFS*g_factor)
        tau_L = 1 / (1.0705e3 * B_Field) * 1e6
        print tau_L

        tau_lst = np.linspace(0, 72e-6, 10000)
        Mt16 = SC.dyn_dec_signal(HF_par, HF_perp, B_Field, N, tau_lst)
        FP_signal16 = ((Mt16 + 1) / 2)

    ## Data location ##
    save_folder_str = 'D:/Dropbox/QEC LT/Decoupling memory/Fingerprints/N=' + str(
        N)
    if N == 32:
        timestamp = '20141016_205842'
        ssro_calib_folder = 'D:\\measuring\\data\\20141016\\150451_AdwinSSRO_SSROCalibration_111_1_sil18'
        a, folder = load_mult_dat(timestamp,
                                  number_of_msmts=40,
                                  ssro_calib_folder=ssro_calib_folder)

    elif N == 64:
        timestamp = '20141016_234534'
        ssro_calib_folder = 'D:\\measuring\\data\\20141016\\150451_AdwinSSRO_SSROCalibration_111_1_sil18'
        a, folder = load_mult_dat(timestamp,
                                  number_of_msmts=50,
                                  ssro_calib_folder=ssro_calib_folder)

    else:
        raise Exception('Only N=32 or N=64')
    print tau_L

    carbon_relabel = {}
    carbon_relabel['1'] = '2'
    carbon_relabel['2'] = '1'
    carbon_relabel['3'] = '4'
    carbon_relabel['5'] = '3'
    carbon_relabel['6'] = '5'
    ###############
    ## Plotting ###
    ###############
    first_tau = int(np.ceil(xrange[0] / tau_L)) * tau_L
    last_tau = int(np.ceil(xrange[1] / tau_L)) * tau_L
    last_tau_nr = int(np.ceil(xrange[1] / tau_L))
    fig = a.default_fig(figsize=(16, 4))
    ax = a.default_ax(fig)
    # ax.set_xlim(15.0,15.5)
    ax.set_title('')
    ax.set_xlabel(r'$\tau$ $(\mu s)$', fontsize=20)
    ax.set_ylabel(r'$\langle$X$\rangle$', fontsize=20)
    ax.set_xlim(xrange)
    #ax.hlines(0.,xrange[0],xrange[1],linestyles='dotted',linewidth = 1.5)
    start, end = ax.get_xlim()
    ax.xaxis.set_ticks(np.arange(np.ceil(xrange[0]), xrange[1], 1))
    ax.vlines(first_tau, 0.1, 2, linestyles='dotted', linewidth=1.5)
    for tau_value in np.arange(first_tau + tau_L, last_tau, tau_L):
        ax.vlines(tau_value, -2, 2, linestyles='dotted', linewidth=1.5)
    ax.tick_params(axis='x', which='major', labelsize=15)
    ax.tick_params(axis='y', which='major', labelsize=15)
    #ax.set_xticklabels(range(1,last_tau_nr+1))
    ax.set_ylim(-1.05, 1.05)
    handles = []
    ax.plot(a.sweep_pts, a.p0 * 2 - 1, '.-k', lw=0.4)  #N = 16
    if disp_sim_spin == True:
        colors = cm.rainbow(np.linspace(0, 1, n_sim_spins))
        for tt, carbon_nr in enumerate(carbons):
            h = ax.plot(tau_lst * 1e6,
                        FP_signal16[tt, :] * 2 - 1,
                        '-',
                        lw=.8,
                        label='C' + carbon_relabel[str(carbon_nr)],
                        color=colors[tt])
            handles.append(h)
    if False:
        tot_signal = np.ones(len(tau_lst))
        for tt in range(n_sim_spins):
            tot_signal = tot_signal * Mt16[tt, :]
        fin_signal = (tot_signal + 1) / 2.0
        ax.plot(tau_lst * 1e6, fin_signal, ':g', lw=.8, label='tot')

    #handles, labels = ax.get_legend_handles_labels()
    #order= [i[0] for i in sorted(enumerate(labels), key=lambda x:x[1])]
    #handles = handles[order]
    #labels = labels[order]
    # sort both labels and handles by labels

    #labels, handles = zip(*sorted(zip(labels, handles), key=lambda t: t[0]))
    #ax.legend(handles, labels)
    plt.legend(loc='lower left',
               frameon=False,
               fontsize=15,
               columnspacing=0.2,
               handletextpad=0.0)

    print folder
    plt.savefig(save_folder_str + 'fingerprint.pdf',
                format='pdf',
                bbox_inches='tight')
    plt.savefig(save_folder_str + 'fingerprint.png', format='png')
Ejemplo n.º 7
0
def fingerprint(disp_sim_spin=True, xlim=None):

    ###################
    ## Data location ##
    ###################

    timestamp = '20160110_170758'
    ssro_calib_folder = 'd:\\measuring\\data\\20160107\\172632_AdwinSSRO_SSROCalibration_Pippin_SIL1'
    a, folder = fp_funcs.load_mult_dat(timestamp,
                                       number_of_msmts=100,
                                       x_axis_step=0.1,
                                       x_axis_start=3.5,
                                       x_axis_pts_per_msmnt=51,
                                       ssro_calib_folder=ssro_calib_folder)

    #######################
    # Add simulated spins #
    #######################

    if disp_sim_spin == True:

        print 'Starting Simulation'
        HF_perp, HF_par = fp_funcs.get_hyperfine_params(ms='min', NV='Pippin')
        print 'HF_perp = ' + str(HF_perp)
        print 'HF_par = ' + str(HF_par)
        B_Field = 417.268
        tau_lst = np.linspace(0, 72e-6, 10000)
        Mt16 = SC.dyn_dec_signal(HFs_par=HF_par,
                                 HFs_orth=HF_perp,
                                 B_field=B_Field,
                                 N=32,
                                 tau=tau_lst)
        FP_signal16 = ((Mt16 + 1) / 2)

    ###############
    ## Plotting ###
    ###############

    fig = a.default_fig(figsize=(35, 5))
    ax = a.default_ax(fig)
    if xlim == None:
        ax.set_xlim(3.5, 13.5)
    else:
        ax.set_xlim(xlim)
    start, end = ax.get_xlim()
    ax.xaxis.set_ticks(np.arange(start, end, 0.5))

    ax.set_ylim(-0.05, 1.05)

    ax.plot(a.sweep_pts, a.p0, '.-k', lw=0.4, label='data')  #N = 16

    if disp_sim_spin == True:
        colors = cm.rainbow(np.linspace(0, 1, len(HF_par)))
        for tt in range(len(HF_par)):
            ax.plot(tau_lst * 1e6,
                    FP_signal16[tt, :],
                    '-',
                    lw=.8,
                    label='spin' + str(tt + 1),
                    color=colors[tt])
    if False:
        tot_signal = np.ones(len(tau_lst))
        for tt in range(len(HF_par)):
            tot_signal = tot_signal * Mt16[tt, :]
        fin_signal = (tot_signal + 1) / 2.0
        ax.plot(tau_lst * 1e6, fin_signal, ':g', lw=.8, label='tot')

    plt.legend(loc=4)

    print folder
    plt.savefig(os.path.join(folder,
                             str(disp_sim_spin) + 'fingerprint.pdf'),
                format='pdf')
    plt.savefig(os.path.join(folder,
                             str(disp_sim_spin) + 'fingerprint.png'),
                format='png')
def fingerprint(disp_sim_spin = True,n_sim_spins = 5,N=32,xrange = [0,20],carbons=[1,2,3,4,5]):



    ###################
    # Add simulated spins #
    ###################

    if disp_sim_spin == True:
            HF_perp, HF_par = fp_funcs.get_hyperfine_params(ms = 'min',carbon_spins=carbons)
            #msmp1_f from hdf5 file
            # msm1 from hdf5 file
            # ZFG g_factor from hdf5file
            B_Field = 403.555 # use magnet tools  Bz = (msp1_f**2 - msm1_f**2)/(4.*ZFS*g_factor)
            tau_L = 1/(1.0705e3*B_Field)*1e6
            print tau_L

            tau_lst = np.linspace(0,72e-6,10000)
            Mt16 = SC.dyn_dec_signal(HF_par,HF_perp,B_Field,N,tau_lst)
            FP_signal16 = ((Mt16+1)/2)

    ## Data location ##
    save_folder_str = 'D:/Dropbox/QEC LT/Decoupling memory/Fingerprints/N=' + str(N)
    if N==32:
      timestamp ='20141016_205842'
      ssro_calib_folder = 'D:\\measuring\\data\\20141016\\150451_AdwinSSRO_SSROCalibration_111_1_sil18'
      a, folder = load_mult_dat(timestamp, number_of_msmts = 40, ssro_calib_folder=ssro_calib_folder)

    elif N==64:
      timestamp ='20141016_234534'
      ssro_calib_folder = 'D:\\measuring\\data\\20141016\\150451_AdwinSSRO_SSROCalibration_111_1_sil18'
      a, folder = load_mult_dat(timestamp, number_of_msmts = 50, ssro_calib_folder=ssro_calib_folder)

    else:
      raise Exception('Only N=32 or N=64')
    print tau_L

    carbon_relabel = {}
    carbon_relabel['1'] = '2'
    carbon_relabel['2'] = '1'
    carbon_relabel['3'] = '4'
    carbon_relabel['5'] = '3'
    carbon_relabel['6'] = '5'
    ###############
    ## Plotting ###
    ###############
    first_tau = int(np.ceil(xrange[0]/tau_L))*tau_L
    last_tau = int(np.ceil(xrange[1]/tau_L))*tau_L
    last_tau_nr = int(np.ceil(xrange[1]/tau_L))
    fig = a.default_fig(figsize=(16,4))
    ax = a.default_ax(fig)
    # ax.set_xlim(15.0,15.5)
    ax.set_title('')
    ax.set_xlabel(r'$\tau$ $(\mu s)$',fontsize = 20)
    ax.set_ylabel(r'$\langle$X$\rangle$',fontsize = 20)
    ax.set_xlim(xrange)
    #ax.hlines(0.,xrange[0],xrange[1],linestyles='dotted',linewidth = 1.5)
    start, end = ax.get_xlim()
    ax.xaxis.set_ticks(np.arange(np.ceil(xrange[0]), xrange[1], 1))
    ax.vlines(first_tau,0.1,2,linestyles='dotted',linewidth=1.5)
    for tau_value in np.arange(first_tau+tau_L, last_tau, tau_L):
      ax.vlines(tau_value,-2,2,linestyles='dotted',linewidth=1.5)
    ax.tick_params(axis='x', which='major', labelsize=15)
    ax.tick_params(axis='y', which='major', labelsize=15)
    #ax.set_xticklabels(range(1,last_tau_nr+1))
    ax.set_ylim(-1.05,1.05)
    handles = []
    ax.plot(a.sweep_pts, a.p0*2-1, '.-k', lw=0.4) #N = 16
    if disp_sim_spin == True:
      colors = cm.rainbow(np.linspace(0, 1, n_sim_spins))
      for tt, carbon_nr in enumerate(carbons):
        h = ax.plot(tau_lst*1e6, FP_signal16[tt,:]*2-1 ,'-',lw=.8,label = 'C' + carbon_relabel[str(carbon_nr)], color = colors[tt])
        handles.append(h)
    if False:
        tot_signal = np.ones(len(tau_lst))
        for tt in range(n_sim_spins):
          tot_signal = tot_signal * Mt16[tt,:]
        fin_signal = (tot_signal+1)/2.0
        ax.plot(tau_lst*1e6, fin_signal,':g',lw=.8,label = 'tot')

    #handles, labels = ax.get_legend_handles_labels()
    #order= [i[0] for i in sorted(enumerate(labels), key=lambda x:x[1])]
    #handles = handles[order]
    #labels = labels[order]
    # sort both labels and handles by labels
    
    #labels, handles = zip(*sorted(zip(labels, handles), key=lambda t: t[0]))
    #ax.legend(handles, labels)
    plt.legend(loc='lower left',frameon=False,fontsize=15,columnspacing=0.2,handletextpad=0.0)

    print folder
    plt.savefig(save_folder_str+'fingerprint.pdf', format='pdf',bbox_inches='tight')
    plt.savefig(save_folder_str+'fingerprint.png', format='png')