Changeset 413
- Timestamp:
- Nov 30, 2005, 10:35:19 PM (18 years ago)
- Location:
- branches/better_matrix_class
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/better_matrix_class/lib/gslapi/matrix.cc
r408 r413 11 11 12 12 #include <gsl/gsl_blas.h> 13 #include <gsl/gsl_linalg.h>14 13 15 14 16 15 namespace theplu { 17 16 namespace gslapi { 18 19 20 21 matrix::matrix(void)22 : m_(NULL), view_(NULL)23 {24 }25 26 27 28 matrix::matrix(const size_t& r, const size_t& c, double init_value)29 : view_(NULL)30 {31 m_ = gsl_matrix_alloc(r,c);32 set_all(init_value);33 }34 35 36 37 matrix::matrix(const matrix& other)38 : view_(NULL)39 {40 m_ = other.gsl_matrix_copy();41 }42 17 43 18 … … 133 108 134 109 // Jari, checkout GSL transpose support in GSL manual 8.4.9 135 /* 136 matrix matrix::transpose(void) const 110 void matrix::transpose(void) 137 111 { 138 matrix res(columns(),rows()); 139 gsl_matrix_transpose_memcpy(res.m_,m_); 140 return res; 112 if (columns()==rows()) 113 gsl_matrix_transpose(m_); 114 else { 115 gsl_matrix* transposed = gsl_matrix_alloc(columns(),rows()); 116 gsl_matrix_transpose_memcpy(transposed,m_); 117 gsl_matrix_free(m_); 118 m_=transposed; 119 } 141 120 } 142 121 143 122 144 123 145 vector matrix::TEMP_col_return(size_t column) const 146 { 147 vector vec(rows()); 148 for (size_t i=0; i<rows(); ++i) 149 vec(i)=operator()(i,column); 150 return vec; 151 } 152 153 154 155 vector matrix::operator[](size_t row) const 156 { 157 vector vec(columns()); 158 for (size_t i=0; i<columns(); ++i) 159 vec(i)=operator()(row,i); 160 return vec; 161 } 162 163 164 165 matrix matrix::operator*( const matrix &other ) const 166 { 167 matrix res(rows(), other.columns()); 168 gsl_linalg_matmult(m_,other.m_,res.m_); 169 return res; 170 } 171 172 173 124 /* 174 125 vector matrix::operator*( const vector &other ) const 175 126 { … … 178 129 gslvec ); 179 130 vector res(gslvec); 180 return res;181 }182 183 184 185 matrix matrix::operator+( const matrix &other ) const186 {187 matrix res( *this );188 gsl_matrix_add( res.m_, other.m_ );189 return res;190 }191 192 193 194 matrix matrix::operator-( const matrix &other ) const195 {196 matrix res( *this );197 gsl_matrix_sub( res.m_, other.m_ );198 131 return res; 199 132 } … … 208 141 m_ = other.gsl_matrix_copy(); 209 142 } 143 return *this; 144 } 145 146 147 148 const matrix& matrix::operator*=(const matrix& other) 149 { 150 gsl_matrix* result = gsl_matrix_alloc(rows(),other.columns()); 151 gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, m_, other.m_, 0.0, result); 152 gsl_matrix_free(m_); 153 m_=result; 210 154 return *this; 211 155 } -
branches/better_matrix_class/lib/gslapi/matrix.h
r409 r413 40 40 /// the omitted functionality could be included. 41 41 /// 42 /// @todo Maybe it would be smart to create temporary objects need 43 /// for BLAS in constructors. As it is now temporary objects are 44 /// called before BLAS functionality iss used, cf. const matrix& 45 /// matrix::operator*=(const matrix& other) 46 /// 42 47 class matrix 43 48 { … … 50 55 /// structures. 51 56 /// 52 matrix(void);57 inline matrix(void) : m_(NULL), view_(NULL) {} 53 58 54 59 /// … … 56 61 /// elements, and sets all elements to \a init_value. 57 62 /// 58 matrix(const size_t& r, const size_t& c, const double init_value=0); 63 inline matrix(const size_t& r, const size_t& c, double init_value=0) 64 : view_(NULL) { m_ = gsl_matrix_alloc(r,c); set_all(init_value); } 59 65 60 66 /// … … 64 70 /// of the view will be copied, i.e. the view is not copied. 65 71 /// 66 matrix(const matrix&);72 inline matrix(const matrix& o) : view_(NULL) { m_ = o.gsl_matrix_copy(); } 67 73 68 74 /// -
branches/better_matrix_class/lib/gslapi/vector.cc
r408 r413 15 15 16 16 17 vector::vector(void)18 : v_(NULL), view_(NULL)19 {20 }21 22 23 24 vector::vector(const size_t n,const double init_value)25 : view_(NULL)26 {27 v_ = gsl_vector_alloc(n);28 set_all(init_value);29 }30 31 32 33 vector::vector(const vector& other)34 : view_(NULL)35 {36 v_ = other.gsl_vector_copy();37 }38 39 40 41 17 vector::vector(vector& v, size_t offset, size_t n, size_t stride) 18 : const_view_(NULL) 42 19 { 43 20 // Jari, exception handling needed here. Failure in setting up a … … 51 28 52 29 30 vector::vector(const vector& v, size_t offset, size_t n, size_t stride) 31 : view_(NULL) 32 { 33 // Jari, exception handling needed here. Failure in setting up a 34 // proper gsl_vector_view is communicated by NULL pointer in the 35 // view structure (cf. GSL manual). How about GSL error state? 36 const_view_ = new gsl_vector_const_view( 37 gsl_vector_const_subvector_with_stride(v.v_,offset,stride,n)); 38 v_ = const_cast<gsl_vector*>(&(const_view_->vector)); 39 } 40 41 42 53 43 vector::vector(matrix& m, size_t i, bool row) 44 : const_view_(NULL) 54 45 { 55 46 view_ = new gsl_vector_view(row ? … … 61 52 62 53 63 64 /* Jari, remove this? 65 vector::vector(gsl_vector* vec) 66 : v_(vec), view_(NULL) 67 { 68 } 69 */ 54 vector::vector(const matrix& m, size_t i, bool row) 55 : view_(NULL) 56 { 57 const_view_ = new gsl_vector_const_view(row ? 58 gsl_matrix_const_row (m.gsl_matrix_pointer(),i) : 59 gsl_matrix_const_column(m.gsl_matrix_pointer(),i) ); 60 v_ = const_cast<gsl_vector*>(&(const_view_->vector)); 61 } 70 62 71 63 72 64 73 65 vector::vector(std::istream& is) throw (utility::IO_error,std::exception) 74 : view_(NULL) 66 : view_(NULL), const_view_(NULL) 75 67 { 76 68 // read the data file and store in stl vectors (dynamically … … 122 114 if (view_) 123 115 delete view_; 116 else if (const_view_) 117 delete const_view_; 124 118 else if (v_) 125 119 gsl_vector_free(v_); -
branches/better_matrix_class/lib/gslapi/vector.h
r408 r413 45 45 /// The default constructor. 46 46 /// 47 vector(void);47 inline vector(void) : v_(NULL), view_(NULL), const_view_(NULL) {} 48 48 49 49 /// … … 51 51 /// sets all elements to \a init_value. 52 52 /// 53 vector(const size_t n, const double init_value=0); 53 inline vector(const size_t n,const double init_value=0) 54 : view_(NULL), const_view_(NULL) 55 { v_ = gsl_vector_alloc(n); set_all(init_value); } 54 56 55 57 /// … … 59 61 /// of the view will be copied, i.e. the view is not copied. 60 62 /// 61 vector(const vector&); 63 inline vector(const vector& other) : view_(NULL), const_view_(NULL) 64 { v_ = other.gsl_vector_copy(); } 62 65 63 66 /// … … 81 84 82 85 /// 86 /// Vector const view constructor. 87 /// 88 /// Create a view of vector \a v, with starting index \a offset, 89 /// size \a n, and an optional \a stride. 90 /// 91 /// A vector view can be used as any const vector. Using the copy 92 /// constructor will create a new vector object that is a copy of 93 /// whatever is viewed. If a copy of the view is needed then you 94 /// should use this constructor to obtain a copy. 95 /// 96 /// @note If the object viewed by the view goes out of scope or is 97 /// deleted, the view becomes invalid and the result of further 98 /// use is undefined. 99 /// 100 vector(const vector& v, size_t offset, size_t n, size_t stride=1); 101 102 /// 83 103 /// Matrix row/column view constructor. 84 104 /// … … 103 123 104 124 /// 105 /// Constructor that imports a GSL vector. The GSL object is owned 106 /// by the created object. 107 /// 108 // Jari, remove this? 109 // vector(gsl_vector*); 125 /// Matrix row/column const view constructor. 126 /// 127 /// Create a row/column vector view of matrix \a m, pointing at 128 /// row/column \a i. The parameter \a row is used to set whether 129 /// the view should be a row or column view. If \a row is set to 130 /// true, the view will be a row view (default behaviour), and, 131 /// naturally, a column view otherwise. 132 /// 133 /// A const vector view can be used as any const vector. Using the 134 /// copy constructor will create a new vector object that is a 135 /// copy of whatever is viewed. If a copy of the view is needed 136 /// then you should use the vector view constructor to obtain a 137 /// copy. 138 /// 139 /// @note If the object viewed by the view goes out of scope or is 140 /// deleted, the view becomes invalid and the result of further 141 /// use is undefined. 142 /// 143 vector(const matrix& m, size_t i, bool row=true); 110 144 111 145 /// … … 172 206 /// @return True if the object is a view, false othwerwise. 173 207 /// 174 inline bool isview(void) const { return view_ ; }208 inline bool isview(void) const { return view_ || const_view_; } 175 209 176 210 /// … … 414 448 gsl_vector* v_; 415 449 gsl_vector_view* view_; 450 gsl_vector_const_view* const_view_; 416 451 }; 417 452 -
branches/better_matrix_class/lib/svm/InputRanker.cc
r301 r413 14 14 namespace svm { 15 15 16 InputRanker::InputRanker() 17 :train_set_(std::vector<size_t>()), 18 id_(std::vector<size_t>()), 19 rank_(std::vector<size_t>()) 20 21 { 22 } 23 16 24 17 InputRanker::InputRanker(const gslapi::matrix& data, 25 18 const gslapi::vector& target, … … 41 34 //scoring each input 42 35 std::vector<std::pair<size_t, double> > score; 43 for (size_t i=0; i<nof_genes; i++) {44 double area = score_object.score(target, data[i], train_set_);36 for (size_t i=0; i<nof_genes; i++) { 37 double area = score_object.score(target,gslapi::vector(data,i),train_set_); 45 38 std::pair<size_t, double> tmp(i,area); 46 39 score.push_back(tmp); … … 56 49 } 57 50 } 51 52 58 53 59 54 InputRanker::InputRanker(const gslapi::matrix& data, … … 76 71 //scoring each input 77 72 std::vector<std::pair<size_t, double> > score; 78 for (size_t i=0; i<nof_genes; i++) {79 double area = score_object.score(target, data[i],80 weight[i], train_set_);73 for (size_t i=0; i<nof_genes; i++) { 74 double area = score_object.score(target, gslapi::vector(data,i), 75 gslapi::vector(weight,i), train_set_); 81 76 std::pair<size_t, double> tmp(i,area); 82 77 score.push_back(tmp); … … 91 86 } 92 87 } 93 88 89 94 90 }} // of namespace svm and namespace theplu -
branches/better_matrix_class/lib/svm/InputRanker.h
r295 r413 21 21 class InputRanker 22 22 { 23 23 24 24 public: 25 25 /// 26 /// Default constructor. Not implemented.26 /// Default constructor. 27 27 /// 28 InputRanker(); 28 inline InputRanker(void) : train_set_(std::vector<size_t>()), 29 id_(std::vector<size_t>()), 30 rank_(std::vector<size_t>()) {} 29 31 30 32 /// … … 54 56 /// 55 57 inline size_t id(const size_t i) const {return id_[i];} 56 58 57 59 /// 58 60 /// highest ranked gene is ranked as number zero @return rank for … … 66 68 std::vector<size_t> id_; 67 69 std::vector<size_t> rank_; 70 }; 68 71 69 70 };71 72 72 73 }} // of namespace svm and namespace theplu 73 74 74 75 #endif 75 -
branches/better_matrix_class/lib/svm/Kernel_MEV.cc
r336 r413 3 3 #include <c++_tools/svm/Kernel_MEV.h> 4 4 5 #include <c++_tools/svm/KernelFunction.h>6 #include <c++_tools/gslapi/matrix.h>7 #include <c++_tools/gslapi/vector.h>8 9 5 namespace theplu { 10 6 namespace svm { 11 7 12 Kernel_MEV::Kernel_MEV(const gslapi::matrix& data, const KernelFunction& kf)13 : Kernel(data, kf), data_(data), kf_(&kf)14 {15 }16 17 18 19 Kernel_MEV::~Kernel_MEV(void)20 {21 }22 23 24 25 8 26 9 }} // of namespace svm and namespace theplu -
branches/better_matrix_class/lib/svm/Kernel_MEV.h
r350 r413 30 30 /// Default constructor (not implemented) 31 31 /// 32 Kernel_MEV( );32 Kernel_MEV(void); 33 33 34 34 /// … … 37 37 /// sample. @note Can not handle NaNs. 38 38 /// 39 Kernel_MEV(const gslapi::matrix&, const KernelFunction&); 40 39 inline Kernel_MEV(const gslapi::matrix& data, const KernelFunction& kf) 40 : Kernel(data,kf), data_(data), kf_(&kf) {} 41 41 42 /// 42 43 /// @todo Constructor taking the \a data matrix, the KernelFunction and a … … 54 55 /// Destructor 55 56 /// 56 virtual ~Kernel_MEV(void);57 inline virtual ~Kernel_MEV(void) {}; 57 58 58 59 /// 59 /// @return element at position (\a row, \a column) of the Kernel60 /// @return Element at position (\a row, \a column) of the Kernel 60 61 /// matrix 61 62 /// 62 double operator()(const size_t row,const size_t column) const 63 { return (*kf_)(data_.TEMP_col_return(row),data_.TEMP_col_return(column)); } 63 inline double operator()(const size_t row, const size_t column) const 64 { return (*kf_)(gslapi::vector(data_,row,false), 65 gslapi::vector(data_,column,false)); } 64 66 65 67 /// -
branches/better_matrix_class/lib/svm/Kernel_SEV.cc
r336 r413 11 11 namespace svm { 12 12 13 13 14 Kernel_SEV::Kernel_SEV(const gslapi::matrix& data, const KernelFunction& kf) 14 15 : Kernel(data,kf), data_(data), kf_(&kf) … … 17 18 for (size_t i=0; i<kernel_matrix_.rows(); i++) 18 19 for (size_t j=i; j<kernel_matrix_.columns(); j++) 19 kernel_matrix_(i,j) = kernel_matrix_(j,i) = 20 (*kf_)(data_.TEMP_col_return(i),data_.TEMP_col_return(j)); 21 20 kernel_matrix_(i,j) = kernel_matrix_(j,i) = 21 (*kf_)(gslapi::vector(data_,i,false),gslapi::vector(data_,j,false)); 22 22 } 23 23 24 Kernel_SEV::~Kernel_SEV(void)25 {26 }27 24 28 25 }} // of namespace svm and namespace theplu -
branches/better_matrix_class/lib/svm/Kernel_SEV.h
r336 r413 48 48 /// Destructor 49 49 /// 50 virtual ~Kernel_SEV(void);50 inline virtual ~Kernel_SEV(void) {}; 51 51 52 52 /// -
branches/better_matrix_class/lib/utility/PCA.cc
r301 r413 12 12 namespace utility { 13 13 14 //PCA::PCA() : process_( false ), explained_calc_( false ){}15 16 PCA::PCA( const gslapi::matrix& A ) : A_( A ),17 process_( false ),18 explained_calc_( false )19 {20 }21 14 22 15 void PCA::process() … … 35 28 36 29 // Read the eigenvectors and eigenvalues 37 eigenvectors_ = U.transpose(); 38 eigenvalues_ = pSVD->s(); 30 eigenvectors_ = U; 31 eigenvectors_ .transpose(); 32 eigenvalues_ = pSVD->s(); 39 33 40 34 // T … … 50 44 // make sure that the i:th element is in its correct 51 45 // position (N element --> Ordo( N*N )) 52 for( size_t i = 0; i < eigenvalues_.size(); ++i ) 53 { 54 for( size_t j = i + 1; j < eigenvalues_.size(); ++j ) 55 { 56 if( eigenvalues_[ j ] > eigenvalues_[ i ] ) 57 { 58 std::swap( eigenvalues_[ i ], eigenvalues_[ j ] ); 59 eigenvectors_.row_swap(i,j); 60 } 61 } 62 } 63 } 46 for ( size_t i = 0; i < eigenvalues_.size(); ++i ) 47 for ( size_t j = i + 1; j < eigenvalues_.size(); ++j ) 48 if ( eigenvalues_[ j ] > eigenvalues_[ i ] ) { 49 std::swap( eigenvalues_[ i ], eigenvalues_[ j ] ); 50 eigenvectors_.swap_rows(i,j); 51 } 52 } 53 64 54 65 55 … … 73 63 // Transform into SVD friendly dimension 74 64 //////////////////////////////////////// 75 A_ = A_.transpose();76 A_center = A_center.transpose();65 A_.transpose(); 66 A_center.transpose(); 77 67 78 68 // Single value decompose the data matrix … … 83 73 84 74 // Read the eigenvectors and eigenvalues 85 eigenvectors_ = V.transpose();//U.transpose(); 75 eigenvectors_=V; 76 eigenvectors_.transpose(); 86 77 eigenvalues_ = pSVD->s(); 87 78 … … 89 80 // (used V insted of U now for eigenvectors) 90 81 //////////////////////////////////////////// 91 A_ = A_.transpose(); 92 A_center = A_center.transpose(); 93 82 A_.transpose(); 83 A_center.transpose(); 94 84 95 85 // T … … 105 95 // make sure that the i:th element is in its correct 106 96 // position (N element --> Ordo( N*N )) 107 for( size_t i = 0; i < eigenvalues_.size(); ++i ) 108 { 109 for( size_t j = i + 1; j < eigenvalues_.size(); ++j ) 110 { 111 if( eigenvalues_[ j ] > eigenvalues_[ i ] ) 112 { 113 std::swap( eigenvalues_[ i ], eigenvalues_[ j ] ); 114 eigenvectors_.row_swap(i,j); 115 } 116 } 117 } 118 } 97 for ( size_t i = 0; i < eigenvalues_.size(); ++i ) 98 for ( size_t j = i + 1; j < eigenvalues_.size(); ++j ) 99 if ( eigenvalues_[ j ] > eigenvalues_[ i ] ) { 100 std::swap( eigenvalues_[ i ], eigenvalues_[ j ] ); 101 eigenvectors_.swap_rows(i,j); 102 } 103 } 104 119 105 120 106 … … 127 113 gslapi::vector A_row_sum(A_.rows()); 128 114 for (size_t i=0; i<A_row_sum.size(); ++i) 129 A_row_sum(i)= A_[i].sum();115 A_row_sum(i)=gslapi::vector(A_,i).sum(); 130 116 for( size_t i = 0; i < A_center.rows(); ++i ) 131 117 { … … 135 121 } 136 122 } 123 137 124 138 125 … … 162 149 163 150 151 164 152 gslapi::matrix PCA::projection_transposed( const gslapi::matrix& 165 153 samples ) const … … 205 193 } 206 194 195 196 207 197 double PCA::get_explained_intensity( const size_t& k ) 208 198 { … … 215 205 } 216 206 207 217 208 }} // of namespace utility and namespace theplu -
branches/better_matrix_class/lib/utility/PCA.h
r334 r413 6 6 #include <c++_tools/gslapi/matrix.h> 7 7 #include <c++_tools/gslapi/vector.h> 8 9 // Standard C++ includes10 ////////////////////////11 // #include <vector>12 // #include <iostream>13 // #include <memory>14 // #include <cstdlib>15 8 16 9 … … 29 22 projection_transposed()... 30 23 */ 31 32 24 class PCA 33 25 { … … 36 28 Default constructor (not implemented) 37 29 */ 38 PCA( );30 PCA(void); 39 31 40 32 /** … … 42 34 should have been performed and no products. 43 35 */ 44 explicit PCA( const gslapi::matrix& ); 36 inline explicit PCA(const gslapi::matrix& A) 37 : A_(A), process_(false), explained_calc_(false) {} 45 38 46 47 39 /** 48 40 Will perform PCA according to the following scheme: \n … … 51 43 3: Calculate eigenvalues according to \n 52 44 \f$ \lambda_{ii} = s_{ii}/N_{rows} \f$ \n 53 4: Sort eigenvectors (from matrix V) according to descending eigenvalues 45 4: Sort eigenvectors (from matrix V) according to descending eigenvalues\n 54 46 */ 55 void process( );47 void process(void); 56 48 57 49 /** … … 62 54 projection_transposed() method. 63 55 */ 64 void process_transposed_problem( );65 56 void process_transposed_problem(void); 57 66 58 /** 67 Returns eigenvector \a i59 @return Eigenvector \a i. 68 60 */ 69 // Jari, change this to 70 // const gslapi::vector& get_eigenvector( const size_t& i ) const 71 const gslapi::vector get_eigenvector( const size_t& i ) const 72 { 73 return eigenvectors_[i]; 74 } 61 inline gslapi::vector get_eigenvector(const size_t& i) const 62 { return gslapi::vector(eigenvectors_,i); } 75 63 76 64 /** … … 78 66 \f$ C = \frac{1}{N^2}A^TA \f$ 79 67 */ 80 double get_eigenvalue( const size_t& i ) const 81 { 82 return eigenvalues_[ i ]; 83 } 68 inline double 69 get_eigenvalue(const size_t& i) const { return eigenvalues_[i]; } 84 70 85 71 /** … … 90 76 double get_explained_intensity( const size_t& k ); 91 77 92 93 94 /** 95 This function will project data onto the new coordinate-system 96 where the axes are the calculated eigenvectors. This means that 97 PCA must have been run before this function can be used! 98 Output is presented as coordinates in the N-dimensional room 99 spanned by the eigenvectors. 78 /** 79 This function will project data onto the new coordinate-system 80 where the axes are the calculated eigenvectors. This means that 81 PCA must have been run before this function can be used! 82 Output is presented as coordinates in the N-dimensional room 83 spanned by the eigenvectors. 100 84 */ 101 85 gslapi::matrix projection( const gslapi::matrix& ) const; 102 103 /** 104 Same as projection() but works when used process_transposed_problem() 86 87 /** 88 Same as projection() but works when used 89 process_transposed_problem(). 105 90 */ 106 91 gslapi::matrix projection_transposed( const gslapi::matrix& ) const; 107 92 108 109 93 110 94 private: 111 gslapi::matrix 95 gslapi::matrix A_; 112 96 gslapi::matrix eigenvectors_; 113 97 gslapi::vector eigenvalues_; … … 128 112 */ 129 113 void calculate_explained_intensity(); 114 }; // class PCA 130 115 131 132 }; // class PCA 133 116 134 117 }} // of namespace utility and namespace theplu 135 118 136 119 #endif 137 -
branches/better_matrix_class/lib/utility/SVD.cc
r301 r413 6 6 namespace theplu { 7 7 namespace utility { 8 9 10 SVD::SVD(const gslapi::matrix& Ain)11 : U_(Ain), V_(Ain.columns(),Ain.columns()), s_(Ain.columns())12 {13 }14 15 16 17 SVD::~SVD(void)18 {19 }20 21 8 22 9 -
branches/better_matrix_class/lib/utility/SVD.h
r303 r413 52 52 /// input matrix is copied for further use in the object. 53 53 /// 54 SVD(const gslapi::matrix& ); 54 inline SVD(const gslapi::matrix& Ain) 55 : U_(Ain), V_(Ain.columns(),Ain.columns()), s_(Ain.columns()) {} 55 56 56 ~SVD(void);57 inline ~SVD(void) {} 57 58 58 59 /// … … 72 73 /// is undefined. 73 74 /// 74 gslapi::vectors(void) const { return s_; }75 inline const gslapi::vector& s(void) const { return s_; } 75 76 76 77 /// … … 98 99 /// is undefined. 99 100 /// 100 gslapi::matrixU(void) const { return U_; }101 inline const gslapi::matrix& U(void) const { return U_; } 101 102 102 103 /// … … 108 109 /// is undefined. 109 110 /// 110 gslapi::matrixV(void) const { return V_; }111 inline const gslapi::matrix& V(void) const { return V_; } 111 112 112 113 private: -
branches/better_matrix_class/lib/utility/stl_utility.cc
r341 r413 20 20 for (size_t i=0; i<vec_str.size(); i++) { 21 21 if (!is_float(vec_str[i])){ 22 std::cerr << "Warning: '" << vec_str[i] 23 << "' is not a number." << std::endl; 22 // Jari, this should be communicated with as an exception. 23 // std::cerr << "Warning: '" << vec_str[i] 24 // << "' is not a number." << std::endl; 24 25 } 25 26 else … … 41 42 for (size_t i=0; i<vec_str.size(); i++) { 42 43 if (!is_int(vec_str[i])){ 43 std::cerr << "Warning: '" << vec_str[i] 44 << "' is not an integer." << std::endl; 44 // Jari, this should be communicated with as an exception. 45 // std::cerr << "Warning: '" << vec_str[i] 46 // << "' is not an integer." << std::endl; 45 47 } 46 48 else -
branches/better_matrix_class/test/roc_test.cc
r342 r413 70 70 const double tol = 0.001; 71 71 for (size_t i=0; i<data.rows(); i++){ 72 gslapi::vector vec = data[i];72 gslapi::vector vec(data,i); 73 73 area = roc.score(target2,vec); 74 74 if (area<correct_area(i)-tol || area>correct_area(i)+tol){ … … 83 83 gslapi::vector weight(target2.size(),1); 84 84 for (size_t i=0; i<data.rows(); i++){ 85 gslapi::vector vec = data[i];85 gslapi::vector vec(data,i); 86 86 area = roc.score(target2, vec, weight); 87 87 if (area<correct_area(i)-tol || area>correct_area(i)+tol){ -
branches/better_matrix_class/test/svd_test.cc
r377 r413 37 37 for (size_t i=0; i<s.size(); ++i) 38 38 S(i,i)=s[i]; 39 gslapi::matrix V=svd.V(); 40 gslapi::matrix U=svd.U(); 41 double error = this_norm(A-U*S*V.transpose()); 39 gslapi::matrix Vtranspose=svd.V(); 40 Vtranspose.transpose(); 41 // Reconstructing A = U*S*Vtranspose 42 gslapi::matrix Areconstruct=svd.U(); 43 Areconstruct*=S; 44 Areconstruct*=Vtranspose; 45 Areconstruct-=A; // Expect null matrix 46 double error = this_norm(Areconstruct); 42 47 bool testerror=false; 43 48 if (error>MAXTOL) { … … 49 54 } 50 55 51 error=this_norm(V.transpose()*V)-n; 56 Vtranspose*=svd.V(); // Expect unity matrix 57 error=this_norm(Vtranspose)-n; 52 58 if (error>MAXTOL) { 53 59 std::cerr << "test_svd: FAILED, algorithm " << algo … … 57 63 } 58 64 59 error=this_norm(U.transpose()*U)-n; 65 gslapi::matrix Utranspose=svd.U(); 66 Utranspose.transpose(); 67 Utranspose*=svd.U(); // Expect unity matrix 68 error=this_norm(Utranspose)-n; 60 69 if (error>MAXTOL) { 61 70 std::cerr << "test_svd: FAILED, algorithm " << algo
Note: See TracChangeset
for help on using the changeset viewer.