diff --git a/Modules/Biophotonics/python/iMC/mc/batches.py b/Modules/Biophotonics/python/iMC/mc/batches.py index f2bc8040d1..76e0b2afb9 100644 --- a/Modules/Biophotonics/python/iMC/mc/batches.py +++ b/Modules/Biophotonics/python/iMC/mc/batches.py @@ -1,321 +1,331 @@ ''' Created on Oct 15, 2015 @author: wirkert ''' import numpy as np from pandas import DataFrame import pandas as pd + class AbstractBatch(object): """summarizes a batch of simulated mc spectra""" def __init__(self): self._nr_layers = 0 # internally keeps track of number of layers my_index = pd.MultiIndex(levels=[[], []], labels=[[], []]) self.df = DataFrame(columns=my_index) def create_parameters(self, nr_samples): """create the parameters for the batch, the simulation has to create the resulting reflectances""" pass def nr_elements(self): return self.df.shape[0] class GenericBatch(AbstractBatch): """generic n-layer batch with each layer having the same oxygenation """ def __init__(self): super(GenericBatch, self).__init__() def append_one_layer(self, saO2, nr_samples): """helper function to create parameters for one layer""" # scales data to lie between maxi and mini instead of 0 and 1 scale = lambda x, mini, maxi: x * (maxi - mini) + mini # shortcut to random generator gen = np.random.random_sample gen_n = np.random.normal # create layer elements self.df["layer" + str(self._nr_layers), "vhb"] = \ scale(gen(nr_samples), 0, 1.) self.df["layer" + str(self._nr_layers), "sao2"] = \ saO2 self.df["layer" + str(self._nr_layers), "a_mie"] = \ np.clip(gen_n(loc=18.9, scale=10.2, size=nr_samples), 0.1, np.inf) * 100 # to 1/m self.df["layer" + str(self._nr_layers), "b_mie"] = \ np.clip(gen_n(loc=1.286, scale=0.521, size=nr_samples), 0, np.inf) self.df["layer" + str(self._nr_layers), "d"] = \ scale(gen(nr_samples), 0, 1.) self.df["layer" + str(self._nr_layers), "n"] = \ scale(gen(nr_samples), 1.33, 1.54) self.df["layer" + str(self._nr_layers), "g"] = \ scale(gen(nr_samples), 0.8, 0.95) self._nr_layers += 1 def create_parameters(self, nr_samples): """Create generic three layer batch with a total diameter of 2mm. saO2 is the same in all layers, but all other parameters vary randomly within each layer""" saO2 = np.random.random_sample(size=nr_samples) # create three layers with random samples self.append_one_layer(saO2, nr_samples) self.append_one_layer(saO2, nr_samples) self.append_one_layer(saO2, nr_samples) # "normalize" d to 2mm # first extract all layers from df self.df layers = [l for l in self.df.columns.levels[0] if "layer" in l] # summarize all ds sum_d = 0 for l in layers: sum_d += self.df[l, "d"] for l in layers: self.df[l, "d"] = self.df[l, "d"] / sum_d * 2000. * 10 ** -6 self.df[l, "d"] = np.clip(self.df[l, "d"], 25 * 10 ** -6, np.inf) + return self.df class GenericBatch(AbstractBatch): """generic n-layer batch with each layer having the same oxygenation """ def __init__(self): super(GenericBatch, self).__init__() def append_one_layer(self, saO2, nr_samples): """helper function to create parameters for one layer""" # scales data to lie between maxi and mini instead of 0 and 1 scale = lambda x, mini, maxi: x * (maxi - mini) + mini # shortcut to random generator gen = np.random.random_sample gen_n = np.random.normal # create layer elements self.df["layer" + str(self._nr_layers), "vhb"] = \ scale(gen(nr_samples), 0, 1.) self.df["layer" + str(self._nr_layers), "sao2"] = \ saO2 self.df["layer" + str(self._nr_layers), "a_mie"] = \ np.clip(gen_n(loc=18.9, scale=10.2, size=nr_samples), 0.1, np.inf) * 100 # to 1/m self.df["layer" + str(self._nr_layers), "b_mie"] = \ np.clip(gen_n(loc=1.286, scale=0.521, size=nr_samples), 0, np.inf) self.df["layer" + str(self._nr_layers), "d"] = \ scale(gen(nr_samples), 0, 1.) self.df["layer" + str(self._nr_layers), "n"] = \ scale(gen(nr_samples), 1.33, 1.54) self.df["layer" + str(self._nr_layers), "g"] = \ scale(gen(nr_samples), 0.8, 0.95) self._nr_layers += 1 def create_parameters(self, nr_samples): """Create generic three layer batch with a total diameter of 2mm. saO2 is the same in all layers, but all other parameters vary randomly within each layer""" saO2 = np.random.random_sample(size=nr_samples) # create three layers with random samples self.append_one_layer(saO2, nr_samples) self.append_one_layer(saO2, nr_samples) self.append_one_layer(saO2, nr_samples) # "normalize" d to 2mm # first extract all layers from df self.df layers = [l for l in self.df.columns.levels[0] if "layer" in l] # summarize all ds sum_d = 0 for l in layers: sum_d += self.df[l, "d"] for l in layers: self.df[l, "d"] = self.df[l, "d"] / sum_d * 2000. * 10 ** -6 self.df[l, "d"] = np.clip(self.df[l, "d"], 25 * 10 ** -6, np.inf) + return self.df + class LessGenericBatch(AbstractBatch): """less generic three layer batch. This only varies blood volume fraction w.r.t. the ColonMuscleBatch. Let's see if DA works in this case.""" def __init__(self): super(LessGenericBatch, self).__init__() def append_one_layer(self, saO2, n, d_ranges, nr_samples): """helper function to create parameters for one layer""" # scales data to lie between maxi and mini instead of 0 and 1 scale = lambda x, mini, maxi: x * (maxi - mini) + mini # shortcut to random generator gen = np.random.random_sample # create as generic batch super(LessGenericBatch, self).append_one_layer(saO2, nr_samples) self._nr_layers -= 1 # we're not finished # but some changes in specific layer elements # more specific layer thicknesses self.df["layer" + str(self._nr_layers), "d"] = \ scale(gen(nr_samples), d_ranges[0], d_ranges[1]) # more specific n self.df["layer" + str(self._nr_layers), "n"] = \ n self._nr_layers += 1 def create_parameters(self, nr_samples): """Create generic three layer batch with a total diameter of 2mm. saO2 is the same in all layers, but all other parameters vary randomly within each layer""" saO2 = np.random.random_sample(size=nr_samples) n = np.ones_like(saO2) # create three layers with random samples # muscle self.append_one_layer(saO2, n * 1.36, (600.*10 ** -6, 1010.*10 ** -6), nr_samples) # submucosa self.append_one_layer(saO2, n * 1.36, (415.*10 ** -6, 847.*10 ** -6), nr_samples) # mucosa self.append_one_layer(saO2, n * 1.38, (395.*10 ** -6, 603.*10 ** -6), nr_samples) + return self.df + class ColonMuscleBatch(GenericBatch): """three layer batch simulating colonic tissue""" def __init__(self): super(ColonMuscleBatch, self).__init__() def append_one_layer(self, saO2, n, d_ranges, nr_samples): """helper function to create parameters for one layer""" # scales data to lie between maxi and mini instead of 0 and 1 scale = lambda x, mini, maxi: x * (maxi - mini) + mini # shortcut to random generator gen = np.random.random_sample # create as generic batch super(ColonMuscleBatch, self).append_one_layer(saO2, nr_samples) self._nr_layers -= 1 # we're not finished # but some changes in specific layer elements # less blood self.df["layer" + str(self._nr_layers), "vhb"] = \ scale(gen(nr_samples), 0, 0.1) # more specific layer thicknesses self.df["layer" + str(self._nr_layers), "d"] = \ scale(gen(nr_samples), d_ranges[0], d_ranges[1]) # more specific n self.df["layer" + str(self._nr_layers), "n"] = \ n self._nr_layers += 1 def create_parameters(self, nr_samples): """Create generic three layer batch with a total diameter of 2mm. saO2 is the same in all layers, but all other parameters vary randomly within each layer""" saO2 = np.random.random_sample(size=nr_samples) n = np.ones_like(saO2) # create three layers with random samples # muscle self.append_one_layer(saO2, n * 1.36, (600.*10 ** -6, 1010.*10 ** -6), nr_samples) # submucosa self.append_one_layer(saO2, n * 1.36, (415.*10 ** -6, 847.*10 ** -6), nr_samples) # mucosa self.append_one_layer(saO2, n * 1.38, (395.*10 ** -6, 603.*10 ** -6), nr_samples) + return self.df + class GenericMeanScatteringBatch(GenericBatch): """three layer batch simulating colonic tissue""" def __init__(self): super(GenericMeanScatteringBatch, self).__init__() def append_one_layer(self, saO2, nr_samples): """helper function to create parameters for one layer""" # create as generic batch super(GenericMeanScatteringBatch, self).append_one_layer(saO2, nr_samples) self._nr_layers -= 1 # we're not finished # restrict exponential scattering to mean value for soft tissue. self.df["layer" + str(self._nr_layers), "b_mie"] = 1.286 self._nr_layers += 1 class ColonMuscleMeanScatteringBatch(ColonMuscleBatch): """three layer batch simulating colonic tissue""" def __init__(self): super(ColonMuscleMeanScatteringBatch, self).__init__() def append_one_layer(self, saO2, n, d_ranges, nr_samples): """helper function to create parameters for one layer""" # create as generic batch super(ColonMuscleMeanScatteringBatch, self).append_one_layer(saO2, n, d_ranges, nr_samples) self._nr_layers -= 1 # we're not finished # restrict exponential scattering to mean value for soft tissue. self.df["layer" + str(self._nr_layers), "b_mie"] = 1.286 self._nr_layers += 1 class VisualizationBatch(AbstractBatch): """batch used for visualization of different spectra. Feel free to adapt for your visualization purposes.""" def __init__(self): super(VisualizationBatch, self).__init__() def append_one_layer(self, vhb, sao2, a_mie, b_mie, d, n, g, nr_samples): """helper function to create parameters for one layer""" # create layer elements self.df["layer" + str(self._nr_layers), "vhb"] = vhb self.df["layer" + str(self._nr_layers), "sao2"] = sao2 self.df["layer" + str(self._nr_layers), "a_mie"] = a_mie self.df["layer" + str(self._nr_layers), "b_mie"] = b_mie self.df["layer" + str(self._nr_layers), "d"] = d self.df["layer" + str(self._nr_layers), "n"] = n self.df["layer" + str(self._nr_layers), "g"] = g self._nr_layers += 1 def create_parameters(self, nr_samples): # bvf = np.linspace(0.0, .1, nr_samples) # saO2 = np.linspace(0., 1., nr_samples) # d = np.linspace(175, 735, nr_samples) * 10 ** -6 # a_mie = np.linspace(5., 30., nr_samples) * 100 # a_ray = np.linspace(0., 60., nr_samples) * 100 # n = np.linspace(1.33, 1.54, nr_samples) # g = np.linspace(0, 0.95, nr_samples) # create three layers with random samples self.append_one_layer([0.1, 0.02], [0.7, 0.1], 18.9*100., 1.286, 500 * 10 ** -6, 1.38, 0.9, nr_samples) self.append_one_layer(0.04, 0.7, 18.9*100., 1.286, 500 * 10 ** -6, 1.36, 0.9, nr_samples) self.append_one_layer(0.04, 0.7, 18.9*100., 1.286, 500 * 10 ** -6, 1.36, 0.9, nr_samples) + + return self.df diff --git a/Modules/Biophotonics/python/iMC/mc/create_spectrum.py b/Modules/Biophotonics/python/iMC/mc/create_spectrum.py new file mode 100644 index 0000000000..8d42ea197c --- /dev/null +++ b/Modules/Biophotonics/python/iMC/mc/create_spectrum.py @@ -0,0 +1,41 @@ + +import logging +import time +import os + +from mc.sim import get_diffuse_reflectance + + +def create_spectrum(tissue_model, sim_wrapper, wavelengths): + """ + Create a whole spectrum from one instance (dataframe_row) using our + tissue model at wavelength wavelength. + + Args: + tissue_model: the model which should be used to generate the + spectrum + sim_wrapper: the simulation which should be used to generate the + reflectances + wavelengths: the wavelengths which shall be simulated + + Returns: the simulated reflectances + """ + start = time.time() + # map the _wavelengths array to reflectance list + + def wavelength_to_reflectance(wavelength): + # helper function to determine the reflectance for a given + # wavelength using the current model and simulation + tissue_model.set_wavelength(wavelength) + tissue_model.create_mci_file() + sim_wrapper.run_simulation() + simulation_path = os.path.split(sim_wrapper.mcml_executable)[0] + return get_diffuse_reflectance(os.path.join(simulation_path, + tissue_model. + get_mco_filename())) + reflectances = map(wavelength_to_reflectance, wavelengths) + end = time.time() + # success! + logging.info("successfully ran simulation in " + + "{:.2f}".format(end - start) + " seconds") + return reflectances diff --git a/Modules/Biophotonics/python/iMC/mc/dfmanipulations.py b/Modules/Biophotonics/python/iMC/mc/dfmanipulations.py index b2ac14f675..2d94ee8616 100644 --- a/Modules/Biophotonics/python/iMC/mc/dfmanipulations.py +++ b/Modules/Biophotonics/python/iMC/mc/dfmanipulations.py @@ -1,43 +1,46 @@ ''' Created on Oct 19, 2015 @author: wirkert ''' from scipy.interpolate import interp1d import pandas as pd def fold_by_sliding_average(df, window_size): """take a batch and apply a sliding average with given window size to the reflectances. window_size is elements to the left and to the right. There will be some boundary effect on the edges.""" # next line does the folding. df.reflectances = pd.rolling_mean(df.reflectances.T, window_size, - center=True).T + center=True).T # let's get rid of NaN columns which are created at the boundaries df.dropna(axis="columns", inplace=True) + return df def switch_reflectances(df, new_wavelengths, new_reflectances): df.drop(df["reflectances"].columns, axis=1, level=1, inplace=True) for i, nw in enumerate(new_wavelengths): df["reflectances", nw] = new_reflectances[:, i] + return df def interpolate_wavelengths(df, new_wavelengths): """ interpolate image data to fit new_wavelengths. Current implementation performs simple linear interpolation. Neither existing nor new _wavelengths need to be sorted. """ # build an interpolator using the inormation provided by the dataframes # reflectance column interpolator = interp1d(df.reflectances.columns.astype(float), df.reflectances.as_matrix(), assume_sorted=False, bounds_error=False) # use this to create new reflectances new_reflectances = interpolator(new_wavelengths) # build a new dataframe out of this information and set the original df # to the new information. This seems hacky, can't it be done easier? switch_reflectances(df, new_wavelengths, new_reflectances) + return df diff --git a/Modules/Biophotonics/python/iMC/mc/sim.py b/Modules/Biophotonics/python/iMC/mc/sim.py index 5cbf268c57..f629a25d99 100644 --- a/Modules/Biophotonics/python/iMC/mc/sim.py +++ b/Modules/Biophotonics/python/iMC/mc/sim.py @@ -1,208 +1,211 @@ ''' Created on Sep 8, 2015 This file contains methods which wrap the mcml simulation so it can be conveniently called from python. One example for a mcml simulation would be gpumcml: https://code.google.com/p/gpumcml/ @author: wirkert ''' import os import contextlib import logging import subprocess32 """ helper method to change to the correct path and back again """ @contextlib.contextmanager def cd(newPath): savedPath = os.getcwd() os.chdir(newPath) yield os.chdir(savedPath) class MciWrapper(object): ''' this class provides a wrapper to the mcml monte carlo file. Its purpose is to create a .mci file which the mcml simulation can use to create the simulation ''' def set_mci_filename(self, mci_filename): self.mci_filename = mci_filename def set_mco_filename(self, mco_filename): """path of the mco file. This can be either a path relative to the mcml executable or an absolute path. BUG: it seems that it can only be relative file name """ self.mco_filename = mco_filename def set_nr_photons(self, nr_photons): self.nr_photons = nr_photons def add_layer(self, n=None, ua=None, us=None, g=None, d=None): """adds a layer below the currently existing ones. Arguments: n: Refraction index of medium ua: absorption coefficient [1/m] us: scattering coefficient [1/m] g: anisotropy factor d: thickness of layer [m] """ if n is None: n = 1. if ua is None: ua = 0. if us is None: us = 0. if g is None: g = 1. if d is None: d = 500.*10 ** -6 self.layers.append([n, ua, us, g, d]) def set_layer(self, layer_nr, n, ua, us, g, d): """set a layer with a specific layer_nr (stariting with layer_nr 0). Note that the layer must already exist, otherwise an error will occure """ self.layers[layer_nr] = [n, ua, us, g, d] def set_file_version(self, file_version): self.file_version = file_version def set_nr_runs(self, nr_runs): self.nr_runs = nr_runs def set_dz_dr(self, dz, dr): self.dz = dz self.dr = dr def set_nr_dz_dr_da(self, nr_dz, nr_dr, nr_da): self.nr_dz = nr_dz self.nr_dr = nr_dr self.nr_da = nr_da def set_n_medium_above(self, n_above): self.n_above = n_above def set_n_medium_below(self, n_below): self.n_below = n_below def create_mci_file(self): """this method creates the mci file at the location self.mci_filename""" open(self.mci_filename, 'a').close() f = open(self.mci_filename, 'w') # write general information f.write(str(self.file_version) + " # file version\n") f.write(str(self.nr_runs) + " # number of runs\n\n") # write the data for run f.write(self.mco_filename + " A # output filename, ASCII/Binary\n") f.write(str(self.nr_photons) + " # No. of photons\n") f.write(repr(self.dz) + " " + repr(self.dr) + " # dz, dr\n") f.write(repr(self.nr_dz) + " " + repr(self.nr_dr) + " " + repr(self.nr_da) + " # No. of dz, dr & da.\n\n") # write layer information f.write(str(len(self.layers)) + " # No. of layers\n") f.write("# n mua mus g d # One line for each layer\n") f.write(repr(self.n_above) + " # n for medium above.\n") for layer in self.layers: # factors (/100.; *100.) to convert to mcml expected units: f.write("%.3f" % layer[0] + " " + # n "%.5f" % (layer[1] / 100.) + " " + # ua "%.5f" % (layer[2] / 100.) + " " + # us "%.3f" % layer[3] + " " + # g "%.3f" % (layer[4] * 100.) + "\n") # d f.write(repr(self.n_below) + " # n for medium below.\n") f.close() + if not os.path.isfile(self.mci_filename): + raise IOError("input file for monte carlo simulation not " + + "succesfully created") def __init__(self): # set standard parameters self.file_version = 1.0 self.nr_photons = 10**6 self.nr_runs = 1 self.dz = 0.002 self.dr = 2 self.nr_dz = 500 self.nr_dr = 1 self.nr_da = 1 self.n_above = 1.0 self.n_below = 1.0 # initialize to 0 layers self.layers = [] class SimWrapper(object): def set_mci_filename(self, mci_filename): """the full path to the input file. E.g. ./data/my.mci """ self.mci_filename = mci_filename def set_mcml_executable(self, mcml_executable): """ the full path of the excutable. E.g. ./mcml/mcml.exe""" self.mcml_executable = mcml_executable def run_simulation(self): """this method runs a monte carlo simulation""" mcml_path, mcml_file = os.path.split(self.mcml_executable) abs_mci_filename = os.path.abspath(self.mci_filename) # note: the -A option makes gpumcml much faster, but is not available # in original mcml. Maybe a switch should be introduced here args = ("./" + mcml_file, "-A", abs_mci_filename) # switch to folder where mcml resides in and execute it. with cd(mcml_path): try: popen = subprocess32.Popen(args, stdout=subprocess32.PIPE) popen.wait(timeout=100) except: logging.error("couldn't run simulation") # popen.kill() def __init__(self): pass def get_diffuse_reflectance(mco_filename): """ extract reflectance from mco file. Attention: mco_filename specifies full path. Returns: the reflectance """ with open(mco_filename) as myFile: for line in myFile: if "Diffuse reflectance" in line: return float(line.split(' ', 1)[0]) def get_specular_reflectance(mco_filename): """ extract reflectance from mco file. Attention: mco_filename specifies full path. Returns: the reflectance """ with open(mco_filename) as myFile: for line in myFile: if "Specular reflectance" in line: return float(line.split(' ', 1)[0]) def get_total_reflectance(mco_filename): """ extract reflectance from mco file. Attention: mco_filename specifies full path. Returns: the reflectance """ return get_diffuse_reflectance(mco_filename) + \ get_specular_reflectance(mco_filename) diff --git a/Modules/Biophotonics/python/iMC/mc/tissuemodels.py b/Modules/Biophotonics/python/iMC/mc/tissuemodels.py index 4b35c1a42e..7bcdc7806e 100644 --- a/Modules/Biophotonics/python/iMC/mc/tissuemodels.py +++ b/Modules/Biophotonics/python/iMC/mc/tissuemodels.py @@ -1,135 +1,141 @@ ''' Created on Sep 9, 2015 @author: wirkert ''' import numpy as np from mc.sim import MciWrapper from mc.usuag import Ua, UsgJacques class AbstractTissue(object): ''' Initializes a abstract tissue model" ''' def set_nr_photons(self, nr_photons): self._mci_wrapper.set_nr_photons(nr_photons) def set_mci_filename(self, mci_filename): self._mci_wrapper.set_mci_filename(mci_filename) def set_mco_filename(self, mco_filename): self._mci_wrapper.set_mco_filename(mco_filename) + def get_mco_filename(self): + return self._mci_wrapper.mco_filename + def set_wavelength(self, wavelength): self.wavelength = wavelength def create_mci_file(self): # set layers for i, ua in enumerate(self.uas): self._mci_wrapper.set_layer(i, # layer nr self.ns[i], # refraction index self.uas[i](self.wavelength), # ua self.usgs[i](self.wavelength)[0], # us self.usgs[i](self.wavelength)[1], # g self.ds[i]) # d # now that the layers have been updated: create file self._mci_wrapper.create_mci_file() def __str__(self): """ Overwrite this method! print the current model""" model_string = "" return model_string def __init__(self, ns, uas, usgs, ds): self._mci_wrapper = MciWrapper() self.wavelength = 500.*10**9 # standard wavelength, should be set. self.uas = uas self.usgs = usgs self.ds = ds self.ns = ns # initially create layers. these will be overwritten as soon # as create_mci_file is called. for i in enumerate(uas): self._mci_wrapper.add_layer() class GenericTissue(AbstractTissue): ''' Initializes a 3-layer generic tissue model ''' - def set_dataframe_element(self, df, element): - """take the element element of the batch and set the tissue to - resemble the structure specified by this""" - layers = [l for l in df.columns.levels[0] if "layer" in l] + def set_dataframe_row(self, df_row): + """take one example (one row) of a created batch and set the tissue to + resemble the structure specified by this row + + Args: + df_row: one row of a dataframe created by a batch.""" + layers = [l for l in df_row.index.levels[0] if "layer" in l] for i, l in enumerate(layers): self.set_layer(i, - df[l, "vhb"][element], - df[l, "sao2"][element], - df[l, "a_mie"][element], - df[l, "b_mie"][element], - df[l, "d"][element], - df[l, "n"][element], - df[l, "g"][element]) + df_row[l, "vhb"], + df_row[l, "sao2"], + df_row[l, "a_mie"], + df_row[l, "b_mie"], + df_row[l, "d"], + df_row[l, "n"], + df_row[l, "g"]) def set_layer(self, layer_nr=0, bvf=None, saO2=None, a_mie=None, b_mie=None, d=None, n=None, g=None): """Helper function to set one layer.""" if bvf is None: bvf = 0.02 if saO2 is None: saO2 = 0.7 if a_mie is None: a_mie = 10. * 100 if d is None: d = 500. * 10 ** -6 if b_mie is None: b_mie = 1.286 if n is None: n = 1.38 if g is None: g = 0. # build obejct for absorption coefficient determination self.uas[layer_nr].bvf = bvf self.uas[layer_nr].saO2 = saO2 # and one for scattering coefficient self.usgs[layer_nr].a_mie = a_mie self.usgs[layer_nr].a_ray = 0. self.usgs[layer_nr].b_mie = b_mie self.usgs[layer_nr].g = g self.ds[layer_nr] = d self.ns[layer_nr] = n def __str__(self): """print the current model""" model_string = "" for i, ua in enumerate(self.uas): layer_string = "layer " + str(i) + \ " - vhb: " + "%.1f" % (self.uas[i].bvf * 100.) + \ "%; sao2: " + "%.1f" % (self.uas[i].saO2 * 100.) + \ "%; a_mie: " + "%.2f" % (self.usgs[i].a_mie / 100.) + \ "cm^-1; a_ray: " + "%.2f" % (self.usgs[i].a_ray / 100.) + \ "cm^-1; b_mie: " + "%.3f" % self.usgs[i].b_mie + \ "; d: " + "%.0f" % (self.ds[i] * 10 ** 6) + "um" + \ "; n: " + "%.2f" % (self.ns[i]) + \ "; g: " + "%.2f" % self.usgs[i].g + "\n" model_string += layer_string return model_string def __init__(self, nr_layers=3): uas = [] usgs = [] for i in range(nr_layers): uas.append(Ua()) usgs.append(UsgJacques()) ds = np.ones(nr_layers, dtype=float) * 500.*10 ** -6 ns = np.ones(nr_layers, dtype=float) * 1.38 super(GenericTissue, self).__init__(ns, uas, usgs, ds) diff --git a/Modules/Biophotonics/python/iMC/regression/demo.py b/Modules/Biophotonics/python/iMC/regression/demo.py deleted file mode 100644 index c4717ca45e..0000000000 --- a/Modules/Biophotonics/python/iMC/regression/demo.py +++ /dev/null @@ -1,107 +0,0 @@ -''' -Created on Oct 19, 2015 - -@author: wirkert -''' - - -from tabulate import tabulate # do sudo pip install tabulate -import numpy as np -from sklearn.linear_model import LinearRegression -from sklearn.ensemble import RandomForestRegressor -from sklearn.grid_search import GridSearchCV -from sklearn.cross_validation import KFold -from sklearn.preprocessing import Normalizer -from sklearn.metrics import r2_score - -from linear import LinearSaO2Unmixing -from domain_adaptation import estimate_logistic_regressor, resample - -def get_data_from_batch(filenameprefix): - """returns (X,y): X are absorptions represented by an array of shape - [nr_samples x nr_wavelengths]. y an array of shape [nr_samples] - representing the oxygenation values """ - reflectances = np.load(filenameprefix + "_reflectances.npy") - saO2 = np.load(filenameprefix + "_saO2.npy") - # add noise to reflectances - noises = np.random.normal(loc=0., scale=0.15, size=reflectances.shape) - reflectances += noises * reflectances - reflectances = np.clip(reflectances, 0.00001, 1.) - # normalize reflectances - normalizer = Normalizer(norm='l1') - reflectances = normalizer.transform(reflectances) - # transform to absorption - absorptions = -np.log(reflectances) - return absorptions, saO2 - - -if __name__ == '__main__': - # first load training and testing data - X_train, oxy_train = get_data_from_batch("/media/wirkert/data/Data/temp/" + - "hard_train_2") - X_gaussian_train, oxy_gaussian_train = get_data_from_batch("/media/wirkert/data/Data/temp/" + - "gaussian_train_2") - X_test, oxy_test = get_data_from_batch("/media/wirkert/data/Data/temp/" + - "gaussian_test") - - # do domain adaptation - lr = estimate_logistic_regressor(X_train, X_gaussian_train) - weights = lr.predict_proba(X_train)[:, 1] / lr.predict_proba(X_train)[:, 0] - - # do standard linear unmixing - linear_unmixing = LinearSaO2Unmixing() - predicted_oxy_lu = linear_unmixing.predict(X_test) - - # learn linear regression from data - X_train, oxy_train, weights = resample(X_train, oxy_train, weights) - # do weighting of samples - X_train_w = X_train # * np.sqrt(weights)[:, None] - oxy_train_w = oxy_train # * np.sqrt(weights) - linear_regression = LinearRegression(fit_intercept=False) - linear_regression.fit(X_train, oxy_train_w) - predicted_oxy_lr = linear_regression.predict(X_test) - - # use the random forest regressor - kf = KFold(X_train.shape[0], 5, shuffle=True) - param_grid = [ - {"n_estimators": np.array([50]), - "max_depth": np.arange(5, 15, 2), - "min_samples_leaf": np.array([5, 7, 10, 15])}] - # train forest - rf = GridSearchCV(RandomForestRegressor(50, max_depth=10, n_jobs=-1), - param_grid, cv=kf, n_jobs=-1) - rf = RandomForestRegressor(50, max_depth=11, min_samples_leaf=5, - n_jobs=-1) - rf.fit(X_train, oxy_train) - predicted_oxy_rf = rf.predict(X_test) - - # nicely print each sample, its true value and its predicted values - np.set_printoptions(precision=2) # why doesn't this work? - data = np.vstack((oxy_test, - predicted_oxy_lu, predicted_oxy_lr, predicted_oxy_rf)).T - print "detailed results:" - regressor_list = ["lin unmixing", "lin regression", "rf regression"] - print tabulate(data, headers=["true value"] + regressor_list) - - print "\nr2 scores" - print "lin unmixing, lin regression, rf regression" - print r2_score(oxy_test, predicted_oxy_lu), \ - linear_regression.score(X_test, oxy_test), \ - rf.score(X_test, oxy_test) - - print "\nabs mean errors" - f = lambda x: np.mean(np.abs(x - oxy_test)) - print "lin unmixing, lin regression, rf regression" - print f(predicted_oxy_lu), f(predicted_oxy_lr), f(predicted_oxy_rf) - - print "\nabs error lower percentile" - f = lambda x: np.percentile(np.abs(x - oxy_test), 25, axis=0) - print "lin unmixing, lin regression, rf regression" - print f(predicted_oxy_lu), f(predicted_oxy_lr), f(predicted_oxy_rf) - - print "\nabs error higher percentile" - f = lambda x: np.percentile(np.abs(x - oxy_test), 75, axis=0) - print "lin unmixing, lin regression, rf regression" - print f(predicted_oxy_lu), f(predicted_oxy_lr), f(predicted_oxy_rf) - - diff --git a/Modules/Biophotonics/python/iMC/scripts/ipcai2016/script_calculate_spectra.py b/Modules/Biophotonics/python/iMC/scripts/ipcai2016/script_calculate_spectra.py index 34abeb1d76..74cce1661f 100644 --- a/Modules/Biophotonics/python/iMC/scripts/ipcai2016/script_calculate_spectra.py +++ b/Modules/Biophotonics/python/iMC/scripts/ipcai2016/script_calculate_spectra.py @@ -1,132 +1,118 @@ ''' Created on Sep 9, 2015 @author: wirkert ''' import logging import datetime import os import time import numpy as np import luigi import scriptpaths as sp import mc.factories as mcfac -from mc.sim import SimWrapper, get_diffuse_reflectance +from mc.sim import SimWrapper +from mc.create_spectrum import create_spectrum # parameter setting NR_BATCHES = 100 NR_ELEMENTS_IN_BATCH = 1000 # the wavelengths to be simulated WAVELENGHTS = np.arange(450, 720, 2) * 10 ** -9 NR_PHOTONS = 10 ** 6 # experiment configuration MCI_FILENAME = "./temp.mci" MCO_FILENAME = "temp.mco" # this path definitly needs to be adapted by you PATH_TO_MCML = "/home/wirkert/workspace/monteCarlo/gpumcml/fast-gpumcml/" EXEC_MCML = "gpumcml.sm_20" class CreateSpectraTask(luigi.Task): df_prefix = luigi.Parameter() batch_nr = luigi.IntParameter() nr_samples = luigi.IntParameter() factory = luigi.Parameter() def output(self): return luigi.LocalTarget(os.path.join(sp.MC_DATA_FOLDER, self.df_prefix + "_" + str(self.batch_nr) + ".txt")) def run(self): start = time.time() # setup simulation wrapper - self.sim_wrapper = SimWrapper() - self.sim_wrapper.set_mci_filename(MCI_FILENAME) - self.sim_wrapper.set_mcml_executable(PATH_TO_MCML + EXEC_MCML) + sim_wrapper = SimWrapper() + sim_wrapper.set_mci_filename(MCI_FILENAME) + sim_wrapper.set_mcml_executable(os.path.join(PATH_TO_MCML, EXEC_MCML)) # setup model - self.tissue_model = self.factory.create_tissue_model() - self.tissue_model.set_mci_filename(self.sim_wrapper.mci_filename) - self.tissue_model.set_mco_filename(MCO_FILENAME) - self.tissue_model.set_nr_photons(NR_PHOTONS) + tissue_model = self.factory.create_tissue_model() + tissue_model.set_mci_filename(sim_wrapper.mci_filename) + tissue_model.set_mco_filename(MCO_FILENAME) + tissue_model.set_nr_photons(NR_PHOTONS) # setup array in which data shall be stored batch = self.factory.create_batch_to_simulate() batch.create_parameters(self.nr_samples) # dataframe created by batch: df = batch.df # add reflectance column to dataframe for w in WAVELENGHTS: df["reflectances", w] = np.NAN # for each instance of our tissue model for i in range(df.shape[0]): - self.tissue_model.set_dataframe_element(df, i) + # set the desired element in the dataframe to be simulated + tissue_model.set_dataframe_row(df.loc[i, :]) logging.info("running simulation " + str(i) + " for\n" + - str(self.tissue_model)) - start = time.time() - # map the _wavelengths array to reflectance list - reflectances = map(self.wavelength_to_reflectance, - WAVELENGHTS) - end = time.time() + str(tissue_model)) + reflectances = create_spectrum(tissue_model, sim_wrapper, + WAVELENGHTS) # store in dataframe for r, w in zip(reflectances, WAVELENGHTS): df["reflectances", w][i] = r - # success! - logging.info("successfully ran simulation in " + - "{:.2f}".format(end - start) + " seconds") + # clean up temporarily created files os.remove(MCI_FILENAME) - created_mco_file = PATH_TO_MCML + "/" + MCO_FILENAME + created_mco_file = os.path.join(PATH_TO_MCML, MCO_FILENAME) if os.path.isfile(created_mco_file): os.remove(created_mco_file) # save the created output f = open(self.output().path, 'w') df.to_csv(f) end = time.time() logging.info("time for creating batch of mc data: %.f s" % (end - start)) - def wavelength_to_reflectance(self, wavelength): - """helper function to determine the reflectance for a given - wavelength using the current model and simulation """ - self.tissue_model.set_wavelength(wavelength) - self.tissue_model.create_mci_file() - if os.path.isfile(PATH_TO_MCML + EXEC_MCML): - self.sim_wrapper.run_simulation() - return get_diffuse_reflectance(PATH_TO_MCML + MCO_FILENAME) - else: - raise IOError("path to gpumcml not valid") - if __name__ == '__main__': logging.basicConfig(filename=os.path.join(sp.LOG_FOLDER, "calculate_spectra" + str(datetime.datetime.now()) + '.log'), level=logging.INFO) ch = logging.StreamHandler() ch.setLevel(logging.INFO) logger = logging.getLogger() logger.addHandler(ch) luigi.interface.setup_interface_logging() # create a folder for the results if necessary sp.create_folder_if_necessary(sp.INTERMEDIATES_FOLDER) sch = luigi.scheduler.CentralPlannerScheduler() w = luigi.worker.Worker(scheduler=sch) BATCH_NUMBERS = np.arange(0, NR_BATCHES, 1) for i in BATCH_NUMBERS: colon_task = CreateSpectraTask("ipcai_revision_generic_mean_scattering", i, NR_ELEMENTS_IN_BATCH, mcfac.GenericMeanScatteringFactory()) w.add(colon_task) w.run() diff --git a/Modules/Biophotonics/python/iMC/tutorials/Monte Carlo Spectra Generation - Basic tutorial.ipynb b/Modules/Biophotonics/python/iMC/tutorials/Monte Carlo Spectra Generation - Basic tutorial.ipynb new file mode 100644 index 0000000000..ad3851bc29 --- /dev/null +++ b/Modules/Biophotonics/python/iMC/tutorials/Monte Carlo Spectra Generation - Basic tutorial.ipynb @@ -0,0 +1,1018 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Creating and manipulating monte carlo spectra using MITK-MSI\n", + "\n", + "In this tutorial we will learn how to\n", + "1. create reflectance spectra from examplary tissues\n", + "2. how to analyse and visualize the created spectra\n", + "3. how to manipulate them\n", + "\n", + "The MITK-MSI software provides a wrapper to the popular MCML approach to simulate how light travels through tissue. This wrapper can be found in mc/sim.py.\n", + "In this tutorial we will utilize our tissue model which uses this wrapper to create the reflectance spectra.\n", + "\n", + "As a prerequisit, you need a MCML monte carlo simulation which uses the format specified [here](http://omlc.org/software/mc/).\n", + "I tested this software with the GPU accelerated version which can be found [here](https://code.google.com/archive/p/gpumcml/)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# 1.1 create spectra - setup simulation environment\n", + "\n", + "# some necessary imports\n", + "import logging\n", + "import numpy as np\n", + "import os\n", + "# everything related to the simulation wrapper\n", + "from mc import sim\n", + "# the factories create batches (tissue samples) and suited tissue models\n", + "from mc import factories\n", + "# function which runs simulations for each wavelength\n", + "from mc.create_spectrum import create_spectrum\n", + "\n", + "# Where does your monte carlo simulation executable resides in?\n", + "MCML_EXECUTABLE = \"/home/wirkert/workspace/monteCarlo/gpumcml/fast-gpumcml/gpumcml.sm_20\"\n", + "# The MCML needs a simulation input file, where shall it be created?\n", + "MCI_FILENAME = \"./temp.mci\"\n", + "# filename of the file with the simulation results. Well, due to a bug in GPUMCML will reside\n", + "# in the same folder as the MCML executable\n", + "MCO_FILENAME = \"temp.mco\"\n", + "# The wavelengths for which we want to run our simulation\n", + "WAVELENGTHS = np.arange(450, 720, 2) * 10 ** -9\n", + "\n", + "# we want to create standard colonic tissue as specified in the IPCAI 2016 publication\n", + "# \"Robust Near Real-Time Estimation of Physiological Parameters from Megapixel\n", + "# Multispectral Images with Inverse Monte Carlo and Random Forest Regression\"\n", + "factory = factories.ColonMuscleMeanScatteringFactory()\n", + "\n", + "# create a simulation wrapper\n", + "sim_wrapper = sim.SimWrapper()\n", + "# our simulation needs to know where the input file for the simulation\n", + "# shall resign (will be automatically created)\n", + "sim_wrapper.set_mci_filename(MCI_FILENAME)\n", + "# also it needs to know where the simulation executable shall lie in\n", + "sim_wrapper.set_mcml_executable(MCML_EXECUTABLE)\n", + "\n", + "# create the tissue model\n", + "# it is responsible for writing the simulation input file\n", + "tissue_model = factory.create_tissue_model()\n", + "# tell it where the input file shall lie in\n", + "tissue_model.set_mci_filename(sim_wrapper.mci_filename)\n", + "# also set the output filename\n", + "tissue_model.set_mco_filename(MCO_FILENAME)\n", + "# tell it how much photons shall be simulated. Will be set to 10**6 by standard,\n", + "# this is just an example\n", + "tissue_model.set_nr_photons(10**6)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
layer0layer1layer2
vhbsao2a_mieb_miedngvhbsao2a_mie...dngvhbsao2a_mieb_miedng
00.0607270.4051082732.0721671.2860.0006431.360.9113750.0125290.4051082239.618718...0.0006741.360.8715360.0446350.4051083870.2457261.2860.0005181.380.854300
10.0086010.3804182715.5099931.2860.0009591.360.8648080.0751300.3804181480.405725...0.0005941.360.9048840.0071090.3804182532.0457571.2860.0004571.380.828825
20.0925140.3547461522.4673741.2860.0006261.360.9389540.0102420.3547461089.628438...0.0007991.360.9216680.0802510.3547462374.9183281.2860.0004101.380.846570
30.0148440.2718381817.9877901.2860.0009471.360.8222840.0980370.2718381214.562685...0.0007391.360.8165090.0613910.271838650.1901391.2860.0004771.380.858360
40.0517300.3361711545.5691791.2860.0008401.360.8552780.0541940.3361712574.712829...0.0005181.360.9341140.0708090.3361713457.1176331.2860.0004591.380.924634
50.0332200.6755502920.4622961.2860.0008541.360.8797550.0521190.6755502121.255538...0.0007161.360.8701480.0178530.6755502663.7021011.2860.0004171.380.901358
60.0427720.7131382343.4822961.2860.0010071.360.8891610.0524640.7131381494.564335...0.0007951.360.8576400.0007940.7131381365.3441921.2860.0004911.380.902503
70.0550830.4935222862.6322651.2860.0006741.360.9016050.0114940.493522876.784363...0.0007301.360.8471370.0406340.4935222460.4977811.2860.0004941.380.879252
80.0336410.12188910.0000001.2860.0007161.360.9425030.0936150.1218892470.880600...0.0007381.360.8241530.0505570.1218891990.7606221.2860.0005361.380.857569
90.0907670.9335812049.8986201.2860.0009141.360.9005530.0929380.9335812080.923970...0.0006261.360.8592220.0481680.9335812073.2916931.2860.0005031.380.813647
\n", + "

