analysis.lami: correctly handle Number (double, long etc.) type graphing
authorJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Tue, 10 May 2016 22:42:14 +0000 (18:42 -0400)
committerAlexandre Montplaisir <alexmonthy@efficios.com>
Tue, 31 May 2016 22:54:05 +0000 (18:54 -0400)
commit5b973e7c65f168e79139fdc0045dda56ff71f650
tree5ac6cc0a31ebdae39b431cb4724cc475ac4cb0a2
parentd1b0903fe92fabef842f26e50cf12062d398c28c
analysis.lami: correctly handle Number (double, long etc.) type graphing

LTTng analysis return mostly long values either for the time stamps or
actual measurements. SWTChart, on the other hand, deals only with
"double" numerical values. Casting long to double causes a loss of
precision for big long value (e.g time stamps).

E.g: Loss of precision occurs when time ranges with a big minimal value
(2^62) but with little delta (1 ns) between events exist. Graphs
generated from such time ranges as an axis would result in a single dot
which is a clear problem.

The presented solution uses linear mapping to preserve resolution and
precision when possible.

The linear mapping requires two ranges: the internal range and the
external range.

Each graph is responsible to provide an internal LamiGraphRange. This
range is the internal representation in double in which all raw
(external) value are to be mapped. For now the default internal range is
0 to 1.

The external range [raw values range] is generated by finding the
minimal value and maximal values of aspects to be plotted.

Each point is then mapped to a corresponding value from the internal
range:

eV = external value
eR = external range
iV = internal value
iR = internal range

iV = (( eV - eR.minimum ) * ( iR.delta / eR.delta )) + iR.minimum

Since the default internal range is from 0 to 1 all raw values are
mapped to a value from 0 to 1.

On graph tick generation axis formatter transforms internal
representation to external representation and formats the result.

Other change:
- Aspects now return their numerical values via resolveNumber to ensure
  no casting is done.
- Move axis formatter to ui plugin.

Bug: 493941

Change-Id: I289180e10a7f1cbf6ecdd1beba93549b8fbe4c23
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Alexandre Montplaisir <alexmonthy@efficios.com>
Reviewed-on: https://git.eclipse.org/r/73239
Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com>
Tested-by: Patrick Tasse <patrick.tasse@gmail.com>
Reviewed-by: Hudson CI
28 files changed:
analysis/org.eclipse.tracecompass.analysis.lami.core.tests/src/org/eclipse/tracecompass/analysis/lami/core/tests/LamiJsonParserTest.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/aspect/LamiDurationAspect.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/aspect/LamiEmptyAspect.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/aspect/LamiGenericAspect.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/aspect/LamiIRQNameAspect.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/aspect/LamiIRQNumberAspect.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/aspect/LamiIRQTypeAspect.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/aspect/LamiMixedAspect.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/aspect/LamiProcessNameAspect.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/aspect/LamiProcessPIDAspect.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/aspect/LamiProcessTIDAspect.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/aspect/LamiTableEntryAspect.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/aspect/LamiTimeRangeBeginAspect.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/aspect/LamiTimeRangeDurationAspect.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/aspect/LamiTimeRangeEndAspect.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/aspect/LamiTimestampAspect.java
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/module/LamiLabelFormat.java [deleted file]
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/module/LamiTimeStampFormat.java [deleted file]
analysis/org.eclipse.tracecompass.analysis.lami.core/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/core/types/LamiIRQ.java
analysis/org.eclipse.tracecompass.analysis.lami.ui/META-INF/MANIFEST.MF
analysis/org.eclipse.tracecompass.analysis.lami.ui/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/ui/format/LamiDecimalUnitFormat.java [new file with mode: 0644]
analysis/org.eclipse.tracecompass.analysis.lami.ui/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/ui/format/LamiLabelFormat.java [new file with mode: 0644]
analysis/org.eclipse.tracecompass.analysis.lami.ui/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/ui/format/LamiTimeStampFormat.java [new file with mode: 0644]
analysis/org.eclipse.tracecompass.analysis.lami.ui/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/ui/format/package-info.java [new file with mode: 0644]
analysis/org.eclipse.tracecompass.analysis.lami.ui/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/ui/viewers/LamiBarChartViewer.java
analysis/org.eclipse.tracecompass.analysis.lami.ui/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/ui/viewers/LamiGraphRange.java [new file with mode: 0644]
analysis/org.eclipse.tracecompass.analysis.lami.ui/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/ui/viewers/LamiScatterViewer.java
analysis/org.eclipse.tracecompass.analysis.lami.ui/src/org/eclipse/tracecompass/internal/provisional/analysis/lami/ui/viewers/LamiXYChartViewer.java
This page took 0.027666 seconds and 5 git commands to generate.