|
PLearn 0.1
|
#include <DoubleAccessSparseMatrix.h>


Public Member Functions | |
| DoubleAccessSparseMatrix (int n_rows=0, int n_cols=0, string _name="<no-name>", int _mode=ROW_WISE, bool _double_access=false, T _null_elem=0) | |
| virtual | ~DoubleAccessSparseMatrix () |
| virtual void | resize (int n_rows, int n_cols, bool clear_data=true) |
| virtual void | clear () |
| virtual void | clearRow (int i, bool force_synchro_if_double_accessible) |
| virtual void | clearCol (int j, bool force_synchro_if_double_accessible) |
| virtual void | clearElem (int i, int j) |
| virtual T | get (int i, int j) const |
| virtual T | operator() (int i, int j) const |
| virtual bool | exists (int i, int j) const |
| virtual void | set (int i, int j, T value) |
| virtual void | incr (int i, int j, T inc) |
| virtual map< int, T > & | getRow (int i) |
| virtual const map< int, T > & | getCol (int j) const |
| virtual void | addRow (map< int, T > &row) |
| virtual void | addCol (map< int, T > &col) |
| virtual int | size () |
| virtual T | sumRow (int i) |
| virtual T | sumCol (int j) |
| virtual T * | getAsCompressedVec () |
| virtual void | getAsMaxSizedCompressedVecs (int max_size, vector< pair< T *, int > > &vectors) |
| virtual void | addCompressedVec (T *compressed_vec, int n_elems) |
| virtual void | setCompressedVec (T *compressed_vec, int n_elems) |
| virtual T | sumOfElements () |
| virtual int | getHeight () const |
| virtual int | getWidth () const |
| virtual void | setDoubleAccessible (bool da) |
| virtual bool | isDoubleAccessible () |
| virtual void | setMode (int new_mode) |
| virtual int | getMode () |
| virtual void | setName (string n) |
| virtual string | getName () |
| virtual void | write (PStream &out) const |
| virtual void | read (PStream &in) |
| virtual T | getNullElem () |
| virtual string | getClassName () const |
Protected Attributes | |
| vector< map< int, T > > | rows |
| vector< map< int, T > > | cols |
| string | name |
| int | mode |
| bool | double_access |
| int | height |
| int | width |
| T | null_elem |
Definition at line 81 of file DoubleAccessSparseMatrix.h.
| PLearn::DoubleAccessSparseMatrix< T >::DoubleAccessSparseMatrix | ( | int | n_rows = 0, |
| int | n_cols = 0, |
||
| string | _name = "<no-name>", |
||
| int | _mode = ROW_WISE, |
||
| bool | _double_access = false, |
||
| T | _null_elem = 0 |
||
| ) |
Definition at line 46 of file DoubleAccessSparseMatrix_impl.h.
References PLearn::DoubleAccessSparseMatrix< T >::cols, COLUMN_WISE, PLearn::DoubleAccessSparseMatrix< T >::double_access, PLearn::DoubleAccessSparseMatrix< T >::height, PLearn::DoubleAccessSparseMatrix< T >::mode, PLERROR, ROW_WISE, PLearn::DoubleAccessSparseMatrix< T >::rows, and PLearn::DoubleAccessSparseMatrix< T >::width.
: name(_name), mode(_mode), double_access(_double_access), height(n_rows), width(n_cols), null_elem(_null_elem) { if (mode != ROW_WISE && mode != COLUMN_WISE) PLERROR("mode must be either row-wise or column-wise"); if (double_access) { rows.resize(height); cols.resize(width); } else if (mode == ROW_WISE) { rows.resize(height); } else { cols.resize(width); } }
| virtual PLearn::DoubleAccessSparseMatrix< T >::~DoubleAccessSparseMatrix | ( | ) | [inline, virtual] |
Definition at line 106 of file DoubleAccessSparseMatrix.h.
{}
| void PLearn::DoubleAccessSparseMatrix< T >::addCol | ( | map< int, T > & | col | ) | [virtual] |
Definition at line 327 of file DoubleAccessSparseMatrix_impl.h.
| void PLearn::DoubleAccessSparseMatrix< T >::addCompressedVec | ( | T * | compressed_vec, |
| int | n_elems | ||
| ) | [virtual] |
| void PLearn::DoubleAccessSparseMatrix< T >::addRow | ( | map< int, T > & | row | ) | [virtual] |
Definition at line 314 of file DoubleAccessSparseMatrix_impl.h.
References COLUMN_WISE, and PLERROR.
{
if (mode == COLUMN_WISE || double_access)
{
PLERROR("cannot add row in the column-wise matrix");
} else
{
rows.push_back(row);
height++;
}
}
| void PLearn::DoubleAccessSparseMatrix< T >::clear | ( | ) | [virtual] |
Definition at line 84 of file DoubleAccessSparseMatrix_impl.h.
References PLearn::clear(), COLUMN_WISE, i, and ROW_WISE.
Referenced by PLearn::ComplementedProbSparseMatrix::complement(), PLearn::GraphicalBiText::compute_likelihood(), PLearn::GraphicalBiText::init(), PLearn::ProbSparseMatrix::normalizeCond(), PLearn::SmoothedProbSparseMatrix::normalizeCondBackoff(), PLearn::SmoothedProbSparseMatrix::normalizeCondLaplace(), PLearn::ProbSparseMatrix::normalizeJoint(), and PLearn::GraphicalBiText::update_WSD_model().
{
if (mode == ROW_WISE || double_access)
{
// norman: added explicit cast
int rs = (int)rows.size();
for (int i = 0; i < rs; i++)
rows[i].clear();
}
if (mode == COLUMN_WISE || double_access)
{
// norman: added explicit cast
int cs = (int)cols.size();
for (int i = 0; i < cs; i++)
cols[i].clear();
}
}


