Skip to content

Commit 1715080

Browse files
author
mantid-builder
committed
Update documentation
1 parent dc6a32a commit 1715080

12 files changed

+112
-14
lines changed

_modules/mantidimaging/core/reconstruct/cil_recon.html

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -552,19 +552,42 @@ <h1>Source code for mantidimaging.core.reconstruct.cil_recon</h1><div class="hig
552552
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">progress</span><span class="p">:</span> <span class="n">Progress</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
553553
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">verbose</span><span class="p">)</span>
554554
<span class="bp">self</span><span class="o">.</span><span class="n">progress</span> <span class="o">=</span> <span class="n">progress</span>
555-
<span class="bp">self</span><span class="o">.</span><span class="n">iteration_count</span> <span class="o">=</span> <span class="mi">1</span>
556555

557556
<span class="k">def</span> <span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">algo</span><span class="p">:</span> <span class="n">Algorithm</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
558557
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">progress</span><span class="p">:</span>
559558
<span class="n">extra_info</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;iterations&#39;</span><span class="p">:</span> <span class="n">algo</span><span class="o">.</span><span class="n">iterations</span><span class="p">,</span> <span class="s1">&#39;losses&#39;</span><span class="p">:</span> <span class="n">algo</span><span class="o">.</span><span class="n">loss</span><span class="p">}</span>
559+
<span class="k">if</span> <span class="n">algo</span><span class="o">.</span><span class="n">last_residual</span> <span class="ow">and</span> <span class="n">algo</span><span class="o">.</span><span class="n">last_residual</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="n">algo</span><span class="o">.</span><span class="n">iteration</span><span class="p">:</span>
560+
<span class="n">extra_info</span><span class="p">[</span><span class="s2">&quot;residual&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">algo</span><span class="o">.</span><span class="n">last_residual</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
560561
<span class="bp">self</span><span class="o">.</span><span class="n">progress</span><span class="o">.</span><span class="n">update</span><span class="p">(</span>
561562
<span class="n">steps</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
562-
<span class="n">msg</span><span class="o">=</span><span class="sa">f</span><span class="s1">&#39;CIL: Iteration </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">iteration_count</span><span class="w"> </span><span class="si">}</span><span class="s1"> of </span><span class="si">{</span><span class="n">algo</span><span class="o">.</span><span class="n">max_iteration</span><span class="si">}</span><span class="s1">&#39;</span>
563+
<span class="n">msg</span><span class="o">=</span><span class="sa">f</span><span class="s1">&#39;CIL: Iteration </span><span class="si">{</span><span class="n">algo</span><span class="o">.</span><span class="n">iteration</span><span class="si">}</span><span class="s1"> of </span><span class="si">{</span><span class="n">algo</span><span class="o">.</span><span class="n">max_iteration</span><span class="si">}</span><span class="s1">&#39;</span>
563564
<span class="sa">f</span><span class="s1">&#39;: Objective </span><span class="si">{</span><span class="n">algo</span><span class="o">.</span><span class="n">get_last_objective</span><span class="p">()</span><span class="si">:</span><span class="s1">.2f</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">,</span>
564565
<span class="n">force_continue</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
565566
<span class="n">extra_info</span><span class="o">=</span><span class="n">extra_info</span><span class="p">,</span>
566-
<span class="p">)</span>
567-
<span class="bp">self</span><span class="o">.</span><span class="n">iteration_count</span> <span class="o">+=</span> <span class="mi">1</span></div>
567+
<span class="p">)</span></div>
568+
569+
570+
571+
<div class="viewcode-block" id="RecordResidualsCallback">
572+
<a class="viewcode-back" href="../../../../api/mantidimaging.core.reconstruct.cil_recon.html#mantidimaging.core.reconstruct.cil_recon.RecordResidualsCallback">[docs]</a>
573+
<span class="k">class</span> <span class="nc">RecordResidualsCallback</span><span class="p">(</span><span class="n">Callback</span><span class="p">):</span>
574+
575+
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">residual_interval</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
576+
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">verbose</span><span class="p">)</span>
577+
<span class="bp">self</span><span class="o">.</span><span class="n">residual_interval</span> <span class="o">=</span> <span class="n">residual_interval</span>
578+
579+
<span class="k">def</span> <span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">algo</span><span class="p">:</span> <span class="n">Algorithm</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
580+
<span class="k">if</span> <span class="n">algo</span><span class="o">.</span><span class="n">iteration</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">residual_interval</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
581+
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">algo</span><span class="p">,</span> <span class="n">PDHG</span><span class="p">):</span>
582+
<span class="n">forward_projection</span> <span class="o">=</span> <span class="n">algo</span><span class="o">.</span><span class="n">operator</span><span class="o">.</span><span class="n">direct</span><span class="p">(</span><span class="n">algo</span><span class="o">.</span><span class="n">solution</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">as_array</span><span class="p">()</span>
583+
<span class="n">data</span> <span class="o">=</span> <span class="n">algo</span><span class="o">.</span><span class="n">f</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">as_array</span><span class="p">()</span>
584+
<span class="k">if</span> <span class="n">forward_projection</span><span class="o">.</span><span class="n">ndim</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
585+
<span class="c1"># For a full 3D recon, just select the middle slice</span>
586+
<span class="nb">slice</span> <span class="o">=</span> <span class="n">forward_projection</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">//</span> <span class="mi">2</span>
587+
<span class="n">forward_projection</span> <span class="o">=</span> <span class="n">forward_projection</span><span class="p">[</span><span class="nb">slice</span><span class="p">]</span>
588+
<span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="nb">slice</span><span class="p">]</span>
589+
<span class="n">residual</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span> <span class="o">=</span> <span class="p">(</span><span class="n">data</span> <span class="o">-</span> <span class="n">forward_projection</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span>
590+
<span class="n">algo</span><span class="o">.</span><span class="n">last_residual</span> <span class="o">=</span> <span class="p">(</span><span class="n">algo</span><span class="o">.</span><span class="n">iteration</span><span class="p">,</span> <span class="n">residual</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span></div>
568591

569592

570593

@@ -814,7 +837,11 @@ <h1>Source code for mantidimaging.core.reconstruct.cil_recon</h1><div class="hig
814837
<span class="c1"># this may be confusing for the user in case of SPDHG, because they will</span>
815838
<span class="c1"># input num_iter and they will run num_iter * num_subsets</span>
816839
<span class="n">algo</span><span class="o">.</span><span class="n">max_iteration</span> <span class="o">=</span> <span class="n">num_iter</span>
817-
<span class="n">algo</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">num_iter</span><span class="p">,</span> <span class="n">callbacks</span><span class="o">=</span><span class="p">[</span><span class="n">MIProgressCallback</span><span class="p">(</span><span class="n">progress</span><span class="o">=</span><span class="n">progress</span><span class="p">)])</span>
840+
<span class="n">algo</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">num_iter</span><span class="p">,</span>
841+
<span class="n">callbacks</span><span class="o">=</span><span class="p">[</span>
842+
<span class="n">RecordResidualsCallback</span><span class="p">(</span><span class="n">residual_interval</span><span class="o">=</span><span class="n">update_objective_interval</span><span class="p">),</span>
843+
<span class="n">MIProgressCallback</span><span class="p">(</span><span class="n">progress</span><span class="o">=</span><span class="n">progress</span><span class="p">)</span>
844+
<span class="p">])</span>
818845

819846
<span class="k">finally</span><span class="p">:</span>
820847
<span class="k">if</span> <span class="n">progress</span><span class="p">:</span>
@@ -936,7 +963,11 @@ <h1>Source code for mantidimaging.core.reconstruct.cil_recon</h1><div class="hig
936963
<span class="c1"># this may be confusing for the user in case of SPDHG, because they will</span>
937964
<span class="c1"># input num_iter and they will run num_iter * num_subsets</span>
938965
<span class="n">algo</span><span class="o">.</span><span class="n">max_iteration</span> <span class="o">=</span> <span class="n">num_iter</span>
939-
<span class="n">algo</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">num_iter</span><span class="p">,</span> <span class="n">callbacks</span><span class="o">=</span><span class="p">[</span><span class="n">MIProgressCallback</span><span class="p">(</span><span class="n">progress</span><span class="o">=</span><span class="n">progress</span><span class="p">)])</span>
966+
<span class="n">algo</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">num_iter</span><span class="p">,</span>
967+
<span class="n">callbacks</span><span class="o">=</span><span class="p">[</span>
968+
<span class="n">RecordResidualsCallback</span><span class="p">(</span><span class="n">residual_interval</span><span class="o">=</span><span class="n">update_objective_interval</span><span class="p">),</span>
969+
<span class="n">MIProgressCallback</span><span class="p">(</span><span class="n">progress</span><span class="o">=</span><span class="n">progress</span><span class="p">)</span>
970+
<span class="p">])</span>
940971

