From e5a04edc4fea2083b2195f97a4036fc506777e7b Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Fri, 29 Jun 2018 15:26:55 -0700 Subject: [PATCH] added array helper function --- src/mol-util/array.ts | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/mol-util/array.ts diff --git a/src/mol-util/array.ts b/src/mol-util/array.ts new file mode 100644 index 000000000..36bb29126 --- /dev/null +++ b/src/mol-util/array.ts @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. + * + * @author Alexander Rose <alexander.rose@weirdbyte.de> + */ + +export function arrayMax(array: Helpers.NumberArray) { + let max = -Infinity + for (let i = 0, il = array.length; i < il; ++i) { + if (array[i] > max) max = array[i] + } + return max +} + +export function arrayMin(array: Helpers.NumberArray) { + let min = Infinity + for (let i = 0, il = array.length; i < il; ++i) { + if (array[i] < min) min = array[i] + } + return min +} + +export function arraySum(array: Helpers.NumberArray, stride = 1, offset = 0) { + const n = array.length + let sum = 0 + for (let i = offset; i < n; i += stride) { + sum += array[i] + } + return sum +} + +export function arrayMean(array: Helpers.NumberArray, stride = 1, offset = 0) { + return arraySum(array, stride, offset) / (array.length / stride) +} + +export function arrayRms(array: Helpers.NumberArray) { + const n = array.length + let sumSq = 0 + for (let i = 0; i < n; ++i) { + const di = array[i] + sumSq += di * di + } + return Math.sqrt(sumSq / n) +} \ No newline at end of file -- GitLab