Skip to content

Commit

Permalink
update docs
Browse files Browse the repository at this point in the history
  • Loading branch information
brjdenis committed Nov 3, 2020
1 parent 4522da5 commit 1e78158
Show file tree
Hide file tree
Showing 52 changed files with 184 additions and 55 deletions.
2 changes: 1 addition & 1 deletion docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
author = 'Denis Brojan'

# The full version, including alpha/beta/rc tags
release = '2.0.0'
release = '2.0.1'


# -- General configuration ---------------------------------------------------
Expand Down
Binary file modified pyqaserver/static/docs/build/doctrees/about.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/administration.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/catphan.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/changelog.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/dynalog.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/environment.pickle
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/fieldrot.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/fieldsize.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/flatsym.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/imagereview.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/index.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/installation.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/license.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/picketfence.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/planarimaging.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/starshot.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/trends.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/vmat.doctree
Binary file not shown.
Binary file modified pyqaserver/static/docs/build/doctrees/winstonlutz.doctree
Binary file not shown.
2 changes: 1 addition & 1 deletion pyqaserver/static/docs/build/html/.buildinfo
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: e27ff21c37706bd652a3634a391bf3c9
config: 2950a446833b673d83001070bbde0f48
tags: 645f666f9bcd5a90fca523b33c5a78b7
Original file line number Diff line number Diff line change
Expand Up @@ -278,11 +278,21 @@ The *dynalog_config.ini* must be configured before pyqaserver is started. Here a
The password that you are using to access the account. It is not encrypted.

**SEND_TO**
A list of receivers. For example: person1@gmail.com, person2@gmail.com, etc. Use a comma to seperate addresses.
A list of receivers. For example: person1@gmail.com, person2@gmail.com, etc. Use a comma to separate addresses.


Dynalogs - Setting up scheduled analysis
--------------------------------------------------
Open "dynalog_send_post_request.py" and edit the *http* variable

``http://localhost/dynalog_start_batch_analysis``

Change the address to that where pyqaserver is running. For example,

``http://192.168.14.255:80/dynalog_start_batch_analysis``

Do not forget the port, even if it is 80.

Open Windows Task Scheduler and create "basic task". Choose "Start a program".
For *Program/Script* set the path to python.exe. For *Arguments* set "dynalog_send_post_request.py". And for *Start in* set the path to the folder where "dynalog_send_post_request.py" is located.

