SpectrumCompareEngine.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #include "stdafx.h"
  2. #include "SpectrumCompareEngine.h"
  3. #include "SpectrumCompareEngine/OTSSpectrumLibFileMgr.h"
  4. #include "SpectrumCompareEngine/OTSClassifyOnSpectrumCompEng.h"
  5. namespace OTSClassifyEngine
  6. {
  7. bool SpectrumCompareEngine::Init()
  8. {
  9. CSpectrumLibFileMgrPtr pLibFileMgr = CSpectrumLibFileMgrPtr(new CSpectrumLibFileMgr(m_StrName));
  10. myLib = CSTDLibPtr(new CSTDLib(m_StrName));
  11. myLib->Init();
  12. myLib->LoadSpectrumSTDFromDB(m_StrName);
  13. m_Engine = new CClassifyOnSpectrumCompEng(0,myLib);
  14. return TRUE;
  15. }
  16. bool SpectrumCompareEngine::ClassifyBySpectrum(COTSParticlePtr particle, CPosXrayPtr xray)
  17. {
  18. // similarity
  19. double dSim = 0;
  20. // classify Particles
  21. auto stditm = m_Engine->GetMatchingSTD( xray, dSim);
  22. if (dSim > 0.7)
  23. {
  24. if (stditm != nullptr)
  25. {
  26. particle->SetType(OTS_PARTICLE_TYPE::IDENTIFIED);
  27. particle->SetClassifyId(stditm->GetID());
  28. particle->SetClassifyName(stditm->GetName().GetBuffer());
  29. particle->SetColor(std::to_string(stditm->GetColor()));
  30. }
  31. else
  32. {
  33. particle->SetType(OTS_PARTICLE_TYPE::NOT_IDENTIFIED);
  34. particle->SetClassifyName("Not Identified");
  35. }
  36. }
  37. else
  38. {
  39. particle->SetType(OTS_PARTICLE_TYPE::NOT_IDENTIFIED);
  40. particle->SetClassifyName("Not Identified");
  41. }
  42. return true;
  43. }
  44. bool SpectrumCompareEngine::IfNeedMaxEDS(COTSParticlePtr particle, CPosXrayPtr xray, double& MaxEDSTime)
  45. {
  46. throw std::logic_error("The method or operation is not implemented.");
  47. }
  48. bool SpectrumCompareEngine::ClassifyExpression(COTSParticlePtr particle, CPosXrayPtr xray)
  49. {
  50. return false;
  51. }
  52. bool SpectrumCompareEngine::ClassifyByExpressionTemporarySpectrum(COTSParticlePtr particle, CPosXrayPtr xray)
  53. {
  54. return false;
  55. }
  56. bool SpectrumCompareEngine::ClassifyIncA(COTSParticlePtr particle, int SteelTech, CPosXrayPtr xray)
  57. {
  58. return false;
  59. }
  60. bool SpectrumCompareEngine::ZeroElementProcess(COTSParticlePtr particle)
  61. {
  62. return false;
  63. }
  64. OTSClassifyEngine::CLEEnginePtr GetCurveCompareEngine(std::string libName)
  65. {
  66. static CLEEnginePtr engine;
  67. if (engine == NULL)
  68. {
  69. engine = CLEEnginePtr(new SpectrumCompareEngine(libName));
  70. if (!engine->Init())
  71. {
  72. return NULL;
  73. }
  74. }
  75. return engine;
  76. }
  77. }