| EIDORS
(mirror) Main
 Documentation
 Tutorials
 Download
 Contrib Data
 GREIT
 Browse Docs
 Browse SVN
 
 News
 Mailing list
 (archive)
 FAQ
 Developer
 
  
 
Hosted by
   |  | Samples for the EIDORS WorkshopTo run these tutorials, you need to 
download and install
EIDORS and then run this command in a matlab
(or octave) session.
>>run /path/to/eidors3d/startup.m
 EIDORS Workshop
    
CODE
   Downloading and Installing EIDORS and Netgen
   Test that EIDORS is working
   EIDORS data structures
   
      fwd_model
      inv_model
      rec_model
      data
      image
   EIDORS functions overview
   Documentation
   
     | solvers | forward and inverse solverse |  | meshing | Interface to FEM libraries: Netgen / GMSH / distmesh |  | models | FEM modelling tools |  | external | Read write external file formats |  | graphics | Graphics / Display functions |  | 
 |  | algorithms | Algorithms to process EIT images (time series) |  | sample_data | Some sample data (deprecated, now use data_contrib) |  | examples | Examples (deprecated, now use tutorials) |  | tools | low level EIDORS tools |  | tests | Tests for debugging (deprecated, now in UNIT_TEST |  | arch | Mex files and architecture specific code |  | compatibility | Compatibility with older matlab versions |  | deprecated | Older, deprecated EIDORS files |  | overloads | Override matlab functions to give extra features | 
Contributed Data
    Defaults
    Caching
tic;
fmdl= ng_mk_cyl_models(1,[16,.5],0.1)
toc;
fmdl.stimulation = mk_stim_patterns(16,1,[0,1],[0,1],{},1);
img = mk_image( fmdl, 1);
tic;
vh = fwd_solve(img);
toc
Challenge Questions:
          
 What data are from a cute baby on EIDORS? load and display these data
 What is the speedup for larger FEM models?
 Look at inv_solve_diff_GN_one_step - what part is cached?
           
    
         Forward Models
        
         Finite Element Models (FEMs)
         EIDORS FEM structure
>> fmdl= ng_mk_cyl_models(1,[16,.5],0.1);
>> fmdl.stimulation = mk_stim_patterns(16,1,[0,1],[0,1],{},1) 
fmdl =
                     nodes: [1958x3 double]
                     elems: [7849x4 double]
                  boundary: [2326x3 double]
          boundary_numbers: [2326x1 double]
                  gnd_node: 350
              np_fwd_solve: [1x1 struct]
                      name: 'ng'
                 electrode: [1x16 struct]
                     solve: 'eidors_default'
                  jacobian: 'eidors_default'
                system_mat: 'eidors_default'
                      type: 'fwd_model'
                   mat_idx: {[7849x1 double]}
    normalize_measurements: 0
               stimulation: [1x16 struct]
>> fmdl.stimulation(1)
ans = 
     stimulation: 'Amp'
    stim_pattern: [16x1 double]
    meas_pattern: [13x16 double]
>> fmdl.electrode(1)
ans = 
    nodes: [114 115 116 117 118 119 415]
    z_contact: 0.0100
 Use shape_library to obtain a human thorax contour
			shape = 
			shape_library('get', 'adult_male','boundary');
 make a 2d model with 16 electrodes (width 0.1) with electrode 1 on the sternum (remember the shape must be counter-clockwise)
		 	fmdl = 
			ng_mk_2d_model({flipud(shape),0.1},[16 -.17],[0.1 20]);
			show_fem(fmdl)
 make a similar 3d model
			fmdl = 
			ng_mk_extruded_model({1, shape, [4,49]},[16,1,0.5],[0.05 0 -1 0 60]);
			show_fem(fmdl)
 add contrast using elem_select
		  solve for internal voltages
		  visualize using calc_slices
		  visualize using show_3d_slices
		  calculate current
		  calculate Jacobian
		  visualize Jacobian
		  change current pattern to N/2-1
		  compare Jacobian
		  (FEM generation 2D and 3D, Netgen, sensitivity, voltage and
         current distributions, stimulation patterns )
       Challenge Questions:
       
          Compare the sensitivity for a slice of a 3D vs 2D tank. 
              Why are they different?
          Create images of current flow in the thorax with various
              values for lung conductivity. How do they vary?
       Further Tutorials on Forward Modelling 				
					 FE model generation in Netgen
					
					 FE approximations
					
					 Electrode modelling
					
   				 Physics
				
         Reconstructions
        
		 finemdl = 
		 coarsemdl
		 imdl = mk_common_mdl
>> fmdl = ng_mk_cyl_models(0,16,0.05);
>> imdl = select_imdl(fmdl,{'Basic GN dif'})
imdl =
              name: 'Basic imdl from select_imdl'
              type: 'inv_model'
             solve: @inv_solve_diff_GN_one_step
    hyperparameter: [1x1 struct]
         RtR_prior: @prior_laplace
    jacobian_bkgnd: [1x1 struct]
      reconst_type: 'difference'
         fwd_model: [1x1 struct]
 select_imdl(imdl, 'Basic GN')
		 inv_solve with inverse crime
		 inv_solve w/o inverse crime
		 show_slices
		 use mk_pixel_grid to setup a dual model
		 manually change hyperparam
		 select_imdl('Choose NF')
>> imdl = mk_common_model('c2c2',16);
>> imdl = select_imdl(imdl,{'Choose NF=1.0'})
 ( 2D and 3D FEMS, inverse crime, visualization functions,
      hyperparameter choice, functions: select_imdl ,
      functions: mk_pixel_grid )
        Challenge Questions:
   Using simulated and real data, test the effect of 
          
       
          different model shapes
          different priors
          hyperparameter.value
          noise figure
        Further Tutorials on Reconstruction 
					 Dual modelling
					
					 Absolute reconstructions
					
	
				
		
		 String interface
		 Custom model (for a 2 ring cyl)
		 Use ng_write_opt to increase minimum elem size and build a coarse pig model
		 imdl1 = mk_GREIT_model (fmdl)
		 Set the lungs to have 0.3 conductivity
		 vh =
		 vi = 
		 compare reconstructions 
		( GREIT algorithm, adapting shape, background conductivity,
		working with sample data )
		 Further Tutorials on GREIT
				
    
				
				
				  Respiratory Monitoring   Geophysical  
Other interesting Tutorials
Here are useful tutorials to start with:
 |