bpp-core3
3.0.0
|
This class corresponds to a 'dataset', i.e. a table with data by rows and variable by columns. More...
#include <Bpp/Numeric/DataTable.h>
Public Member Functions | |
DataTable (size_t nRow, size_t nCol) | |
Build a new void DataTable object with nRow rows and nCol columns. More... | |
DataTable (size_t nRow, const std::vector< std::string > &colNames) | |
Build a new void DataTable object with nRow rows and named columns. More... | |
DataTable (size_t nCol) | |
Build a new void DataTable object with nCol columns. More... | |
DataTable (const std::vector< std::string > &colNames) | |
Build a new void DataTable object with named columns. More... | |
DataTable (const DataTable &table) | |
DataTable & | operator= (const DataTable &table) |
DataTable * | clone () const |
Create a copy of this object and send a pointer to it. More... | |
virtual | ~DataTable () |
std::string & | operator() (size_t rowIndex, size_t colIndex) |
const std::string & | operator() (size_t rowIndex, size_t colIndex) const |
std::string & | operator() (const std::string &rowName, const std::string &colName) |
const std::string & | operator() (const std::string &rowName, const std::string &colName) const |
std::string & | operator() (const std::string &rowName, size_t colIndex) |
const std::string & | operator() (const std::string &rowName, size_t colIndex) const |
std::string & | operator() (size_t rowIndex, const std::string &colName) |
const std::string & | operator() (size_t rowIndex, const std::string &colName) const |
Work on columns. | |
size_t | getNumberOfColumns () const |
void | setColumnNames (const std::vector< std::string > &colNames) |
Set the column names of this table. More... | |
std::vector< std::string > | getColumnNames () const |
Get the column names of this table. More... | |
std::string | getColumnName (size_t index) const |
Get a given column name. More... | |
bool | hasColumnNames () const |
std::vector< std::string > & | getColumn (size_t index) |
const std::vector< std::string > & | getColumn (size_t index) const |
std::vector< std::string > & | getColumn (const std::string &colName) |
const std::vector< std::string > & | getColumn (const std::string &colName) const |
bool | hasColumn (const std::string &colName) const |
Tell is a given column exists. More... | |
void | deleteColumn (size_t index) |
Delete the given column. More... | |
void | deleteColumn (const std::string &colName) |
Delete the given column. More... | |
void | addColumn (const std::vector< std::string > &newColumn) |
Add a new column. More... | |
void | addColumn (const std::string &colName, const std::vector< std::string > &newColumn) |
Add a new column. More... | |
Work on rows. | |
size_t | getNumberOfRows () const |
void | setRowNames (const std::vector< std::string > &rowNames) |
Set the row names of this table. More... | |
void | setRowName (size_t rowIndex, const std::string &rowName) |
Set the row name of a row with a given index. More... | |
std::vector< std::string > | getRowNames () const |
Get the row names of this table. More... | |
bool | hasRow (const std::string &rowName) const |
Tell is a given row exists. More... | |
std::string | getRowName (size_t index) const |
Get a given row name. More... | |
bool | hasRowNames () const |
std::vector< std::string > | getRow (size_t index) const |
std::vector< std::string > | getRow (const std::string &rowName) const |
void | deleteRow (size_t index) |
Delete the given row. More... | |
void | deleteRow (const std::string &rowName) |
Delete the given row. More... | |
void | addRow (const std::vector< std::string > &newRow) |
Add a new row. More... | |
void | addRow (const std::string &rowName, const std::vector< std::string > &newRow) |
Add a new row. More... | |
void | setRow (const size_t rowIndex, const std::vector< std::string > &newRow) |
Sets an existing with a given index. More... | |
Static Public Member Functions | |
static DataTable * | read (std::istream &in, const std::string &sep="\t", bool header=true, int rowNames=-1) |
Read a table form a stream in CSV-like format. More... | |
static void | write (const DataTable &data, std::ostream &out, const std::string &sep="\t", bool alignHeaders=false) |
Write a DataTable object to stream in CVS-like format. More... | |
static void | write (const DataTable &data, bpp::OutputStream &out, const std::string &sep="\t", bool alignHeaders=false) |
Protected Attributes | |
size_t | nRow_ |
size_t | nCol_ |
std::vector< std::vector< std::string > > | data_ |
std::vector< std::string > * | rowNames_ |
std::vector< std::string > * | colNames_ |
This class corresponds to a 'dataset', i.e. a table with data by rows and variable by columns.
Data are stored as string objects, by column. A DataTable object is hence similar to a ColMatrix<string>.object. (NB: actually, ColMatrix does not exist yet...)
Definition at line 65 of file DataTable.h.
DataTable::DataTable | ( | size_t | nRow, |
size_t | nCol | ||
) |
DataTable::DataTable | ( | size_t | nRow, |
const std::vector< std::string > & | colNames | ||
) |
Build a new void DataTable object with nRow rows and named columns.
nRow | The number of rows of the DataTable. |
colNames | The names of the columns of the DataTable. |
DuplicatedTableColumnNameException | If colnames contains identical names. |
Definition at line 74 of file DataTable.cpp.
References data_, nCol_, and setColumnNames().
DataTable::DataTable | ( | size_t | nCol | ) |
Build a new void DataTable object with nCol columns.
nCol | The number of columns of the DataTable. |
Definition at line 66 of file DataTable.cpp.
DataTable::DataTable | ( | const std::vector< std::string > & | colNames | ) |
Build a new void DataTable object with named columns.
colNames | The names of the columns of the DataTable. |
DuplicatedTableColumnNameException | If colnames contains identical names. |
Definition at line 89 of file DataTable.cpp.
References setColumnNames().
DataTable::DataTable | ( | const DataTable & | table | ) |
Definition at line 100 of file DataTable.cpp.
|
virtual |
Definition at line 133 of file DataTable.cpp.
void DataTable::addColumn | ( | const std::string & | colName, |
const std::vector< std::string > & | newColumn | ||
) |
Add a new column.
colName | The name of the column. |
newColumn | The new column values. |
DimensionException | If the number of values does not match the number of rows. |
NoTableColumnNamesException | If the table does not have row names. |
DuplicatedTableColumnNameException | If colName is already used. |
Definition at line 452 of file DataTable.cpp.
void DataTable::addColumn | ( | const std::vector< std::string > & | newColumn | ) |
Add a new column.
newColumn | The new column values. |
DimensionException | If the number of values does not match the number of rows. |
TableColumnNamesException | If the table has row names. |
Definition at line 442 of file DataTable.cpp.
void DataTable::addRow | ( | const std::string & | rowName, |
const std::vector< std::string > & | newRow | ||
) |
Add a new row.
rowName | The name of the row. |
newRow | The new row values. |
DimensionException | If the number of values does not match the number of columns. |
NoTableRowNamesException | If the table does not have column names. |
DuplicatedTableRowNameException | If rowName is already used. |
Definition at line 579 of file DataTable.cpp.
void DataTable::addRow | ( | const std::vector< std::string > & | newRow | ) |
Add a new row.
newRow | The new row values. |
DimensionException | If the number of values does not match the number of columns. |
TableRowNamesException | If the table has column names. |
Definition at line 553 of file DataTable.cpp.
References data_, nCol_, nRow_, and rowNames_.
Referenced by read().
|
inlinevirtual |
Create a copy of this object and send a pointer to it.
Implements bpp::Clonable.
Definition at line 111 of file DataTable.h.
References DataTable().
void DataTable::deleteColumn | ( | const std::string & | colName | ) |
Delete the given column.
colName | The name of the column. |
NoTableColumnNamesException | If no column names are associated to this table. |
TableColumnNameNotFoundException | If colName do not match existing column names. |
Definition at line 425 of file DataTable.cpp.
References colNames_, data_, nCol_, and bpp::VectorTools::which().
void DataTable::deleteColumn | ( | size_t | index | ) |
Delete the given column.
index | The index of the column. |
IndexOutOfBoundsException | If index is >= number of columns. |
Definition at line 415 of file DataTable.cpp.
References colNames_, data_, and nCol_.
Referenced by read().
void DataTable::deleteRow | ( | const std::string & | rowName | ) |
Delete the given row.
rowName | The name of the row. |
NoTableRowNamesException | If no row names are associated to this table. |
TableRowNameNotFoundException | If rowName do not match existing column names. |
Definition at line 532 of file DataTable.cpp.
References data_, nCol_, nRow_, rowNames_, and bpp::VectorTools::which().
void DataTable::deleteRow | ( | size_t | index | ) |
Delete the given row.
index | The index of the row. |
IndexOutOfBoundsException | If index is >= number of row. |
Definition at line 518 of file DataTable.cpp.
vector< string > & DataTable::getColumn | ( | const std::string & | colName | ) |
colName | The name of the column. |
NoTableColumnNamesException | If no column names are associated to this table. |
TableColumnNameNotFoundException | If colName do not match existing column names. |
Definition at line 373 of file DataTable.cpp.
References colNames_, data_, and bpp::VectorTools::which().
const vector< string > & DataTable::getColumn | ( | const std::string & | colName | ) | const |
colName | The name of the column. |
NoTableColumnNamesException | If no column names are associated to this table. |
TableColumnNameNotFoundException | If colName do not match existing column names. |
Definition at line 388 of file DataTable.cpp.
References colNames_, data_, and bpp::VectorTools::which().
vector< string > & DataTable::getColumn | ( | size_t | index | ) |
index | The index of the column. |
IndexOutOfBoundsException | If index is >= number of columns. |
Definition at line 359 of file DataTable.cpp.
Referenced by read().
const vector< string > & DataTable::getColumn | ( | size_t | index | ) | const |
index | The index of the column. |
IndexOutOfBoundsException | If index is >= number of columns. |
Definition at line 366 of file DataTable.cpp.
string DataTable::getColumnName | ( | size_t | index | ) | const |
Get a given column name.
index | The index of the column. |
NoTableColumnNamesException | If no column names are associated to this table. |
IndexOutOfBoundsException | If index is >= number of columns. |
Definition at line 346 of file DataTable.cpp.
vector< string > DataTable::getColumnNames | ( | ) | const |
Get the column names of this table.
NoTableColumnNamesException | If no column names are associated to this table. |
Definition at line 339 of file DataTable.cpp.
References colNames_.
Referenced by write().
|
inline |
Definition at line 201 of file DataTable.h.
References nCol_.
Referenced by write().
|
inline |
Definition at line 315 of file DataTable.h.
References nRow_.
Referenced by write().
vector< string > DataTable::getRow | ( | const std::string & | rowName | ) | const |
rowName | The name of the row. |
NoTableRowNamesException | If no row names are associated to this table. |
TableRowNameNotFoundException | If rowName do not match existing row names. |
Definition at line 486 of file DataTable.cpp.
References data_, nCol_, rowNames_, and bpp::VectorTools::which().
vector< string > DataTable::getRow | ( | size_t | index | ) | const |
index | The index of the row. |
IndexOutOfBoundsException | If index is >= number of rows. |
Definition at line 474 of file DataTable.cpp.
string DataTable::getRowName | ( | size_t | index | ) | const |
Get a given row name.
index | The index of the row. |
NoTableRowNamesException | If no row names are associated to this table. |
IndexOutOfBoundsException | If index is >= number of rows. |
Definition at line 314 of file DataTable.cpp.
References nRow_, and rowNames_.
Referenced by write().
vector< string > DataTable::getRowNames | ( | ) | const |
Get the row names of this table.
NoTableRowNamesException | If no row names are associated to this table. |
Definition at line 307 of file DataTable.cpp.
References rowNames_.
bool DataTable::hasColumn | ( | const std::string & | colName | ) | const |
Tell is a given column exists.
colName | The name of the column to look for. |
Definition at line 403 of file DataTable.cpp.
References colNames_.
|
inline |
Definition at line 231 of file DataTable.h.
References colNames_.
Referenced by write().
bool DataTable::hasRow | ( | const std::string & | rowName | ) | const |
Tell is a given row exists.
rowName | The name of the row to look for. |
Definition at line 506 of file DataTable.cpp.
References rowNames_.
|
inline |
Definition at line 366 of file DataTable.h.
References rowNames_.
string & DataTable::operator() | ( | const std::string & | rowName, |
const std::string & | colName | ||
) |
rowName | Row name. |
colName | Column name. |
NoTableRowNamesException | If the table does not have names associated to rows. |
NoTableColumnNamesException | If the table does not have names associated to columns. |
TableNameNotFoundException | If one of rowName or colName do not match existing names. |
Definition at line 165 of file DataTable.cpp.
References colNames_, bpp::ElementNotFoundException< T >::getElement(), rowNames_, and bpp::VectorTools::which().
const string & DataTable::operator() | ( | const std::string & | rowName, |
const std::string & | colName | ||
) | const |
rowName | Row name. |
colName | Column name. |
NoTableRowNamesException | If the table does not have names associated to rows. |
NoTableColumnNamesException | If the table does not have names associated to columns. |
TableNameNotFoundException | If one of rowName or colName do not match existing names. |
Definition at line 183 of file DataTable.cpp.
References colNames_, bpp::ElementNotFoundException< T >::getElement(), rowNames_, and bpp::VectorTools::which().
string & DataTable::operator() | ( | const std::string & | rowName, |
size_t | colIndex | ||
) |
rowName | Row name. |
colIndex | Column number. |
NoTableRowNamesException | If the table does not have names associated to rows. |
IndexOutOfBoundsException | If the index is greater or equal to the number of columns. |
TableNameNotFoundException | If rowName do not match existing names. |
Definition at line 203 of file DataTable.cpp.
References bpp::ElementNotFoundException< T >::getElement(), nCol_, rowNames_, and bpp::VectorTools::which().
const string & DataTable::operator() | ( | const std::string & | rowName, |
size_t | colIndex | ||
) | const |
rowName | Row name. |
colIndex | Column number. |
NoTableRowNamesException | If the table does not have names associated to rows. |
IndexOutOfBoundsException | If the index is greater or equal to the number of columns. |
TableNameNotFoundException | If rowName do not match existing names. |
Definition at line 220 of file DataTable.cpp.
References bpp::ElementNotFoundException< T >::getElement(), nCol_, rowNames_, and bpp::VectorTools::which().
string & DataTable::operator() | ( | size_t | rowIndex, |
const std::string & | colName | ||
) |
rowIndex | Row number. |
colName | Column name. |
IndexOutOfBoundsException | If the index is greater or equal to the number of rows. |
NoTableColumnNamesException | If the table does not have names associated to columns. |
TableNameNotFoundException | If colName do not match existing names. |
Definition at line 239 of file DataTable.cpp.
References colNames_, data_, bpp::ElementNotFoundException< T >::getElement(), and bpp::VectorTools::which().
const string & DataTable::operator() | ( | size_t | rowIndex, |
const std::string & | colName | ||
) | const |
rowIndex | Row number. |
colName | Column name. |
IndexOutOfBoundsException | If the index is greater or equal to the number of rows. |
NoTableColumnNamesException | If the table does not have names associated to columns. |
TableNameNotFoundException | If colName do not match existing names. |
Definition at line 256 of file DataTable.cpp.
References colNames_, data_, bpp::ElementNotFoundException< T >::getElement(), and bpp::VectorTools::which().
string & DataTable::operator() | ( | size_t | rowIndex, |
size_t | colIndex | ||
) |
rowIndex | Row number. |
colIndex | Column number. |
IndexOutOfBoundsException | If one of the index is greater or equal to the corresponding number of columns/rows. |
Definition at line 145 of file DataTable.cpp.
const string & DataTable::operator() | ( | size_t | rowIndex, |
size_t | colIndex | ||
) | const |
rowIndex | Row number. |
colIndex | Column number. |
IndexOutOfBoundsException | If one of the index is greater or equal to the corresponding number of columns/rows. |
Definition at line 154 of file DataTable.cpp.
|
static |
Read a table form a stream in CSV-like format.
The number of rows is given by the second line in the file. By default, if the first line as one column less than the second one, the first line is taken as column names, and the first column as row names. Otherwise, no column names and no row names are specified, unless explicitely precised by the user.
in | The input stream. |
sep | The column delimiter. |
header | Tell if the first line must be used as column names, otherwise use default. |
rowNames | Use a column as rowNames. If positive, use the specified column to compute rownames, otherwise use default; |
Definition at line 604 of file DataTable.cpp.
References addRow(), DataTable(), deleteColumn(), getColumn(), bpp::FileTools::getNextLine(), bpp::StringTokenizer::getTokens(), hasRowNames(), bpp::TextTools::isEmpty(), setColumnNames(), and setRowNames().
void DataTable::setColumnNames | ( | const std::vector< std::string > & | colNames | ) |
Set the column names of this table.
colNames | The row names. |
DimensionException | If the number of names do not match the number of columns in the table. |
DuplicatedTableColumnNameException | If names are not unique. |
Definition at line 325 of file DataTable.cpp.
References colNames_, bpp::VectorTools::isUnique(), and nCol_.
Referenced by DataTable(), and read().
void DataTable::setRow | ( | const size_t | rowIndex, |
const std::vector< std::string > & | newRow | ||
) |
Sets an existing with a given index.
rowIndex | The index of the row. |
newRow | The new row values. |
Definition at line 566 of file DataTable.cpp.
void DataTable::setRowName | ( | size_t | rowIndex, |
const std::string & | rowName | ||
) |
Set the row name of a row with a given index.
rowIndex | the index of the row |
rowName | The row name. |
DimensionException | If the index does not match. |
DuplicatedTableRowNameException | If name is already given. |
Definition at line 293 of file DataTable.cpp.
References bpp::VectorTools::contains(), nRow_, and rowNames_.
void DataTable::setRowNames | ( | const std::vector< std::string > & | rowNames | ) |
Set the row names of this table.
rowNames | The row names. |
DimensionException | If the number of names do not match the number of rows in the table. |
DuplicatedTableRowNameException | If names are not unique. |
Definition at line 277 of file DataTable.cpp.
References bpp::VectorTools::isUnique(), nRow_, and rowNames_.
Referenced by read().
|
static |
Definition at line 705 of file DataTable.cpp.
References bpp::OutputStream::endLine(), getColumnNames(), getNumberOfColumns(), getNumberOfRows(), getRowName(), hasColumnNames(), and hasRowNames().
|
static |
Write a DataTable object to stream in CVS-like format.
data | The table to write. |
out | The output stream. |
sep | The column delimiter. |
alignHeaders | If true, add a delimiter before the first column header if there is row names. |
Definition at line 674 of file DataTable.cpp.
References getColumnNames(), getNumberOfColumns(), getNumberOfRows(), getRowName(), hasColumnNames(), and hasRowNames().
|
protected |
Definition at line 72 of file DataTable.h.
Referenced by addColumn(), DataTable(), deleteColumn(), getColumn(), getColumnName(), getColumnNames(), hasColumn(), hasColumnNames(), operator()(), operator=(), setColumnNames(), and ~DataTable().
|
protected |
Definition at line 70 of file DataTable.h.
Referenced by addColumn(), addRow(), DataTable(), deleteColumn(), deleteRow(), getColumn(), getRow(), operator()(), operator=(), and setRow().
|
protected |
Definition at line 69 of file DataTable.h.
Referenced by addColumn(), addRow(), DataTable(), deleteColumn(), deleteRow(), getColumn(), getColumnName(), getNumberOfColumns(), getRow(), operator()(), operator=(), setColumnNames(), and setRow().
|
protected |
Definition at line 69 of file DataTable.h.
Referenced by addColumn(), addRow(), deleteRow(), getNumberOfRows(), getRow(), getRowName(), operator=(), setRow(), setRowName(), and setRowNames().
|
protected |
Definition at line 71 of file DataTable.h.
Referenced by addRow(), DataTable(), deleteRow(), getRow(), getRowName(), getRowNames(), hasRow(), hasRowNames(), operator()(), operator=(), setRowName(), setRowNames(), and ~DataTable().