Skip to content

Commit e5bf0b3

Browse files
1 parent 7c7f3ac commit e5bf0b3

12 files changed

Lines changed: 131 additions & 45 deletions

File tree

Binary file not shown.
40 Bytes
Binary file not shown.

.doctrees/environment.pickle

1.99 KB
Binary file not shown.
339 Bytes
Binary file not shown.

.doctrees/nbsphinx/getting_started/notebook.ipynb

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,11 @@
4848
"awd_comp_data = michigan2023_awd.to_data()\n",
4949
"\n",
5050
"# We can also optionally load parameters from published Google Sheets\n",
51-
"michigan2023_revX_alt = load_competition_from_gdrive(\n",
52-
" car_config_url=\"https://docs.google.com/spreadsheets/d/e/2PACX-1vQRPeSToFhhcMYo4J12FvPuIoCv0xAVCvcOlb-SlRxRleQQJNwq7Jiw1H0Hwr6oYOFBcCD_422CosnJ/pub?output=csv\",\n",
53-
" comp_config_url=\"https://docs.google.com/spreadsheets/d/e/2PACX-1vSPaKIHa64Buiqw_2yk4P3iP3PlsNjuE-GjYSHQDenn6dFYG_EelNSg7oqwH5mEvXzSNfB7j1p42H12/pub?output=csv\",\n",
54-
")"
51+
"# WARNING: Sheets are not up to date at this moment\n",
52+
"# michigan2023_revX_alt = load_competition_from_gdrive(\n",
53+
"# car_config_url=\"https://docs.google.com/spreadsheets/d/e/2PACX-1vQRPeSToFhhcMYo4J12FvPuIoCv0xAVCvcOlb-SlRxRleQQJNwq7Jiw1H0Hwr6oYOFBcCD_422CosnJ/pub?output=csv\",\n",
54+
"# comp_config_url=\"https://docs.google.com/spreadsheets/d/e/2PACX-1vSPaKIHa64Buiqw_2yk4P3iP3PlsNjuE-GjYSHQDenn6dFYG_EelNSg7oqwH5mEvXzSNfB7j1p42H12/pub?output=csv\",\n",
55+
"# )"
5556
]
5657
},
5758
{
@@ -102,16 +103,20 @@
102103
"metadata": {},
103104
"outputs": [],
104105
"source": [
105-
"from suboptimumg.plotting.internal_data_plots import plot_per_seed, Axis\n",
106-
"\n",
107-
"# endu_res = comp_results.endurance\n",
106+
"from suboptimumg.plotting import plot_per_seed, plot_internal_keys, Axis\n",
108107
"\n",
109-
"plot_per_seed(\n",
108+
"plot_internal_keys(\n",
110109
" results=endu_res.lapsim_results,\n",
110+
" keys=[\"v_max_profile\", \"seed_idx_list\"],\n",
111111
" x_axis=Axis.DISTANCE,\n",
112-
" include_indices=range(4),\n",
113-
" include_power=True,\n",
114-
")"
112+
")\n",
113+
"\n",
114+
"# plot_per_seed(\n",
115+
"# results=endu_res.lapsim_results,\n",
116+
"# x_axis=Axis.DISTANCE,\n",
117+
"# include_indices=range(4),\n",
118+
"# include_power=True,\n",
119+
"# )"
115120
]
116121
},
117122
{

_autosummary/suboptimumg.plotting.internal_data_plots.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,8 @@
505505
- Internal Data top-level keys: <code class="docutils literal notranslate"><span class="pre">v_max_profile</span></code>, <code class="docutils literal notranslate"><span class="pre">seed_idx_list</span></code>, <code class="docutils literal notranslate"><span class="pre">cumulative_dist</span></code>
506506
- LapsimResults top-level keys: <code class="docutils literal notranslate"><span class="pre">lap_t</span></code>, <code class="docutils literal notranslate"><span class="pre">lap_dxs</span></code>, <code class="docutils literal notranslate"><span class="pre">lap_vels</span></code>, <code class="docutils literal notranslate"><span class="pre">lap_accs</span></code>, <code class="docutils literal notranslate"><span class="pre">lap_powers</span></code>, <code class="docutils literal notranslate"><span class="pre">lap_eff_motor_torques</span></code>
507507
- Per-seed keys in the form <code class="docutils literal notranslate"><span class="pre">{field}_seed_{n}</span></code> (e.g. <code class="docutils literal notranslate"><span class="pre">v_proposal_seed_2</span></code>)</p>
508+
<p>Special case: <code class="docutils literal notranslate"><span class="pre">seed_idx_list</span></code> ignores the x_axis parameter and always plots
509+
v_max_profile vs cumulative_dist with red dots overlaid at seed index positions.</p>
508510
</dd></dl>
509511

510512
<dl class="py function">

_autosummary/suboptimumg.track.track.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -502,7 +502,7 @@
502502

503503
<dl class="py method">
504504
<dt class="sig sig-object py" id="suboptimumg.track.track.Track.plot">
505-
<span class="sig-name descname"><span class="pre">plot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rotate_by_deg</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">theme</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">font_config</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">layout_config</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/suboptimumg/track/track.html#Track.plot"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#suboptimumg.track.track.Track.plot" title="Link to this definition">#</a></dt>
505+
<span class="sig-name descname"><span class="pre">plot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rotate_by_deg</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">theme</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'suspension'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">font_config</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">layout_config</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/suboptimumg/track/track.html#Track.plot"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#suboptimumg.track.track.Track.plot" title="Link to this definition">#</a></dt>
506506
<dd><p>Visualizes the track.</p>
507507
<dl class="field-list simple">
508508
<dt class="field-odd">Parameters<span class="colon">:</span></dt>

_modules/suboptimumg/plotting/internal_data_plots.html

Lines changed: 77 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
841+
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</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"> &quot;&quot;&quot;</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">&quot;lines&quot;</span><span class="p">,</span>
868+
<span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;run_</span><span class="si">{</span><span class="n">run_idx</span><span class="si">}</span><span class="s2">:v_max_profile&quot;</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">&quot;blue&quot;</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">&quot;markers&quot;</span><span class="p">,</span>
884+
<span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;run_</span><span class="si">{</span><span class="n">run_idx</span><span class="si">}</span><span class="s2">:seed_indices&quot;</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">&quot;red&quot;</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">&quot;circle&quot;</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">&quot;v_max_profile w/ seeds highlighted&quot;</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"> &quot;&quot;&quot;</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">&quot;seed_idx_list&quot;</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

Comments
 (0)