| void PLearn::DoubleAccessSparseMatrix< T >::clearCol | ( | int | j, |
| bool | force_synchro_if_double_accessible | ||
| ) | [virtual] |
Definition at line 130 of file DoubleAccessSparseMatrix_impl.h.
References COLUMN_WISE, i, j, PLERROR, PLWARNING, and ROW_WISE.
{
if (!double_access)
{
if (mode == ROW_WISE)
PLERROR("cannot access columns in the row-wise matrix");
else if (mode == COLUMN_WISE)
cols[j].clear();
} else
{
if (force_synchro_if_double_accessible)
{
for (int i = 0; i < height; j++)
{
map<int, T>& row_i = rows[i];
if (row_i.find(j) != row_i.end())
row_i.erase(j);
}
} else
{
PLWARNING("can only clear columns in the column-wise matrix (internal matrices are now out of sync)");
cols[j].clear();
}
}
}
| void PLearn::DoubleAccessSparseMatrix< T >::clearElem | ( | int | i, |
| int | j | ||
| ) | [virtual] |
Definition at line 157 of file DoubleAccessSparseMatrix_impl.h.
References COLUMN_WISE, i, j, and ROW_WISE.
{
if (mode == ROW_WISE || double_access)
{
map<int, T>& row_i = rows[i];
if (row_i.find(j) != row_i.end())
row_i.erase(j);
}
if (mode == COLUMN_WISE || double_access)
{
map<int, T>& col_j = cols[j];
if (col_j.find(i) != col_j.end())
col_j.erase(i);
}
}
| void PLearn::DoubleAccessSparseMatrix< T >::clearRow | ( | int | i, |
| bool | force_synchro_if_double_accessible | ||
| ) | [virtual] |
Definition at line 103 of file DoubleAccessSparseMatrix_impl.h.
References COLUMN_WISE, i, j, PLERROR, and PLWARNING.
{
if (!double_access)
{
if (mode == COLUMN_WISE)
PLERROR("cannot access rows in the column-wise matrix");
else
rows[i].clear();
} else
{
if (force_synchro_if_double_accessible)
{
for (int j = 0; j < width; j++)
{
map<int, T>& col_j = cols[j];
if (col_j.find(i) != col_j.end())
col_j.erase(i);
}
} else
{
PLWARNING("can only clear rows in the row-wise matrix (internal matrices are now out of sync)");
rows[i].clear();
}
}
}
| bool PLearn::DoubleAccessSparseMatrix< T >::exists | ( | int | i, |
| int | j | ||
| ) | const [virtual] |
Definition at line 198 of file DoubleAccessSparseMatrix_impl.h.
References i, j, PLERROR, and ROW_WISE.
Referenced by PLearn::ProbSparseMatrix::add().
{
#ifdef BOUNDCHECK
if (i < 0 || i >= height || j < 0 || j >= width)
PLERROR("out-of-bound access to (%d, %d), dims = (%d, %d)", i, j, height, width);
#endif
if (mode == ROW_WISE)
{
const map<int, T>& row_i = rows[i];
return (row_i.find(j) != row_i.end());
} else
{
const map<int, T>& col_j = cols[j];
return (col_j.find(i) != col_j.end());
}
}

