Merge pull request #1110 from nymkappa/feature/filter-out-extreme-values

Cap extreme vbytes_per_second values
This commit is contained in:
wiz 2022-01-11 03:07:44 +00:00 committed by GitHub
commit a4a8fb64b1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 1 deletions

View File

@ -320,7 +320,7 @@ class Statistics {
private getQueryForDays(div: number, interval: string) { private getQueryForDays(div: number, interval: string) {
return `SELECT id, UNIX_TIMESTAMP(added) as added, unconfirmed_transactions, return `SELECT id, UNIX_TIMESTAMP(added) as added, unconfirmed_transactions,
tx_per_second, tx_per_second,
vbytes_per_second, CAST(avg(vbytes_per_second) as FLOAT) as vbytes_per_second,
vsize_1, vsize_1,
vsize_2, vsize_2,
vsize_3, vsize_3,

View File

@ -124,6 +124,8 @@ export class StatisticsComponent implements OnInit {
mempoolStats.reverse(); mempoolStats.reverse();
const labels = mempoolStats.map(stats => stats.added); const labels = mempoolStats.map(stats => stats.added);
this.capExtremeVbytesValues();
this.mempoolTransactionsWeightPerSecondData = { this.mempoolTransactionsWeightPerSecondData = {
labels: labels, labels: labels,
series: [mempoolStats.map((stats) => [stats.added * 1000, stats.vbytes_per_second])], series: [mempoolStats.map((stats) => [stats.added * 1000, stats.vbytes_per_second])],
@ -162,4 +164,31 @@ export class StatisticsComponent implements OnInit {
} }
}) })
} }
/**
* All value higher that "median * capRatio" are capped
*/
capExtremeVbytesValues() {
let capRatio = 10;
if (['1m', '3m', '6m', '1y', '2y', '3y'].includes(this.graphWindowPreference)) {
capRatio = 4;
}
// Find median value
let vBytes : number[] = [];
for (let i = 0; i < this.mempoolStats.length; ++i) {
vBytes.push(this.mempoolStats[i].vbytes_per_second);
}
const sorted = vBytes.slice().sort((a, b) => a - b);
const middle = Math.floor(sorted.length / 2);
let median = sorted[middle];
if (sorted.length % 2 === 0) {
median = (sorted[middle - 1] + sorted[middle]) / 2;
}
// Cap
for (let i = 0; i < this.mempoolStats.length; ++i) {
this.mempoolStats[i].vbytes_per_second = Math.min(median * capRatio, this.mempoolStats[i].vbytes_per_second);
}
}
} }