#include <ColumnDataReader.hpp>
Inherits AbstractDataReader.
Public Member Functions | |
ColumnDataReader (const std::string &rDirectory, const std::string &rBaseName, bool makeAbsolute=true) | |
std::vector< double > | GetValues (const std::string &rVariableName) |
std::vector< double > | GetValues (const std::string &rVariableName, int fixedDimension) |
std::vector< double > | GetUnlimitedDimensionValues () |
bool | HasValues (const std::string &rVariableName) |
unsigned | GetFieldWidth () |
Private Member Functions | |
void | PushColumnEntryFromLine (const std::string &rLine, int col) |
void | ReadColumnFromFile (const std::string &rFilename, int col) |
void | ReadValueFromFile (const std::string &rFilename, int col, int row) |
Private Attributes | |
std::map< std::string, int > | mVariablesToColumns |
std::map< std::string, std::string > | mVariablesToUnits |
int | mNumFixedDimensions |
bool | mHasUnlimitedDimension |
int | mNumVariables |
std::string | mInfoFilename |
std::string | mDataFilename |
std::string | mAncillaryFilename |
std::vector< double > | mValues |
unsigned | mFieldWidth |
Static Private Attributes | |
static const int | SPACING = 2 |
A concrete column data reader class.
Definition at line 40 of file ColumnDataReader.hpp.
ColumnDataReader::ColumnDataReader | ( | const std::string & | rDirectory, | |
const std::string & | rBaseName, | |||
bool | makeAbsolute = true | |||
) |
Read data from the given files into memory. The files should be formatted as if written by ColumnDataWriter, with fixed width columns (except for the header line) and fields in scientific notation.
This will attempt to determine the field width from the input file. However, it needs some data to work with in order to do so. Provided at least one correctly formatted entry exists, it will be able to determine the field width, assuming that space is allowed for 3 digits in the exponent. Release 1.1 and earlier of Chaste only allowed 2 digits for the exponent; we can cope with this provided that the first data entry in the file has another entry immediately to the right of it.
rDirectory | The directory the files are stored in | |
rBaseName | The base name of the files to read (i.e. without the extensions) | |
makeAbsolute | Whether to convert directory to an absolute path using the OutputFileHandler (defaults to true) |
Definition at line 52 of file ColumnDataReader.cpp.
References FILE_SUFFIX_WIDTH, OutputFileHandler::GetOutputDirectoryFullPath(), mAncillaryFilename, mDataFilename, mFieldWidth, mHasUnlimitedDimension, mInfoFilename, mNumFixedDimensions, mNumVariables, mVariablesToColumns, mVariablesToUnits, NOT_READ, and SPACING.
unsigned ColumnDataReader::GetFieldWidth | ( | ) |
Get the field width (the number of characters (excl. preceding '+' or '-') printed for each data entry in the file).
Definition at line 384 of file ColumnDataReader.cpp.
References mFieldWidth.
std::vector< double > ColumnDataReader::GetUnlimitedDimensionValues | ( | ) |
Get the entries for a given variable with unlimited dimension.
Definition at line 297 of file ColumnDataReader.cpp.
References mAncillaryFilename, mDataFilename, mHasUnlimitedDimension, mNumFixedDimensions, mValues, and ReadColumnFromFile().
std::vector< double > ColumnDataReader::GetValues | ( | const std::string & | rVariableName, | |
int | fixedDimension | |||
) | [virtual] |
Get the entries for a given variable with fixed dimension.
rVariableName | ||
fixedDimension |
Implements AbstractDataReader.
Definition at line 240 of file ColumnDataReader.cpp.
References FILE_SUFFIX_WIDTH, mDataFilename, mHasUnlimitedDimension, mNumFixedDimensions, mValues, mVariablesToColumns, and ReadValueFromFile().
std::vector< double > ColumnDataReader::GetValues | ( | const std::string & | rVariableName | ) | [virtual] |
Get the entries for a given variable.
rVariableName |
Implements AbstractDataReader.
Definition at line 219 of file ColumnDataReader.cpp.
References mDataFilename, mNumFixedDimensions, mValues, mVariablesToColumns, and ReadColumnFromFile().
bool ColumnDataReader::HasValues | ( | const std::string & | rVariableName | ) |
Determine whether the data file has entries for a given variable.
rVariableName |
Definition at line 378 of file ColumnDataReader.cpp.
References mVariablesToColumns.
void ColumnDataReader::PushColumnEntryFromLine | ( | const std::string & | rLine, | |
int | col | |||
) | [private] |
Push back an entry from the data file into mValues.
rLine | the line of the data file | |
col | the column number |
Definition at line 363 of file ColumnDataReader.cpp.
References mFieldWidth, mValues, and SPACING.
Referenced by ReadColumnFromFile(), and ReadValueFromFile().
void ColumnDataReader::ReadColumnFromFile | ( | const std::string & | rFilename, | |
int | col | |||
) | [private] |
Read in a given column from a data file into mValues.
rFilename | the file name | |
col | the column number |
Definition at line 337 of file ColumnDataReader.cpp.
References mValues, and PushColumnEntryFromLine().
Referenced by GetUnlimitedDimensionValues(), and GetValues().
void ColumnDataReader::ReadValueFromFile | ( | const std::string & | rFilename, | |
int | col, | |||
int | row | |||
) | [private] |
Push back an entry from a file into mValues.
rFilename | the file name | |
col | the column number | |
row | the row number |
Definition at line 317 of file ColumnDataReader.cpp.
References PushColumnEntryFromLine().
Referenced by GetValues().
std::string ColumnDataReader::mAncillaryFilename [private] |
The name of the ancillary file.
Definition at line 51 of file ColumnDataReader.hpp.
Referenced by ColumnDataReader(), and GetUnlimitedDimensionValues().
std::string ColumnDataReader::mDataFilename [private] |
The name of the data file.
Definition at line 50 of file ColumnDataReader.hpp.
Referenced by ColumnDataReader(), GetUnlimitedDimensionValues(), and GetValues().
unsigned ColumnDataReader::mFieldWidth [private] |
Width of each column in the text file (excludes column headers). Determined from the first data entry
Definition at line 53 of file ColumnDataReader.hpp.
Referenced by ColumnDataReader(), GetFieldWidth(), and PushColumnEntryFromLine().
bool ColumnDataReader::mHasUnlimitedDimension [private] |
Whether the data file has an unlimited dimension.
Definition at line 47 of file ColumnDataReader.hpp.
Referenced by ColumnDataReader(), GetUnlimitedDimensionValues(), and GetValues().
std::string ColumnDataReader::mInfoFilename [private] |
The name of the info file.
Definition at line 49 of file ColumnDataReader.hpp.
Referenced by ColumnDataReader().
int ColumnDataReader::mNumFixedDimensions [private] |
The number of fixed dimensions in data file.
Definition at line 46 of file ColumnDataReader.hpp.
Referenced by ColumnDataReader(), GetUnlimitedDimensionValues(), and GetValues().
int ColumnDataReader::mNumVariables [private] |
The number of variables in the data file.
Definition at line 48 of file ColumnDataReader.hpp.
Referenced by ColumnDataReader().
std::vector<double> ColumnDataReader::mValues [private] |
Vector to hold values for a variable.
Definition at line 52 of file ColumnDataReader.hpp.
Referenced by GetUnlimitedDimensionValues(), GetValues(), PushColumnEntryFromLine(), and ReadColumnFromFile().
std::map<std::string, int> ColumnDataReader::mVariablesToColumns [private] |
Map between variable names and data column numbers.
Definition at line 44 of file ColumnDataReader.hpp.
Referenced by ColumnDataReader(), GetValues(), and HasValues().
std::map<std::string, std::string> ColumnDataReader::mVariablesToUnits [private] |
Map between variable names and variable units.
Definition at line 45 of file ColumnDataReader.hpp.
Referenced by ColumnDataReader().
const int ColumnDataReader::SPACING = 2 [static, private] |
Space between columns (includes minus sign)
Definition at line 54 of file ColumnDataReader.hpp.
Referenced by ColumnDataReader(), and PushColumnEntryFromLine().