| T PLearn::DoubleAccessSparseMatrix< T >::get | ( | int | i, |
| int | j | ||
| ) | const [virtual] |
Definition at line 174 of file DoubleAccessSparseMatrix_impl.h.
References i, j, PLERROR, and ROW_WISE.
Referenced by PLearn::ProbSparseMatrix::add(), PLearn::GraphicalBiText::compute_BN_likelihood(), PLearn::GraphicalBiText::compute_efs_likelihood(), PLearn::GraphicalBiText::compute_likelihood(), PLearn::GraphicalBiText::computeKL(), PLearn::ProbSparseMatrix::euclidianDistance(), PLearn::GraphicalBiText::init(), PLearn::GraphicalBiText::printNode(), and PLearn::GraphicalBiText::test_WSD().
{
#ifdef BOUNDCHECK
if (i < 0 || i >= height || j < 0 || j >= width)
PLERROR("out-of-bound access to (%d, %d), dims = (%d, %d)", i, j, height, width);
#endif
if (mode == ROW_WISE)
{
const map<int, T>& row_i = rows[i];
typename map<int, T>::const_iterator it = row_i.find(j);
if (it == row_i.end())
return null_elem;
return it->second;
} else
{
const map<int, T>& col_j = cols[j];
typename map<int, T>::const_iterator it = col_j.find(i);
if (it == col_j.end())
return null_elem;
return it->second;
}
}

