Commit Graph

22 Commits

Author SHA1 Message Date
Alejandro Martinez
ed3dab02aa Add support for running power zones (Stryd) part 3
Final part: use the zones according to sport in metrics and charts
2015-12-19 19:08:33 -03:00
Mark Liversedge
f323eb1989 Major RideMetric compute() refactor
Update of all metrics to work with a RideItem
not directly with a RideFile.

When iterating over the activity samples we now
use a Specification and RideFileIterator to bound
the set of samples used. This means that we can
compute metrics for intervals without having to
create a temporary ridefile.

RideItem now has first class members for zoneRange,
hrZoneRange and paceZoneRange to avoid calculating
for every metric which are stored in RideDB.json.

Compare pane continues to construct a ride file
when working with intervals since it is used lots
of charts, this is unlikely to ever change.

A SEGV in compare intervals has been fixed where
interval items were repointed to temporary compare
pane objects that are deleted - see RideItem::setFrom.

THIS COMMIT CONTAINS 3 REGRESSIONS:
1. TcxRideFile no longer computes metrics
2. FitlogRideFile no longer computes metrics
3. WorkoutWizard no longer computes metrics

-- The workout wizard will be replaced with a new
   Workout editor, whilst the RideFile metrics
   may be deprecated (but considering options)
2015-12-16 11:36:02 +00:00
Mark Liversedge
e281f94135 Power Zone metric has 1 decimal
.. to indicate how far into the zone we got, so
   3.1 is 10% into zone 3, whilst 7.9 is seriously
   high Neuromuscular power, but below Pmax

.. we use Pmax to bound the upper value when calculating
   how deep we got into the very upper zone; so it is
   possible for the metric to be 8.x when only 7 zones
   are defined (when the power value is > Pmax)
2015-05-29 10:18:09 +01:00
Mark Liversedge
142685ef70 Fox off-by-one for Zone/Level
.. they start at 0, not 1 in class Zones but users
   think in terms of Zones 1-7 !
2015-05-26 09:25:59 +01:00
Mark Liversedge
9c001b66df Add Metric for Power Zone
.. so you can see what zone an interval was actually in. This is
   largely useful for sustained intervals but also for peaks.
2015-05-21 09:50:40 +01:00
Mark Liversedge
b2b6db0676 Add MMP % metric
.. good for intervals and shows the percentage of the
   PD model power duration you exercised at in the interval.
2015-05-16 16:33:59 +01:00
Mark Liversedge
a3c7bc41be Use C++ <cmath> not C <math.h>
.. it clashes, and also its deprecated for C++ sources
2014-12-25 20:38:18 +00:00
Mark Liversedge
92a9e70d77 Rudimentary Pacing Index
.. need to think about what we're trying to achieve with this
   but for assessing TT efforts we can see how far away from
   a constant load the ride was.

   Its just computed as average power as a percentage of max power.
2014-03-06 19:11:32 +00:00
Mark Liversedge
b125841c9c Fix Fatigue Index Calculation
.. should only measure fatigue from the peak of the interval
   assuming the athlete is performing a proper 'wingate' style
   all out sprint.
2014-03-06 16:33:45 +00:00
Mark Liversedge
d9d540f32e Compare mode for LTM
You can now compare seasons / date ranges across or between
athletes on the LTM charts.

This is only shown on the stack chart as we need one chart
per data series - in a similar vein to the AllPlot chart.

There are some tidy ups left to do over the next few days;

- Data table needs updating to support compare mode
- Event markers need to be shown and in the right color
- PMC curve data is slow, needs some kind of optimisation
- The tooltip is missing and needs to be put back
- Ensure the new stack frame looks correct when using a
  dark plot background (or anything other than white)
- Consider how to handle zooming when there is only one
  data series and hence only one chart for compare
2014-02-05 20:40:24 +00:00
Mark Liversedge
2383f8fbb2 New Metric Fatigue Index
Looks at the max and min (non-zero) power values and
uses the difference between them to calculate a fatigue
index as a percentage.

i.e.
FI = (maxP - minP) / maxP * 100.00;

This is really only useful for targetted intervals as for
most riding there will always be a period of time where
the rider coasts or takes it easy.

We may look to improve it by smoothing or comparing to the
average power instead of minimum power.
2013-12-18 11:00:48 +00:00
Mark Liversedge
0fcbbe1b77 Refactor MainWindow Part 2 of 5
Decoupled classes from MainWindow to reference Context
and Athlete (and introduced a couple of new headers).