Expand Down
22 changes: 22 additions & 0 deletions pyqaserver/static/docs/build/html/_sources/catphan.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,28 @@ Each phantom model contains specific regions for studying different aspects of i
.. note::
The results of the analysis are gathered in tabs. Each module has its own tab. Next to the name of the module a **pass**/**fail** statement is given. A module gives general passing result if each submodule has passed the test. For example, the CTP404 module gives a passing result if the HU, LCV, slice thickness etc. have passed.

If no tolerance levels are defined in Administration, default values will be used:

+-------------------+------+
| HU tolerance | 100 |
+-------------------+------+
| LCV tolerance | 2 |
+-------------------+------+
| Scaling tolerance | 0.5 |
+-------------------+------+
| Thickness tol. | 0.25 |
+-------------------+------+
| Low contrast tol. | 1 |
+-------------------+------+
| CNR threshold | 10 |
+-------------------+------+
| MTF tolerance | 10 |
+-------------------+------+
| Uniformity tol. | 3 |
+-------------------+------+



CTP404
---------------

Expand Down
13 changes: 13 additions & 0 deletions pyqaserver/static/docs/build/html/_sources/changelog.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,19 @@
Changelog
#########


***************
Version 2.0.1
***************

Bug fixes
==========

* (Planar imaging) `#8 <https://github.com/brjdenis/pyqaserver/issues/8>`_ Reference image analysis did not work.
* (Catphan) `#9 <https://github.com/brjdenis/pyqaserver/issues/9>`_ Unable to save results to the database because of an error in the passing of variable to html.
* (Winston-Lutz) `#10 <https://github.com/brjdenis/pyqaserver/issues/10>`_ The Winkler diagram was wrong. For gantry angles 180 and 90 the x axis inversion was not taken into account.
* (plotly.jy) Plotting in certain situations did not work in Chrome. Removed "scattergl".

***************
Version 2.0.0
***************
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ Pyqaserver is sensitive to the version of dependencies. For pyqaserver 2.0.0 the
- 2.2.1
* - httplib2
- 0.18.1
* - matplotlib
- 3.3.1

Certain dependencies were adjusted to work with pyqaserver. These are packaged with pyqaserver. They include:

Expand Down Expand Up @@ -70,7 +72,7 @@ Open a web browser and go to the site that is being served: http://127.0.0.1:808

You can stop the server by pressing CTRL+C. If you restart it again, you will notice that the files inside the database directory will not change. The server will use existing database.

If you want to make the site available to other computers in the network, instead of localhost use your computer's IP address. For PORT use 80 so that people won't have to type in the port, only the IP address.
Port definition is required, even if it is port 80. If you want to make the site available to other computers in the network, instead of localhost use your computer's IP address. For PORT use 80 so that people won't have to type in the port in the web browser, only the IP address.

Setting up Orthanc
-------------------
Expand Down Expand Up @@ -149,6 +151,7 @@ Images below will help you set up the action for both tasks. Make sure you selec

.. image:: _static/images/task7.png

Do not forget the port definition, even if it is 80.

This will only work if you are using the base environment and if you added Anaconda to your system PATH.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,19 @@ Options
**Clip box**
Here you can enter the size of the central portion of the image beyond which pixel values will be set to background signal. If you don't want to clip the image, put 0.
**Force angle**
Here you can force the angle of the phantom. This is useful when you see that Pylinac has wrongly detected the angle.
Here you can force the angle of the phantom. This is useful when you see that Pylinac has wrongly detected the angle. Angle 0 is not forced, it sets the angle to automatic. An angle of 45 degrees will rotate the phantom by 45 degrees in the clock-wise direction.
**Show bounding box?**
If checked, a bounding box will be drawn around the phantom, and the image will be zoomed-in.
**Invert image?**
Check this if you need to invert the image.

If no tolerance levels are defined in Administration, default values will be used:

+----------------+------+
| Low threshold | 0.05 |
+----------------+------+
| High threshold | 0.1 |
+----------------+------+

How to use the module
======================
Expand Down
13 changes: 8 additions & 5 deletions pyqaserver/static/docs/build/html/_sources/winstonlutz.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,11 @@ This way was adapted for Elekta machines, but it will work in general. Four test

- **Couch rotation only**

Set the Test type to **Couch only**. Put gantry to 0 and acquire images of the BB at different couch angles. The analysis is similar to the one above, only that this time the MV isocenter is missing from the image, and the software will assume the CAX as the true isocenter.
Set the Test type to **Couch only**. Put gantry to 0 and acquire images of the BB at different couch angles. The analysis is similar to the one above, only that this time the MV isocenter is missing from the image. For each point in the scatter diagram, the EPID center is considered static. The CAX may wobble a bit, depending on the stability of the beam.

- **Collimator rotation only**

Set the Test type to **Collimator only**. If your collimator has some asymmetry or a significant wobble, you can estimate the radius of this with this test. Put the BB inside the field and acquire many images at different collimator angles.
Set the Test type to **Collimator only**. If your collimator has some asymmetry or a significant wobble, you can estimate the radius of this with this test. Put the BB inside the field and acquire many images at different collimator angles. The BB is considered as static and all CAX scatter points are moving around.


Options
Expand Down Expand Up @@ -194,13 +194,16 @@ Interpreting results
When you do the *Gnt/coll + couch rotation* test, the software will calculate the position of the couch axis of rotation with respect to the average MV isocenter of the linac. Ideally, they should match.

**Scatter diagram**
The BB is in the center of the diagram when only blue dots are shown. Blue dots represent field CAX. When *Show EPID2CAX on scatter plot?* is checked, additional yellow dots are displayed that represent the center of the EPID with respect to the field CAX, which is in the center of the diagram. The green circle corresponds to the normal tolerance, the red circle is the action tolerance. Both are defined in the configuration.
The BB is in the center of the diagram when only blue dots are shown. Blue dots represent field CAX. When *Show EPID2CAX on scatter plot?* is checked, additional yellow dots are displayed that represent the center of the EPID with respect to the field CAX, which is in the center of the diagram. The green circle corresponds to the normal tolerance, the red circle is the action tolerance. This diagram shows CAX points on the EPID plane, not in 3D space.

**Gantry 2D CAX projection**
The intersection of beam paths with the LAT-VRT plane (Winkler et al diagrams). Solid lines are beam paths at gantry angles 0 and 90. Dashed lines are beam paths at gantry angles 180 and 270. BB is in the center of the diagram. The cross represents the gantry axis of rotation.
(Winkler et al) The intersection of beam paths with the LAT-VRT plane (Winkler et al diagrams). Solid lines are beam paths at gantry angles 0 and 90. Dashed lines are beam paths at gantry angles 180 and 270. BB is in the center of the diagram. Purple lines are averages over opposing collimator angles. The cross represents the gantry axis of rotation.

**Couch diagram**
When the right test type is chosen, this diagram will appear. The diagram's coordinate system is that of the EPID. The blue square is the average MV isocenter calculated from first 8 images. The first red dot is the reference image of the BB that is used to define the position of the average MV isocenter. Other red dots are BB positions projected onto the EPID at different couch angles. The cross is the center of the fitted circle which represents the couch axis of rotation. Small blue dots are CAX. They may change a bit because of errors in beam steering and MLC positioning between images, particularly on Elekta linacs.
The diagram's coordinate system is that of the EPID. The blue square is the average MV isocenter calculated from first 8 images. The first red dot is the reference image of the BB that is used to define the position of the average MV isocenter. Other red dots are BB positions projected onto the EPID at different couch angles. The cross is the center of the fitted circle which represents the couch axis of rotation. Small blue dots are CAX. They may change a bit because of errors in beam steering and MLC positioning between images, particularly on Elekta linacs. The "couch only" test gives a similar diagram, except that the MV isocenter is missing.

**Collimator diagram**
Similar to couch diagram, except that the central point and reference is the BB not the EPID center.

**Status**
You can get either Passed, Borderline or Failed status. If you are using 4 or 8 images, then you have the option of applying the tolerance to any each image in the series, or to the section *Collimator asymmetry* where radius R is calculated by averaging over collimator pairs. See your configuration.
Expand Down
4 changes: 2 additions & 2 deletions pyqaserver/static/docs/build/html/_static/basic.css
Original file line number Diff line number Diff line change
Expand Up @@ -693,7 +693,7 @@ pre {
overflow-y: hidden; /* fixes display issues on Chrome browsers */
}