| T * PLearn::DoubleAccessSparseMatrix< T >::getAsCompressedVec | ( | ) | [virtual] |
Definition at line 392 of file DoubleAccessSparseMatrix_impl.h.
References COLUMN_WISE, i, j, PLERROR, and ROW_WISE.
{
int vector_size = size() * 3;
T* compressed_vec = NULL;
int pos = 0;
if (mode == ROW_WISE || double_access)
{
compressed_vec = new T[vector_size];
for (int i = 0; i < height; i++)
{
map<int, T>& row_i = rows[i];
for (typename map<int, T>::iterator it = row_i.begin(); it != row_i.end(); ++it)
{
int j = it->first;
T value = it->second;
compressed_vec[pos++] = (T)i;
compressed_vec[pos++] = (T)j;
compressed_vec[pos++] = value;
}
}
if (pos != vector_size)
PLERROR("weird");
} else if (mode == COLUMN_WISE)
{
compressed_vec = new T[vector_size];
for (int j = 0; j < width; j++)
{
map<int, T>& col_j = cols[j];
for (typename map<int, T>::iterator it = col_j.begin(); it != col_j.end(); ++it)
{
int i = it->first;
T value = it->second;
compressed_vec[pos++] = (T)i;
compressed_vec[pos++] = (T)j;
compressed_vec[pos++] = value;
}
}
if (pos != vector_size)
PLERROR("weird");
}
return compressed_vec;
}
| void PLearn::DoubleAccessSparseMatrix< T >::getAsMaxSizedCompressedVecs | ( | int | max_size, |
| vector< pair< T *, int > > & | vectors | ||
| ) | [virtual] |
Definition at line 436 of file DoubleAccessSparseMatrix_impl.h.
References COLUMN_WISE, i, j, PLWARNING, and ROW_WISE.
{
if ((max_size % 3) != 0) PLWARNING("dangerous vector size (max_size mod 3 must equal 0)");
int n_elems = size() * 3;
int n_vecs = n_elems / max_size;
int remaining = n_elems % max_size;
int pos = 0;
if (remaining > 0) // padding to get sure that last block size (= remaining) is moddable by 3
{
n_vecs += 1;
int mod3 = remaining % 3;
if (mod3 != 0)
remaining += (3 - mod3);
}
vectors.resize(n_vecs);
for (int i = 0; i < n_vecs; i++)
{
if (i == (n_vecs - 1) && remaining > 0)
{
vectors[i].first = new T[remaining];
vectors[i].second = remaining;
} else
{
vectors[i].first = new T[max_size];
vectors[i].second = max_size;
}
}
if (mode == ROW_WISE)
{
for (int i = 0; i < height; i++)
{
map<int, T>& row_i = rows[i];
for (typename map<int, T>::iterator it = row_i.begin(); it != row_i.end(); ++it)
{
int j = it->first;
T value = it->second;
vectors[pos / max_size].first[pos++ % max_size] = (T)i;
vectors[pos / max_size].first[pos++ % max_size] = (T)j;
vectors[pos / max_size].first[pos++ % max_size] = value;
}
}
} else if (mode == COLUMN_WISE)
{
for (int j = 0; j < width; j++)
{
map<int, T>& col_j = cols[j];
for (typename map<int, T>::iterator it = col_j.begin(); it != col_j.end(); ++it)
{
int i = it->first;
T value = it->second;
vectors[pos / max_size].first[pos++ % max_size] = (T)i;
vectors[pos / max_size].first[pos++ % max_size] = (T)j;
vectors[pos / max_size].first[pos++ % max_size] = value;
}
}
}
while (pos < n_elems) // pad with (null_elem, null_elem, null_elem)
{
vectors[pos / max_size].first[pos++ % max_size] = null_elem;
vectors[pos / max_size].first[pos++ % max_size] = null_elem;
vectors[pos / max_size].first[pos++ % max_size] = null_elem;
}
}
| virtual string PLearn::DoubleAccessSparseMatrix< T >::getClassName | ( | ) | const [inline, virtual] |
Reimplemented in PLearn::ProbSparseMatrix, and PLearn::SmoothedProbSparseMatrix.
Definition at line 176 of file DoubleAccessSparseMatrix.h.
{ return "DoubleAccesSparseMatrix"; }
| const map< int, T > & PLearn::DoubleAccessSparseMatrix< T >::getCol | ( | int | j | ) | const [virtual] |
Definition at line 297 of file DoubleAccessSparseMatrix_impl.h.
References COLUMN_WISE, j, and PLERROR.
Referenced by PLearn::ProbSparseMatrix::add(), PLearn::ComplementedProbSparseMatrix::complement(), PLearn::GraphicalBiText::compute_likelihood(), PLearn::GraphicalBiText::computeKL(), PLearn::ProbSparseMatrix::euclidianDistance(), PLearn::GraphicalBiText::init(), PLearn::ProbSparseMatrix::iterativeProportionalFittingStep(), PLearn::ProbSparseMatrix::normalizeCond(), PLearn::SmoothedProbSparseMatrix::normalizeCondBackoff(), PLearn::SmoothedProbSparseMatrix::normalizeCondLaplace(), PLearn::ProbSparseMatrix::normalizeJoint(), and PLearn::GraphicalBiText::update_WSD_model().
{
if (mode == COLUMN_WISE || double_access)
{
#ifdef BOUNDCHECK
if (j < 0 || j > width)
PLERROR("out-of-bound access to column %d, dims = (%d, %d)", j, height, width);
#endif
return cols[j];
} else
{
PLERROR("cannot access columns in the row-wise matrix");
return cols[0];
}
}

| virtual int PLearn::DoubleAccessSparseMatrix< T >::getHeight | ( | ) | const [inline, virtual] |
Definition at line 154 of file DoubleAccessSparseMatrix.h.
Referenced by PLearn::ProbSparseMatrix::add(), PLearn::ComplementedProbSparseMatrix::complement(), PLearn::ProbSparseMatrix::euclidianDistance(), PLearn::ProbSparseMatrix::iterativeProportionalFittingStep(), PLearn::ProbSparseMatrix::normalizeCond(), PLearn::SmoothedProbSparseMatrix::normalizeCondBackoff(), PLearn::SmoothedProbSparseMatrix::normalizeCondLaplace(), and PLearn::ProbSparseMatrix::normalizeJoint().
{ return height; }

| virtual int PLearn::DoubleAccessSparseMatrix< T >::getMode | ( | ) | [inline, virtual] |
Definition at line 164 of file DoubleAccessSparseMatrix.h.
Referenced by PLearn::ComplementedProbSparseMatrix::complement(), PLearn::ProbSparseMatrix::normalizeCond(), PLearn::SmoothedProbSparseMatrix::normalizeCondBackoff(), PLearn::SmoothedProbSparseMatrix::normalizeCondLaplace(), and PLearn::ProbSparseMatrix::normalizeJoint().
{ return mode; }

