feat: finish work on post work

This commit is contained in:
TrèsAbhi committed 2024-06-26 21:07:54 -05:00
1 parent bdbc0073a8
commit de22efabc4
3 files changed
+40 -30

No files matched your search

+25 -15
View File
@@ -1,5 +1,4 @@
import { times } from 'lodash'; import { times } from 'lodash';
import { compress } from 'lz4js';
import { argv } from 'process'; import { argv } from 'process';
import ProgressBar from 'progress'; import ProgressBar from 'progress';
import { Region, REGIONS } from '../src/constants/regions'; import { Region, REGIONS } from '../src/constants/regions';
@@ -9,11 +8,13 @@ import { asset } from '../src/core/blitzkit/asset';
import { import {
AverageDefinitions, AverageDefinitions,
AverageDefinitionsAllStats, AverageDefinitionsAllStats,
AverageDefinitionsEntry,
AverageDefinitionsEntrySubPartial,
} from '../src/core/blitzkit/averageDefinitions'; } from '../src/core/blitzkit/averageDefinitions';
import { averageDefinitionsAllStatsKeys } from '../src/core/blitzkit/averageDefinitions/constants'; import { averageDefinitionsAllStatsKeys } from '../src/core/blitzkit/averageDefinitions/constants';
import { commitAssets } from '../src/core/blitzkit/commitAssets'; import { commitAssets } from '../src/core/blitzkit/commitAssets';
import { superCompress } from '../src/core/blitzkit/superCompress'; 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'; import { IndividualTankStats } from '../src/types/tanksStats';
interface DataPoint { interface DataPoint {
@@ -172,6 +173,13 @@ function postWork() {
tankIds.forEach((id) => { tankIds.forEach((id) => {
const tanks = sorted[id]; const tanks = sorted[id];
const samples = tanks.length;
const entry: AverageDefinitionsEntrySubPartial = {
samples,
mu: {},
sigma: {},
r: {},
};
averageDefinitionsAllStatsKeys.forEach((key) => { averageDefinitionsAllStatsKeys.forEach((key) => {
const data: DataPoint[] = tanks.map((tank) => ({ const data: DataPoint[] = tanks.map((tank) => ({
@@ -190,15 +198,24 @@ function postWork() {
const sum_w = sum(({ w }) => w); const sum_w = sum(({ w }) => w);
const sum_wx = sum(({ w, x }) => w * x); const sum_wx = sum(({ w, x }) => w * x);
const sum_wy = sum(({ w, y }) => w * y); const sum_wy = sum(({ w, y }) => w * y);
const x_w = sum_wx / sum_w; const mu_x = sum_wx / sum_w;
const y_w = sum_wy / sum_w; const mu_y = sum_wy / sum_w;
const r_numerator = sum(({ w, x, y }) => w * (x - x_w) * (y - y_w)); const mu = mu_x;
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 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 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( commitAssets(
@@ -209,13 +226,6 @@ function postWork() {
content: superCompress(averages), content: superCompress(averages),
encoding: 'base64', encoding: 'base64',
}, },
{
path: 'definitions/discovered.dids.lz4',
content: Buffer.from(
compress(new DidsWriteStream().dids(discoveredIds).uint8Array),
).toString('base64'),
encoding: 'base64',
},
], ],
production, production,
); );
@@ -1,5 +1,4 @@
import { AverageDefinitionsAllStats } from '.'; import { AverageDefinitionsAllStats } from '.';
import { emptyAllStats } from '../../blitzstars/getStatsInPeriod/constants'; import { emptyAllStats } from '../../blitzstars/getStatsInPeriod/constants';
export const emptyAverageDefinitionsAllStats: AverageDefinitionsAllStats = { export const emptyAverageDefinitionsAllStats: AverageDefinitionsAllStats = {
+15 -14
View File
@@ -6,21 +6,22 @@ export interface AverageDefinitionsAllStats extends AllStats {
battle_life_time: number; battle_life_time: number;
} }
export interface AverageDefinitions { export interface AverageDefinitionsEntry {
[id: number]: { samples: number;
samples: number; mu: AverageDefinitionsAllStats;
sigma: AverageDefinitionsAllStats;
r: AverageDefinitionsAllStats;
}
// average export interface AverageDefinitionsEntrySubPartial {
mu: AverageDefinitionsAllStats; samples: number;
// standard deviation mu: Partial<AverageDefinitionsAllStats>;
sigma: AverageDefinitionsAllStats; sigma: Partial<AverageDefinitionsAllStats>;
// correlation coefficient r: Partial<AverageDefinitionsAllStats>;
r: AverageDefinitionsAllStats; }
// least squares regression line slope
m: AverageDefinitionsAllStats; export interface AverageDefinitions {
// least squares regression line y-intercept [id: number]: AverageDefinitionsEntry;
b: AverageDefinitionsAllStats;
};
} }
export const averageDefinitions = fetchCdonLz4<AverageDefinitions>( export const averageDefinitions = fetchCdonLz4<AverageDefinitions>(