941972
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">algo</span><span class="o">.</span><span class="n">solution</span><span class="p">,</span> <span class="n">BlockDataContainer</span><span class="p">):</span>
942973
<span class="c1"># TGV case</span>

_modules/mantidimaging/gui/dialogs/async_task/presenter.html

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,7 @@ <h1>Source code for mantidimaging.gui.dialogs.async_task.presenter</h1><div clas
515515

516516
<span class="kn">from</span> <span class="nn">collections.abc</span> <span class="kn">import</span> <span class="n">Callable</span>
517517

518+
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
518519
<span class="kn">from</span> <span class="nn">PyQt5.QtCore</span> <span class="kn">import</span> <span class="n">QObject</span><span class="p">,</span> <span class="n">pyqtSignal</span>
519520

520521
<span class="kn">from</span> <span class="nn">mantidimaging.core.utility.progress_reporting</span> <span class="kn">import</span> <span class="n">ProgressHandler</span>
@@ -533,13 +534,15 @@ <h1>Source code for mantidimaging.gui.dialogs.async_task.presenter</h1><div clas
533534
<span class="k">class</span> <span class="nc">AsyncTaskDialogPresenter</span><span class="p">(</span><span class="n">QObject</span><span class="p">,</span> <span class="n">ProgressHandler</span><span class="p">):</span>
534535
<span class="n">progress_updated</span> <span class="o">=</span> <span class="n">pyqtSignal</span><span class="p">(</span><span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span>
535536
<span class="n">progress_plot_updated</span> <span class="o">=</span> <span class="n">pyqtSignal</span><span class="p">(</span><span class="nb">list</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span>
537+
<span class="n">progress_residual_plot_updated</span> <span class="o">=</span> <span class="n">pyqtSignal</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">)</span>
536538

537539
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">):</span>
538540
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
539541

540542
<span class="bp">self</span><span class="o">.</span><span class="n">view</span> <span class="o">=</span> <span class="n">view</span>
541543
<span class="bp">self</span><span class="o">.</span><span class="n">progress_updated</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">set_progress</span><span class="p">)</span>
542544
<span class="bp">self</span><span class="o">.</span><span class="n">progress_plot_updated</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">set_progress_plot</span><span class="p">)</span>
545+
<span class="bp">self</span><span class="o">.</span><span class="n">progress_residual_plot_updated</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">set_progress_residual_plot</span><span class="p">)</span>
543546

544547
<span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">AsyncTaskDialogModel</span><span class="p">()</span>
545548
<span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">task_done</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle_completion</span><span class="p">)</span>
@@ -610,7 +613,11 @@ <h1>Source code for mantidimaging.gui.dialogs.async_task.presenter</h1><div clas
610613
<span class="bp">self</span><span class="o">.</span><span class="n">progress_updated</span><span class="o">.</span><span class="n">emit</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">progress</span><span class="o">.</span><span class="n">completion</span><span class="p">(),</span> <span class="n">msg</span> <span class="k">if</span> <span class="n">msg</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="s1">&#39;&#39;</span><span class="p">)</span>
611614

612615
<span class="k">if</span> <span class="n">extra_info</span><span class="p">:</span>
613-
<span class="bp">self</span><span class="o">.</span><span class="n">update_progress_plot</span><span class="p">(</span><span class="n">extra_info</span><span class="p">[</span><span class="s1">&#39;iterations&#39;</span><span class="p">],</span> <span class="n">extra_info</span><span class="p">[</span><span class="s1">&#39;losses&#39;</span><span class="p">])</span></div>
616+
<span class="k">if</span> <span class="s1">&#39;losses&#39;</span> <span class="ow">in</span> <span class="n">extra_info</span><span class="p">:</span>
617+
<span class="bp">self</span><span class="o">.</span><span class="n">update_progress_plot</span><span class="p">(</span><span class="n">extra_info</span><span class="p">[</span><span class="s1">&#39;iterations&#39;</span><span class="p">],</span> <span class="n">extra_info</span><span class="p">[</span><span class="s1">&#39;losses&#39;</span><span class="p">])</span>
618+
619+
<span class="k">if</span> <span class="s1">&#39;residual&#39;</span> <span class="ow">in</span> <span class="n">extra_info</span><span class="p">:</span>
620+
<span class="bp">self</span><span class="o">.</span><span class="n">progress_residual_plot_updated</span><span class="o">.</span><span class="n">emit</span><span class="p">(</span><span class="n">extra_info</span><span class="p">[</span><span class="s2">&quot;residual&quot;</span><span class="p">])</span></div>
614621

615622

616623
<div class="viewcode-block" id="AsyncTaskDialogPresenter.show_stop_button">

0 commit comments

Comments
 (0)