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

Function dependencies

4 Source Code

File: inst/include/hdf5Algebra/matrixNormalization.hppLines 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(...);