pre, div[class*="highlight-"] {
pre, div[class|="highlight"] {
clear: both;
}

Expand All @@ -704,7 +704,7 @@ span.pre {
hyphens: none;
}

div[class*="highlight-"] {
div[class^="highlight-"] {
margin: 1em 0;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
VERSION: '2.0.0',
VERSION: '2.0.1',
LANGUAGE: 'None',
COLLAPSE_INDEX: false,
BUILDER: 'html',
Expand Down
7 changes: 1 addition & 6 deletions pyqaserver/static/docs/build/html/_static/pygments.css
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
pre { line-height: 125%; margin: 0; }
td.linenos pre { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
span.linenos { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
td.linenos pre.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
.highlight { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
Expand Down
3 changes: 2 additions & 1 deletion pyqaserver/static/docs/build/html/_static/searchtools.js
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,8 @@ var Search = {
objectterms.push(tmp[i].toLowerCase());
}

if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i] === "") {
if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
tmp[i] === "") {
// skip this "word"
continue;
}
Expand Down
2 changes: 1 addition & 1 deletion pyqaserver/static/docs/build/html/about.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>About &mdash; pyqaserver 2.0.0 documentation</title>
<title>About &mdash; pyqaserver 2.0.1 documentation</title>



Expand Down
9 changes: 7 additions & 2 deletions pyqaserver/static/docs/build/html/administration.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Administration &mdash; pyqaserver 2.0.0 documentation</title>
<title>Administration &mdash; pyqaserver 2.0.1 documentation</title>



Expand Down Expand Up @@ -449,13 +449,18 @@ <h3>Dynalog configuration<a class="headerlink" href="#dynalog-configuration" tit
</dd>
<dt><strong>SEND_FROM_PASSWORD</strong></dt><dd><p>The password that you are using to access the account. It is not encrypted.</p>
</dd>
<dt><strong>SEND_TO</strong></dt><dd><p>A list of receivers. For example: <a class="reference external" href="mailto:person1&#37;&#52;&#48;gmail&#46;com">person1<span>&#64;</span>gmail<span>&#46;</span>com</a>, <a class="reference external" href="mailto:person2&#37;&#52;&#48;gmail&#46;com">person2<span>&#64;</span>gmail<span>&#46;</span>com</a>, etc. Use a comma to seperate addresses.</p>
<dt><strong>SEND_TO</strong></dt><dd><p>A list of receivers. For example: <a class="reference external" href="mailto:person1&#37;&#52;&#48;gmail&#46;com">person1<span>&#64;</span>gmail<span>&#46;</span>com</a>, <a class="reference external" href="mailto:person2&#37;&#52;&#48;gmail&#46;com">person2<span>&#64;</span>gmail<span>&#46;</span>com</a>, etc. Use a comma to separate addresses.</p>
</dd>
</dl>
</div></blockquote>
</div>
<div class="section" id="dynalogs-setting-up-scheduled-analysis">
<h3>Dynalogs - Setting up scheduled analysis<a class="headerlink" href="#dynalogs-setting-up-scheduled-analysis" title="Permalink to this headline"></a></h3>
<p>Open “dynalog_send_post_request.py” and edit the <em>http</em> variable</p>
<p><code class="docutils literal notranslate"><span class="pre">http://localhost/dynalog_start_batch_analysis</span></code></p>
<p>Change the address to that where pyqaserver is running. For example,</p>
<p><code class="docutils literal notranslate"><span class="pre">http://192.168.14.255:80/dynalog_start_batch_analysis</span></code></p>
<p>Do not forget the port, even if it is 80.</p>
<p>Open Windows Task Scheduler and create “basic task”. Choose “Start a program”.
For <em>Program/Script</em> set the path to python.exe. For <em>Arguments</em> set “dynalog_send_post_request.py”. And for <em>Start in</em> set the path to the folder where “dynalog_send_post_request.py” is located.</p>
</div>
Expand Down
35 changes: 34 additions & 1 deletion pyqaserver/static/docs/build/html/catphan.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Catphan module &mdash; pyqaserver 2.0.0 documentation</title>
<title>Catphan module &mdash; pyqaserver 2.0.1 documentation</title>



Expand Down Expand Up @@ -211,6 +211,39 @@ <h2>Interpreting results<a class="headerlink" href="#interpreting-results" title
<p class="admonition-title">Note</p>
<p>The results of the analysis are gathered in tabs. Each module has its own tab. Next to the name of the module a <strong>pass</strong>/<strong>fail</strong> statement is given. A module gives general passing result if each submodule has passed the test. For example, the CTP404 module gives a passing result if the HU, LCV, slice thickness etc. have passed.</p>
</div>
<p>If no tolerance levels are defined in Administration, default values will be used:</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 76%" />
<col style="width: 24%" />
</colgroup>
<tbody>
<tr class="row-odd"><td><p>HU tolerance</p></td>
<td><p>100</p></td>
</tr>
<tr class="row-even"><td><p>LCV tolerance</p></td>
<td><p>2</p></td>
</tr>
<tr class="row-odd"><td><p>Scaling tolerance</p></td>
<td><p>0.5</p></td>
</tr>
<tr class="row-even"><td><p>Thickness tol.</p></td>
<td><p>0.25</p></td>
</tr>
<tr class="row-odd"><td><p>Low contrast tol.</p></td>
<td><p>1</p></td>
</tr>
<tr class="row-even"><td><p>CNR threshold</p></td>
<td><p>10</p></td>
</tr>
<tr class="row-odd"><td><p>MTF tolerance</p></td>
<td><p>10</p></td>
</tr>
<tr class="row-even"><td><p>Uniformity tol.</p></td>
<td><p>3</p></td>
</tr>
</tbody>
</table>
<div class="section" id="ctp404">
<h3>CTP404<a class="headerlink" href="#ctp404" title="Permalink to this headline"></a></h3>
<p>This module is used to test the low-frequency contrast, HU units and geometry of the image. It is the reference module for all models.</p>
Expand Down
Loading

0 comments on commit 1e78158

Please sign in to comment.