8 const std::vector<std::string> &cols,
const std::vector<std::size_t> &vecSizes,
9 const float vecPadding,
bool shuffle,
const std::size_t setSeed)
10 : fValidationSplit(validationSplit),
12 fVecPadding(vecPadding),
33 std::vector<std::size_t> NumEntries(rdfs.size(), 0);
34 std::vector<ROOT::RDF::RResultPtr<ULong64_t>> Counts;
35 for (std::size_t i = 0; i < rdfs.size(); i++) {
38 NumEntries[i] += cluster.second - cluster.first;
40 }
catch (
const std::runtime_error &) {
45 if (NumEntries[i] == 0) {
46 Counts.push_back(rdfs[i].Count());
51 if (!Counts.empty()) {
54 for (std::size_t i = 0,
c = 0; i < rdfs.size(); i++) {
55 if (NumEntries[i] == 0) {
56 NumEntries[i] =
static_cast<std::size_t
>(*Counts[
c++]);
86 std::vector<std::size_t> &ValidationRows)
90 std::size_t NumValidationEntries =
static_cast<std::size_t
>(
fValidationSplit * NumEntries);
91 std::size_t NumTrainingEntries = NumEntries - NumValidationEntries;
95 TrainingRows.reserve(TrainingRows.size() + NumTrainingEntries);
96 ValidationRows.reserve(ValidationRows.size() + NumValidationEntries);
97 for (std::size_t i = 0; i < NumEntries; i++) {
98 const std::size_t row = firstRow + (permutation.empty() ? i : permutation[i]);
99 (i < NumTrainingEntries ? TrainingRows : ValidationRows).push_back(row);
112 const std::size_t numSets = concatenate ? 1 :
f_rdfs.size();
115 for (std::size_t i = 0; i <
f_rdfs.size(); i++) {
123 for (std::size_t i = 0; i < numSets; i++) {
std::size_t fNumValidationEntries
std::vector< std::size_t > CountEntries(std::vector< ROOT::RDF::RNode > &rdfs)
Number of entries to reserve for each dataframe.
std::vector< ROOT::RDF::RNode > f_rdfs
std::size_t fNumTrainingEntries
void SplitRows(std::size_t firstRow, std::vector< std::size_t > &TrainingRows, std::vector< std::size_t > &ValidationRows)
Split the rows of the dataset from firstRow on into training and validation rows.
std::unique_ptr< RFlat2DMatrixOperators > fTensorOperators
std::vector< std::string > fCols
void SplitDatasets(bool concatenate)
Load the dataframes into a single dataset and split it in training and validation rows.
std::vector< std::vector< std::size_t > > fTrainingRows
void LoadDataframe(ROOT::RDF::RNode &rdf, std::size_t NumEntries)
Load all the entries of an individual dataframe at the end of the dataset.
std::size_t fNumDatasetCols
RDatasetLoader(const std::vector< ROOT::RDF::RNode > &rdfs, const float validationSplit, const std::vector< std::string > &cols, const std::vector< std::size_t > &vecSizes={}, const float vecPadding=0.0, bool shuffle=true, const std::size_t setSeed=0)
std::vector< std::vector< std::size_t > > fValidationRows
std::vector< std::size_t > fVecSizes
The public interface to the RDataFrame federation of classes.
std::vector< std::string > GetFilterNames()
Returns the names of the filters created.
void LoadCustomValues(ROOT::RDF::RNode &node, const std::vector< std::string > &cols, const std::vector< std::size_t > &vecSizes, float vecPadding, ROOT::RVecF &dest)
std::vector< std::pair< std::uint64_t, std::uint64_t > > GetDatasetGlobalClusterBoundaries(const RNode &node)
Retrieve the cluster boundaries for each cluster in the dataset, across files, with a global offset.
unsigned int RunGraphs(std::vector< RResultHandle > handles)
Run the event loops of multiple RDataFrames concurrently.
void Resize(std::size_t rows, std::size_t cols)
std::size_t GetSize() const
std::size_t GetRows() const
void Reserve(std::size_t rows, std::size_t cols)