From 1ba7d17d456ee68acf700455c24999c8c55a62fe Mon Sep 17 00:00:00 2001 From: Heckmann Date: Fri, 10 Jan 2025 11:25:36 +0100 Subject: [PATCH 1/2] Additional comments by Jan integrated --- .../macromodules/pythondebugger.md | 62 +++++++++++++----- .../tutorials/basicmechanics/Debug3.png | Bin 3124 -> 6382 bytes .../tutorials/basicmechanics/Debug9.png | Bin 0 -> 4332 bytes .../tutorials/basicmechanics/Debug9a.png | Bin 0 -> 7629 bytes 4 files changed, 47 insertions(+), 15 deletions(-) create mode 100644 mevislab.github.io/static/images/tutorials/basicmechanics/Debug9.png create mode 100644 mevislab.github.io/static/images/tutorials/basicmechanics/Debug9a.png diff --git a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythondebugger.md b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythondebugger.md index e00a9a78f..9d4f82b86 100644 --- a/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythondebugger.md +++ b/mevislab.github.io/content/tutorials/basicmechanisms/macromodules/pythondebugger.md @@ -14,32 +14,36 @@ menu: --- # Example 5: Debugging Python files in MATE ## Introduction -MeVisLab provides the powerful integrated text editor MATE. By default, MATE is used to develop MeVisLab text files like Python scripts. In this tutorial, we want to show you how to debug Python files in MeVisLab. +MeVisLab provides the powerful integrated text editor MATE. By default, MATE is used to create/edit files like Python scripts. In this tutorial, we want to show you how to debug Python scripts in MeVisLab. ## Prepare your network -We are using a very simple network of existing modules. Add a `LocalImage` module to your workspace and connect it to a `DicomTagBrowser` module. The `DicomTagBrowser` module shows DICOM tags of your currently opened file in a table. +We are using a very simple network of pre-defined modules, but you can also debug your self-written Python scripts. Add a `LocalImage` module to your workspace and connect it to a `DicomTagBrowser` module. The `DicomTagBrowser` module shows a table containing the DICOM tags of your currently opened file. ![Example Network](/images/tutorials/basicmechanics/Debug1.png "Example Network") ## Open Python script in MATE To debug our module, we need to open the Python file. Right-click {{< mousebutton "right" >}} the module `DicomTagBrowser` and select {{< menuitem "Related Files (3)" "DicomTagBrowser.py" >}}. The file is opened in MATE. +{{}} +MATE only opens Python files if default configuration in *MeVisLab/Preferences* is not changed for *Supportive Programs*. +{{}} + ![MATE](/images/tutorials/basicmechanics/Debug2.png "MATE") {{}} -You can not only debug your own files, but also Python scripts of our existing MeVisLab modules. +You can not only debug your own files, but also Python scripts of pre-defined MeVisLab modules. {{}} -The user interface of MATE provides some relevant sections to help debug your code. +The user interface of MATE provides some relevant views for debugging. -### Outline section -The *Outline* section provides a list of all functions defined in your currently opened script. +### Outline view +The *Outline* view shows a list of all functions defined in your currently opened script. -### Project Workspace section -The *Project Workspace* section shows the content of the directories for all of your opened files. In this case, we only opened one file and only see the content of the directory for the `DicomTagBrowser` module. +### Project Workspace view +The *Project Workspace* view shows the content of the directories for all of your opened files. In this case, we only opened one file and only see the content of the directory for the `DicomTagBrowser` module. -### Debug Output section -The *Debug Output* section shows the messages you also see in MeVisLab. Later additional sections are available as soon as we start debugging our file. +### Debug Output view +The *Debug Output* view shows the messages you also see in MeVisLab. Additional views are available as soon as we start debugging our file. ## Debug a Python script First we need to enable debugging. In the MATE main menu, select {{< menuitem "Debug" "Enable Debugging" >}}. You can see some new panels appearing in MATE. @@ -59,21 +63,43 @@ Another panel *Variables/Watches/Evaluate Expression* appears, where you can see ![Variables/Watches/Evaluate Expression](/images/tutorials/basicmechanics/Debug5.png "Variables/Watches/Evaluate Expression") -Scroll to line 180 and left click {{< mousebutton "left" >}} on the line number. You can see a red dot marking a break point for debugging. Whenever this line of code is executed, execution will stop here and you can evaluate your variables. This line will be reached whenever you right-click {{< mousebutton "right" >}} on the list in the `DicomTagBrowser` module and select {{< menuitem "Copy Tag Name" >}}. +Scroll to line 180 and left click {{< mousebutton "left" >}} on the line number. + +{{< highlight >}} +```Python + 179 def copyCurrentTagName(): +> 180 item = ctx.control("dicomTree").currentItem() + 181 if item: + 182 MLAB.copyToPasteboard(item.text(1)) +``` +{{}} + +You can see a red dot marking a break point for debugging. Whenever this line of code is executed, execution will stop here and you can evaluate your variables. This line will be reached whenever you right-click {{< mousebutton "right" >}} on the list in the `DicomTagBrowser` module and select {{< menuitem "Copy Tag Name" >}}. Go back to MeVisLab and right click {{< mousebutton "right" >}} on any DICOM tag in the `DicomTagBrowser` module. Select {{< menuitem "Copy Tag Name" >}}. ![Copy Tag Name](/images/tutorials/basicmechanics/Debug6.png "Copy Tag Name") -MATE opens automatically and you can see a yellow arrow in your red dot indicating that execution of the code stopped at this line. +MATE opens automatically and you can see an additional yellow arrow indicating the line about to be executed next. ![MATE Debugger](/images/tutorials/basicmechanics/Debug7.png "MATE Debugger") -You can now use the controls of the *Debugging* panels to step through your code or just continue execution of your code. Whenever your execution is stopped, you can use the *Stack Frames* and the *Variables/Watches/Evaluate Expression* panel to see the current value of all or just selected variables. +You can now use the controls of the *Debugging* panels to step through your code or just continue execution of your code. Whenever your execution is stopped, you can use the *Stack Frames* and the *Variables/Watches/Evaluate Expression* panel to see the current value of all or just watched variables. + +We want to see the name of the DICOM tag we selected in the `DicomTagBrowser` module. You can access the values the following way: + +{{< highlight >}} +```Python +item.text(0) # shows the tag ID (first column) +item.text(1) # shows the tag Name +item.text(2) # shows the tag VR +item.text(3) # shows the tag Value +``` +{{}} Select *Watches* panel and enter **item.text(1)**. Again copy any tag name in MeVisLab `DicomTagBrowser` module. You will see that MATE shows an error. The reason is that the execution stops before executing the current line of code. Your Python code in line 180 defines the variable *item*, and therefore it is not yet defined at this moment. -Use the *Debugging* panel or press {{< keyboard "F10" >}}. Your debugger jumps to the next line (181) and the variable *item* is defined. You can see the value of the *Tag Name* you just copied. You can add any variables you are interested in the same way. +Use the *Debugging* panel (fifth button *Step to next line*) or press {{< keyboard "F10" >}}. The debugger jumps to the next line (**181**) and the variable *item* is defined. You can see the value of the *Tag Name* you just copied. You can add any variables you are interested in the same way. ![Watches panel](/images/tutorials/basicmechanics/Debug7b.png "Watches panel") @@ -88,7 +114,13 @@ You can also define conditions for your breakpoints. Remove breakpoint in line 1 Now, the code execution is only stopped if you copy the tag name *SOPClassUID*. In case another line is copied, the execution does not stop and just continues. +## Evaluate Expression +The *Evaluate Expression* tab allows you to modify variables during execution. In our example you can set the result **item.text(1)** to something like **item.setText(1, "Hello")**. If you now step to the next line via {{< keyboard "F10" >}}, your watched value shows *"Hello"* instead of *"SOPClassUID"*. + +{{< imagegallery 2 "/images/tutorials/basicmechanics" "Debug9" "Debug9a" >}} + ## Summary -* MATE allows debugging of your own Python files and Python files integrated into MeVisLab. +* MATE allows debugging of any Python files including files pre-defined in MeVisLab. * Values of variables can be watched. * It is possible to define conditions for breakpoints, so that the execution is only stopped if the condition is met. +* It is possible to change values of variables while program execution is stopped via *Evaluate Expression* panel. diff --git a/mevislab.github.io/static/images/tutorials/basicmechanics/Debug3.png b/mevislab.github.io/static/images/tutorials/basicmechanics/Debug3.png index 916cdace1e8b17b05f4b1dce508c76d33ea61992..c8e2b0e1df3646ba7b98c9e4a6ef3c818f6396aa 100644 GIT binary patch literal 6382 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 Z84ZmK=+UA#_~A+}Uc_ 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 Qu>siHIQ&6^`~3Mo0EeA;!~g&Q literal 0 HcmV?d00001 From 2bfec925f3770f43fbb3d1a54b79ec93535fab93 Mon Sep 17 00:00:00 2001 From: mrbean-bremen Date: Fri, 10 Jan 2025 17:38:31 +0100 Subject: [PATCH 2/2] Ignore failing comment job --- .github/workflows/gh-pages.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 5b24719b5..b22568fb0 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -11,10 +11,10 @@ jobs: runs-on: ubuntu-22.04 env: PR_PATH: pull/${{github.event.number}} - permissions: - contents: write + permissions: write-all steps: - name: Comment on PR + continue-on-error: true uses: hasura/comment-progress@v2.3.0 if: github.ref != 'refs/heads/main' with: @@ -86,6 +86,7 @@ jobs: destination_dir: ${{ env.PR_PATH }} - name: Update comment + continue-on-error: true uses: hasura/comment-progress@v2.3.0 if: github.ref != 'refs/heads/main' with: