RcppNormalizeHdf5
C++ Function Reference
1 Signature
void BigDataStatMeth::RcppNormalizeHdf5(BigDataStatMeth::hdf5Dataset *dsA, bool bc, bool bs, bool bbyrows)2 Parameters
dsA(BigDataStatMeth::hdf5Dataset *)bc(bool)bs(bool)bbyrows(bool)
3 Call Graph
4 Source Code
NoteImplementation
File: inst/include/hdf5Algebra/matrixNormalization.hpp • Lines 400-477
inline void RcppNormalizeHdf5( BigDataStatMeth::hdf5Dataset* dsA,
bool bc, bool bs, bool bbyrows)
{
BigDataStatMeth::hdf5Dataset* dsmean = nullptr;
BigDataStatMeth::hdf5Dataset* dssd = nullptr;
BigDataStatMeth::hdf5Dataset* dsNormal = nullptr;
try{
Rcpp::Nullable<int> wsize = R_NilValue;
Eigen::MatrixXd datanormal;
hsize_t nrows, ncols;
std::string strgroupout;
bool bcorrected = false;
nrows = dsA->nrows();
ncols = dsA->ncols();
strgroupout = "NORMALIZED/" + dsA->getGroupName();
std::string strdatasetmean = "mean." + dsA->getDatasetName();
std::string strdatasetsd = "sd." + dsA->getDatasetName();
// Define blocksize atending number of elements in rows and cols
if( bbyrows == false) {
datanormal = Eigen::MatrixXd::Zero( 2, nrows);
get_HDF5_mean_sd_by_column( dsA, datanormal, true, true, wsize);
} else {
datanormal = Eigen::MatrixXd::Zero( 2, ncols);
get_HDF5_mean_sd_by_row( dsA, datanormal, true, true, wsize);
}
dsmean = new BigDataStatMeth::hdf5Dataset(dsA->getFileName(), strgroupout, strdatasetmean, true);
dsmean->createDataset( datanormal.cols(), 1, "real");
dsmean->writeDataset( Rcpp::wrap(datanormal.row(0)) );
delete dsmean; dsmean = nullptr;
dssd = new BigDataStatMeth::hdf5Dataset(dsA->getFileName(), strgroupout, strdatasetsd, true);
dssd->createDataset( datanormal.cols(), 1, "real");
dssd->writeDataset( Rcpp::wrap(datanormal.row(1)) );
delete dssd; dssd = nullptr;
dsNormal = new BigDataStatMeth::hdf5Dataset(dsA->getFileName(), strgroupout, dsA->getDatasetName(), true);
dsNormal->createDataset( dsA, "real");
if( dsA->getDatasetptr() != nullptr && dsNormal->getDatasetptr() != nullptr){
BigDataStatMeth::RcppNormalizeHdf5( dsA, dsNormal, datanormal, wsize, bc, bs, bbyrows, bcorrected);
}
delete dsNormal; dsNormal = nullptr;
} catch( H5::FileIException& error ) {
checkClose_file(dsA, dsmean, dssd, dsNormal);
Rcpp::Rcerr<<"\nc++ exception RcppNormalizeHdf5_F (File IException)";
return void();
} catch( H5::DataSetIException& error ) { // catch failure caused by the DataSet operations
checkClose_file(dsA, dsmean, dssd, dsNormal);
Rcpp::Rcerr<<"\nc++ exception RcppNormalizeHdf5_F (DataSet IException)";
return void();
} catch( H5::DataSpaceIException& error ) { // catch failure caused by the DataSpace operations
checkClose_file(dsA, dsmean, dssd, dsNormal);
Rcpp::Rcerr<<"\nc++ exception RcppNormalizeHdf5_F (DataSpace IException)";
return void();
} catch( H5::DataTypeIException& error ) { // catch failure caused by the DataSpace operations
checkClose_file(dsA, dsmean, dssd, dsNormal);
Rcpp::Rcerr<<"\nc++ exception RcppNormalizeHdf5_F (DataType IException)";
return void();
} catch(std::exception &ex) {
checkClose_file(dsA, dsmean, dssd, dsNormal);
Rcpp::Rcerr<<"\nC++ exception RcppNormalizeHdf5_F : "<< ex.what();
} catch (...) {
checkClose_file(dsA, dsmean, dssd, dsNormal);
Rcpp::Rcerr<<"\nC++ exception RcppNormalizeHdf5_F (unknown reason)";
return void();
}
return void();
}5 Usage Example
#include "BigDataStatMeth.hpp"
// Example usage
auto result = RcppNormalizeHdf5(...);