Medical Imaging Interaction Toolkit  2025.08.99-f7084adb
Medical Imaging Interaction Toolkit
mitkPythonContext.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkPythonContext_h
14 #define mitkPythonContext_h
15 
16 #include <mitkImage.h>
17 #include <MitkPythonExports.h>
18 
19 #include <memory>
20 #include <optional>
21 
22 namespace mitk
23 {
24  class MITKPYTHON_EXPORT PythonContext : public itk::LightObject
25  {
26  public:
27  mitkClassMacroItkParent(PythonContext, itk::LightObject);
28 
29  itkFactorylessNewMacro(Self);
30  mitkNewMacro1Param(Self, const std::string&);
31 
36  void Activate();
37 
42  bool HasVariable(const std::string &varName);
43 
44  template <typename T>
45  std::optional<T> GetVariableAs(const std::string& varName);
46 
51  mitk::Image* LoadImageFromPython(const std::string &varName);
52 
57  void TransferBaseDataToPython(mitk::BaseData *mitkImage, const std::string &varName = "_mitk_image");
58 
63  std::string ExecuteString(const std::string &pyCommands);
64 
69  std::string ExecuteFile(const std::string &filePath);
70 
75  std::string GetPythonExceptionTraceback();
76 
81  std::string GetStdOut(const std::string &varName = "_mitk_stdout");
82 
83  protected:
84  explicit PythonContext(const std::string& venvName = {});
85  ~PythonContext();
86 
87  private:
88  struct Impl;
89  std::unique_ptr<Impl> m_Impl;
90  };
91 
92  template <>
93  MITKPYTHON_EXPORT std::optional<bool> PythonContext::GetVariableAs<bool>(const std::string&);
94 
95  template <>
96  MITKPYTHON_EXPORT std::optional<int> PythonContext::GetVariableAs<int>(const std::string&);
97 
98  template <>
99  MITKPYTHON_EXPORT std::optional<double> PythonContext::GetVariableAs<double>(const std::string&);
100 
101  template <>
102  MITKPYTHON_EXPORT std::optional<std::string> PythonContext::GetVariableAs<std::string>(const std::string&);
103 }
104 
105 #endif
106 
mitkImage.h
mitkNewMacro1Param
#define mitkNewMacro1Param(classname, type)
Definition: mitkCommon.h:68
MitkPythonExports.h
mitk::Image
Image class for storing images.
Definition: mitkImage.h:69
mitkClassMacroItkParent
#define mitkClassMacroItkParent(className, SuperClassName)
Definition: mitkCommon.h:45
mitk
Find image slices visible on a given plane.
Definition: RenderingTests.dox:1
MITKPYTHON_EXPORT
#define MITKPYTHON_EXPORT
Definition: MitkPythonExports.h:15
mitk::BaseData
Base of all data objects.
Definition: mitkBaseData.h:42
mitk::PythonContext
Definition: mitkPythonContext.h:24