1 #include "cheetah/data/detail/DmTimeDm.h" 2 #include "cheetah/data/detail/DmTimeSlice.h" 3 #include "cheetah/data/DmTime.h" 5 #include "panda/Copy.h" 16 template <
typename DmTimeType>
19 , _parent(
std::move(parent))
23 template <
typename DmTimeType>
28 template <
typename DmTimeType>
31 std::size_t sample_count = 0;
32 for (
auto const& block: _parent->blocks())
33 sample_count += block->operator[](_dm_idx).size();
37 template <
typename DmTimeType>
40 if ( _parent->blocks().empty())
42 throw std::runtime_error(
"Requested DM from empty DmTime object.");
44 return _parent->blocks().front()->operator[](_dm_idx).dm();
47 template <
typename DmTimeType>
50 if ( _parent->blocks().empty())
52 throw std::runtime_error(
"Requested sampling interval from empty DmTime object.");
54 return _parent->blocks().front()->operator[](_dm_idx).sampling_interval();
57 template <
typename DmTimeType>
58 template <
typename TimeSeriesType>
61 if ( _parent->blocks().empty())
63 throw std::runtime_error(
"Requested copy from empty DmTime object.");
65 timeseries.sampling_interval(_parent->blocks().front()->operator[](_dm_idx).sampling_interval());
66 std::size_t count = timeseries.size();
67 std::size_t copied = 0;
68 typename TimeSeriesType::Iterator it;
69 for (
auto const& block: _parent->blocks())
71 auto dmtrial = block->operator[](_dm_idx);
72 std::size_t copy_count = std::min(dmtrial.size(),count-copied);
73 PANDA_LOG_DEBUG <<
"Copying "<<copy_count<<
" samples from DmTime block to timeseries";
74 auto device_it = panda::make_device_iterator<typename TimeSeriesType::ArchitectureType>(timeseries.begin()+copied);
75 it = panda::copy(dmtrial.begin(), dmtrial.begin()+copy_count, device_it);
76 copied = std::distance(timeseries.begin(),it);
Some limits and constants for FLDO.
DmTimeDm(std::size_t const dm_idx, std::shared_ptr< SliceType const > parent)
Create a new instance.
Class that wraps a single DM trial from a DmTime object.
TimeSeriesType::Iterator copy_to(TimeSeriesType ×eries) const
Copy the given DM trial to an arbitrary timeseries.
std::size_t number_of_samples() const
Get the number of time samples in the associated DM trial.