| virtual string PLearn::DoubleAccessSparseMatrix< T >::getName | ( | ) | [inline, virtual] |
Definition at line 168 of file DoubleAccessSparseMatrix.h.
Referenced by PLearn::SmoothedProbSparseMatrix::normalizeCondBackoff().
{ return name; }

| virtual T PLearn::DoubleAccessSparseMatrix< T >::getNullElem | ( | ) | [inline, virtual] |
Definition at line 174 of file DoubleAccessSparseMatrix.h.
{ return null_elem; }
| map< int, T > & PLearn::DoubleAccessSparseMatrix< T >::getRow | ( | int | i | ) | [virtual] |
Definition at line 280 of file DoubleAccessSparseMatrix_impl.h.
References i, PLERROR, and ROW_WISE.
Referenced by PLearn::ProbSparseMatrix::add(), PLearn::ComplementedProbSparseMatrix::complement(), PLearn::ProbSparseMatrix::euclidianDistance(), PLearn::ProbSparseMatrix::iterativeProportionalFittingStep(), PLearn::ProbSparseMatrix::normalizeCond(), PLearn::SmoothedProbSparseMatrix::normalizeCondBackoff(), PLearn::SmoothedProbSparseMatrix::normalizeCondLaplace(), and PLearn::ProbSparseMatrix::normalizeJoint().
{
if (mode == ROW_WISE || double_access)
{
#ifdef BOUNDCHECK
if (i < 0 || i > height)
PLERROR("out-of-bound access to row %d, dims = (%d, %d)", i, height, width);
#endif
return rows[i];
} else
{
PLERROR("cannot access rows in the column-wise matrix");
return rows[0];
}
}

| virtual int PLearn::DoubleAccessSparseMatrix< T >::getWidth | ( | ) | const [inline, virtual] |
Definition at line 156 of file DoubleAccessSparseMatrix.h.
Referenced by PLearn::ProbSparseMatrix::add(), PLearn::ComplementedProbSparseMatrix::complement(), PLearn::GraphicalBiText::compute_likelihood(), PLearn::ProbSparseMatrix::euclidianDistance(), PLearn::ProbSparseMatrix::iterativeProportionalFittingStep(), PLearn::ProbSparseMatrix::normalizeCond(), PLearn::SmoothedProbSparseMatrix::normalizeCondBackoff(), PLearn::SmoothedProbSparseMatrix::normalizeCondLaplace(), PLearn::ProbSparseMatrix::normalizeJoint(), and PLearn::GraphicalBiText::update_WSD_model().
{ return width; }

| void PLearn::DoubleAccessSparseMatrix< T >::incr | ( | int | i, |
| int | j, | ||
| T | inc | ||
| ) | [virtual] |
| virtual bool PLearn::DoubleAccessSparseMatrix< T >::isDoubleAccessible | ( | ) | [inline, virtual] |
Definition at line 160 of file DoubleAccessSparseMatrix.h.
Referenced by PLearn::ComplementedProbSparseMatrix::complement(), PLearn::ProbSparseMatrix::normalizeCond(), PLearn::SmoothedProbSparseMatrix::normalizeCondBackoff(), and PLearn::SmoothedProbSparseMatrix::normalizeCondLaplace().
{ return double_access; }

