package Ġedu . stanford . cf ull er . image an alys ist ools . fitting Ċ Ċ import Ġedu . stanford . cf ull er . image an alys ist ools . meta . parameters . Parameter Dictionary Ċ import Ġedu . stanford . cf ull er . image an alys ist ools . frontend . Logging Utilities Ċ import Ġedu . stanford . cf ull er . image an alys ist ools . image . Image Ċ import Ġedu . stanford . cf ull er . image an alys ist ools . image . Image Coordinate Ċ Ċ import Ġorg . apache . commons . math 3 . analysis . Un ivariate Function Ċ import Ġorg . apache . commons . math 3 . analysis . integration . Legend re Ga uss Integr ator Ċ import Ġorg . apache . commons . math 3 . exception . util . Dummy Local izable Ċ import Ġorg . apache . commons . math 3 . linear . Array Real Vector Ċ import Ġorg . apache . commons . math 3 . linear . Real Vector Ċ import Ġorg . apache . commons . math 3 . exception . Con ver gence Exception Ċ Ċ /** Ċ Ġ* ĠAn ĠImage Object Ġthat Ġfits Ġto Ġa Ġthree - dimensional Ġgaussian Ġthat Ġis Ġsymmetric Ġin Ġx - y Ġand Ġhas Ġno Ġcovariance Ċ Ġ* Ġbetween Ġany Ġof Ġthe Ġdimensions . ĊĊ Ġ* Ġ@ author ĠCol in ĠJ . ĠFull er Ċ Ġ*/ Ċ class ĠGaussian Image Object Ġ: ĠImage Object Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġan Ġempty ĠGaussian Image Object . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa ĠGaussian Image Object Ġfrom Ġthe Ġspecified Ġmasked Ġregion Ġin Ġan ĠImage . ĊĠĠĠĠ Ġ* Ġ@ param Ġlabel ĠĠĠĠ ĠThe Ġgre yle vel Ġof Ġthe Ġobject Ġin Ġthe ĠImage Ġmask . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmask ĠĠĠĠĠ ĠThe Ġmask Ġof Ġobjects Ġin Ġthe ĠImage , Ġwith Ġa Ġunique Ġgre yle vel Ġassigned Ġto Ġeach Ġobject . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġparent ĠĠĠ ĠThe ĠImage Ġthat Ġthe Ġobject Ġoccurs Ġin Ġand Ġthat Ġis Ġmasked Ġby Ġmask . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġp ĠĠĠĠĠĠĠĠ ĠThe Ġparameters Ġassociated Ġwith Ġthis Ġanalysis . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( label : ĠInt , Ġmask : ĠImage , Ġparent : ĠImage , Ġp : ĠParameter Dictionary ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( label , Ġmask , Ġparent , Ġp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠF its Ġthis Ġobject Ġto Ġa Ġ 3 - dimensional Ġgaussian , Ġand Ġestimates Ġerror Ġand Ġgood ness Ġof Ġfit . ĊĠĠĠĠ Ġ* Ġ@ param Ġp ĠĠĠĠ ĠThe Ġparameters Ġfor Ġthe Ġcurrent Ġanalysis . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġfit Position ( p : ĠParameter Dictionary ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . size In Pixels Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . null ify Images () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . fit Parameters By Channel Ġ= Ġjava . util . ArrayList < Fit Parameters >() ĊĠĠĠĠĠĠĠ Ġthis . fit R 2 By Channel Ġ= Ġjava . util . ArrayList < Double >() ĊĠĠĠĠĠĠĠ Ġthis . fit Error By Channel Ġ= Ġjava . util . ArrayList < Double >() ĊĠĠĠĠĠĠĠ Ġthis . n Ph ot ons By Channel Ġ= Ġjava . util . ArrayList < Double >() ĊĠĠĠĠĠĠĠ Ġval Ġgf Ġ= ĠGaussian F itter 3 D () ĊĠĠĠĠĠĠĠ Ġvar Ġnum Channels Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġif Ġ( p . has Key ( NUM _ W AV EL EN GTH S _ PARAM )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnum Channels Ġ= Ġp . getInt Value ForKey ( NUM _ W AV EL EN GTH S _ PARAM ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnum Channels Ġ= Ġthis . parent !!. dimension Sizes . get ( Image Coordinate . C ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( channel Index Ġin Ġ 0 .. num Channels Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfit Parameters : ĠReal Vector Ġ= ĠArray Real Vector ( 7 , Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp pg Ġ= Ġp . getDouble Value ForKey ( PH OT ONS _ PER _ LEVEL _ PARAM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . parent Box Min ! ![ Image Coordinate . C ] Ġ= Ġchannel Index ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . parent Box Max ! ![ Image Coordinate . C ] Ġ= Ġchannel Index Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . box Images () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġjava . util . ArrayList < Double >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġjava . util . ArrayList < Double >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġz Ġ= Ġjava . util . ArrayList < Double >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Ġ= Ġjava . util . ArrayList < Double >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( ic Ġin Ġthis . parent !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx . add ( ic [ Image Coordinate . X ]. toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy . add ( ic [ Image Coordinate . Y ]. toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġz . add ( ic [ Image Coordinate . Z ]. toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf . add ( parent !!. getValue ( ic ). toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Values Ġ= ĠDouble Array ( x . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Values Ġ= ĠDouble Array ( y . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Values Ġ= ĠDouble Array ( z . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Values Ġ= ĠDouble Array ( f . size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx Cent roid Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy Cent roid Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġz Cent roid Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtotal Counts Ġ= Ġ 0 . 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġx . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Values ! ![ i ] Ġ= Ġx [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Values ! ![ i ] Ġ= Ġy [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġz Values ! ![ i ] Ġ= Ġz [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Values ! ![ i ] Ġ= Ġf [ i ] Ġ* Ġp pg ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Cent roid Ġ+= Ġx Values ! ![ i ] Ġ* Ġfunction Values ! ![ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Cent roid Ġ+= Ġy Values ! ![ i ] Ġ* Ġfunction Values ! ![ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġz Cent roid Ġ+= Ġz Values ! ![ i ] Ġ* Ġfunction Values ! ![ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Counts Ġ+= Ġfunction Values ! ![ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Cent roid Ġ/= Ġtotal Counts ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Cent roid Ġ/= Ġtotal Counts ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Cent roid Ġ/= Ġtotal Counts ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// z Ġsometimes Ġseems Ġto Ġbe Ġa Ġbit Ġoff ... Ġtrying Ġ( 2 0 1 1 0 4 1 5 ) Ġto Ġgo Ġback Ġto Ġmax Ġvalue Ġpixel Ġat Ġx , y Ġcentroid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Round Ġ= ĠMath . round ( xC ent roid ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Round Ġ= ĠMath . round ( y Cent roid ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmax Val Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmax Ind Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmin Z Ġ= Ġjava . lang . Double . MAX _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmax Z Ġ= Ġ 0 . 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġx . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( z Values ! ![ i ] Ġ< Ġmin Z ) Ġmin Z Ġ= Ġz Values ! ![ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( z Values ! ![ i ] Ġ> Ġmax Z ) Ġmax Z Ġ= Ġz Values ! ![ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Values ! ![ i ] Ġ== Ġx Round . toDouble () Ġ&& Ġy Values ! ![ i ] Ġ== Ġy Round . toDouble ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( function Values ! ![ i ] Ġ> Ġmax Val ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Val Ġ= Ġfunction Values ! ![ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ind Ġ= Ġz Values ! ![ i ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Cent roid Ġ= Ġmax Ind . toDouble () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// parameter Ġordering : Ġamplitude , Ġvar Ġx - y , Ġvar Ġz , Ġx / y / z Ġcoords , Ġbackground ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// amplitude : Ġfind Ġthe Ġmax Ġvalue ; Ġbackground : Ġfind Ġthe Ġmin Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠmaxValue Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmin Value Ġ= Ġjava . lang . Double . MAX _ VALUE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( ic Ġin Ġthis . parent !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent !!. getValue ( ic ) Ġ> ĠmaxValue ) ĠmaxValue Ġ= Ġparent !!. getValue ( ic ). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent !!. getValue ( ic ) Ġ< Ġmin Value ) Ġmin Value Ġ= Ġparent !!. getValue ( ic ). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfit Parameters . set Entry ( 0 , Ġ( max Value Ġ- Ġmin Value ) Ġ* Ġ 0 . 9 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfit Parameters . set Entry ( 6 , Ġmin Value Ġ+ Ġ 0 . 0 5 Ġ* Ġ( max Value Ġ- Ġmin Value )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// positions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfit Parameters . set Entry ( 3 , Ġx Cent roid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfit Parameters . set Entry ( 4 , Ġy Cent roid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfit Parameters . set Entry ( 5 , Ġz Cent roid ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// var ian ces ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlimited Width xy Ġ= Ġ 2 0 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlimited Width z Ġ= Ġ 5 0 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġs iz ex Ġ= Ġlimited Width xy Ġ/ Ġp . getDouble Value ForKey ( PIXEL SIZE _ PARAM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsize z Ġ= Ġlimited Width z Ġ/ Ġp . getDouble Value ForKey ( SECTION SIZE _ PARAM ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p . has Key ( Z _ WIDTH _ PARAM )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize z Ġ= Ġp . getDouble Value ForKey ( Z _ WIDTH _ PARAM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p . has Key ( XY _ WIDTH _ PARAM )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs iz ex Ġ= Ġp . getDouble Value ForKey ( XY _ WIDTH _ PARAM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfit Parameters . set Entry ( 1 , Ġs iz ex Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfit Parameters . set Entry ( 2 , Ġsize z Ġ/ Ġ 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// amplitude Ġand Ġbackground Ġare Ġin Ġarbitrary Ġintensity Ġunits ; Ġconvert Ġto Ġph oton Ġcounts ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfit Parameters . set Entry ( 0 , Ġfit Parameters . getEntry ( 0 ) Ġ* Ġp pg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfit Parameters . set Entry ( 6 , Ġfit Parameters . getEntry ( 6 ) Ġ* Ġp pg ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// do Ġthe Ġfit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfit Parameters Ġ= Ġgf . fit ( this , Ġfit Parameters , Ġp pg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfp Ġ= ĠFit Parameters () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfp . setPosition ( Image Coordinate . X , Ġfit Parameters . getEntry ( 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfp . setPosition ( Image Coordinate . Y , Ġfit Parameters . getEntry ( 4 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfp . setPosition ( Image Coordinate . Z , Ġfit Parameters . getEntry ( 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfp . setSize ( Image Coordinate . X , Ġfit Parameters . getEntry ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfp . setSize ( Image Coordinate . Y , Ġfit Parameters . getEntry ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfp . setSize ( Image Coordinate . Z , Ġfit Parameters . getEntry ( 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfp . amplitude Ġ= Ġfit Parameters . getEntry ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfp . background Ġ= Ġfit Parameters . getEntry ( 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfit Parameters By Channel !!. add ( fp ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// calculate ĠR 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresidual Sum Squared Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmean Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠR 2 Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġn _ phot ons Ġ= Ġ 0 . 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġthis . x Values !!. indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresidual Sum Squared Ġ+= ĠMath . pow ( Gaussian F itter 3 D . fit Res idual ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Values ! ![ i ], Ġx Values ! ![ i ], Ġy Values ! ![ i ], Ġz Values ! ![ i ], Ġfit Parameters ), Ġ 2 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmean Ġ+= Ġfunction Values ! ![ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn _ phot ons Ġ+= Ġfunction Values ! ![ i ] Ġ- Ġfit Parameters . getEntry ( 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmean Ġ/= Ġfunction Values !!. size . toDouble () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvariance Ġ= Ġthis . x Values !!. indices . sum By Double Ġ{ ĠMath . pow ( function Values ! ![ it ] Ġ- Ġmean , Ġ 2 . 0 ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR 2 Ġ= Ġ 1 Ġ- Ġresidual Sum Squared Ġ/ Ġvariance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . fit R 2 By Channel !!. add ( R 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . un box Images () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// calculate Ġfit Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs _ xy Ġ= Ġfit Parameters . getEntry ( 1 ) Ġ* Ġfit Parameters . getEntry ( 1 ) Ġ* ĠMath . pow ( p . getDouble Value ForKey ( PIXEL SIZE _ PARAM ), Ġ 2 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs _ z Ġ= Ġfit Parameters . getEntry ( 2 ) Ġ* Ġfit Parameters . getEntry ( 2 ) Ġ* ĠMath . pow ( p . getDouble Value ForKey ( SECTION SIZE _ PARAM ), Ġ 2 . 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġerror Ġ= Ġ( 2 Ġ* Ġs _ xy Ġ+ Ġs _ z ) Ġ/ Ġ( n _ phot ons Ġ- Ġ 1 )// Ġ+ Ġ 4 * Math . sqrt ( Math . PI ) Ġ* ĠMath . pow ( 2 * s _ xy , 1 . 5 )* Math . pow ( fit Parameters . getEntry ( 6 ), 2 )/( p . getDouble Value ForKey (" pixel size _ nm ") * n _ phot ons * n _ phot ons ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġfit Parameters . getEntry ( 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġp . getDouble Value ForKey ( PIXEL SIZE _ PARAM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalpha Ġ= Ġp . getDouble Value ForKey ( SECTION SIZE _ PARAM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsa _ x Ġ= Ġs _ xy Ġ+ ĠMath . pow ( a , Ġ 2 . 0 ) Ġ/ Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsa _ z Ġ= Ġs _ z Ġ+ ĠMath . pow ( alpha , Ġ 2 . 0 ) Ġ/ Ġ 1 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġerror _ x Ġ= Ġsa _ x Ġ/ Ġn _ phot ons Ġ* Ġ( 1 6 . 0 Ġ/ Ġ 9 . 0 Ġ+ Ġ 8 . 0 Ġ* ĠMath . PI Ġ* Ġsa _ x Ġ* Ġb Ġ* Ġb Ġ/ Ġ( n _ phot ons Ġ* ĠMath . pow ( p . getDouble Value ForKey ( PIXEL SIZE _ PARAM ), Ġ 2 . 0 ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġerror _ z Ġ= Ġsa _ z Ġ/ Ġn _ phot ons Ġ* Ġ( 1 6 . 0 Ġ/ Ġ 9 . 0 Ġ+ Ġ 8 . 0 Ġ* ĠMath . PI Ġ* Ġsa _ z Ġ* Ġb Ġ* Ġb Ġ/ Ġ( n _ phot ons Ġ* ĠMath . pow ( p . getDouble Value ForKey ( SECTION SIZE _ PARAM ), Ġ 2 . 0 ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠA Ġ= Ġ 1 . 0 Ġ/ Ġ( 2 . 0 Ġ* ĠMath . sqrt ( 2 . 0 ) Ġ* ĠMath . pow ( Math . PI , Ġ 1 . 5 ) Ġ* ĠMath . sqrt ( sa _ z ) Ġ* Ġsa _ x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe if Ġ= ĠErr Int Func () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe if . set Params ( b , Ġn _ phot ons , ĠA , Ġsa _ z , Ġsa _ x , Ġa , Ġalpha ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl gi Ġ= ĠLegend re Ga uss Integr ator ( 5 , Ġ 1 0 , Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// integrate Ġover Ġ 1 0 * width Ġof ĠP SF Ġin Ġz ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġ 1 0 Ġ* ĠMath . sqrt ( sa _ z ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġin tp art Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b Ġ< Ġ 0 ) Ġthrow ĠCon ver gence Exception ( Dummy Local izable (" negative Ġbackground ! ")) Ġ// Ġa Ġnegative Ġvalue Ġfor Ġb Ġseems Ġto Ġcause Ġthe Ġintegration Ġto Ġhang , Ġprevent ing Ġthe Ġprogram Ġfrom Ġprogress ing ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin tp art Ġ= Ġl gi . integrate ( 1 0 0 0 0 , Ġe if , Ġ- size , Ġsize ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfull Int Part Ġ= Ġin tp art Ġ+ ĠMath . pow ( 2 Ġ* ĠMath . PI , Ġ 1 . 5 ) Ġ* Ġsa _ x Ġ* ĠA Ġ/ ĠMath . sqrt ( sa _ z ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror _ x Ġ= ĠMath . sqrt ( 2 Ġ/ Ġ( n _ phot ons Ġ* Ġsa _ z Ġ/ Ġ( 2 Ġ* Ġsa _ z Ġ+ Ġsa _ x ) Ġ* Ġfull Int Part )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror _ z Ġ= ĠMath . sqrt ( 2 Ġ/ Ġ( n _ phot ons Ġ* Ġsa _ x Ġ/ Ġ( 2 Ġ* Ġsa _ z Ġ+ Ġsa _ x ) Ġ* Ġfull Int Part )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠCon ver gence Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogging Utilities . logger . se vere (" Integration Ġerror : Ġ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror _ x Ġ= Ġ- 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror _ z Ġ= Ġ- 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error _ x Ġ> Ġ 0 Ġ&& Ġerror _ z Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ= ĠMath . sqrt ( 2 . 0 Ġ* Ġerror _ x Ġ* Ġerror _ x Ġ+ Ġerror _ z Ġ* Ġerror _ z ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ= Ġjava . lang . Double . NaN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . fit Error By Channel !!. add ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . position sBy Channel . add ( fit Parameters . getSub Vector ( 3 , Ġ 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . n Ph ot ons By Channel !!. add ( n _ phot ons ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . had Fit ting Error Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠDI 1 Func Ġ: ĠUn ivariate Function Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġz : ĠDouble Ġ= Ġ 0 . toDouble () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġb : ĠDouble Ġ= Ġ 0 . toDouble () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġn : ĠDouble Ġ= Ġ 0 . toDouble () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠA : ĠDouble Ġ= Ġ 0 . toDouble () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġsa _ z : ĠDouble Ġ= Ġ 0 . toDouble () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġa : ĠDouble Ġ= Ġ 0 . toDouble () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġalpha : ĠDouble Ġ= Ġ 0 . toDouble () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvalue ( t : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtau Ġ= Ġb Ġ/ Ġ( n Ġ* Ġa Ġ* Ġa Ġ* Ġalpha Ġ* ĠA Ġ* ĠMath . exp (- z Ġ* Ġz Ġ/ Ġ( 2 Ġ* Ġsa _ z ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 . 0 Ġ* Ġt Ġ* ĠMath . log ( t ) Ġ/ Ġ( t Ġ+ Ġtau ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Z ( z : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . z Ġ= Ġz ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Params ( b : ĠDouble , Ġn : ĠDouble , ĠA : ĠDouble , Ġsa _ z : ĠDouble , Ġa : ĠDouble , Ġalpha : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . b Ġ= Ġb ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . n Ġ= Ġn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . A Ġ= ĠA ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sa _ z Ġ= Ġsa _ z ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . a Ġ= Ġa ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . alpha Ġ= Ġalpha ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠErr Int Func Ġ: ĠUn ivariate Function Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġb : ĠDouble Ġ= Ġ 0 . toDouble () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġn : ĠDouble Ġ= Ġ 0 . toDouble () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠA : ĠDouble Ġ= Ġ 0 . toDouble () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġsa _ z : ĠDouble Ġ= Ġ 0 . toDouble () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġsa _ x : ĠDouble Ġ= Ġ 0 . toDouble () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġa : ĠDouble Ġ= Ġ 0 . toDouble () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġalpha : ĠDouble Ġ= Ġ 0 . toDouble () ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġl gi : ĠLegend re Ga uss Integr ator Ġ= ĠLegend re Ga uss Integr ator ( 5 , Ġ 1 0 , Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdi 1 : ĠDI 1 Func Ġ= ĠDI 1 Func () ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Params ( b : ĠDouble , Ġn : ĠDouble , ĠA : ĠDouble , Ġsa _ z : ĠDouble , Ġsa _ x : ĠDouble , Ġa : ĠDouble , Ġalpha : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . b Ġ= Ġb ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . n Ġ= Ġn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . A Ġ= ĠA ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sa _ z Ġ= Ġsa _ z ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sa _ x Ġ= Ġsa _ x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . a Ġ= Ġa ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . alpha Ġ= Ġalpha ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . di 1 . set Params ( b , Ġn , ĠA , Ġsa _ z , Ġa , Ġalpha ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( IllegalArgumentException :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvalue ( z : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . di 1 . set Z ( z ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠI 1 Ġ= Ġ 0 . 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠI 1 Ġ= Ġl gi . integrate ( 1 0 0 0 0 , Ġdi 1 , Ġ 0 . 0 , Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠCon ver gence Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpart 1 Ġ= Ġ 4 . 0 Ġ* ĠMath . PI Ġ* ĠA Ġ* ĠMath . exp (- z Ġ* Ġz Ġ/ Ġ( 2 Ġ* Ġsa _ z )) Ġ* ĠI 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpart 2 Ġ= Ġ 2 . 0 Ġ* ĠMath . PI Ġ* Ġsa _ x Ġ* Ġb Ġ/ Ġ( sa _ z Ġ* Ġsa _ z Ġ* Ġn Ġ* Ġa Ġ* Ġa Ġ* Ġalpha ) Ġ* Ġz Ġ* Ġz Ġ* ĠMath . log ( 1 Ġ/ Ġ( 1 Ġ+ Ġn Ġ* ĠA Ġ* Ġa Ġ* Ġa Ġ* Ġalpha Ġ* ĠMath . exp (- z Ġ* Ġz Ġ/ Ġ( 2 Ġ* Ġsa _ z )) Ġ/ Ġb )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpart 1 Ġ+ Ġpart 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠserialVersionUID Ġ= Ġ 2 L ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġparameters ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠPH OT ONS _ PER _ LEVEL _ PARAM Ġ= Ġ" phot ons _ per _ gre yle vel " ĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠPIX EL SIZE _ PARAM Ġ= Ġ" pixel size _ nm " ĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠSECTION SIZE _ PARAM Ġ= Ġ" z _ section size _ nm " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠOptional Ġparameters ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠNUM _ W AV EL EN GTH S _ PARAM Ġ= Ġ" num _ w avelength s " ĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠZ _ WIDTH _ PARAM Ġ= Ġ" z _ width " ĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠXY _ WIDTH _ PARAM Ġ= Ġ" xy _ width " ĊĠĠĠ Ġ} Ċ } Ċ