Skip to content

Commit 585dafc

Browse files
committed
I got 2nd Mus' plot working sort of. It isn't plotting 2nd and 3rd datasets for some reason.
1 parent 996b8c5 commit 585dafc

1 file changed

Lines changed: 35 additions & 30 deletions

File tree

inverse-solutions/r-of-fx-multi-op-prop-inversion.py

Lines changed: 35 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -114,53 +114,58 @@ def residual(valuesSought, wavelengths, fxs, measuredROfFx, forwardSolver):
114114
[np.array(forwardSolverForInversion.ROfFx(opsFit, fxs[0]), dtype=float),
115115
np.array(forwardSolverForInversion.ROfFx(opsFit, fxs[1]), dtype=float)])
116116
# plot Reflectance: flattened so have to separate
117-
chart = go.Figure()
117+
chart1 = go.Figure()
118118
xLabel = "wavelength [nm]"
119119
yLabel = "R(wavelength)"
120120
wvs = [w for w in wavelengths]
121121
# plot measured data first fx first
122-
meas= [m for m in rOfFxMeasured]
123-
midpoint=len(meas) // 2
124-
chart.add_trace(go.Scatter(x=wvs, y=meas[:midpoint], mode='markers', name='measured data: fx1'))
125-
chart.add_trace(go.Scatter(x=wvs, y=meas[midpoint:], mode='markers', name='measured data: fx2'))
122+
measR= [m for m in rOfFxMeasured]
123+
midpoint=len(measR) // 2
124+
chart1.add_trace(go.Scatter(x=wvs, y=measR[:midpoint], mode='markers', name='measured data: fx1'))
125+
chart1.add_trace(go.Scatter(x=wvs, y=measR[midpoint:], mode='markers', name='measured data: fx2'))
126126
# plot initial guess data
127-
ig = [i for i in rOfFxInitialGuess]
128-
chart.add_trace(go.Scatter(x=wvs, y=ig[:midpoint], mode='markers', name='initial guess: fx1'))
129-
chart.add_trace(go.Scatter(x=wvs, y=ig[midpoint:], mode='markers', name='initial guess: fx2'))
127+
igR = [i for i in rOfFxInitialGuess]
128+
chart1.add_trace(go.Scatter(x=wvs, y=igR[:midpoint], mode='markers', name='initial guess: fx1'))
129+
chart1.add_trace(go.Scatter(x=wvs, y=igR[midpoint:], mode='markers', name='initial guess: fx2'))
130130
# plot fit: need to organize by fx
131-
conv = [f for f in rOfFxFit]
132-
chart.add_trace(go.Scatter(x=wvs, y=conv[:midpoint], mode='lines', name='converged: fx1'))
133-
chart.add_trace(go.Scatter(x=wvs, y=conv[midpoint:], mode='lines', name='converged: fx2'))
134-
chart.update_layout( title="ROfFx (inverse solution for chromophore concentrations, multiple wavelengths, multiple fx)", xaxis_title=xLabel, yaxis_title=yLabel)
131+
convR = [f for f in rOfFxFit]
132+
chart1.add_trace(go.Scatter(x=wvs, y=convR[:midpoint], mode='lines', name='converged: fx1'))
133+
chart1.add_trace(go.Scatter(x=wvs, y=convR[midpoint:], mode='lines', name='converged: fx2'))
134+
chart1.update_layout( title="ROfFx (inverse solution for chromophore concentrations, multiple wavelengths, multiple fx)", xaxis_title=xLabel, yaxis_title=yLabel)
135+
chart1.show(renderer="browser")
135136
# plot Mus': flattened so have to separate
136-
chart = go.Figure()
137+
chart2 = go.Figure()
137138
xLabel = "wavelength [nm]"
138139
yLabel = "us'(wavelength)"
139140
wvs = [w for w in wavelengths]
140-
# plot measured data first fx first
141-
meas= [m for m in scattererMeasuredData]
142-
midpoint=len(meas) // 2
143-
chart.add_trace(go.Scatter(x=wvs, y=meas[:midpoint], mode='markers', name='measured data: fx1'))
144-
chart.add_trace(go.Scatter(x=wvs, y=meas[midpoint:], mode='markers', name='measured data: fx2'))
141+
# plot measured data
142+
scattererMeasuredDataMusp= np.zeros(len(wavelengths),dtype=float)
143+
for i in range(0, len(wavelengths)):
144+
scattererMeasuredDataMusp[i]=opsMeasured[i].Musp
145+
measMusp = [m for m in scattererMeasuredDataMusp]
146+
chart2.add_trace(go.Scatter(x=wvs, y=measMusp, mode='markers', name='measured data'))
145147
# plot initial guess data
146-
ig = [i for i in [scattererInitialGuess]]
147-
chart.add_trace(go.Scatter(x=wvs, y=ig[:midpoint], mode='markers', name='initial guess: fx1'))
148-
chart.add_trace(go.Scatter(x=wvs, y=ig[midpoint:], mode='markers', name='initial guess: fx2'))
149-
# plot fit: need to organize by fx
150-
conv = [f for f in [scattererFit]]
151-
chart.add_trace(go.Scatter(x=wvs, y=conv[:midpoint], mode='lines', name='converged: fx1'))
152-
chart.add_trace(go.Scatter(x=wvs, y=conv[midpoint:], mode='lines', name='converged: fx2'))
153-
chart.update_layout( title="ROfFx (inverse solution for chromophore concentrations, multiple wavelengths, multiple fx)", xaxis_title=xLabel, yaxis_title=yLabel)
154-
155-
chart.show(renderer="browser")
148+
scattererInitialGuessMusp= np.zeros(len(wavelengths),dtype=float)
149+
for i in range(0, len(wavelengths)):
150+
scattererInitialGuessMusp[i]=opsInitialGuess[i].Musp
151+
igMusp = [i for i in [scattererInitialGuessMusp]]
152+
chart2.add_trace(go.Scatter(x=wvs, y=igMusp, mode='markers', name='initial guess'))
153+
# plot fit
154+
scattererFitMusp= np.zeros(len(wavelengths),dtype=float)
155+
for i in range(0, len(wavelengths)):
156+
scattererFitMusp[i]=opsFit[i].Musp
157+
convMusp = [f for f in [scattererFitMusp]]
158+
chart2.add_trace(go.Scatter(x=wvs, y=convMusp, mode='lines', name='converged'))
159+
chart2.update_layout( title="ROfFx (inverse solution for chromophore concentrations, multiple wavelengths, multiple fx)", xaxis_title=xLabel, yaxis_title=yLabel)
160+
chart2.show(renderer="browser")
156161
# output results
157162
print("Meas = [%5.3f %5.3f %5.3f %5.3f]" % (
158163
measuredData[0], measuredData[1], measuredData[2], measuredData[3]))
159164
print("IG = [%5.3f %5.3f %5.3f %5.3f] Chi2=%5.3e" % (
160165
initialGuess[0], initialGuess[1], initialGuess[2], initialGuess[3],
161-
np.dot(measuredROfFx-initialGuessROfFx,measuredROfFx-initialGuessROfFx)))
166+
np.dot(rOfFxMeasured-rOfFxInitialGuess,rOfFxMeasured-rOfFxInitialGuess)))
162167
print("Conv = [%5.3f %5.3f %5.3f %5.3f] Chi2=%5.3e" % (fit.x[0], fit.x[1], fit.x[2], fit.x[3],
163-
np.dot(measuredROfFx-fitROfFx,measuredROfFx-fitROfFx)))
168+
np.dot(rOfFxMeasured-rOfFxFit,rOfFxMeasured-rOfFxFit)))
164169
print("error = [%3.2f %3.2f %3.2f %3.2f]%%" % (
165170
100*abs((measuredData[0]-fit.x[0])/measuredData[0]),
166171
100*abs((measuredData[1]-fit.x[1])/measuredData[1]),

0 commit comments

Comments
 (0)