We no longer pass around a MainWindow pointer to children
but pass a context instead.

There are still a few pieces left in MainWindow that need
to move to a better place;
    * Setting/clearing filter selection
    * Working with Intervals
    * Adding/Deleting Rides
    * Save on Exit

As mentioned previously there are lots of other parts to
this refactor left to do;
    * break MainWindow Gui elements into Toolbar and Views

    * migrate from RideItem and Ridelist to ActivityCollection
      and Activity classes that are not tied into gui elements.

    * introduce Application Context and AthleteCollection
2013-07-11 14:02:02 +01:00
Mark Liversedge
3e3b92b889 Add Fatigue Profiling Peak Power Durations
.. added for 2,3,8 and 90m peak power

.. user defined intervals for peak power/vam/np et al
   are still planned for v3.1

Fixes #595
2013-05-09 20:10:54 +01:00
Alejandro Martinez
3daf2097fa New metricsDetails method in LTMTools 2012-12-12 10:56:28 -03:00
Alejandro Martinez
299867550a Enable metrics translations
The code setting metric names and units was moved from constructors to
an initialize method, to be called after translator initialization.
English Name is preserved as InternalName for metadata.xlm compatibility
in metric override.
Q_DECLARE_TR_FUNCTIONS(class-name) macro is used to set tr() context
when class-name is not QObject sub-class.
2012-12-04 13:59:49 -03:00
Mark Liversedge
a04375f20d Manual entries compute metrics
A few months ago I commented out the calculation of metrics
for manual ride files. This was a hack to avoid fixing the code
to handle metric calculations from overrides where there are no
data points.

This annoyingly meant that the 'rides' metric was zero for manual
ride files, and any derived metrics similarly were zero.

This patch fixes that.
2012-07-08 16:22:40 +01:00
Damien
34820aac36 Correct bug in the peakPowerHr formula 2011-08-24 06:41:39 +01:00
Damien Grauser
2f7f69ed5c Add PeakPowerHr metric (average HR during peak power)
[c6a376 folded manually into release_3.0.0dev from master]
2011-07-30 13:11:34 +01:00
Mark Liversedge
805e74de5a Inital V3 Branch 2010-12-30 17:35:23 +00:00
Damien GRAUSER
d2e8c63ed2 HR Zones and TRIMP Metrics
This patch introduces new functionality for working with
Heartrate based data.

* HR Zones can be defined, from Resting, Maximum and Lactate HR
* TRIMP metrics are calculated; TRIMP, TRIMP100 and Zonal TRIMP
* TRIMP metrics can be used to drive the PMC
* Time In Zone metrics for HR have been added
* Histogram window will now work with Power/HR zones
* User Settings have been added to record gender, weight and others
* RideFile has a new tag "Athlete" which is set to the athlete name

Fixes #140
2010-10-31 18:08:48 +00:00
Mark Liversedge
58e7e3f914 Simplify RideMetric by using less pure virtual functions
Primarily to make override() a base class function that can be
used for any metric rather than expecting each metric to provide
a local version.

Also, add explicit notion of "average" vs "total" ride metrics, as
it will let us improve how the metrics DB handles averages later.
2010-03-25 09:16:22 -07:00
Mark Liversedge
0288579ce0 Long Term Metrics
A user configurable chart for showing ride metrics and
other calculated values over time.

* Uses SQLITE database to store metrics
* Supports any metric available from the metric factory
* Adds new MaxHr, VI, Peak Power and Time In Zone metric
* Also includes LTS/STS/SB for PM charting
* Aggregates in days, weeks, months or years
* Reads and Updates seasons.xml
* Adds cycles and adhoc date ranges in seasons.xml
* Date ranges can be selected on the plot with shift-left click
* Allows users to customise preferences for color, symbols et al
* Allows user to customise metric names and unit names
* Supports smooth curves and topN highlighting
* Has a linear regress trend line function
* Allows users to save charts to charts.xml
* A default charts.xml is built-in
* A chart manager to import/export/rename/delete charts etc
* Provides a tooltip to provide basic datapoint information
* Performance Manager adjusted to use the MetricDB
* User configurable setting for SB calculation (today/tomorrow)
2010-02-25 08:01:43 -08:00