@@ -2091,6 +2091,7 @@ def plot_sessions(self, dir = 'output', figsize = (8,8), filetype = 'pdf', dpi =
20912091 sp = self .plot_single_session (session , xylimits = 'constant' )
20922092 ppl .savefig (f'{ dir } /D{ self ._4x } _plot_{ session } .{ filetype } ' , ** ({'dpi' : dpi } if filetype .lower () == 'png' else {}))
20932093 ppl .close (sp .fig )
2094+
20942095
20952096
20962097 @make_verbal
@@ -2217,6 +2218,10 @@ def consolidate_sessions(self):
22172218 if self .standardization_method == 'pooled' :
22182219 for session in self .sessions :
22192220
2221+ # different (better?) computation of D4x repeatability for each session:
2222+ sqresiduals = [(r [f'D{ self ._4x } ' ] - self .samples [r ['Sample' ]][f'D{ self ._4x } ' ])** 2 for r in self .sessions [session ]['data' ]]
2223+ self .sessions [session ][f'r_D{ self ._4x } ' ] = np .mean (sqresiduals )** .5
2224+
22202225 self .sessions [session ]['a' ] = self .standardization .params .valuesdict ()[f'a_{ pf (session )} ' ]
22212226 i = self .standardization .var_names .index (f'a_{ pf (session )} ' )
22222227 self .sessions [session ]['SE_a' ] = self .standardization .covar [i ,i ]** .5
@@ -2557,32 +2562,39 @@ def plot_single_session(self,
25572562 out = _SessionPlot ()
25582563 anchors = [a for a in self .anchors if [r for r in self .sessions [session ]['data' ] if r ['Sample' ] == a ]]
25592564 unknowns = [u for u in self .unknowns if [r for r in self .sessions [session ]['data' ] if r ['Sample' ] == u ]]
2565+ anchors_d = [r [f'd{ self ._4x } ' ] for r in self .sessions [session ]['data' ] if r ['Sample' ] in self .anchors ]
2566+ anchors_D = [r [f'D{ self ._4x } ' ] for r in self .sessions [session ]['data' ] if r ['Sample' ] in self .anchors ]
2567+ unknowns_d = [r [f'd{ self ._4x } ' ] for r in self .sessions [session ]['data' ] if r ['Sample' ] in self .unknowns ]
2568+ unknowns_D = [r [f'D{ self ._4x } ' ] for r in self .sessions [session ]['data' ] if r ['Sample' ] in self .unknowns ]
2569+ anchor_avg = (np .array ([ np .array ([
2570+ np .min ([r [f'd{ self ._4x } ' ] for r in self .sessions [session ]['data' ] if r ['Sample' ] == sample ]) - 1 ,
2571+ np .max ([r [f'd{ self ._4x } ' ] for r in self .sessions [session ]['data' ] if r ['Sample' ] == sample ]) + 1
2572+ ]) for sample in anchors ]).T ,
2573+ np .array ([ np .array ([0 , 0 ]) + self .Nominal_D4x [sample ] for sample in anchors ]).T )
2574+ unknown_avg = (np .array ([ np .array ([
2575+ np .min ([r [f'd{ self ._4x } ' ] for r in self .sessions [session ]['data' ] if r ['Sample' ] == sample ]) - 1 ,
2576+ np .max ([r [f'd{ self ._4x } ' ] for r in self .sessions [session ]['data' ] if r ['Sample' ] == sample ]) + 1
2577+ ]) for sample in unknowns ]).T ,
2578+ np .array ([ np .array ([0 , 0 ]) + self .unknowns [sample ][f'D{ self ._4x } ' ] for sample in unknowns ]).T )
2579+
25602580
25612581 if fig == 'new' :
25622582 out .fig = ppl .figure (figsize = (6 ,6 ))
25632583 ppl .subplots_adjust (.1 ,.1 ,.9 ,.9 )
25642584
25652585 out .anchor_analyses , = ppl .plot (
2566- [ r [ f'd { self . _4x } ' ] for r in self . sessions [ session ][ 'data' ] if r [ 'Sample' ] in self . anchors ] ,
2567- [ r [ f'D { self . _4x } ' ] for r in self . sessions [ session ][ 'data' ] if r [ 'Sample' ] in self . anchors ] ,
2586+ anchors_d ,
2587+ anchors_D ,
25682588 ** kw_plot_anchors )
25692589 out .unknown_analyses , = ppl .plot (
2570- [ r [ f'd { self . _4x } ' ] for r in self . sessions [ session ][ 'data' ] if r [ 'Sample' ] in self . unknowns ] ,
2571- [ r [ f'D { self . _4x } ' ] for r in self . sessions [ session ][ 'data' ] if r [ 'Sample' ] in self . unknowns ] ,
2590+ unknowns_d ,
2591+ unknowns_D ,
25722592 ** kw_plot_unknowns )
25732593 out .anchor_avg = ppl .plot (
2574- np .array ([ np .array ([
2575- np .min ([r [f'd{ self ._4x } ' ] for r in self .sessions [session ]['data' ] if r ['Sample' ] == sample ]) - 1 ,
2576- np .max ([r [f'd{ self ._4x } ' ] for r in self .sessions [session ]['data' ] if r ['Sample' ] == sample ]) + 1
2577- ]) for sample in anchors ]).T ,
2578- np .array ([ np .array ([0 , 0 ]) + self .Nominal_D4x [sample ] for sample in anchors ]).T ,
2594+ * anchor_avg ,
25792595 ** kw_plot_anchor_avg )
25802596 out .unknown_avg = ppl .plot (
2581- np .array ([ np .array ([
2582- np .min ([r [f'd{ self ._4x } ' ] for r in self .sessions [session ]['data' ] if r ['Sample' ] == sample ]) - 1 ,
2583- np .max ([r [f'd{ self ._4x } ' ] for r in self .sessions [session ]['data' ] if r ['Sample' ] == sample ]) + 1
2584- ]) for sample in unknowns ]).T ,
2585- np .array ([ np .array ([0 , 0 ]) + self .unknowns [sample ][f'D{ self ._4x } ' ] for sample in unknowns ]).T ,
2597+ * unknown_avg ,
25862598 ** kw_plot_unknown_avg )
25872599 if xylimits == 'constant' :
25882600 x = [r [f'd{ self ._4x } ' ] for r in self ]
@@ -2623,6 +2635,20 @@ def plot_single_session(self,
26232635 cval = np .arange (np .ceil (SI .min () / .001 ) * .001 , np .ceil (SI .max () / .001 + 1 ) * .001 , cinterval )
26242636 out .contour = ppl .contour (XI , YI , SI , cval , ** kw_contour_error )
26252637 out .clabel = ppl .clabel (out .contour )
2638+ contour = (XI , YI , SI , cval , cinterval )
2639+
2640+ if fig == None :
2641+ return {
2642+ 'anchors' :anchors ,
2643+ 'unknowns' :unknowns ,
2644+ 'anchors_d' :anchors_d ,
2645+ 'anchors_D' :anchors_D ,
2646+ 'unknowns_d' :unknowns_d ,
2647+ 'unknowns_D' :unknowns_D ,
2648+ 'anchor_avg' :anchor_avg ,
2649+ 'unknown_avg' :unknown_avg ,
2650+ 'contour' :contour ,
2651+ }
26262652
26272653 ppl .xlabel (x_label )
26282654 ppl .ylabel (y_label )
0 commit comments