コード例 #1
0
def ripple_minima(chi_file, background_file, background_level, composition,
                  qmin, qmaxinst):
    pwd = os.getcwd()
    if os.path.exists(os.path.join(pwd, 'ripple_minima_test')) is False:
        os.mkdir(os.path.join(pwd, 'ripple_minima_test'))
    ripple_list = []
    gr_list = []
    qmax_min = 18.5
    qmax_max = qmaxinst
    qmax_step = .01
    print 'Start qmax refinement'
    for qmax in np.arange(qmax_min, qmax_max, qmax_step):
        print qmax
        gr_file, bg, q=Calculate.pdfgetx3(
            chi_file,
            background_file,
            background_level,
            composition,
            qmax,
            qmin,
            qmax,
            'QA',
            os.path.join(pwd, 'ripple_minima_test', '@b_ripple_test_'+str(
                qmax).ljust(5,'0')+'.@o'))
        gr_file = os.path.join(pwd, 'ripple_minima_test', os.path.split(
            os.path.splitext(chi_file)[0])[1]+'_ripple_test_'+str(qmax).ljust(5,'0')+'.gr')
        x, y = IO.load_gr_file(gr_file)
        w = y - np.convolve(y, np.ones(3)/3, 'same')
        ripple_sum = np.sum(abs(w))
        ripple_list.append(ripple_sum)
        gr_list.append(gr_file)
    t = np.arange(qmax_min, qmax_max, qmax_step)
    ripple_array=np.array(ripple_list)
    minima_index = signal.argrelextrema(ripple_array, np.greater_equal,
                                        order=2*len(ripple_array)/100)[0]
    minima = ripple_array[minima_index]
    minima_q = t[minima_index]

    maxima_index = signal.argrelextrema(ripple_array, np.less_equal,
                                        order=2*len(ripple_array)/100)[0]
    maxima = ripple_array[maxima_index]
    maxima_q = t[maxima_index]

    plt.plot(t, ripple_array, 'g')
    plt.plot(minima_q, minima, 'o', markerfacecolor='none', mec='r')
    plt.plot(maxima_q, maxima, 'o', markerfacecolor='none', mec='b')
    plt.title('Ripples in PDF')
    plt.xlabel('Qmax (1/A)')
    plt.ylabel('Ripple Cumulative Sum')
    plt.show()
    plt.cla()

    # data_list = []
    # key_list = []
    # for minima_q_point in minima_q:
    #     data = IO.load_gr_file([x for x in gr_list if str(qmax) in x] [0])
    #     data_list_element = data
    #     key_list_element = minima_q_point
    #     data_list.append(data_list_element)
    #     key_list.append(key_list_element)
    # plot_stack(data_list, key_list)

    ziped_minima = zip(minima_q, minima)
    while True:
        for q, value in ziped_minima:
            print 'q= ', q,'rippleness= ', value
        qmax= float(raw_input('Please pick a qmax.  qmax= '))
        gr_file = [x for x in gr_list if str(qmax) in x] [0]
        print gr_file
        x, y = IO.load_gr_file(gr_file)
        plt.plot(x, y)
        plt.show()
        if raw_input('Is this the file you wanted? y/[n] ') == 'y':
            break
    return qmax
コード例 #2
0
                                                     background_file, background_level,
                       composition, qmax, qmin, qmaxinst, pdf_format, output)
    return gr_file, background_level, qmax, bg_refine_qmin_index, bg_refine_qmax_index

    # MODELS


if __name__ == "__main__":
    plt.ioff()
    chi_name = tif_to_iq(
        poni_file=None,
        image_path=None,
        mask_file=None,
        plot_verbose=True,
    )

    print 'Start PDF'
    gr_file, bg, calculated_qmax, bg_refine_qmin_index, bg_refine_qmax_index = \
        write_pdf(
            chi_file=None,
            background_file=None,
            composition='Ni.3Pd.7',
            plot_verbose=True,
            qmax='ripple',
            qmaxinst=27.1,
            bg_refine_qmin_index=None,
            bg_refine_qmax_index=None)

    radius, gr = IO.load_gr_file(gr_file)
    plt.plot(radius, gr)
    plt.show()