Commit 5ad6843b authored by Tracie Sucharski's avatar Tracie Sucharski
Browse files

Merging Trunk.

parent 300dff19
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -426,6 +426,6 @@ void GenerateCSVOutput(Cube *incube,

  keys.remove(QRegExp(delim + "$")); // Get rid of the extra delim char (",")
  values.remove(QRegExp(delim + "$")); // Get rid of the extra delim char (",")
  outFile << keys << endl << values << endl;
  outFile << keys << endl << values;
  outFile.close();
}
+31 −1
Original line number Diff line number Diff line
@@ -23,6 +23,14 @@ using namespace boost::numeric::ublas;

namespace Isis {

  /**
   * Default constructor.
   */
  SparseBlockColumnMatrix::SparseBlockColumnMatrix() {
    m_startColumn = 0;
  }


  /**
   * Destructor. See description of wipe method below.
   */
@@ -71,6 +79,8 @@ namespace Isis {
      // insert matrix into map
      this->insert(it.key(),m);
    }

    m_startColumn = src.startColumn();
  }


@@ -123,6 +133,26 @@ namespace Isis {
  }


  /**
   * Sets starting column for block in full matrix.
   *
   * @param nStartColumn value for starting column in full matrix for this block columns
   */
  void SparseBlockColumnMatrix::setStartColumn(int nStartColumn) {
    m_startColumn = nStartColumn;
  }


  /**
   * Sets starting column for block in full matrix.
   *
   * @return int returns the starting column in the full matrix
   */
  int SparseBlockColumnMatrix::startColumn() const {
    return m_startColumn;
  }


  /**
   * Returns total number of matrix elements in map (NOTE: NOT the number of matrix blocks). The sum
   *  of all the elements in all of the matrix blocks.
+12 −1
Original line number Diff line number Diff line
@@ -62,12 +62,15 @@ namespace Isis {
   *                           ISIS coding standards.
   *   @history 2016-08-10 Jeannie Backer - Replaced boost matrix with Isis::LinearAlgebra::Matrix.
   *                           References #4163.
   *   @history 2017-05-09 Ken Edmundson - Added m_startColumn member and mutator/accessor methods
   *                           to SparseBlockColumnMatrix. Done to eliminate lengthy computation of
   *                           leading colums and rows. References #4664.
   */
  class SparseBlockColumnMatrix :
      public QMap< int, LinearAlgebra::Matrix * > {

  public:
    SparseBlockColumnMatrix(){} // default constructor
    SparseBlockColumnMatrix();  // default constructor
    ~SparseBlockColumnMatrix(); // destructor

    // copy constructor
@@ -80,11 +83,19 @@ namespace Isis {

    void zeroBlocks();
    bool insertMatrixBlock(int nColumnBlock, int nRows, int nCols);

    void setStartColumn(int nStartColumn);
    int startColumn() const;
    int numberOfElements();
    int numberOfRows();
    int numberOfColumns();
    void print(std::ostream& outstream);
    void printClean(std::ostream& outstream);

  protected:
    int m_startColumn; /**< starting column for this Block Column in full matrix
                            e.g. for Block Column 4, if the preceding Block Columns each have 6
                            columns, then the starting column for Block Column 4 is 24 */
  };

  // operators to read/write SparseBlockColumnMatrix to/from binary disk file
+22 −0
Original line number Diff line number Diff line
@@ -149,6 +149,28 @@ Printing SparseBlockColumnMatrix...

Empty SparseBlockColumnMatrix...

----- Insert boost block matrix of zeros in each column, set values, and startColumn
             # block columns: 3
             # matrix blocks: 3
    # diagonal matrix blocks: 1
# off-diagonal matrix blocks: 2
         block 0 startColumn: 0
         block 1 startColumn: 3
         block 2 startColumn: 6
Printing SparseBlockMatrix...
Printing SparseBlockColumnMatrix...
0
[3,3]((0,1,2),(3,4,5),(6,7,8))

Printing SparseBlockColumnMatrix...
2
[3,3]((0,1,2),(3,4,5),(6,7,8))

Printing SparseBlockColumnMatrix...
3
[3,3]((0,1,2),(3,4,5),(6,7,8))


----- copy method
             # matrix blocks: 1
    # diagonal matrix blocks: 1
+41 −0
Original line number Diff line number Diff line
@@ -346,6 +346,47 @@ int main(int argc, char *argv[]) {
    e.print();
  }
  
try {
    cerr << endl << "----- Insert boost block matrix of zeros in each column, set values, and startColumn" << endl;
    SparseBlockMatrix sbm;
    sbm.setNumberOfColumns(3);
    sbm.insertMatrixBlock(0, 0, 3, 3);
    sbm.insertMatrixBlock(1, 2, 3, 3);
    sbm.insertMatrixBlock(2, 3, 3, 3);
    
    for ( int i = 0; i < 3; i++ ) {
      for ( int j = 0; j < 3; j++ ) {
        (*(*sbm[0])[0])(i,j) = 3*i+j;
      }
    }
    for ( int i = 0; i < 3; i++ ) {
      for ( int j = 0; j < 3; j++ ) {
        (*(*sbm[1])[2])(i,j) = 3*i+j;
      }
    }
    for ( int i = 0; i < 3; i++ ) {
      for ( int j = 0; j < 3; j++ ) {
        (*(*sbm[2])[3])(i,j) = 3*i+j;
      }
    }
    
    sbm.at(0)->setStartColumn(0);
    sbm.at(1)->setStartColumn(3);
    sbm.at(2)->setStartColumn(6);
    
    cerr << "             # block columns: " << sbm.size() << endl;
    cerr << "             # matrix blocks: " << sbm.numberOfBlocks() << endl;
    cerr << "    # diagonal matrix blocks: " << sbm.numberOfDiagonalBlocks() << endl;
    cerr << "# off-diagonal matrix blocks: " << sbm.numberOfOffDiagonalBlocks() << endl;
    cerr << "         block 0 startColumn: " << sbm.at(0)->startColumn() << endl;
    cerr << "         block 1 startColumn: " << sbm.at(1)->startColumn() << endl;
    cerr << "         block 2 startColumn: " << sbm.at(2)->startColumn() << endl;
    sbm.print(std::cerr);
  }
  catch(IException &e) {
    e.print();
  }  

  try {
    cerr << endl << "----- copy method" << endl;
    SparseBlockMatrix sbm;
Loading