Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'feature/7732' into develop
Conflicts: Code/Mantid/Framework/DataHandling/CMakeLists.txt refs #7732
- Loading branch information
Showing
10 changed files
with
2,438 additions
and
109 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
115 changes: 115 additions & 0 deletions
115
Code/Mantid/Framework/DataHandling/inc/MantidDataHandling/LoadAscii2.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
#ifndef MANTID_DATAHANDLING_LoadAscii2_H_ | ||
#define MANTID_DATAHANDLING_LoadAscii2_H_ | ||
|
||
//---------------------------------------------------------------------- | ||
// Includes | ||
//---------------------------------------------------------------------- | ||
#include "MantidAPI/IFileLoader.h" | ||
#include "MantidDataObjects/Histogram1D.h" | ||
#include "MantidAPI/MatrixWorkspace.h" | ||
|
||
namespace Mantid | ||
{ | ||
namespace DataHandling | ||
{ | ||
/** | ||
Loads a workspace from an ascii file. Spectra must be stored in columns. | ||
Properties: | ||
<ul> | ||
<li>Filename - the name of the file to read from.</li> | ||
<li>Workspace - the workspace name that will be created and hold the loaded data.</li> | ||
<li>Separator - the column separation character: comma (default),tab,space,colon,semi-colon.</li> | ||
<li>Unit - the unit to assign to the X axis (default: Energy).</li> | ||
</ul> | ||
@author Keith Brown, ISIS, Placement student from the University of Derby | ||
@date 10/10/13 | ||
Copyright © 2007-2010 ISIS Rutherford Appleton Laboratory & NScD Oak Ridge National Laboratory | ||
This file is part of Mantid. | ||
Mantid is free software; you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation; either version 3 of the License, or | ||
(at your option) any later version. | ||
Mantid is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
File change history is stored at: <https://github.com/mantidproject/mantid>. | ||
Code Documentation is available at: <http://doxygen.mantidproject.org> | ||
*/ | ||
class DLLExport LoadAscii2 :public API::IFileLoader<Kernel::FileDescriptor> | ||
{ | ||
public: | ||
/// Default constructor | ||
LoadAscii2(); | ||
/// The name of the algorithm | ||
virtual const std::string name() const { return "LoadAscii"; } | ||
/// The version number | ||
virtual int version() const { return 2; } | ||
/// The category | ||
virtual const std::string category() const { return "DataHandling\\Text"; } | ||
/// Returns a confidence value that this algorithm can load a file | ||
virtual int confidence(Kernel::FileDescriptor & descriptor) const; | ||
|
||
protected: | ||
/// Read the data from the file | ||
virtual API::Workspace_sptr readData(std::ifstream & file); | ||
/// Return true if the line is to be skipped | ||
bool skipLine(const std::string & line) const; | ||
/// Return true if the line doesn't start with a valid character | ||
bool badLine(const std::string & line) const; | ||
/// check and configure flags and values relating to starting a new spectra | ||
void newSpectra(); | ||
/// Check if the file has been found to incosistantly include spectra IDs | ||
void inconsistantIDCheck() const; | ||
/// Split the data into columns. | ||
int splitIntoColumns(std::list<std::string> & columns, const std::string & str) const; | ||
/// Fill the given vector with the data values | ||
void fillInputValues(std::vector<double> &values, const std::list<std::string>& columns) const; | ||
//write the values in the current line to teh end fo teh current spectra | ||
void addToCurrentSpectra(std::list<std::string> & columns); | ||
//check that the nubmer of columns in the current line match the number found previously | ||
void checkLineColumns(const int & cols) const; | ||
//interpret a line that has been deemed valid enough to look at. | ||
void parseLine(const std::string & line, std::list<std::string> & columns, const int & lineNo); | ||
//find the number of collums we should expect from now on | ||
void setcolumns(std::ifstream & file, std::string & line, std::list<std::string> & columns); | ||
//wirte the spectra to the workspace | ||
void writeToWorkspace(API::MatrixWorkspace_sptr & localWorkspace, const size_t & numSpectra) const; | ||
/// The column separator | ||
std::string m_columnSep; | ||
|
||
private: | ||
/// Sets documentation strings for this algorithm | ||
virtual void initDocs(); | ||
/// Declare properties | ||
void init(); | ||
/// Execute the algorithm | ||
void exec(); | ||
|
||
/// Map the separator options to their string equivalents | ||
std::map<std::string,std::string> m_separatorIndex; | ||
std::string m_comment; | ||
int m_baseCols; | ||
int m_specNo; | ||
int m_lastBins; | ||
int m_curBins; | ||
bool m_spectraStart; | ||
int m_specIDs; | ||
std::vector<DataObjects::Histogram1D> m_spectra; | ||
DataObjects::Histogram1D *m_curSpectra; | ||
}; | ||
|
||
} // namespace DataHandling | ||
} // namespace Mantid | ||
|
||
#endif /* MANTID_DATAHANDLING_LoadAscii2_H_ */ |
97 changes: 97 additions & 0 deletions
97
Code/Mantid/Framework/DataHandling/inc/MantidDataHandling/SaveAscii2.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
#ifndef MANTID_DATAHANDLING_SaveAscii2_H_ | ||
#define MANTID_DATAHANDLING_SaveAscii2_H_ | ||
|
||
//---------------------------------------------------------------------- | ||
// Includes | ||
//---------------------------------------------------------------------- | ||
#include "MantidAPI/Algorithm.h" | ||
#include "MantidAPI/MatrixWorkspace.h" | ||
|
||
namespace Mantid | ||
{ | ||
namespace DataHandling | ||
{ | ||
/** @class SaveAscii2 SaveAscii2.h DataHandling/SaveAscii2.h | ||
Saves a workspace or selected spectra in a coma-separated ascii file. Spectra are saved in columns. | ||
Properties: | ||
<ul> | ||
<li>Filename - the name of the file to write to. </li> | ||
<li>Workspace - the workspace name to be saved.</li> | ||
<li>SpectrumMin - the starting spectrum index to save (optional) </li> | ||
<li>SpectrumMax - the ending spectrum index to save (optional) </li> | ||
<li>SpectrumList - a list of comma-separated spectra indeces to save (optional) </li> | ||
<li>Precision - the numeric precision - the number of significant digits for the saved data (optional) </li> | ||
</ul> | ||
@author Keith Brown, ISIS, Placement student from the University of Derby | ||
@date 10/10/13 | ||
Copyright © 2007-9 ISIS Rutherford Appleton Laboratory & NScD Oak Ridge National Laboratory | ||
This file is part of Mantid. | ||
Mantid is free software; you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation; either version 3 of the License, or | ||
(at your option) any later version. | ||
Mantid is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
File change history is stored at: <https://github.com/mantidproject/mantid>. | ||
Code Documentation is available at: <http://doxygen.mantidproject.org> | ||
*/ | ||
class DLLExport SaveAscii2 : public API::Algorithm | ||
{ | ||
public: | ||
/// Default constructor | ||
SaveAscii2(); | ||
/// Destructor | ||
~SaveAscii2() {} | ||
/// Algorithm's name for identification overriding a virtual method | ||
virtual const std::string name() const { return "SaveAscii"; } | ||
/// Algorithm's version for identification overriding a virtual method | ||
virtual int version() const { return 2; } | ||
/// Algorithm's category for identification overriding a virtual method | ||
virtual const std::string category() const { return "DataHandling\\Text"; } | ||
|
||
private: | ||
/// Sets documentation strings for this algorithm | ||
virtual void initDocs(); | ||
/// Overwrites Algorithm method. | ||
void init(); | ||
/// Overwrites Algorithm method | ||
void exec(); | ||
/**writes a spectra to the file using a workspace ID | ||
@param spectraIndex :: an integer relating to a workspace ID | ||
@param file :: the file writer object | ||
*/ | ||
void writeSpectra(const int & spectraIndex, std::ofstream & file); | ||
/**writes a spectra to the file using an iterator | ||
@param spectraItr :: a set<int> iterator pointing to a set of workspace IDs to be saved | ||
@param file :: the file writer object | ||
*/ | ||
void writeSpectra(const std::set<int>::const_iterator & spectraItr, std::ofstream & file); | ||
///static reference to the logger class | ||
static Kernel::Logger& g_log; | ||
|
||
/// Map the separator options to their string equivalents | ||
std::map<std::string,std::string> m_separatorIndex; | ||
|
||
int m_nBins; | ||
std::string m_sep; | ||
bool m_writeDX; | ||
bool m_isHistogram; | ||
API::MatrixWorkspace_const_sptr m_ws; | ||
}; | ||
} // namespace DataHandling | ||
} // namespace Mantid | ||
|
||
#endif /* MANTID_DATAHANDLING_SaveAscii2_H_ */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.