From de22efabc43aae7399b57fc0da53c883ce41b8ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Wed, 26 Jun 2024 21:07:54 -0500 Subject: [PATCH] feat: finish work on post work --- scripts/averages.ts | 40 ++++++++++++------- .../blitzkit/averageDefinitions/constants.ts | 1 - src/core/blitzkit/averageDefinitions/index.ts | 29 +++++++------- 3 files changed, 40 insertions(+), 30 deletions(-) diff --git a/scripts/averages.ts b/scripts/averages.ts index 592d2ebf0..7bb4f0a0f 100644 --- a/scripts/averages.ts +++ b/scripts/averages.ts @@ -1,5 +1,4 @@ import { times } from 'lodash'; -import { compress } from 'lz4js'; import { argv } from 'process'; import ProgressBar from 'progress'; import { Region, REGIONS } from '../src/constants/regions'; @@ -9,11 +8,13 @@ import { asset } from '../src/core/blitzkit/asset'; import { AverageDefinitions, AverageDefinitionsAllStats, + AverageDefinitionsEntry, + AverageDefinitionsEntrySubPartial, } from '../src/core/blitzkit/averageDefinitions'; import { averageDefinitionsAllStatsKeys } from '../src/core/blitzkit/averageDefinitions/constants'; import { commitAssets } from '../src/core/blitzkit/commitAssets'; import { superCompress } from '../src/core/blitzkit/superCompress'; -import { DidsReadStream, DidsWriteStream } from '../src/core/streams/dids'; +import { DidsReadStream } from '../src/core/streams/dids'; import { IndividualTankStats } from '../src/types/tanksStats'; interface DataPoint { @@ -172,6 +173,13 @@ function postWork() { tankIds.forEach((id) => { const tanks = sorted[id]; + const samples = tanks.length; + const entry: AverageDefinitionsEntrySubPartial = { + samples, + mu: {}, + sigma: {}, + r: {}, + }; averageDefinitionsAllStatsKeys.forEach((key) => { const data: DataPoint[] = tanks.map((tank) => ({ @@ -190,15 +198,24 @@ function postWork() { const sum_w = sum(({ w }) => w); const sum_wx = sum(({ w, x }) => w * x); const sum_wy = sum(({ w, y }) => w * y); - const x_w = sum_wx / sum_w; - const y_w = sum_wy / sum_w; - const r_numerator = sum(({ w, x, y }) => w * (x - x_w) * (y - y_w)); - const r_denominator_x = sum(({ w, x }) => w * (x - x_w) ** 2); - const r_denominator_y = sum(({ w, y }) => w * (y - y_w) ** 2); + const mu_x = sum_wx / sum_w; + const mu_y = sum_wy / sum_w; + const mu = mu_x; + const sigma_numerator = sum(({ w, x }) => w * (x - mu_x) ** 2); + const sigma = Math.sqrt(sigma_numerator / sum_w); + + const r_numerator = sum(({ w, x, y }) => w * (x - mu_x) * (y - mu_y)); + const r_denominator_x = sum(({ w, x }) => w * (x - mu_x) ** 2); + const r_denominator_y = sum(({ w, y }) => w * (y - mu_y) ** 2); const r = r_numerator / Math.sqrt(r_denominator_x * r_denominator_y); - const mu = x_w; + + entry.mu[key] = mu; + entry.sigma[key] = sigma; + entry.r[key] = r; }); + + averages[id] = entry as AverageDefinitionsEntry; }); commitAssets( @@ -209,13 +226,6 @@ function postWork() { content: superCompress(averages), encoding: 'base64', }, - { - path: 'definitions/discovered.dids.lz4', - content: Buffer.from( - compress(new DidsWriteStream().dids(discoveredIds).uint8Array), - ).toString('base64'), - encoding: 'base64', - }, ], production, ); diff --git a/src/core/blitzkit/averageDefinitions/constants.ts b/src/core/blitzkit/averageDefinitions/constants.ts index 0ac8a080d..54c44b0ee 100644 --- a/src/core/blitzkit/averageDefinitions/constants.ts +++ b/src/core/blitzkit/averageDefinitions/constants.ts @@ -1,5 +1,4 @@ import { AverageDefinitionsAllStats } from '.'; - import { emptyAllStats } from '../../blitzstars/getStatsInPeriod/constants'; export const emptyAverageDefinitionsAllStats: AverageDefinitionsAllStats = { diff --git a/src/core/blitzkit/averageDefinitions/index.ts b/src/core/blitzkit/averageDefinitions/index.ts index 1ff0c6fbd..d29b182f9 100644 --- a/src/core/blitzkit/averageDefinitions/index.ts +++ b/src/core/blitzkit/averageDefinitions/index.ts @@ -6,21 +6,22 @@ export interface AverageDefinitionsAllStats extends AllStats { battle_life_time: number; } -export interface AverageDefinitions { - [id: number]: { - samples: number; +export interface AverageDefinitionsEntry { + samples: number; + mu: AverageDefinitionsAllStats; + sigma: AverageDefinitionsAllStats; + r: AverageDefinitionsAllStats; +} - // average - mu: AverageDefinitionsAllStats; - // standard deviation - sigma: AverageDefinitionsAllStats; - // correlation coefficient - r: AverageDefinitionsAllStats; - // least squares regression line slope - m: AverageDefinitionsAllStats; - // least squares regression line y-intercept - b: AverageDefinitionsAllStats; - }; +export interface AverageDefinitionsEntrySubPartial { + samples: number; + mu: Partial; + sigma: Partial; + r: Partial; +} + +export interface AverageDefinitions { + [id: number]: AverageDefinitionsEntry; } export const averageDefinitions = fetchCdonLz4(