From cf431563eef32dd65e242cb4e576590b2a97eecd Mon Sep 17 00:00:00 2001 From: Harry Jeffery <henry.jeffery@stfc.ac.uk> Date: Wed, 8 Apr 2015 13:38:46 +0100 Subject: [PATCH] Refs #11455 Update Projection table format Change the type of the 'value' column from 'str' to 'V3D'. --- Code/Mantid/Framework/API/src/Projection.cpp | 16 ++----------- .../Framework/API/test/ProjectionTest.h | 8 +++---- .../Framework/MDAlgorithms/test/CutMDTest.h | 24 +++++++++---------- .../mantid/api/src/Exports/Projection.cpp | 4 ++-- .../test/python/mantid/api/ProjectionTest.py | 6 ++--- .../docs/source/algorithms/CutMD-v1.rst | 4 ++-- 6 files changed, 25 insertions(+), 37 deletions(-) diff --git a/Code/Mantid/Framework/API/src/Projection.cpp b/Code/Mantid/Framework/API/src/Projection.cpp index 8254ed5ec4c..18404dc713a 100644 --- a/Code/Mantid/Framework/API/src/Projection.cpp +++ b/Code/Mantid/Framework/API/src/Projection.cpp @@ -1,7 +1,5 @@ #include "MantidAPI/Projection.h" -#include <boost/algorithm/string.hpp> - namespace Mantid { namespace API { @@ -56,7 +54,7 @@ Projection::Projection(const ITableWorkspace &ws) { for (size_t i = 0; i < numRows; i++) { const std::string name = nameCol->cell<std::string>(i); - const std::string valueStr = valueCol->cell<std::string>(i); + const V3D value = valueCol->cell<V3D>(i); const double offset = offsetCol->cell<double>(i); const std::string unitStr = unitCol->cell<std::string>(i); @@ -72,16 +70,6 @@ Projection::Projection(const ITableWorkspace &ws) { throw std::runtime_error("Invalid dimension name: " + name); } - // Check the values - std::vector<std::string> valueStrVec; - boost::split(valueStrVec, valueStr, boost::is_any_of(",")); - std::vector<double> valueDblVec; - for (auto it = valueStrVec.begin(); it != valueStrVec.end(); ++it) - valueDblVec.push_back(boost::lexical_cast<double>(*it)); - if (valueDblVec.size() != 3) { - throw std::runtime_error("Dimension " + name + " must contain 3 values"); - } - // Check the unit ProjectionUnit unit; if (unitStr == "r") { @@ -93,7 +81,7 @@ Projection::Projection(const ITableWorkspace &ws) { } // Apply the data - m_dimensions[index] = V3D(valueDblVec[0], valueDblVec[1], valueDblVec[2]); + m_dimensions[index] = value; m_offsets[index] = offset; m_units[index] = unit; } diff --git a/Code/Mantid/Framework/API/test/ProjectionTest.h b/Code/Mantid/Framework/API/test/ProjectionTest.h index 28245715cad..8bcc8d8b77f 100644 --- a/Code/Mantid/Framework/API/test/ProjectionTest.h +++ b/Code/Mantid/Framework/API/test/ProjectionTest.h @@ -46,9 +46,9 @@ private: class ValueColumn : public ColumnTester { public: ValueColumn() { - m_values[0] = "1,1,0"; - m_values[1] = "-1,1,0"; - m_values[2] = "0,0,1"; + m_values[0] = V3D(1,1,0); + m_values[1] = V3D(-1,1,0); + m_values[2] = V3D(0,0,1); } size_t size() const { return 3; } @@ -57,7 +57,7 @@ public: return &m_values[index]; } private: - std::string m_values[3]; + V3D m_values[3]; }; class OffsetColumn : public ColumnTester { diff --git a/Code/Mantid/Framework/MDAlgorithms/test/CutMDTest.h b/Code/Mantid/Framework/MDAlgorithms/test/CutMDTest.h index 056676c2830..64bf8835f73 100644 --- a/Code/Mantid/Framework/MDAlgorithms/test/CutMDTest.h +++ b/Code/Mantid/Framework/MDAlgorithms/test/CutMDTest.h @@ -213,16 +213,16 @@ public: ITableWorkspace_sptr proj = WorkspaceFactory::Instance().createTable(); proj->addColumn("str", "name"); - proj->addColumn("str", "value"); + proj->addColumn("V3D", "value"); proj->addColumn("double", "offset"); proj->addColumn("str", "type"); TableRow uRow = proj->appendRow(); TableRow vRow = proj->appendRow(); TableRow wRow = proj->appendRow(); - uRow << "u" << "1,0,0" << 0.0 << "r"; - vRow << "v" << "0,1,0" << 0.0 << "r"; - wRow << "w" << "0,0,1" << 0.0 << "r"; + uRow << "u" << V3D(1,0,0) << 0.0 << "r"; + vRow << "v" << V3D(0,1,0) << 0.0 << "r"; + wRow << "w" << V3D(0,0,1) << 0.0 << "r"; auto algCutMD = FrameworkManager::Instance().createAlgorithm("CutMD"); algCutMD->initialize(); @@ -275,16 +275,16 @@ public: ITableWorkspace_sptr proj = WorkspaceFactory::Instance().createTable(); proj->addColumn("str", "name"); - proj->addColumn("str", "value"); + proj->addColumn("V3D", "value"); proj->addColumn("double", "offset"); proj->addColumn("str", "type"); TableRow uRow = proj->appendRow(); TableRow vRow = proj->appendRow(); TableRow wRow = proj->appendRow(); - uRow << "u" << "1,1,0" << 0.0 << "r"; - vRow << "v" << "-1,1,0" << 0.0 << "r"; - wRow << "w" << "0,0,1" << 0.0 << "r"; + uRow << "u" << V3D(1,1,0) << 0.0 << "r"; + vRow << "v" << V3D(-1,1,0) << 0.0 << "r"; + wRow << "w" << V3D(0,0,1) << 0.0 << "r"; auto algCutMD = FrameworkManager::Instance().createAlgorithm("CutMD"); algCutMD->initialize(); @@ -337,16 +337,16 @@ public: ITableWorkspace_sptr proj = WorkspaceFactory::Instance().createTable(); proj->addColumn("str", "name"); - proj->addColumn("str", "value"); + proj->addColumn("V3D", "value"); proj->addColumn("double", "offset"); proj->addColumn("str", "type"); TableRow uRow = proj->appendRow(); TableRow vRow = proj->appendRow(); TableRow wRow = proj->appendRow(); - uRow << "u" << "1,0,0" << 0.0 << "r"; - vRow << "v" << "0,1,0" << 0.0 << "r"; - wRow << "w" << "0,0,1" << 0.0 << "r"; + uRow << "u" << V3D(1,0,0) << 0.0 << "r"; + vRow << "v" << V3D(0,1,0) << 0.0 << "r"; + wRow << "w" << V3D(0,0,1) << 0.0 << "r"; auto algCutMD = FrameworkManager::Instance().createAlgorithm("CutMD"); algCutMD->initialize(); diff --git a/Code/Mantid/Framework/PythonInterface/mantid/api/src/Exports/Projection.cpp b/Code/Mantid/Framework/PythonInterface/mantid/api/src/Exports/Projection.cpp index 02342cff262..14225ec1f2e 100644 --- a/Code/Mantid/Framework/PythonInterface/mantid/api/src/Exports/Projection.cpp +++ b/Code/Mantid/Framework/PythonInterface/mantid/api/src/Exports/Projection.cpp @@ -47,13 +47,13 @@ object createWorkspace() { " from mantid import api, kernel\n" " ws = api.WorkspaceFactory.createTable('TableWorkspace')\n" " ws.addColumn('str', 'name')\n" - " ws.addColumn('str', 'value')\n" + " ws.addColumn('V3D', 'value')\n" " ws.addColumn('str', 'type')\n" " ws.addColumn('double', 'offset')\n" " for (name, i) in zip('uvw', range(3)):\n" " ws.addRow({\n" " 'name': name,\n" - " 'value': str(proj.getAxis(i)).lstrip('[').rstrip(']'),\n" + " 'value': proj.getAxis(i),\n" " 'type': proj.getType(i),\n" " 'offset': proj.getOffset(i)\n" " })\n" diff --git a/Code/Mantid/Framework/PythonInterface/test/python/mantid/api/ProjectionTest.py b/Code/Mantid/Framework/PythonInterface/test/python/mantid/api/ProjectionTest.py index 0fb3d55fde9..db060e4a46e 100644 --- a/Code/Mantid/Framework/PythonInterface/test/python/mantid/api/ProjectionTest.py +++ b/Code/Mantid/Framework/PythonInterface/test/python/mantid/api/ProjectionTest.py @@ -67,9 +67,9 @@ class ProjectionTest(unittest.TestCase): self.assertTrue('proj_test_ads' in mtd, msg='Workspace not added to ADS successfully') self.assertTrue('proj_test_ads2' in mtd, msg='Workspace not added to ADS successfully') - self.assertEqual(proj_test_ads.row(0), {'name':'u', 'value':'0,1,2', 'type':'r', 'offset':0.0}) - self.assertEqual(proj_test_ads.row(1), {'name':'v', 'value':'3,-4,5', 'type':'r', 'offset':0.15}) - self.assertEqual(proj_test_ads.row(2), {'name':'w', 'value':'6,7,8.5', 'type':'a', 'offset':0.0}) + self.assertEqual(proj_test_ads.row(0), {'name':'u', 'value':V3D(0,1,2), 'type':'r', 'offset':0.0}) + self.assertEqual(proj_test_ads.row(1), {'name':'v', 'value':V3D(3,-4,5), 'type':'r', 'offset':0.15}) + self.assertEqual(proj_test_ads.row(2), {'name':'w', 'value':V3D(6,7,8.5), 'type':'a', 'offset':0.0}) if __name__ == '__main__': unittest.main() diff --git a/Code/Mantid/docs/source/algorithms/CutMD-v1.rst b/Code/Mantid/docs/source/algorithms/CutMD-v1.rst index 77d8cb021a8..cfafd64216f 100644 --- a/Code/Mantid/docs/source/algorithms/CutMD-v1.rst +++ b/Code/Mantid/docs/source/algorithms/CutMD-v1.rst @@ -36,8 +36,8 @@ The format of these workspaces is as follows: | name | string | Specifies the dimension the row controls. Can be 'u', | | | | 'v', or 'w'. | +------------+--------+-------------------------------------------------------+ -| value | string | A 3 dimensional vector specifying the axis for the | -| | | dimension. Example: '1,-1,0' | +| value | V3D | A 3 dimensional vector specifying the axis for the | +| | | dimension. Example: [1,-1,0] | +------------+--------+-------------------------------------------------------+ | offset | double | The offset value to use for this dimension. | +------------+--------+-------------------------------------------------------+ -- GitLab