142 const std::vector<TYPE> &values);
160 std::unique_ptr<TimeSeriesProperty<double>> getDerivative()
const;
162 void saveProperty(Nexus::File *file)
override;
163 Json::Value valueAsJson()
const override;
166 Property *cloneWithTimeShift(
const double timeShift)
const override;
168 size_t getMemorySize()
const override;
185 void setName(
const std::string &
name);
188 void removeDataOutsideTimeROI(
const TimeROI &timeRoi)
override;
191 void makeFilterByValue(std::vector<SplittingInterval> &split,
double min,
double max,
double TimeTolerance = 0.0,
192 bool centre =
false)
const override;
194 TimeROI makeFilterByValue(
double min,
double max,
bool expand =
false,
196 bool centre =
false,
const TimeROI *existingROI =
nullptr)
const override;
198 void expandFilterToRange(std::vector<SplittingInterval> &split,
double min,
double max,
203 std::pair<double, double> timeAverageValueAndStdDev(
const Kernel::TimeROI *timeRoi =
nullptr)
const override;
205 double timeAverageValue(
const TimeROI *timeRoi =
nullptr)
const override;
207 void histogramData(
const Types::Core::DateAndTime &tMin,
const Types::Core::DateAndTime &tMax,
208 std::vector<double> &counts)
const;
212 std::map<Types::Core::DateAndTime, TYPE> valueAsCorrectMap()
const;
214 std::vector<TYPE> valuesAsVector()
const;
217 std::multimap<Types::Core::DateAndTime, TYPE> valueAsMultiMap()
const;
219 virtual std::vector<TYPE> filteredValuesAsVector(
const Kernel::TimeROI *roi)
const;
221 virtual std::vector<TYPE> filteredValuesAsVector()
const;
224 std::vector<Types::Core::DateAndTime> timesAsVector()
const override;
227 std::vector<double> timesAsVectorSeconds()
const;
229 std::vector<double> timesAsVectorSeconds(Types::Core::DateAndTime start)
const;
232 virtual std::vector<Types::Core::DateAndTime> filteredTimesAsVector(
const Kernel::TimeROI *roi)
const;
234 virtual std::vector<Types::Core::DateAndTime> filteredTimesAsVector()
const;
236 void addValue(
const Types::Core::DateAndTime &time,
const TYPE &
value);
238 void addValue(
const std::string &time,
const TYPE &
value);
240 void addValue(
const std::time_t &time,
const TYPE &
value);
243 void addValues(
const std::vector<Types::Core::DateAndTime> ×,
const std::vector<TYPE> &values);
245 void replaceValues(
const std::vector<Types::Core::DateAndTime> ×,
const std::vector<TYPE> &values);
248 Types::Core::DateAndTime lastTime()
const;
250 TYPE firstValue()
const;
254 Types::Core::DateAndTime firstTime()
const;
256 TYPE lastValue()
const;
263 TYPE minValue()
const;
265 TYPE maxValue()
const;
270 int size()
const override;
272 int realSize()
const override;
277 std::string
value()
const override;
279 std::vector<std::string> time_tValue()
const;
281 std::map<Types::Core::DateAndTime, TYPE> valueAsMap()
const;
285 std::string setValue(
const std::string &)
override;
287 std::string setValueFromJson(
const Json::Value &)
override;
289 std::string setDataItem(
const std::shared_ptr<DataItem> &)
override;
292 void clear()
override;
294 void clearOutdated()
override;
296 void create(
const Types::Core::DateAndTime &start_time,
const std::vector<double> &time_sec,
297 const std::vector<TYPE> &new_values);
299 void create(
const std::vector<Types::Core::DateAndTime> &new_times,
const std::vector<TYPE> &new_values);
302 TYPE getSingleValue(
const Types::Core::DateAndTime &t)
const;
304 TYPE getSingleValue(
const Types::Core::DateAndTime &t,
int &
index)
const;
309 virtual TYPE nthValue(
int n)
const;
311 virtual Types::Core::DateAndTime nthTime(
int n)
const;
317 void countSize()
const;
320 static bool isTimeString(
const std::string &str);
323 std::string isValid()
const override;
325 std::string getDefault()
const override;
327 bool isDefault()
const override;
341 void eliminateDuplicates();
349 void reserve(
size_t size) { m_values.reserve(size); };
356 double averageValueInFilter(
const std::vector<TimeInterval> &filter)
const;
358 std::pair<double, double> averageAndStdDevInFilter(
const std::vector<TimeInterval> &intervals)
const;
364 void saveTimeVector(Nexus::File *file);
366 void sortIfNecessary()
const;
368 int findIndex(Types::Core::DateAndTime t)
const;
370 int upperBound(Types::Core::DateAndTime t,
int istart,
int iend)
const;
375 Types::Core::DateAndTime getFakeEndTime()
const;
378 std::string setValueFromProperty(
const Property &
right)
override;