Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkDescriptionParameterBackgroundJob.cpp
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 
14 #include "mitkModelFitInfo.h"
15 
17  const itk::EventObject& event)
18 {
19  itk::ProgressEvent progressEvent;
20  itk::InitializeEvent initEvent;
21  itk::StartEvent startEvent;
22  itk::EndEvent endEvent;
23 
24  if (progressEvent.CheckEvent(&event))
25  {
27  dynamic_cast<mitk::DescriptionParameterImageGeneratorBase*>(caller);
28  emit JobProgress(castedReporter->GetProgress());
29  }
30  else if (initEvent.CheckEvent(&event))
31  {
32  emit JobStatusChanged(QString("Initializing description parameter generator"));
33  }
34  else if (startEvent.CheckEvent(&event))
35  {
36  emit JobStatusChanged(QString("Started parameter computation process."));
37  }
38  else if (endEvent.CheckEvent(&event))
39  {
40  emit JobStatusChanged(QString("Finished parameter computation process."));
41  }
42 }
43 
46  mitk::DataNode* parentNode)
47 {
48  if (!generator)
49  {
50  mitkThrow() << "Cannot create description parameter background job. Passed fit generator is NULL.";
51  }
52 
53  m_Generator = generator;
54  m_ParentNode = parentNode;
55 
56  m_spCommand = ::itk::MemberCommand<DescriptionParameterBackgroundJob>::New();
58  m_ObserverID = m_Generator->AddObserver(::itk::AnyEvent(), m_spCommand);
59 };
60 
64 {
65  return m_ParentNode;
66 };
67 
70 {
71  m_Generator->RemoveObserver(m_ObserverID);
72 };
73 
76 {
78 
79  for (auto image : paramimages)
80  {
81  if (image.second.IsNull())
82  {
83  mitkThrow() << "Cannot generate result node. Passed parameterImage is null. parameter name: " <<
84  image.first;
85  }
86 
88  result->SetData(image.second);
89  result->SetName(image.first);
90  result->SetVisibility(true);
91  results.push_back(result);
92  }
93 
94  return results;
95 };
96 
97 void
99 run()
100 {
101  try
102  {
103  emit JobStatusChanged(QString("Started session..."));
104 
105  m_Generator->Generate();
106 
107  emit JobStatusChanged(QString("Generate result nodes."));
108 
109  m_Results = CreateResultNodes(m_Generator->GetParameterImages());
110 
111  emit ResultsAreAvailable(m_Results, this);
112  }
113  catch (::std::exception& e)
114  {
115  emit Error(QString("Error while processing data. Details: ") + QString::fromLatin1(e.what()));
116  }
117  catch (...)
118  {
119  emit Error(QString("Unkown error when processing the data."));
120  }
121 
122  emit Finished();
123 };
mitk::DescriptionParameterImageGeneratorBase::Pointer m_Generator
DescriptionParameterBackgroundJob(mitk::DescriptionParameterImageGeneratorBase *generator, mitk::DataNode *parentNode=nullptr)
void JobProgress(double progress)
::itk::MemberCommand< DescriptionParameterBackgroundJob >::Pointer m_spCommand
mitk::modelFit::ModelFitResultNodeVectorType m_Results
static mitk::modelFit::ModelFitResultNodeVectorType CreateResultNodes(const mitk::DescriptionParameterImageGeneratorBase::ParameterImageMapType &paramimages)
static Pointer New()
void ResultsAreAvailable(mitk::modelFit::ModelFitResultNodeVectorType resultMap, const DescriptionParameterBackgroundJob *pJob)
#define mitkThrow()
std::vector< DataNode::Pointer > ModelFitResultNodeVectorType
mitk::Image::Pointer image
std::map< ParameterNameType, Image::Pointer > ParameterImageMapType
void JobStatusChanged(QString info)
Class for nodes of the DataTree.
Definition: mitkDataNode.h:57
void OnComputeEvent(::itk::Object *, const itk::EventObject &event)