| virtual T PLearn::DoubleAccessSparseMatrix< T >::operator() | ( | int | i, |
| int | j | ||
| ) | const [inline, virtual] |
Definition at line 120 of file DoubleAccessSparseMatrix.h.
| void PLearn::DoubleAccessSparseMatrix< T >::read | ( | PStream & | in | ) | [virtual] |
Reimplemented in PLearn::SmoothedProbSparseMatrix.
Definition at line 660 of file DoubleAccessSparseMatrix_impl.h.
References c, PLearn::PStream::get(), i, PLearn::PStream::inmode, PLearn::PStream::plearn_ascii, PLearn::PStream::plearn_binary, PLERROR, PLearn::PStream::raw_ascii, PLearn::PStream::raw_binary, and PLearn::PStream::skipBlanksAndCommentsAndSeparators().
Referenced by PLearn::operator>>().
{
string class_name = getClassName();
switch (in.inmode)
{
case PStream::raw_ascii :
PLERROR("raw_ascii read not implemented in %s", class_name.c_str());
break;
case PStream::raw_binary :
PLERROR("raw_binary read not implemented in %s", class_name.c_str());
break;
case PStream::plearn_ascii :
case PStream::plearn_binary :
{
in.skipBlanksAndCommentsAndSeparators();
string word(class_name.size() + 1, ' ');
for (unsigned int i = 0; i < class_name.size() + 1; i++)
in.get(word[i]);
if (word != class_name + "(")
PLERROR("in %s::(PStream& in), '%s' is not a proper header", class_name.c_str(), word.c_str());
in.skipBlanksAndCommentsAndSeparators();
in >> rows;
in.skipBlanksAndCommentsAndSeparators();
in >> cols;
in.skipBlanksAndCommentsAndSeparators();
in >> name;
in.skipBlanksAndCommentsAndSeparators();
in >> mode;
in.skipBlanksAndCommentsAndSeparators();
in >> double_access;
in.skipBlanksAndCommentsAndSeparators();
in >> height;
in.skipBlanksAndCommentsAndSeparators();
in >> width;
in.skipBlanksAndCommentsAndSeparators();
in >> null_elem;
in.skipBlanksAndCommentsAndSeparators();
int c = in.get();
if(c != ')')
PLERROR("in %s::(PStream& in), expected a closing parenthesis, found '%c'", class_name.c_str(), c);
}
break;
default:
PLERROR("unknown inmode in %s::write(PStream& out)", class_name.c_str());
break;
}
}


| void PLearn::DoubleAccessSparseMatrix< T >::resize | ( | int | n_rows, |
| int | n_cols, | ||
| bool | clear_data = true |
||
| ) | [virtual] |
Definition at line 64 of file DoubleAccessSparseMatrix_impl.h.
References PLearn::clear(), and ROW_WISE.
Referenced by PLearn::GraphicalBiText::build_(), and PLearn::GraphicalBiText::compute_likelihood().
{
height = n_rows;
width = n_cols;
if (double_access)
{
rows.resize(n_rows);
cols.resize(n_cols);
} else if (mode == ROW_WISE)
{
rows.resize(n_rows);
} else
{
cols.resize(n_cols);
}
if (clear_data)
clear();
}


| void PLearn::DoubleAccessSparseMatrix< T >::set | ( | int | i, |
| int | j, | ||
| T | value | ||
| ) | [virtual] |
Definition at line 216 of file DoubleAccessSparseMatrix_impl.h.
References COLUMN_WISE, i, j, PLERROR, and ROW_WISE.
{
#ifdef BOUNDCHECK
if (i < 0 || i >= height || j < 0 || j >= width)
PLERROR("out-of-bound access to (%d, %d), dims = (%d, %d)", i, j, height, width);
#endif
if (value != null_elem)
{
if (mode == ROW_WISE || double_access)
rows[i][j] = value;
if (mode == COLUMN_WISE || double_access)
cols[j][i] = value;
} else
{
clearElem(i, j);
}
}
| void PLearn::DoubleAccessSparseMatrix< T >::setCompressedVec | ( | T * | compressed_vec, |
| int | n_elems | ||
| ) | [virtual] |
Definition at line 510 of file DoubleAccessSparseMatrix_impl.h.
References PLearn::clear(), i, and PLERROR.
{
if ((n_elems % 3) != 0) PLERROR("n_elems mod 3 must = 0");
clear();
for (int i = 0; i < n_elems; i += 3)
set((int)compressed_vec[i], (int)compressed_vec[i + 1], compressed_vec[i + 2]);
}

