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
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()