From now on we will not specify which packages to import. It's up to you to decide/understand what is needed. It's a safe bet to systematically import numpy and matplotlib.pyplot
import numpy as np
import matplotlib.pyplot as plt
import skimage.io as io
url = 'https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Mahler%2C_Gustav%2C_by_Moritz_N%C3%A4hr%2C_BNF_Gallica.jpg/1024px-Mahler%2C_Gustav%2C_by_Moritz_N%C3%A4hr%2C_BNF_Gallica.jpg'
image = io.imread(url)
plt.imshow(image)
plt.show()
import os
pwd
'/Users/gw18g940/Google Drive/BernMIC/ImageProcessingLecture/Python_image_processing/Exercises'
Since the exercise notebooks are in a subfolder, one has to go two levels higher to reach the Data folder. Alternatively, once can specifiy the full path.
filepath = '../../Data/BBBC007_v1_images/f9620'
files = os.listdir(filepath)
files
['20P1_POS0008_F_2UL.tif', '20P1_POS0011_F_2UL.tif', '20P1_POS0005_F_2UL.tif', '20P1_POS0008_D_1UL.tif', '20P1_POS0005_D_1UL.tif', '20P1_POS0011_D_1UL.tif', '20P1_POS0002_D_1UL.tif', '20P1_POS0010_F_2UL.tif', '20P1_POS0010_D_1UL.tif', '20P1_POS0002_F_2UL.tif', '20P1_POS0007_F_2UL.tif', '20P1_POS0007_D_1UL.tif']
import glob
glob.glob(filepath+'/*_F_2*')
['../../Data/BBBC007_v1_images/f9620/20P1_POS0008_F_2UL.tif', '../../Data/BBBC007_v1_images/f9620/20P1_POS0011_F_2UL.tif', '../../Data/BBBC007_v1_images/f9620/20P1_POS0005_F_2UL.tif', '../../Data/BBBC007_v1_images/f9620/20P1_POS0010_F_2UL.tif', '../../Data/BBBC007_v1_images/f9620/20P1_POS0002_F_2UL.tif', '../../Data/BBBC007_v1_images/f9620/20P1_POS0007_F_2UL.tif']
import re
matched = [re.findall('.*D\_1.*.tif',x) for x in files]
print(matched)
final_list = [x[0] for x in matched if len(x)>0]
print(final_list)
[[], [], [], ['20P1_POS0008_D_1UL.tif'], ['20P1_POS0005_D_1UL.tif'], ['20P1_POS0011_D_1UL.tif'], ['20P1_POS0002_D_1UL.tif'], [], ['20P1_POS0010_D_1UL.tif'], [], [], ['20P1_POS0007_D_1UL.tif']] ['20P1_POS0008_D_1UL.tif', '20P1_POS0005_D_1UL.tif', '20P1_POS0011_D_1UL.tif', '20P1_POS0002_D_1UL.tif', '20P1_POS0010_D_1UL.tif', '20P1_POS0007_D_1UL.tif']
Or alternatively
import glob
filelist_glob = glob.glob(filepath+'/*D_1*')
filelist_glob
['../../Data/BBBC007_v1_images/f9620/20P1_POS0008_D_1UL.tif', '../../Data/BBBC007_v1_images/f9620/20P1_POS0005_D_1UL.tif', '../../Data/BBBC007_v1_images/f9620/20P1_POS0011_D_1UL.tif', '../../Data/BBBC007_v1_images/f9620/20P1_POS0002_D_1UL.tif', '../../Data/BBBC007_v1_images/f9620/20P1_POS0010_D_1UL.tif', '../../Data/BBBC007_v1_images/f9620/20P1_POS0007_D_1UL.tif']
image_list = []
for x in filelist_glob:
temp_im = io.imread(x)
image_list.append(temp_im)
#creat a list with imported images
image_list = []
for x in final_list:
temp_im = io.imread(filepath+'/'+x)
image_list.append(temp_im)
#plot one of the images
plt.figure(figsize=(10,10))
plt.imshow(image_list[4], cmap = 'gray')
plt.show()
stack = io.imread('../../Data/2chZT/2chZT.lsm')
--------------------------------------------------------------------------- OSError Traceback (most recent call last) <ipython-input-28-fdfa11ab0faf> in <module> ----> 1 stack = io.imread('../../Data/2chZT/2chZT.lsm') ~/miniconda3/envs/teaching_test/lib/python3.6/site-packages/skimage/io/_io.py in imread(fname, as_gray, plugin, flatten, **plugin_args) 60 61 with file_or_url_context(fname) as fname: ---> 62 img = call_plugin('imread', fname, plugin=plugin, **plugin_args) 63 64 if not hasattr(img, 'ndim'): ~/miniconda3/envs/teaching_test/lib/python3.6/site-packages/skimage/io/manage_plugins.py in call_plugin(kind, *args, **kwargs) 212 (plugin, kind)) 213 --> 214 return func(*args, **kwargs) 215 216 ~/miniconda3/envs/teaching_test/lib/python3.6/site-packages/skimage/io/_plugins/pil_plugin.py in imread(fname, dtype, img_num, **kwargs) 34 if isinstance(fname, string_types): 35 with open(fname, 'rb') as f: ---> 36 im = Image.open(f) 37 return pil_to_ndarray(im, dtype=dtype, img_num=img_num) 38 else: ~/miniconda3/envs/teaching_test/lib/python3.6/site-packages/PIL/Image.py in open(fp, mode) 2685 warnings.warn(message) 2686 raise IOError("cannot identify image file %r" -> 2687 % (filename if filename else fp)) 2688 2689 # OSError: cannot identify image file <_io.BufferedReader name='../../Data/2chZT/2chZT.lsm'>
This didn't work. The function can't understand the file format because it's an LSM file (Zeiss format). Let's try to force it using the tifffile plugin:
stack = io.imread('../../Data//2chZT/2chZT.lsm',plugin='tifffile')
/Users/gw18g940/miniconda3/envs/teaching_test/lib/python3.6/site-packages/skimage/external/tifffile/tifffile.py:2694: UserWarning: empty byte count warnings.warn("empty byte count")
stack.shape
(19, 21, 2, 300, 400)
plt.imshow(stack[5,10,0,:,:])
plt.show()
from ipywidgets import interact, IntSlider
def plot_plane(t):
plt.imshow(stack[t,10,0,:,:])
plt.show()
max_time = stack.shape[0]-1
interact(plot_plane, t = IntSlider(min=0,max=max_time,step=1,value=0,continuous_update = True))
interactive(children=(IntSlider(value=0, description='t', max=18), Output()), _dom_classes=('widget-interact',…
<function __main__.plot_plane(t)>