10 rows × 21 columns

\n", + "
" + ], + "text/plain": [ + " layer0 layer1 \\\n", + " vhb sao2 a_mie b_mie d n g vhb \n", + "0 0.060727 0.405108 2732.072167 1.286 0.000643 1.36 0.911375 0.012529 \n", + "1 0.008601 0.380418 2715.509993 1.286 0.000959 1.36 0.864808 0.075130 \n", + "2 0.092514 0.354746 1522.467374 1.286 0.000626 1.36 0.938954 0.010242 \n", + "3 0.014844 0.271838 1817.987790 1.286 0.000947 1.36 0.822284 0.098037 \n", + "4 0.051730 0.336171 1545.569179 1.286 0.000840 1.36 0.855278 0.054194 \n", + "5 0.033220 0.675550 2920.462296 1.286 0.000854 1.36 0.879755 0.052119 \n", + "6 0.042772 0.713138 2343.482296 1.286 0.001007 1.36 0.889161 0.052464 \n", + "7 0.055083 0.493522 2862.632265 1.286 0.000674 1.36 0.901605 0.011494 \n", + "8 0.033641 0.121889 10.000000 1.286 0.000716 1.36 0.942503 0.093615 \n", + "9 0.090767 0.933581 2049.898620 1.286 0.000914 1.36 0.900553 0.092938 \n", + "\n", + " ... layer2 \\\n", + " sao2 a_mie ... d n g vhb \n", + "0 0.405108 2239.618718 ... 0.000674 1.36 0.871536 0.044635 \n", + "1 0.380418 1480.405725 ... 0.000594 1.36 0.904884 0.007109 \n", + "2 0.354746 1089.628438 ... 0.000799 1.36 0.921668 0.080251 \n", + "3 0.271838 1214.562685 ... 0.000739 1.36 0.816509 0.061391 \n", + "4 0.336171 2574.712829 ... 0.000518 1.36 0.934114 0.070809 \n", + "5 0.675550 2121.255538 ... 0.000716 1.36 0.870148 0.017853 \n", + "6 0.713138 1494.564335 ... 0.000795 1.36 0.857640 0.000794 \n", + "7 0.493522 876.784363 ... 0.000730 1.36 0.847137 0.040634 \n", + "8 0.121889 2470.880600 ... 0.000738 1.36 0.824153 0.050557 \n", + "9 0.933581 2080.923970 ... 0.000626 1.36 0.859222 0.048168 \n", + "\n", + " \n", + " sao2 a_mie b_mie d n g \n", + "0 0.405108 3870.245726 1.286 0.000518 1.38 0.854300 \n", + "1 0.380418 2532.045757 1.286 0.000457 1.38 0.828825 \n", + "2 0.354746 2374.918328 1.286 0.000410 1.38 0.846570 \n", + "3 0.271838 650.190139 1.286 0.000477 1.38 0.858360 \n", + "4 0.336171 3457.117633 1.286 0.000459 1.38 0.924634 \n", + "5 0.675550 2663.702101 1.286 0.000417 1.38 0.901358 \n", + "6 0.713138 1365.344192 1.286 0.000491 1.38 0.902503 \n", + "7 0.493522 2460.497781 1.286 0.000494 1.38 0.879252 \n", + "8 0.121889 1990.760622 1.286 0.000536 1.38 0.857569 \n", + "9 0.933581 2073.291693 1.286 0.000503 1.38 0.813647 \n", + "\n", + "[10 rows x 21 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1.2 create spectra - create tissue samples for simulation\n", + "\n", + "# setup batch with tissue instances which should be simulated\n", + "batch = factory.create_batch_to_simulate()\n", + "# we want to simulate ten tissue instances in this example\n", + "nr_samples = 10\n", + "df = batch.create_parameters(10)\n", + "\n", + "# lets have a look at the dataframe. Each row corresponds to one tissue instance,\n", + "# each tissue instance is defined by various layers, which all have certain parameters\n", + "# like e.g. oxygenation (here sao2)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
4.5e-074.52e-074.54e-074.56e-074.58e-074.6e-074.62e-074.64e-074.66e-074.68e-07...7e-077.02e-077.04e-077.06e-077.08e-077.1e-077.12e-077.14e-077.16e-077.18e-07
00.0521390.0756040.1055830.1176130.1281990.1376600.1479270.1543200.1623270.170435...0.5054710.5061730.5069230.5083790.5096610.5099570.5110440.5118990.5123530.513397
10.2493170.2942640.3367880.3496720.3604390.3684250.3774140.3822680.3875580.393322...0.5145120.5146460.5145540.5155990.5155510.5157060.5156880.5156920.5155580.515568
20.0151350.0242110.0384330.0449100.0511300.0563460.0628500.0670010.0722420.077058...0.3693850.3707030.3722290.3734230.3751720.3759540.3768630.3776770.3791360.380009
30.1262520.1657860.2089910.2216790.2336920.2412590.2506050.2552670.2611800.265604...0.3922490.3937180.3947320.3952700.3960050.3968260.3980160.3986740.3987480.399876
40.0321560.0489880.0732230.0825470.0920550.0993480.1076700.1128010.1189880.125407...0.4350800.4369940.4392870.4400440.4417150.4423640.4434990.4441200.4460170.447964
50.1147180.1386490.1640830.1751580.1835070.1920870.2018380.2067130.2157290.222988...0.5320570.5314680.5319260.5312500.5322340.5318520.5313620.5315870.5318000.531074
60.0754280.0921610.1112520.1201550.1264190.1338400.1416240.1463380.1538720.160242...0.4912040.4915360.4912770.4912650.4911060.4902300.4906100.4902700.4905650.490454
70.0628950.0862190.1141600.1253180.1342720.1424760.1521790.1576980.1655290.172328...0.4602130.4615190.4625440.4626570.4631830.4629220.4636420.4637630.4644880.464716
80.0026870.0096630.0270880.0349750.0439350.0503690.0583890.0638680.0693800.074805...0.3353550.3378360.3397300.3422330.3444900.3466060.3483750.3501010.3518220.353292
90.0326340.0365020.0414510.0455100.0474630.0508450.0545740.0565080.0606030.064730...0.4841220.4833690.4826630.4821510.4803240.4792570.4788520.4780740.4773720.475579
\n", + "

10 rows × 135 columns

\n", + "
" + ], + "text/plain": [ + " 4.500000e-07 4.520000e-07 4.540000e-07 4.560000e-07 4.580000e-07 \\\n", + "0 0.052139 0.075604 0.105583 0.117613 0.128199 \n", + "1 0.249317 0.294264 0.336788 0.349672 0.360439 \n", + "2 0.015135 0.024211 0.038433 0.044910 0.051130 \n", + "3 0.126252 0.165786 0.208991 0.221679 0.233692 \n", + "4 0.032156 0.048988 0.073223 0.082547 0.092055 \n", + "5 0.114718 0.138649 0.164083 0.175158 0.183507 \n", + "6 0.075428 0.092161 0.111252 0.120155 0.126419 \n", + "7 0.062895 0.086219 0.114160 0.125318 0.134272 \n", + "8 0.002687 0.009663 0.027088 0.034975 0.043935 \n", + "9 0.032634 0.036502 0.041451 0.045510 0.047463 \n", + "\n", + " 4.600000e-07 4.620000e-07 4.640000e-07 4.660000e-07 4.680000e-07 \\\n", + "0 0.137660 0.147927 0.154320 0.162327 0.170435 \n", + "1 0.368425 0.377414 0.382268 0.387558 0.393322 \n", + "2 0.056346 0.062850 0.067001 0.072242 0.077058 \n", + "3 0.241259 0.250605 0.255267 0.261180 0.265604 \n", + "4 0.099348 0.107670 0.112801 0.118988 0.125407 \n", + "5 0.192087 0.201838 0.206713 0.215729 0.222988 \n", + "6 0.133840 0.141624 0.146338 0.153872 0.160242 \n", + "7 0.142476 0.152179 0.157698 0.165529 0.172328 \n", + "8 0.050369 0.058389 0.063868 0.069380 0.074805 \n", + "9 0.050845 0.054574 0.056508 0.060603 0.064730 \n", + "\n", + " ... 7.000000e-07 7.020000e-07 7.040000e-07 7.060000e-07 \\\n", + "0 ... 0.505471 0.506173 0.506923 0.508379 \n", + "1 ... 0.514512 0.514646 0.514554 0.515599 \n", + "2 ... 0.369385 0.370703 0.372229 0.373423 \n", + "3 ... 0.392249 0.393718 0.394732 0.395270 \n", + "4 ... 0.435080 0.436994 0.439287 0.440044 \n", + "5 ... 0.532057 0.531468 0.531926 0.531250 \n", + "6 ... 0.491204 0.491536 0.491277 0.491265 \n", + "7 ... 0.460213 0.461519 0.462544 0.462657 \n", + "8 ... 0.335355 0.337836 0.339730 0.342233 \n", + "9 ... 0.484122 0.483369 0.482663 0.482151 \n", + "\n", + " 7.080000e-07 7.100000e-07 7.120000e-07 7.140000e-07 7.160000e-07 \\\n", + "0 0.509661 0.509957 0.511044 0.511899 0.512353 \n", + "1 0.515551 0.515706 0.515688 0.515692 0.515558 \n", + "2 0.375172 0.375954 0.376863 0.377677 0.379136 \n", + "3 0.396005 0.396826 0.398016 0.398674 0.398748 \n", + "4 0.441715 0.442364 0.443499 0.444120 0.446017 \n", + "5 0.532234 0.531852 0.531362 0.531587 0.531800 \n", + "6 0.491106 0.490230 0.490610 0.490270 0.490565 \n", + "7 0.463183 0.462922 0.463642 0.463763 0.464488 \n", + "8 0.344490 0.346606 0.348375 0.350101 0.351822 \n", + "9 0.480324 0.479257 0.478852 0.478074 0.477372 \n", + "\n", + " 7.180000e-07 \n", + "0 0.513397 \n", + "1 0.515568 \n", + "2 0.380009 \n", + "3 0.399876 \n", + "4 0.447964 \n", + "5 0.531074 \n", + "6 0.490454 \n", + "7 0.464716 \n", + "8 0.353292 \n", + "9 0.475579 \n", + "\n", + "[10 rows x 135 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1.3 create spectra - run simulation\n", + "\n", + "# add reflectance column to dataframe\n", + "for w in WAVELENGTHS:\n", + " df[\"reflectances\", w] = np.NAN # the reflectances have not been calculated yet, thus set no nan\n", + "\n", + "# for each instance in our batch\n", + "for i in range(df.shape[0]):\n", + " # set the desired element in the dataframe to be simulated\n", + " tissue_model.set_dataframe_row(df.loc[i, :])\n", + " logging.info(\"running simulation \" + str(i) + \" for\\n\" +\n", + " str(tissue_model))\n", + " reflectances = create_spectrum(tissue_model, sim_wrapper, WAVELENGTHS)\n", + " # store in dataframe\n", + " for r, w in zip(reflectances, WAVELENGTHS):\n", + " df[\"reflectances\", w][i] = r\n", + " \n", + "# clean up temporarily created files\n", + "os.remove(MCI_FILENAME)\n", + "created_mco_file = os.path.join(os.path.split(MCML_EXECUTABLE)[0], MCO_FILENAME)\n", + "if os.path.isfile(created_mco_file):\n", + " os.remove(created_mco_file)\n", + "\n", + "# Hooray, finished,\n", + "# now our dataframe also contains reflectances for each tissue instance:\n", + "df[\"reflectances\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 2.1 analyse spectra - plot reflectances\n", + "\n", + "# the usual settings for plotting in ipython notebooks\n", + "import matplotlib.pylab as plt\n", + "%matplotlib inline\n", + "\n", + "# let's have a look at our reflectances\n", + "df[\"reflectances\"].T.plot(kind=\"line\")\n", + "plt.ylabel(\"reflectance\")\n", + "plt.xlabel(\"wavelengths [m]\")\n", + "# put legend outside of plot\n", + "plt.gca().legend(loc='center left', bbox_to_anchor=(1, 0.5))\n", + "plt.grid()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[,\n", + " ],\n", + " [,\n", + " ]], dtype=object)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nLgRmZon7/wP9Im+NGfUFAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 2.1 analyse spectra - show distribution of blood volume fraction (vhb) and sao2\n", + "\n", + "# now we need some special pandas functions\n", + "import pandas as pd\n", + "\n", + "# we're interested in the distribution of vhb and sao2 in the first layer (layer0)\n", + "df_vhb_sao2 = df[\"layer0\"][[\"vhb\", \"sao2\"]]\n", + "# plot a scatter matrix showing the distribution of vhb and sao2.\n", + "# of course, with this little data this does not really make sense,\n", + "# however it is a useful tool for analysis if much data is available\n", + "pd.tools.plotting.scatter_matrix(df_vhb_sao2, alpha=0.75, figsize=(6, 6))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nP4cffoChQ2HqVBg5surlyPr+bBgM6p70kkhhnDihCrX4eHUZsW1bNXN3+/bq+zZt1BIergYpqUu0\nfHLl0TQ5DY1rjLmRc3lzy5v8fN+PeOdMxy9gUq0JuP379zNt2jT8T59mlcWC99ChKF9/raonl0FE\n1dJmzYI9e+Cxx+DAAfuGWCwsVPfWHTmihsCMi1PL2bPQunWpEOvYUd1U3qGDWm/vkJYa1UPT5DQ0\nmhA2sfHa5tdYHrecdQ+tw5Y5C6MxheuuW46iXJ2P/blz55g2bRqbNm7kl6FDGfznnygffwwTJlzW\nzdFmg5Ur4d131eXJF16AiRPBw+OqhlQjbDY4fVoN+F+2nD2rLided53quHG+tG3bNJYUr3VNThNy\nGhpNBIvNwsMrHuZM3hlWjl+JKe83zpz5gL599+LkdOVBGm02G3PnzuXNN9/kifHjmZ6YiFNyMixd\nqkqCSyACy5fDm2+qAu311+Guu+p+T5vJpGpjBw5AVJT6GhOjOnD06AE9e6qv3burGlpTEGZVca0L\nOW250s5oNqjyaPNRSk3mwmqz8vCKh8kx5LDp4U2Yi2M5evIVevXaflUCLiEhgSlTpmCxWNj+zTd0\nmjYNbrlFFXCXCSuycSO8+qqqQX34IYwadXX72qqaD7NZXW7cvx/27YPISFXAtW6tus/36aNGQunV\nC5o1u/L7NyQu9dkw55rRH9BTEFmAPlJfvwNrgGhCTkOjkWMTG39b/TfSC9NZ8+AanDBzMPYBOnSY\ng6dn5yvqU0T44osveOutt3jttdd4tlMnHCdPhv/9TzWkXYLYWPjnP1XHknffhfvuq13NLSlJTae2\na5dq1zt0SBVo/ftDv37qfrqePet3KdQeiAimVJMq0A4UoD+gR39Aj+mcCV0PHV79vGg2qhkssfdI\na47JZOLpp59m06ZN5OTk0K5dO959911GjRpV47605UoNjUaMiPDc+ueITovm94d+x8PZg7i4iTg6\netKp09wr6jMvL48pU6aQmJjIjz/+SKetW2H6dPjlF/i//6vyuvx8dVnyp5/gtdfg6afBxeVKn0xF\nRPVq3L5djee8davqKDJkCFx/PQwapGpqunpKmGBPzDlmCvYWkL87n/y9+RREFiAWwauPF7reOnS9\ndOh66/Do4IHiWKoyN8blyqKiIj788EMeffRRwsLCWLt2LQ8++CCHDx+mVSVeStpypYZGE+XTPZ+y\n+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\nQuwyHo2Gz44zOxj/63iOPH0EH7fyG9OSkj4iP38f3bpdOhNmVlYWvXr1Yu7cudx2221q5SefqDlx\ntm4ttx/grbdg0ya1uLnBN9+o+eDmz1djSzZmCo8Ukjo/lfRF6Xh28yRkSgiBYwJx9GzY4bSsIqQa\njZwxGjljMHDGaCTJaCTJYCCpRHjlWiyEuLjQ0tWVFiWluYvLhRLm5kYLFxe8nJ01IVfHNx8FfAI4\nAPNF5D1FUZ5A1ejmXtT2W67C8URE+PbAt7y6+VUm9ZjE9OHTy3mk2RMRYVfSLr498C3Ljy5nRNsR\nPN3/aYaFD9PsdxoXMFlN9P66NzOGz2Bs17HlztlsFvbsacN11/2Gl1fVbo0iwvjx4wkNDeXjjz9W\nK48dUyMh794N7dtfaLtuHTz+OOzfD0FBamSTDRvUfeGdOtXJI9Y5Fr2FjJ8zSP0mFUOigZBHQ2g+\npXmD28umt1g4ZTCQUFzMieJiTpa8P2kwcMZgoJmzM+GurrRycyPM1VUtZd4Hu7jgUI3vjmvd8cTu\nMSmrW7jMno7somwZu3Ss9Piyh8SkxVyyrb3JM+TJnD1zpOvnXaX1c63lm8hvpNhs3303DYVrfZ/c\nf7b+R+746Q6x2WwV5uLcueUSGXn9Zfv48ccfpUuXLlJUVKRWmM3qfrg5c8q1S0gQCQpS88AZDOqe\nt2HDRHJza+lhaplLfTZsNpvk7sqVuMfiZLvvdom5O0YyVmeI1Wyt8pr6IM9slv35+fJTWpq8deqU\nTIyNlYH790vAjh3ivnWrdN2zR+6MiZHn4uPl06QkWZuZKXF6vRRbLJfs91rYJzdx4kQJCQkRb29v\nadu2rbzzzjtVtq3qGaWpxK6MTIlkzNIx3Nv5Xn649we7LU1WF29Xb54Z8AxP93+aWYtnsSxuGa//\n+Tp/H/B3nun/DH7uFaO/azR9TmSfYPbu2UQ9EVWpdp+S8iWhoU9dso+zZ8/y/PPPs379etzPpwj4\n5BPw9ISnSq81GFRvyX//W80IcMcd4OUF69erS5aNBXOOmfQf0kn5OgWxCM2nNKd/bH9cm7vW6zjy\nLRYOFxZypLCQ2KIiYkve51osdPDwoKO7O+3d3bnZ15cnQ0Np6+ZGiIuLtopzCV599VXmzZuHm5sb\n8fHxDB06lH79+nHrrbfWqJ9GH7tyTfwapqycwtd3fM29Xe61w8hqhyPnjjBz10zWxK/hsd6P8dLg\n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\nM0fM1CKl2Jkv933Jz0d+ZssjWy5pYzIYzrJ/f0+uvz4FB4eKms7cuXNZs2ZN+RiV48apu7z//nfO\nnYPwcBg1ClasqIsnqUiq0cjP6enE/ZDCbbMMpI32oNXbrbkpzB+3hhpSpbrk5KjpGVavVpPthYWp\nUa1vu011FmngTjDX+nJldbWoQ5TY70qOHYEj1bm2tgpN6FdHWep6X1hWUZYMWzBM7l1yrxSaCuv0\nXrVBU90nl1WUJUEfBMnBtIOXbXvmzIcSF/dYpXNhtVqlc+fO8ueff5ZWJiaK+PmJ5OeLiMjIkSLe\n3iJ5ebU1+soptFjkx7Q0GRkdLeErt8nCm3fJ5s67JHt33SSkq9fPxqlTIrNni9x4o4iXl8gdd6j7\nD5OS6m8Ml+Byc2GxWuSvpL/kjT/fuOY1ueq64K0HflYU5euS4ydK6jQaOM3cm7Fh4gamrp7K8IXD\nWTthrWbbtANvbnmTsV3G0iO4x2Xbpqf/RLt2H5CWVvHchg0bcHNzK+908PXXMGkSeHmxaRNs2gSr\nVl0IWVnrRBcUMDc1lSXnzjHQ25snojwIflVP8ynBtJ7eGgfXBp7OoDJE1BBZK1bAb7/B2bNw551q\nTqIRIxrFXrVcQy4bTmxg7fG1rD+xniDPIEZ3GG3vYdmd6i5XOqAKtptLqjYC34iItQ7HdvEYpDpj\n1agcEeGNLW+w9MhS1k9c32QDWzdEYtJjuOX7W4h7Ju6yG/aLio4RHX0jgwcnoSgVl/lGjBjBpEmT\nePjhh9UKi0Vdm/zjD6RrN4KCVM/0DRtq9xnMNhu/ZmTwaXIyyUYjf2venMm6QIpfPUvOnzl0+bEL\nPoN8avemdY2I6na6bJlabDY1a8M996iu/o1gmfV41nFWx69mdfxqIlMiuSH8BkZ3GM3oDqMJ9w0H\ntOXKeltuvNpCE1Kt7cnnez+X0I9CJSolyt5DuSaw2WwyfOFwmbNnTrXanzw5XY4ff77Sc/Hx8RIU\nFCQGg6G0cvVqkYEDRUTkv/8VcXYW0euvetgXyDObZWZiorTYuVOGHzggy8+dE4vNJvrDetndabfE\nPhIr5vxGFD7LYhHZulXk2WdFWrYU6dxZ5PXX1XBZjcApxmK1yPbE7TLtj2nS6bNO0vzD5jJ11VRZ\ndXRVleYIGvlyZXx8vLi5ucmkSZOqbFPVM4pItW1yQ1C1t3jgJHAKOFmda2urNJY/SE2xhw1qWewy\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 3.1 manipulate spectra - apply sliding average\n", + "# in 3.1 and 3.2 we will adapt the generated spectra to an imaginary imaging system\n", + "# This system has filters with 20nm bandwith (taken care of in 3.1)\n", + "# and takes multispectral images in 10nm steps (taken care of in 3.2)\n", + "\n", + "# the module mc.dfmanipulations was written to provide some basic,\n", + "# often needed manipulations of the calculated spectra\n", + "# all dmfmanipulations are performed inplace, however, the df is also returned.\n", + "import mc.dfmanipulations as dfmani\n", + "\n", + "# first copy to not loose our original data\n", + "df2 = df.copy()\n", + "# e.g. we cann apply a sliding average to our data. This is usefull if \n", + "# we want to see e.g. how the reflectance was recorded by bands with a certain width\n", + "# a sliding average of five will take the two left and two right of the current reflectance\n", + "# and average. Because we take 2nm steps of reflectance in our simulation this means\n", + "# a 20nm window.\n", + "dfmani.fold_by_sliding_average(df2, 11)\n", + "\n", + "# lets again plot the reflectances\n", + "df2[\"reflectances\"].T.plot(kind=\"line\")\n", + "plt.ylabel(\"reflectance\")\n", + "plt.xlabel(\"wavelengths [m]\")\n", + "# put legend outside of plot\n", + "plt.gca().legend(loc='center left', bbox_to_anchor=(1, 0.5))\n", + "plt.grid()\n", + "# we can see that the bump at 560nm is \"smoother\"" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\naNijIXur7eXDez/kkTaPODRBXZlRRs55jl04RqcvO/Fl3y/p7d+7yDZ5a68++eTDxMa2JyhoJV5e\nQVeVP3r0aKpUqYK2cSPTLJa839EY17o107Zvz/3Wn5YG995rXyYnOto+Tffuu1AeP9YF60WC3dX4\nVbOveKXDK5z/4zw+PX2oP7g+Pr19qOJRODCnkJvRYgGTCcP69TRu2pRTzZvj5+FBa6Mx16Dl/PSp\nVi2frLwuQ+vkyRXOyDmLK4zcFhHppGmaWUSCs49ZRMTkYl2vpEOl+YO4iqJcI9H7oxm3Yhze7t5M\nu28aIY3V/JzCMTJtmdz9zd3c3fxupvSYUmSbhAQzERHhBAQkZe978MQTPbn//u+vKj8+Pp6ePXuy\nYMECUh54gP4F8uQWGo34ZefJ6ToMHmwP6Nu507503Msvl/wZS4vY2Fh+Df2Nbml35Dv+h+EPukzu\nwt3j7qZqzfz+1TSbjV1WK9tSU0lITeXPLVv4MykJunXL185twwbm33knfbt2xc3JwvLO5MlVZFwx\nJ5eqaVodQLIFdgHOuUg/xTWSE6WZlx5+PYgdGUukOZIHvn+A3jf35v273qeRd6My0lJRUXhl9St4\nu3szqfukIs/ruk5ERDhhYZZcd2HXrlaiorbTu7d+1XmjcePG8dZbb1GjRg1SrqLL66/bvXUnT8Kk\nSXYjV56xZdnIzMgqdDxDy6Jmr1rsqZbBtlMpbEtNtRu1ixc5kJ5OSw8P2lWvTrvq1Xnxzjs5++uv\n7CwQmdgmOZmH33jD6Xmtot4PNyKO9tqLwDKgpaZpfwLfAGNLTasbhJw1oFxNFUMVRoSMYNeYXdQ1\n1qX9jPb8a8O/SMu6sQJVSqt/KyM/bPuBJbuW8O3D32IoZl7NbDYTEJCU+/61WOzvYn//PVdN9F20\naBFnzpxhxIgRBAcHEx0QUCCFG/7IzpObNcseOXnkCHz4Yfk2cHqWzvF5x7E+biXOEI+e56l0dP5b\n72+6Wyz02bqVb44fJ0PX6V+3Lj+1bcu50FC2de7MgrZtedPPj/4NGvDdyy9jiorCuGED7t98Q1BU\nFJETJ1bItIjygkMjORGJ0zStO9AK+7pviSKSWaqaKUpMTY+afHjvh4wMGcnEVRMJ/DyQiHsjGBA4\n4Iafr1NcZvvJ7Ty3/DlWDl2Jj+fVoyOd5dKlS7z00kvMmTMnNy9uVGQk4+68k+5WK1SrRrS/P89E\n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\ntDxnGQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 3.2 manipulate spectra - select certain wavelenghts\n", + "\n", + "# our imaginary imaging system takes images in 10nm steps from 470 to 660nm\n", + "imaging_system_wavelengths = np.arange(470, 670, 10) * 10**-9\n", + "\n", + "df3 = df2.copy()\n", + "dfmani.interpolate_wavelengths(df3, imaging_system_wavelengths)\n", + "\n", + "# let's look at the newly created reflectances\n", + "df3[\"reflectances\"].T.plot(kind=\"line\", marker='o')\n", + "plt.ylabel(\"reflectance\")\n", + "plt.xlabel(\"wavelengths [m]\")\n", + "# put legend outside of plot\n", + "plt.gca().legend(loc='center left', bbox_to_anchor=(1, 0.5))\n", + "plt.grid()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# that's it, folks, if you want, you can save the created dataframe easily to csv:\n", + "df.to_csv(\"results.csv\", index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Modules/Biophotonics/python/iMC/tutorials/README.txt b/Modules/Biophotonics/python/iMC/tutorials/README.txt new file mode 100644 index 0000000000..f6fb2aa8d9 --- /dev/null +++ b/Modules/Biophotonics/python/iMC/tutorials/README.txt @@ -0,0 +1,6 @@ +The tutorials are not fletched out, since I want to discuss the general direction first. +I propose IPhython notebooks, as e.g. Google does for the Caffe framework: +http://nbviewer.jupyter.org/github/BVLC/caffe/blob/master/examples/00-classification.ipynb + +I added a tutorial for the monte carlo spectra generation to show how this could look like. +