| void PLearn::DoubleAccessSparseMatrix< T >::setDoubleAccessible | ( | bool | da | ) | [virtual] |
Definition at line 543 of file DoubleAccessSparseMatrix_impl.h.
References COLUMN_WISE, i, j, and ROW_WISE.
{
if (double_access != da)
{
double_access = da;
if (!double_access)
{
if (mode == ROW_WISE)
cols.clear();
else if (mode == COLUMN_WISE)
rows.clear();
} else
{
if (mode == ROW_WISE)
{
cols.resize(width);
for (int i = 0; i < height; i++)
{
map<int, T>& row_i = rows[i];
for (typename map<int, T>::iterator it = row_i.begin(); it != row_i.end(); ++it)
{
int j = it->first;
T value = it->second;
set(i, j, value);
}
}
} else if (mode == COLUMN_WISE)
{
rows.resize(height);
for (int j = 0; j < width; j++)
{
map<int, T>& col_j = cols[j];
for (typename map<int, T>::iterator it = col_j.begin(); it != col_j.end(); ++it)
{
int i = it->first;
T value = it->second;
set(i, j, value);
}
}
}
}
}
}
| void PLearn::DoubleAccessSparseMatrix< T >::setMode | ( | int | new_mode | ) | [virtual] |
Definition at line 588 of file DoubleAccessSparseMatrix_impl.h.
References COLUMN_WISE, i, j, PLERROR, and ROW_WISE.
Referenced by PLearn::GraphicalBiText::build_(), and PLearn::GraphicalBiText::compute_likelihood().
{
if (mode != ROW_WISE && mode != COLUMN_WISE) PLERROR("mode must be either row-wise or column-wise");
if (mode != new_mode)
{
mode = new_mode;
if (mode == ROW_WISE && !double_access)
{
rows.resize(height);
for (int j = 0; j < width; j++)
{
map<int, T>& col_j = cols[j];
for (typename map<int, T>::iterator it = col_j.begin(); it != col_j.end(); ++it)
{
int i = it->first;
T value = it->second;
set(i, j, value);
}
}
cols.clear();
} else if (mode == COLUMN_WISE && !double_access)
{
cols.resize(width);
for (int i = 0; i < height; i++)
{
map<int, T>& row_i = rows[i];
for (typename map<int, T>::iterator it = row_i.begin(); it != row_i.end(); ++it)
{
int j = it->first;
T value = it->second;
set(i, j, value);
}
}
rows.clear();
}
}
}

| virtual void PLearn::DoubleAccessSparseMatrix< T >::setName | ( | string | n | ) | [inline, virtual] |
Definition at line 166 of file DoubleAccessSparseMatrix.h.
Referenced by PLearn::GraphicalBiText::build_(), and PLearn::GraphicalBiText::compute_likelihood().

| int PLearn::DoubleAccessSparseMatrix< T >::size | ( | ) | [virtual] |
Definition at line 340 of file DoubleAccessSparseMatrix_impl.h.
| T PLearn::DoubleAccessSparseMatrix< T >::sumCol | ( | int | j | ) | [virtual] |
Definition at line 375 of file DoubleAccessSparseMatrix_impl.h.
References COLUMN_WISE, j, PLERROR, and PLearn::sum().
Referenced by PLearn::GraphicalBiText::computeKL(), PLearn::GraphicalBiText::init(), PLearn::ProbSparseMatrix::iterativeProportionalFittingStep(), PLearn::ProbSparseMatrix::normalizeCond(), PLearn::SmoothedProbSparseMatrix::normalizeCondBackoff(), and PLearn::SmoothedProbSparseMatrix::normalizeCondLaplace().
{
if (mode == COLUMN_WISE || double_access)
{
T sum = 0;
map<int, T>& col_j = cols[j];
for (typename map<int, T>::iterator it = col_j.begin(); it != col_j.end(); ++it)
sum += it->second;
return sum;
} else
{
PLERROR("cannot access columns in the row-wise matrix");
return 0;
}
}


| T PLearn::DoubleAccessSparseMatrix< T >::sumOfElements | ( | ) | [virtual] |
Definition at line 519 of file DoubleAccessSparseMatrix_impl.h.
References COLUMN_WISE, i, j, ROW_WISE, and PLearn::sum().
Referenced by PLearn::GraphicalBiText::check_consitency(), and PLearn::ProbSparseMatrix::normalizeJoint().
{
T sum = 0;
if (mode == ROW_WISE)
{
for (int i = 0; i < height; i++)
{
map<int, T>& row_i = rows[i];
for (typename map<int, T>::iterator it = row_i.begin(); it != row_i.end(); ++it)
sum += it->second;
}
} else if (mode == COLUMN_WISE)
{
for (int j = 0; j < width; j++)
{
map<int, T>& col_j = cols[j];
for (typename map<int, T>::iterator it = col_j.begin(); it != col_j.end(); ++it)
sum += it->second;
}
}
return sum;
}


