@@ -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 ()
118118xLabel = "wavelength [nm]"
119119yLabel = "R(wavelength)"
120120wvs = [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 ()
137138xLabel = "wavelength [nm]"
138139yLabel = "us'(wavelength)"
139140wvs = [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
157162print ("Meas = [%5.3f %5.3f %5.3f %5.3f]" % (
158163 measuredData [0 ], measuredData [1 ], measuredData [2 ], measuredData [3 ]))
159164print ("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 )))
162167print ("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 )))
164169print ("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