def mzImages(filename_in_list,save_dir): import sys sys.path.append('C:\\Users\\Luca Rappez\\Desktop\\python_codebase\\') from pyMS.centroid_detection import gradient from pyIMS.hdf5.inMemoryIMS_hdf5 import inMemoryIMS_hdf5 from pyIMS.image_measures import level_sets_measure import matplotlib.pyplot as plt import numpy as np #%matplotlib inline import bokeh as bk from bokeh.plotting import output_notebook output_notebook() ppm = 0.75 if len(list)>2: raise ValueError('list should only have two entries') c_thresh=0.05 mz_list_all=[] for filename_in in filename_in_list: # Parse data IMS_dataset = inMemoryIMS_hdf5(filename_in) hist_axis,freq_spec = IMS_dataset.generate_summary_spectrum(summary_type='freq',ppm=ppm/2) # Centroid detection of frequency spectrum mz_list,count_list,idx_list = gradient(np.asarray(hist_axis),np.asarray(freq_spec),weighted_bins=2) mz_list=[m for m,c in zip(mz_list,count_list) if c>c_thresh] mz_list_all.append(mz_list) im_list = [m for m in mz_list_all[0] if any([1e6*(m-mm)/m<ppm for mm in mz_list_all[1]]) ] """# Calcualte MoC for images of all peaks nlevels=30 im_list={} for ii, c in enumerate(count_list): ion_image = IMS_dataset.get_ion_image(np.asarray([mz_list[ii],]),ppm) im = ion_image.xic_to_image(0) m,im_moc,levels,nobjs = level_sets_measure.measure_of_chaos(im,nlevels,interp='median') #just output measure value m=1-m im_list[mz_list[ii]]={'image':im,'moc':m,'freq':c} """ from pySpatialMetabolomics.tools import colourmaps c_map = colourmaps.get_colormap('grey')#if black images: open->save->rerun c_pal=[[int(255*cc) for cc in c_map(c)] for c in range(0,254)] # Export all images import png as pypng for filename_in in filename_in_list: # Parse data IMS_dataset = inMemoryIMS_hdf5(filename_in) for mz in im_list: with open('{}/{}_{}.png'.format(save_dir,mz,filename_in),'wb') as f_out: im_out = IMS_dataset.get_ion_image([mz,],[ppm,]).xic_to_image(0) im_out = 254*im_out/np.max(im_out) w,h = np.shape(im_out) w = pypng.Writer(h, w, palette=c_pal, bitdepth=8) w.write(f_out,im_out)
def mzImages(filename_in,save_dir): import sys sys.path.append('C:\\Users\\Luca Rappez\\Desktop\\python_codebase\\') from pyMS.centroid_detection import gradient from pyIMS.hdf5.inMemoryIMS_hdf5 import inMemoryIMS_hdf5 from pyIMS.image_measures import level_sets_measure import matplotlib.pyplot as plt import numpy as np #%matplotlib inline import bokeh as bk from bokeh.plotting import output_notebook output_notebook() print 'step1' #filename_in = '//psi.embl.de/alexandr/shared/Luca/20150825_CoCulture_Candida_Ecoli/20150821_ADP_LR_colony250K12_DHBsub_260x280_50um.hdf5' #using a temporary hdf5 based format #save_dir= '//psi.embl.de/alexandr/shared/Luca/20150825_CoCulture_Candida_Ecoli/20150821_ADP_LR_colony250K12_DHBsub_260x280_50um_figures' # Parse data IMS_dataset = inMemoryIMS_hdf5(filename_in) print 'In memory' ppm = 1.5 # Generate mean spectrum #hist_axis,mean_spec =IMS_dataset.generate_summary_spectrum(summary_type='mean') hist_axis,freq_spec = IMS_dataset.generate_summary_spectrum(summary_type='freq',ppm=ppm/2) #p1 = bk.plotting.figure() #p1.line(hist_axis,mean_spec/np.max(mean_spec),color='red') #p1.line(hist_axis,freq_spec/np.max(freq_spec),color='orange') #bk.plotting.show(p1) print len(hist_axis) #plt.figure(figsize=(20,10)) #plt.plot(hist_axis,freq_spec) #plt.show() # Centroid detection of frequency spectrum mz_list,count_list,idx_list = gradient(np.asarray(hist_axis),np.asarray(freq_spec),weighted_bins=2) c_thresh=0.05 moc_thresh=0.99 print np.sum(count_list>c_thresh) # Calcualte MoC for images of all peaks nlevels=30 im_list={} for ii, c in enumerate(count_list): #print ii #print c if c>c_thresh: ion_image = IMS_dataset.get_ion_image(np.asarray([mz_list[ii],]),ppm) im = ion_image.xic_to_image(0) m,im_moc,levels,nobjs = level_sets_measure.measure_of_chaos(im,nlevels,interp='median') #just output measure value m=1-m im_list[mz_list[ii]]={'image':im,'moc':m,'freq':c} from pySpatialMetabolomics.tools import colourmaps c_map = colourmaps.get_colormap('grey')#if black images: open->save->rerun c_pal=[[int(255*cc) for cc in c_map(c)] for c in range(0,254)] # Export all images import png as pypng for mz in im_list: if im_list[mz]['moc']>moc_thresh: with open('{}/{}_{}.png'.format(save_dir,mz,im_list[mz]['moc']),'wb') as f_out: im_out = im_list[mz]['image'] im_out = 254*im_out/np.max(im_out) w,h = np.shape(im_out) w = pypng.Writer(h, w, palette=c_pal, bitdepth=8) w.write(f_out,im_out) #im_out = im_list[mz]['image'] mz=333.334188269 ion_image = IMS_dataset.get_ion_image(np.asarray([mz,]),ppm) im_out=ion_image.xic_to_image(0) m,im_moc,levels,nobjs = level_sets_measure.measure_of_chaos(im,nlevels,interp='') #just output measure value print 1-m im_out = 254.*im_out/np.max(im_out) print mz #print im_list[mz]['moc'] #plt.figure() #plt.imshow(im_moc) #plt.show()