@@ -832,6 +832,67 @@ <h1>Source code for suboptimumg.plotting.internal_data_plots</h1><div class="hig
832832
833833
834834
835+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> _plot_seed_idx_list</ span > < span class ="p "> (</ span >
836+ < span class ="n "> results</ span > < span class ="p "> :</ span > < span class ="n "> List</ span > < span class ="p "> [</ span > < span class ="n "> LapsimResults</ span > < span class ="p "> ],</ span >
837+ < span class ="n "> x_axis</ span > < span class ="p "> :</ span > < span class ="n "> Axis</ span > < span class ="p "> ,</ span >
838+ < span class ="n "> row_idx</ span > < span class ="p "> :</ span > < span class ="nb "> int</ span > < span class ="p "> ,</ span >
839+ < span class ="n "> fig</ span > < span class ="p "> :</ span > < span class ="n "> go</ span > < span class ="o "> .</ span > < span class ="n "> Figure</ span > < span class ="p "> ,</ span >
840+ < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
841+ < span class ="w "> </ span > < span class ="sd "> """</ span >
842+ < span class ="sd "> Special plotting for seed_idx_list: shows v_max_profile vs cumulative_dist</ span >
843+ < span class ="sd "> with red dots overlaid at seed index positions.</ span >
844+
845+ < span class ="sd "> Parameters</ span >
846+ < span class ="sd "> ----------</ span >
847+ < span class ="sd "> results : List[LapsimResults]</ span >
848+ < span class ="sd "> List of lapsim results to plot</ span >
849+ < span class ="sd "> x_axis : Axis</ span >
850+ < span class ="sd "> Axis to use for the x-axis (distance or time)</ span >
851+ < span class ="sd "> row_idx : int</ span >
852+ < span class ="sd "> Row index for the subplot</ span >
853+ < span class ="sd "> fig : go.Figure</ span >
854+ < span class ="sd "> Figure to add traces to</ span >
855+ < span class ="sd "> """</ span >
856+ < span class ="k "> for</ span > < span class ="n "> run_idx</ span > < span class ="p "> ,</ span > < span class ="n "> r</ span > < span class ="ow "> in</ span > < span class ="nb "> enumerate</ span > < span class ="p "> (</ span > < span class ="n "> results</ span > < span class ="p "> ):</ span >
857+ < span class ="n "> x_vals</ span > < span class ="o "> =</ span > < span class ="n "> _get_x_vals</ span > < span class ="p "> (</ span > < span class ="n "> r</ span > < span class ="p "> ,</ span > < span class ="n "> x_axis</ span > < span class ="p "> )</ span >
858+
859+ < span class ="n "> v_max_profile</ span > < span class ="o "> =</ span > < span class ="n "> r</ span > < span class ="o "> .</ span > < span class ="n "> internal_data</ span > < span class ="o "> .</ span > < span class ="n "> v_max_profile</ span >
860+ < span class ="n "> seed_idx_list</ span > < span class ="o "> =</ span > < span class ="n "> r</ span > < span class ="o "> .</ span > < span class ="n "> internal_data</ span > < span class ="o "> .</ span > < span class ="n "> seed_idx_list</ span >
861+
862+ < span class ="c1 "> # Plot v_max_profile as the base line</ span >
863+ < span class ="n "> fig</ span > < span class ="o "> .</ span > < span class ="n "> add_trace</ span > < span class ="p "> (</ span >
864+ < span class ="n "> go</ span > < span class ="o "> .</ span > < span class ="n "> Scatter</ span > < span class ="p "> (</ span >
865+ < span class ="n "> x</ span > < span class ="o "> =</ span > < span class ="n "> x_vals</ span > < span class ="p "> ,</ span >
866+ < span class ="n "> y</ span > < span class ="o "> =</ span > < span class ="n "> v_max_profile</ span > < span class ="p "> ,</ span >
867+ < span class ="n "> mode</ span > < span class ="o "> =</ span > < span class ="s2 "> "lines"</ span > < span class ="p "> ,</ span >
868+ < span class ="n "> name</ span > < span class ="o "> =</ span > < span class ="sa "> f</ span > < span class ="s2 "> "run_</ span > < span class ="si "> {</ span > < span class ="n "> run_idx</ span > < span class ="si "> }</ span > < span class ="s2 "> :v_max_profile"</ span > < span class ="p "> ,</ span >
869+ < span class ="n "> line</ span > < span class ="o "> =</ span > < span class ="nb "> dict</ span > < span class ="p "> (</ span > < span class ="n "> color</ span > < span class ="o "> =</ span > < span class ="s2 "> "blue"</ span > < span class ="p "> ),</ span >
870+ < span class ="p "> ),</ span >
871+ < span class ="n "> row</ span > < span class ="o "> =</ span > < span class ="n "> row_idx</ span > < span class ="p "> ,</ span >
872+ < span class ="n "> col</ span > < span class ="o "> =</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span >
873+ < span class ="p "> )</ span >
874+
875+ < span class ="c1 "> # Overlay red dots at seed indices</ span >
876+ < span class ="n "> seed_x</ span > < span class ="o "> =</ span > < span class ="n "> x_vals</ span > < span class ="p "> [</ span > < span class ="n "> seed_idx_list</ span > < span class ="p "> ]</ span >
877+ < span class ="n "> seed_y</ span > < span class ="o "> =</ span > < span class ="n "> v_max_profile</ span > < span class ="p "> [</ span > < span class ="n "> seed_idx_list</ span > < span class ="p "> ]</ span >
878+
879+ < span class ="n "> fig</ span > < span class ="o "> .</ span > < span class ="n "> add_trace</ span > < span class ="p "> (</ span >
880+ < span class ="n "> go</ span > < span class ="o "> .</ span > < span class ="n "> Scatter</ span > < span class ="p "> (</ span >
881+ < span class ="n "> x</ span > < span class ="o "> =</ span > < span class ="n "> seed_x</ span > < span class ="p "> ,</ span >
882+ < span class ="n "> y</ span > < span class ="o "> =</ span > < span class ="n "> seed_y</ span > < span class ="p "> ,</ span >
883+ < span class ="n "> mode</ span > < span class ="o "> =</ span > < span class ="s2 "> "markers"</ span > < span class ="p "> ,</ span >
884+ < span class ="n "> name</ span > < span class ="o "> =</ span > < span class ="sa "> f</ span > < span class ="s2 "> "run_</ span > < span class ="si "> {</ span > < span class ="n "> run_idx</ span > < span class ="si "> }</ span > < span class ="s2 "> :seed_indices"</ span > < span class ="p "> ,</ span >
885+ < span class ="n "> marker</ span > < span class ="o "> =</ span > < span class ="nb "> dict</ span > < span class ="p "> (</ span > < span class ="n "> color</ span > < span class ="o "> =</ span > < span class ="s2 "> "red"</ span > < span class ="p "> ,</ span > < span class ="n "> size</ span > < span class ="o "> =</ span > < span class ="n "> MARKER_SIZE_LARGE</ span > < span class ="p "> ,</ span > < span class ="n "> symbol</ span > < span class ="o "> =</ span > < span class ="s2 "> "circle"</ span > < span class ="p "> ),</ span >
886+ < span class ="p "> ),</ span >
887+ < span class ="n "> row</ span > < span class ="o "> =</ span > < span class ="n "> row_idx</ span > < span class ="p "> ,</ span >
888+ < span class ="n "> col</ span > < span class ="o "> =</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span >
889+ < span class ="p "> )</ span >
890+ < span class ="n "> fig</ span > < span class ="o "> .</ span > < span class ="n "> update_yaxes</ span > < span class ="p "> (</ span >
891+ < span class ="n "> title_text</ span > < span class ="o "> =</ span > < span class ="s2 "> "v_max_profile w/ seeds highlighted"</ span > < span class ="p "> ,</ span > < span class ="n "> row</ span > < span class ="o "> =</ span > < span class ="n "> row_idx</ span > < span class ="p "> ,</ span > < span class ="n "> col</ span > < span class ="o "> =</ span > < span class ="mi "> 1</ span >
892+ < span class ="p "> )</ span >
893+ < span class ="n "> fig</ span > < span class ="o "> .</ span > < span class ="n "> update_xaxes</ span > < span class ="p "> (</ span > < span class ="n "> title_text</ span > < span class ="o "> =</ span > < span class ="n "> Axis</ span > < span class ="o "> .</ span > < span class ="n "> DISTANCE</ span > < span class ="o "> .</ span > < span class ="n "> value</ span > < span class ="p "> ,</ span > < span class ="n "> row</ span > < span class ="o "> =</ span > < span class ="n "> row_idx</ span > < span class ="p "> ,</ span > < span class ="n "> col</ span > < span class ="o "> =</ span > < span class ="mi "> 1</ span > < span class ="p "> )</ span >
894+
895+
835896< div class ="viewcode-block " id ="plot_internal_keys ">
836897< a class ="viewcode-back " href ="../../../_autosummary/suboptimumg.plotting.internal_data_plots.html#suboptimumg.plotting.internal_data_plots.plot_internal_keys "> [docs]</ a >
837898< span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> plot_internal_keys</ span > < span class ="p "> (</ span >
@@ -874,19 +935,32 @@ <h1>Source code for suboptimumg.plotting.internal_data_plots</h1><div class="hig
874935< span class ="sd "> - Internal Data top-level keys: ``v_max_profile``, ``seed_idx_list``, ``cumulative_dist``</ span >
875936< span class ="sd "> - LapsimResults top-level keys: ``lap_t``, ``lap_dxs``, ``lap_vels``, ``lap_accs``, ``lap_powers``, ``lap_eff_motor_torques``</ span >
876937< span class ="sd "> - Per-seed keys in the form ``{field}_seed_{n}`` (e.g. ``v_proposal_seed_2``)</ span >
938+
939+ < span class ="sd "> Special case: ``seed_idx_list`` ignores the x_axis parameter and always plots</ span >
940+ < span class ="sd "> v_max_profile vs cumulative_dist with red dots overlaid at seed index positions.</ span >
877941< span class ="sd "> """</ span >
942+ < span class ="c1 "> # Normalize inputs to lists</ span >
943+ < span class ="k "> if</ span > < span class ="ow "> not</ span > < span class ="nb "> isinstance</ span > < span class ="p "> (</ span > < span class ="n "> results</ span > < span class ="p "> ,</ span > < span class ="nb "> list</ span > < span class ="p "> ):</ span >
944+ < span class ="n "> results</ span > < span class ="o "> =</ span > < span class ="p "> [</ span > < span class ="n "> results</ span > < span class ="p "> ]</ span >
945+
878946 < span class ="n "> fig</ span > < span class ="o "> =</ span > < span class ="n "> make_subplots</ span > < span class ="p "> (</ span >
879947 < span class ="n "> rows</ span > < span class ="o "> =</ span > < span class ="nb "> len</ span > < span class ="p "> (</ span > < span class ="n "> keys</ span > < span class ="p "> ),</ span >
880948 < span class ="n "> cols</ span > < span class ="o "> =</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span >
881- < span class ="n "> shared_xaxes</ span > < span class ="o "> =</ span > < span class ="kc "> True </ span > < span class ="p "> ,</ span >
949+ < span class ="n "> shared_xaxes</ span > < span class ="o "> =</ span > < span class ="kc "> False </ span > < span class ="p "> ,</ span >
882950 < span class ="n "> subplot_titles</ span > < span class ="o "> =</ span > < span class ="n "> keys</ span > < span class ="p "> ,</ span >
883951 < span class ="p "> )</ span >
884952
885953 < span class ="k "> for</ span > < span class ="n "> idx</ span > < span class ="p "> ,</ span > < span class ="n "> key</ span > < span class ="ow "> in</ span > < span class ="nb "> enumerate</ span > < span class ="p "> (</ span > < span class ="n "> keys</ span > < span class ="p "> ):</ span >
886954 < span class ="n "> row_idx</ span > < span class ="o "> =</ span > < span class ="n "> idx</ span > < span class ="o "> +</ span > < span class ="mi "> 1</ span >
955+ < span class ="n "> true_axis</ span > < span class ="o "> =</ span > < span class ="n "> x_axis</ span >
956+
957+ < span class ="c1 "> # Special case for seed_idx_list</ span >
958+ < span class ="k "> if</ span > < span class ="n "> key</ span > < span class ="o "> ==</ span > < span class ="s2 "> "seed_idx_list"</ span > < span class ="p "> :</ span >
959+ < span class ="n "> _plot_seed_idx_list</ span > < span class ="p "> (</ span > < span class ="n "> results</ span > < span class ="p "> ,</ span > < span class ="n "> x_axis</ span > < span class ="p "> ,</ span > < span class ="n "> row_idx</ span > < span class ="p "> ,</ span > < span class ="n "> fig</ span > < span class ="p "> )</ span >
960+ < span class ="k "> continue</ span >
887961
888962 < span class ="k "> for</ span > < span class ="n "> run_idx</ span > < span class ="p "> ,</ span > < span class ="n "> r</ span > < span class ="ow "> in</ span > < span class ="nb "> enumerate</ span > < span class ="p "> (</ span > < span class ="n "> results</ span > < span class ="p "> ):</ span >
889- < span class ="n "> x_vals</ span > < span class ="o "> =</ span > < span class ="n "> _get_x_vals</ span > < span class ="p "> (</ span > < span class ="n "> r</ span > < span class ="p "> ,</ span > < span class ="n "> axis </ span > < span class ="p "> )</ span >
963+ < span class ="n "> x_vals</ span > < span class ="o "> =</ span > < span class ="n "> _get_x_vals</ span > < span class ="p "> (</ span > < span class ="n "> r</ span > < span class ="p "> ,</ span > < span class ="n "> true_axis </ span > < span class ="p "> )</ span >
890964 < span class ="n "> y_vals</ span > < span class ="o "> =</ span > < span class ="n "> _extract_data_by_key</ span > < span class ="p "> (</ span > < span class ="n "> key</ span > < span class ="p "> ,</ span > < span class ="n "> r</ span > < span class ="p "> )</ span >
891965
892966 < span class ="n "> fig</ span > < span class ="o "> .</ span > < span class ="n "> add_trace</ span > < span class ="p "> (</ span >
@@ -900,8 +974,8 @@ <h1>Source code for suboptimumg.plotting.internal_data_plots</h1><div class="hig
900974 < span class ="n "> col</ span > < span class ="o "> =</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span >
901975 < span class ="p "> )</ span >
902976 < span class ="n "> fig</ span > < span class ="o "> .</ span > < span class ="n "> update_yaxes</ span > < span class ="p "> (</ span > < span class ="n "> title_text</ span > < span class ="o "> =</ span > < span class ="n "> key</ span > < span class ="p "> ,</ span > < span class ="n "> row</ span > < span class ="o "> =</ span > < span class ="n "> row_idx</ span > < span class ="p "> ,</ span > < span class ="n "> col</ span > < span class ="o "> =</ span > < span class ="mi "> 1</ span > < span class ="p "> )</ span >
977+ < span class ="n "> fig</ span > < span class ="o "> .</ span > < span class ="n "> update_xaxes</ span > < span class ="p "> (</ span > < span class ="n "> title_text</ span > < span class ="o "> =</ span > < span class ="n "> true_axis</ span > < span class ="o "> .</ span > < span class ="n "> value</ span > < span class ="p "> ,</ span > < span class ="n "> row</ span > < span class ="o "> =</ span > < span class ="n "> row_idx</ span > < span class ="p "> ,</ span > < span class ="n "> col</ span > < span class ="o "> =</ span > < span class ="mi "> 1</ span > < span class ="p "> )</ span >
903978
904- < span class ="n "> fig</ span > < span class ="o "> .</ span > < span class ="n "> update_xaxes</ span > < span class ="p "> (</ span > < span class ="n "> title_text</ span > < span class ="o "> =</ span > < span class ="n "> x_axis</ span > < span class ="o "> .</ span > < span class ="n "> value</ span > < span class ="p "> )</ span >
905979 < span class ="n "> fig</ span > < span class ="o "> .</ span > < span class ="n "> update_layout</ span > < span class ="p "> (</ span >
906980 < span class ="n "> height</ span > < span class ="o "> =</ span > < span class ="n "> layout_config</ span > < span class ="o "> .</ span > < span class ="n "> height</ span > < span class ="o "> *</ span > < span class ="nb "> len</ span > < span class ="p "> (</ span > < span class ="n "> keys</ span > < span class ="p "> ),</ span >
907981 < span class ="n "> title</ span > < span class ="o "> =</ span > < span class ="p "> {</ span >
0 commit comments