Skip to content
Snippets Groups Projects
Commit c6794b3f authored by Owen Arnold's avatar Owen Arnold
Browse files

refs #13989. Test Nexus loading.

parent ea8ef80f
No related branches found
No related tags found
No related merge requests found
#include "MantidQtCustomInterfaces/ReflNexusMeasurementSource.h" #include "MantidQtCustomInterfaces/ReflNexusMeasurementSource.h"
#include <Poco/File.h> #include <Poco/File.h>
#include "MantidAPI/AlgorithmManager.h" #include "MantidAPI/AlgorithmManager.h"
#include "MantidAPI/Workspace.h" #include "MantidAPI/Workspace.h"
#include "MantidAPI/MatrixWorkspace.h" #include "MantidAPI/MatrixWorkspace.h"
#include "MantidKernel/TimeSeriesProperty.h"
#include <iostream> #include <iostream>
#include <string> #include <string>
#include <sstream> #include <sstream>
using namespace Mantid::API; using namespace Mantid::API;
using namespace Mantid::Kernel;
namespace MantidQt{ namespace MantidQt {
namespace CustomInterfaces { namespace CustomInterfaces {
//---------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------
...@@ -24,19 +25,20 @@ ReflNexusMeasurementSource::ReflNexusMeasurementSource() {} ...@@ -24,19 +25,20 @@ ReflNexusMeasurementSource::ReflNexusMeasurementSource() {}
*/ */
ReflNexusMeasurementSource::~ReflNexusMeasurementSource() {} ReflNexusMeasurementSource::~ReflNexusMeasurementSource() {}
Measurement ReflNexusMeasurementSource::obtain(const std::string &definedPath, const std::string &fuzzyName) const Measurement
{ ReflNexusMeasurementSource::obtain(const std::string &definedPath,
std::string filenameArg = fuzzyName; const std::string &fuzzyName) const {
if(!definedPath.empty()) { std::string filenameArg = fuzzyName;
if (!definedPath.empty()) {
Poco::File file(definedPath); Poco::File file(definedPath);
if(file.exists() && file.isFile()){ if (file.exists() && file.isFile()) {
// Load the exact path // Load the exact path
filenameArg = definedPath; filenameArg = definedPath;
}} }
try{ }
try {
const std::string filenameArg = fuzzyName; IAlgorithm_sptr algLoadRun =
IAlgorithm_sptr algLoadRun = AlgorithmManager::Instance().create("LoadISISNexus"); AlgorithmManager::Instance().create("LoadISISNexus");
algLoadRun->setChild(true); algLoadRun->setChild(true);
algLoadRun->setRethrows(true); algLoadRun->setRethrows(true);
algLoadRun->initialize(); algLoadRun->initialize();
...@@ -44,29 +46,52 @@ Measurement ReflNexusMeasurementSource::obtain(const std::string &definedPath, c ...@@ -44,29 +46,52 @@ Measurement ReflNexusMeasurementSource::obtain(const std::string &definedPath, c
algLoadRun->setPropertyValue("OutputWorkspace", "dummy"); algLoadRun->setPropertyValue("OutputWorkspace", "dummy");
algLoadRun->execute(); algLoadRun->execute();
Workspace_sptr temp = algLoadRun->getProperty("OutputWorkspace"); Workspace_sptr temp = algLoadRun->getProperty("OutputWorkspace");
MatrixWorkspace_sptr outWS = boost::dynamic_pointer_cast<MatrixWorkspace>(temp); MatrixWorkspace_sptr outWS =
boost::dynamic_pointer_cast<MatrixWorkspace>(temp);
if (outWS.get() == NULL) {
return Measurement::InvalidMeasurement("Not yet implemented"); WorkspaceGroup_sptr tempGroup =
boost::dynamic_pointer_cast<WorkspaceGroup>(temp);
outWS =
boost::dynamic_pointer_cast<MatrixWorkspace>(tempGroup->getItem(0));
} }
catch(std::runtime_error& ex){ auto run = outWS->run();
std::stringstream buffer; const std::string measurementId =
buffer << "Meta-data load attemped a load using: " << filenameArg << std::endl; run.getPropertyValueAsType<std::string>("measurement_id");
buffer << ex.what(); const std::string measurementSubId =
const std::string message = buffer.str(); run.getPropertyValueAsType<std::string>("measurement_subid");
return Measurement::InvalidMeasurement(message); const std::string measurementLabel =
run.getPropertyValueAsType<std::string>("measurement_label");
const std::string measurementType =
run.getPropertyValueAsType<std::string>("measurement_type");
const std::string runNumber =
run.getPropertyValueAsType<std::string>("run_number");
double theta = -1.0;
try {
Property *prop = run.getProperty("stheta");
if (TimeSeriesProperty<double> *tsp =
dynamic_cast<TimeSeriesProperty<double> *>(prop)) {
theta = tsp->valuesAsVector().back();
}
} catch (Exception::NotFoundError &) {
} }
return Measurement(measurementId, measurementSubId, measurementLabel,
measurementType, theta, runNumber);
} catch (std::runtime_error &ex) {
std::stringstream buffer;
buffer << "Meta-data load attemped a load using: " << filenameArg
<< std::endl;
buffer << ex.what();
const std::string message = buffer.str();
return Measurement::InvalidMeasurement(message);
}
} }
ReflNexusMeasurementSource *ReflNexusMeasurementSource::clone() const ReflNexusMeasurementSource *ReflNexusMeasurementSource::clone() const {
{ return new ReflNexusMeasurementSource(*this);
return new ReflNexusMeasurementSource(*this);
} }
} // namespace CustomInterfaces } // namespace CustomInterfaces
} // namespace MantidQt } // namespace MantidQt
...@@ -15,26 +15,37 @@ public: ...@@ -15,26 +15,37 @@ public:
static ReflNexusMeasurementSourceTest *createSuite() { return new ReflNexusMeasurementSourceTest(); } static ReflNexusMeasurementSourceTest *createSuite() { return new ReflNexusMeasurementSourceTest(); }
static void destroySuite( ReflNexusMeasurementSourceTest *suite ) { delete suite; } static void destroySuite( ReflNexusMeasurementSourceTest *suite ) { delete suite; }
void xtest_obatin_via_full_path(){ void test_obatin_via_full_path() {
std::string path = Mantid::API::FileFinder::Instance().getFullPath("POLREF14966"); std::string path =
Mantid::API::FileFinder::Instance().findRun("POLREF14966");
Poco::File file(path); Poco::File file(path);
TSM_ASSERT("Test setup incorrect", !path.empty() && file.exists()); TSM_ASSERT("Test setup incorrect", !path.empty() && file.exists());
ReflNexusMeasurementSource source; ReflNexusMeasurementSource source;
Measurement measurement = source.obtain(path, "made_up"); Measurement measurement = source.obtain(path, "made_up");
TS_ASSERT(measurement.isUseable());
TS_ASSERT(measurement.isUseable());
TS_ASSERT_EQUALS("34", measurement.id());
TS_ASSERT_EQUALS("0", measurement.subId());
TS_ASSERT_EQUALS("14966", measurement.run());
TS_ASSERT_EQUALS("", measurement.label());
TS_ASSERT_EQUALS("", measurement.label());
} }
void test_obtain_via_fuzzy_path() void test_obtain_via_fuzzy_path()
{ {
//ReflNexusMeasurementSource source; ReflNexusMeasurementSource source;
//Measurement measurement = source.obtain("made_up", "POLREF14966"); Measurement measurement = source.obtain("made_up", "POLREF14966");
TS_ASSERT(measurement.isUseable());
TS_ASSERT_EQUALS("34", measurement.id());
TS_ASSERT_EQUALS("0", measurement.subId());
TS_ASSERT_EQUALS("14966", measurement.run());
TS_ASSERT_EQUALS("", measurement.label());
TS_ASSERT_EQUALS("", measurement.label());
} }
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment