示例#1
0
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)
示例#2
0
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()