| T PLearn::DoubleAccessSparseMatrix< T >::sumRow | ( | int | i | ) | [virtual] |
Definition at line 358 of file DoubleAccessSparseMatrix_impl.h.
References i, PLERROR, ROW_WISE, and PLearn::sum().
Referenced by PLearn::ProbSparseMatrix::iterativeProportionalFittingStep(), PLearn::ProbSparseMatrix::normalizeCond(), PLearn::SmoothedProbSparseMatrix::normalizeCondBackoff(), and PLearn::SmoothedProbSparseMatrix::normalizeCondLaplace().
{
if (mode == ROW_WISE || double_access)
{
T sum = 0;
map<int, T>& row_i = rows[i];
for (typename map<int, T>::iterator it = row_i.begin(); it != row_i.end(); ++it)
sum += it->second;
return sum;
} else
{
PLERROR("cannot access rows in the column-wise matrix");
return 0;
}
}


| void PLearn::DoubleAccessSparseMatrix< T >::write | ( | PStream & | out | ) | const [virtual] |
Reimplemented in PLearn::SmoothedProbSparseMatrix.
Definition at line 628 of file DoubleAccessSparseMatrix_impl.h.
References PLearn::PStream::outmode, PLearn::PStream::plearn_ascii, PLearn::PStream::plearn_binary, PLERROR, PLearn::PStream::pretty_ascii, PLearn::PStream::raw_ascii, PLearn::PStream::raw_binary, and PLearn::PStream::write().
Referenced by PLearn::operator<<().
{
string class_name = getClassName();
switch(out.outmode)
{
case PStream::raw_ascii :
case PStream::pretty_ascii :
PLERROR("raw/pretty_ascii write not implemented in %s", class_name.c_str());
break;
case PStream::raw_binary :
PLERROR("raw_binary write not implemented in %s", class_name.c_str());
break;
case PStream::plearn_binary :
case PStream::plearn_ascii :
out.write(class_name + "(");
out << rows;
out << cols;
out << name;
out << mode;
out << double_access;
out << height;
out << width;
out << null_elem;
out.write(")\n");
break;
default:
PLERROR("unknown outmode in %s::write(PStream& out)", class_name.c_str());
break;
}
}


vector<map<int, T> > PLearn::DoubleAccessSparseMatrix< T >::cols [protected] |
Definition at line 88 of file DoubleAccessSparseMatrix.h.
Referenced by PLearn::DoubleAccessSparseMatrix< T >::DoubleAccessSparseMatrix().
bool PLearn::DoubleAccessSparseMatrix< T >::double_access [protected] |
Definition at line 94 of file DoubleAccessSparseMatrix.h.
Referenced by PLearn::DoubleAccessSparseMatrix< T >::DoubleAccessSparseMatrix().
int PLearn::DoubleAccessSparseMatrix< T >::height [protected] |
Definition at line 96 of file DoubleAccessSparseMatrix.h.
Referenced by PLearn::DoubleAccessSparseMatrix< T >::DoubleAccessSparseMatrix().
int PLearn::DoubleAccessSparseMatrix< T >::mode [protected] |
Definition at line 92 of file DoubleAccessSparseMatrix.h.
Referenced by PLearn::DoubleAccessSparseMatrix< T >::DoubleAccessSparseMatrix(), and PLearn::ProbSparseMatrix::iterativeProportionalFittingStep().
string PLearn::DoubleAccessSparseMatrix< T >::name [protected] |
Definition at line 90 of file DoubleAccessSparseMatrix.h.
T PLearn::DoubleAccessSparseMatrix< T >::null_elem [protected] |
Definition at line 100 of file DoubleAccessSparseMatrix.h.
vector<map<int, T> > PLearn::DoubleAccessSparseMatrix< T >::rows [protected] |
Definition at line 86 of file DoubleAccessSparseMatrix.h.
Referenced by PLearn::DoubleAccessSparseMatrix< T >::DoubleAccessSparseMatrix().
int PLearn::DoubleAccessSparseMatrix< T >::width [protected] |
Definition at line 98 of file DoubleAccessSparseMatrix.h.
Referenced by PLearn::DoubleAccessSparseMatrix< T >::DoubleAccessSparseMatrix().
1.7.4