From 5735f07a25701f6fb679ac29fd8772f00fd8a880 Mon Sep 17 00:00:00 2001 From: Rene Saarsoo Date: Sun, 20 Sep 2020 15:23:31 +0300 Subject: [PATCH] Extract intervalToIntensities --- src/average-intensity.ts | 16 +++------------- src/intervalsToIntensities.ts | 15 +++++++++++++++ src/normalized-intensity.ts | 16 +++------------- 3 files changed, 21 insertions(+), 26 deletions(-) create mode 100644 src/intervalsToIntensities.ts diff --git a/src/average-intensity.ts b/src/average-intensity.ts index b74f0c6..4729f90 100644 --- a/src/average-intensity.ts +++ b/src/average-intensity.ts @@ -1,19 +1,9 @@ -import { chain, pipe, sum } from "ramda"; +import { pipe, sum } from "ramda"; import { Interval } from "./ast"; - -// Converts interval to array of intensity values for each second -const intervalToIntensities = ({ duration, intensity }: Interval): number[] => { - const seconds = []; - const { from, to } = intensity; - for (let i = 0; i < duration; i++) { - // Intensity in a single second - seconds.push(from + (to - from) * (i / duration)); - } - return seconds; -}; +import { intervalsToIntensities } from "./intervalsToIntensities"; const average = (arr: number[]) => sum(arr) / arr.length; export const averageIntensity = (intervals: Interval[]): number => { - return pipe(chain(intervalToIntensities), average)(intervals); + return pipe(intervalsToIntensities, average)(intervals); }; diff --git a/src/intervalsToIntensities.ts b/src/intervalsToIntensities.ts new file mode 100644 index 0000000..547d3d0 --- /dev/null +++ b/src/intervalsToIntensities.ts @@ -0,0 +1,15 @@ +import { chain } from "ramda"; +import { Interval } from "./ast"; + +// Converts interval to array of intensity values for each second +const intervalToIntensities = ({ duration, intensity }: Interval): number[] => { + const seconds = []; + const { from, to } = intensity; + for (let i = 0; i < duration; i++) { + // Intensity in a single second + seconds.push(from + (to - from) * (i / duration)); + } + return seconds; +}; + +export const intervalsToIntensities = chain(intervalToIntensities); diff --git a/src/normalized-intensity.ts b/src/normalized-intensity.ts index 0dc185f..25b31ae 100644 --- a/src/normalized-intensity.ts +++ b/src/normalized-intensity.ts @@ -1,16 +1,6 @@ -import { chain, pipe, sum } from "ramda"; +import { pipe, sum } from "ramda"; import { Interval } from "./ast"; - -// Converts interval to array of intensity values for each second -const intervalToIntensities = ({ duration, intensity }: Interval): number[] => { - const seconds = []; - const { from, to } = intensity; - for (let i = 0; i < duration; i++) { - // Intensity in a single second - seconds.push(from + (to - from) * (i / duration)); - } - return seconds; -}; +import { intervalsToIntensities } from "./intervalsToIntensities"; // Starting at the beginning of the data, calculate 30-second rolling average const windowSize = 30; @@ -37,7 +27,7 @@ const average = (arr: number[]) => sum(arr) / arr.length; export const normalizedIntensity = (intervals: Interval[]): number => { return pipe( - chain(intervalToIntensities), + intervalsToIntensities, rollingAverages, (averages) => averages.map(fourthPower), average,