Description
First of all thanks for the project!
I collect real world data using a 16 electrode belt wrapped around the pelvic (bladder monitoring). Measurements are taken in opposition schema resulting in a DataFrame with 448 columns (224 for each Magnitude and Phase) like this:
E01_E09_E02_E10_Magnitude | E01_E09_E02_E10_Phase | E01_E09_E03_E11_Magnitude | E01_E09_E03_E11_Phase | -- | E16_E08_E14_E06_Magnitude | E16_E08_E14_E06_Phase | E16_E08_E15_E07_Magnitude | E16_E08_E15_E07_Phase
The electrodes are not spaced equally around the pelvic, but with vacancy above the pubic bone due to hardware design:
This is the code I am using for reconstruction:
config= {
"n_el": 16,
"h0": 0.07,
"dist_exc": 8,
"step_meas": 8,
"parser_meas": "std",
"inverse_solver": "JAC",
"p": 0.5,
"lamb": 0.01,
"method": "kotre",
"perm": 1,
"jac_normalized": True,
"normalize": True
}
mesh_obj = mesh.create(n_el=config['n_el'], h0=config['h0'], fd=mesh.shape.thorax)
mesh_obj.el_pos = np.array([517, 478, 5, 302, 219, 110, 42, 17, 15, 40, 109, 274, 11, 455, 515, 528]) # Custom arrangement
protocol_obj = protocol.create(config['n_el'], dist_exc=config['dist_exc'], step_meas=config['step_meas'], parser_meas=config['parser_meas'])
eit_solver = JAC(mesh_obj, protocol_obj)
eit_solver.setup(
p=config['p'],
lamb=config['lamb'],
method=config['method'],
perm=config['perm'],
jac_normalized=config['jac_normalized']
)
ds = 224.0 * eit_solver.solve(v0, v1, normalize=config['normalize']) # v0, v1 contain the complex representation
Reconstruction runs through, but the results are not as expected. Even when validating the hardware on an agar-agar phantom, I found the algorithm struggling with the electrode position (results are better when assuming a equally spaced electrode arrangement, but still not as expected):
Am I missing something, or is the combination of opposition schema with custom electrode arrangement just not suitable?