EIDORS
(mirror)
Main
Documentation
Examples
Tutorial
Download
Contrib Data
GREIT
Browse SVN
News
FAQ
Developer
Hosted by
| |
Frequently Asked Questions
-
What is EIDORS?
The goal of EIDORS is to promote collaboration between
groups working on Electrical Impedance Tomography (EIT) and Diffusion based
Optical Tomography, in medical and industrial settings.
-
How is EIDORS pronounced?
EIDORS is pronounced like eiderdown.
It sounds like eye doors.
-
What is the logo?
The logo is a walrus. EIDORS images
blobby objects in aqueous media; similarly, the walrus
is a fat, blobby animal that lives in water.
The original (high resolution) image of the one used here is from the
NOAA. See www.photolib.noaa.gov/animals/anim0030.htm. For another
great picture of fat waruses see this
image.
-
Whom should I blame or thank or contact for more information?
The current maintainers of EIDORS are
Bill Lionheart
and
Andy Adler.
Please contact them with suggestions, contribution of code,
and contribution of sample data, meshes, and algorithms.
-
How do I get started with EIDORS?
Step 1: Download
EIDORS
Step 2: Unzip the file and save it to a directory like
/path/to/eidors
Step 3: Start Matlab (or Octave). Run this command:
>>run /path/to/eidors/startup.m
-
Are there any prebuilt examples?
Yes, please look at the tutorial.
-
Under what terms is EIDORS licenced
EIDORS is licenced under the GNU
General Public License. Uses are free to
use, modify, and distribute their modifications.
All modifications must include the source code, or
instructions on how to obtain it.
-
May I include EIDORS in a commercial product
Yes. As long as you make the source code for EIDORS
and all modifications you made to it available to
your clients.
-
How should I refer to EIDORS in a scientific publication
Please quote the following paper
Andy Adler, William R B Lionheart (2006)
"Uses and abuses of EIDORS: An extensible software base for EIT",
Physiol. Meas. 27:S25-S42, 2006
-
Does EIDORS support 2D algorithms
Yes. Look at examples/image_2d_algs.m. The older EIDORS 2D project based on code from Marko Vauhkonen has not yet been integrated into this version. See Old EIDORS page for links to download.
-
Does EIDORS actually do diffuse optical tomography?
Not yet, but we intend it to. Please contact us if you are willing to help with this.
-
Does EIDORS provide sample data
Yes. Look in the sample_data directory.
We would love to have additional contributions of
sample data from various experimental and clinical
settings.
-
May I use EIDORS sample data to test my algorithm
Yes. However, if you publish your tests, you are generall
required to refer to EIDORS in your publication. In general,
you may simply list this paper in your
references:
Adler and Lionheart (2005),
"Uses and abuses of EIDORS: An extensible software base for EIT"
Submitted to Physiol. Meas., Nov. 2005
However, certain data sets may require reference to a different
paper. Please read the documentation for the particular data
set.
-
How do I use EIDORS to compare my idea to a
published algorithm
Please remember that this is only a toolkit, and that the
demonstration programs are only simple worked examples. They are
not intended to be the state of the art in EIT reconstruction. By all
means publish your improved reconstruction algorithms and compare them
with the simple ones we demonstrate here. But please don't just run
the demo code on your own data, using the tiny demo mesh, a randomly
chosen regularization parameter and only one iteration of regularized
Newton's method then compare this with your own highly optimised code
and claim that your code is vastly superior than EIDORS' best shot
(Yes, we exagerate, slightly).
This is a toolkit of routines for you to build a code which suits your
application.
-
What if I notice a bug?
You may write an email to the maintainers.
-
I need some features that are missing in EIDORS?
Please note that EIDORS is a volunteer project by some
very busy people. You are welcome to make suggestions
for new features, but we may not be able to
find the time to implement them.
Good options are: 1) implement new features yourself,
and contribute them to EIDORS3D, or 2) find a source
of funds to pay for the features you need. In either case,
you are welcome to contact the
maintainers to discuss.
Errors and Solutions
-
"??? Undefined command/function 'eidors_msg'."
This error occurs because the functions are not part of the Matlab path.
Use the command:
>>run path/to/eidors/startup.m
-
Matlab prints ugly bitmapped figures rather than vector graphics
Matlab seems to try to guess what the user wants. At any rate,
it often gets the choice wrong. To force vector graphics,
use the '-painters' option. One useful trick to control the
size of generated figures is to use the 'PaperPosition'
property. Another useful trick to crop postscript figures
is to use the
imagemagick
convert utility.
>> set(gcf, 'PaperPosition', [0.25,2.5, width, height]);
>> print( gcf, '-depsc2','-painters', 'temp.eps')
>> system('convert -crop 0x0 temp.eps output.eps');
-
"Warning: RGB color data not yet supported in Painter's mode."
This is a limitation of Matlab. RGB data cannot be exported to postscript
files. This can be solved by using colourmaps instead.
Try this:
>>global eidors_colours;
>>eidors_colours.mapped_colour= 256;
-
"??? Invalid MEX-file ..." error on Linux
Sometimes one can get linux errors of the form
??? Invalid MEX-file '/home/andy/work/eidors3d/eidors_var_id.mexglx': libstdc++.so.6: cannot open shared object file: No such file or directory.
or
??? Invalid MEX-file '/home/andy/work/eidors3d/eidors_var_id.mexglx':
[...]/../sys/os/ glnx86/libgcc_s.so.1:
version `GCC_3.3' not found (required by /usr/lib/libstdc++.so.6).
These errors are can occur when the linux version on which EIDORS is run
is different from that on which the mex file was built.
The easiest solution is to recompile the mex file, as follows:
>> mex eidors_var_id.cpp
-
Using Netgen
EIDORS can use netgen to create some fairly impressive 3D meshes.
See the examples.
Netgen usage with EIDORS is fairly easy under windows. You need to
- Download and install the windows binary from
http://www.hpfem.jku.at/netgen/
- Run an example which calls netgen (ie call_netgen.m)
- Enter a path to the netgen binary without spaces
(ie for C:\Program Files\netgen write C:/Progra~1/netgen)
-
mk_stim_patterns question
is the code
stim= mk_stim_patterns(16, 1, '{ad}','{ad}', {}, 10);
equivalent to
stim= mk_stim_patterns(8, 2, '{ad}','{ad}', {}, 10);
No, each ring is treated separately, so that, for example
>> stim= mk_stim_patterns(4, 2, '{ad}','{ad}', {}, 10);
>> full([stim(:).stim_pattern])
ans = -10 0 0 10 0 0 0 0
10 -10 0 0 0 0 0 0
0 10 -10 0 0 0 0 0
0 0 10 -10 0 0 0 0
0 0 0 0 -10 0 0 10
0 0 0 0 10 -10 0 0
0 0 0 0 0 10 -10 0
0 0 0 0 0 0 10 -10
>> stim= mk_stim_patterns(8, 1, '{ad}','{ad}', {}, 10);
>> full([stim(:).stim_pattern])
ans = -10 0 0 0 0 0 0 10
10 -10 0 0 0 0 0 0
0 10 -10 0 0 0 0 0
0 0 10 -10 0 0 0 0
0 0 0 10 -10 0 0 0
0 0 0 0 10 -10 0 0
0 0 0 0 0 10 -10 0
0 0 0 0 0 0 10 -10
-
Compiling Netgen under linux
To use netgen under linux is more complicated. I got it to work
on Fedora FC5 by doing:
- install the packages compat-gcc-32-3.2.3
and compat-gcc-32-c++-3.2.3
- ensure tk,
tcl, and
tix are installed.
- Download and install the source from
http://www.hpfem.jku.at/netgen/
and install it under $HOME/src/ngs44
- cd to $HOME/src/ngs44
- Edit the file ./libsrc/meshing/meshtype.hpp to
add class Mesh; at line 957.
- Find tkInt.h in the tk includes.
(I found it here /usr/include/tk-private/generic/tkInt.h)
- Get TK version (grep TK_PATCH_LEVEL /usr/include/tk.h)
- Add a line to togl/togl.cpp (around line 143)
based on the TK_PATCH_LEVEL
#elif TK_MAJOR_VERSION==8 && TK_MINOR_VERSION==4 && TK_RELEASE_SERIAL==13
# include "/usr/include/tk-private/generic/tkInt.h"
- Modify tcltklib and syslib in Makefile
#(OLD) tcltklib = -ltix8.1.8.4 -ltk8.4 -ltcl8.4
tcltklib = -ltix -ltk8.4 -ltcl8.4
#(OLD) syslib = $(tcltklib) -lGL -lGLU -lX11 -lXi -lm -ldl -lpthread $(SYSLIB2)
syslib = $(tcltklib) -lGL -lGLU -lX11 -lm -ldl -lpthread $(SYSLIB2)
- It would be nice to build using CC=gcc32 MACHINE=LINUX make,
but netgen hardcodes gcc. So, edit the Makefiles
using:
find -name Makefile -exec perl -i -pe's/(\sgcc)\s/${1}32 /' \{} \;
- Build using: MACHINE=LINUX make CC=gcc32,
Useful information is found
here, and
here
|