@xyo-network/diviner-forecasting-memory 2.72.9 → 2.73.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,79 +0,0 @@
1
- import { assertEx } from '@xylabs/assert';
2
- import { exists } from '@xylabs/exists';
3
- import { asArchivistInstance } from '@xyo-network/archivist-model';
4
- import { BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model';
5
- import { AbstractForecastingDiviner } from '@xyo-network/diviner-forecasting-abstract';
6
- import { arimaForecastingMethod, seasonalArimaForecastingMethod, } from '@xyo-network/diviner-forecasting-method-arima';
7
- import { ForecastingDivinerConfigSchema } from '@xyo-network/diviner-forecasting-model';
8
- import { asDivinerInstance } from '@xyo-network/diviner-model';
9
- import { value } from 'jsonpath';
10
- const getJsonPathTransformer = (pathExpression) => {
11
- const transformer = (x) => {
12
- const ret = value(x, pathExpression);
13
- if (typeof ret === 'number')
14
- return ret;
15
- throw new Error('Parsed invalid payload value');
16
- };
17
- return transformer;
18
- };
19
- export class MemoryForecastingDiviner extends AbstractForecastingDiviner {
20
- static configSchemas = [ForecastingDivinerConfigSchema];
21
- static forecastingMethodDict = {
22
- arimaForecasting: arimaForecastingMethod,
23
- seasonalArimaForecasting: seasonalArimaForecastingMethod,
24
- };
25
- /**
26
- * The max number of records to search during the batch query
27
- */
28
- batchLimit = 1_000;
29
- // TODO: Inject via config
30
- maxTrainingLength = 10_000;
31
- get forecastingMethod() {
32
- const forecastingMethodName = assertEx(this.config.forecastingMethod, 'Missing forecastingMethod in config');
33
- const forecastingMethod = MemoryForecastingDiviner.forecastingMethodDict[forecastingMethodName];
34
- if (forecastingMethod)
35
- return forecastingMethod;
36
- throw new Error(`Unsupported forecasting method: ${forecastingMethodName}`);
37
- }
38
- get transformer() {
39
- const pathExpression = assertEx(this.config.jsonPathExpression, 'Missing jsonPathExpression in config');
40
- return getJsonPathTransformer(pathExpression);
41
- }
42
- async getPayloadsInWindow(startTimestamp, stopTimestamp) {
43
- const addresses = this.config.witnessAddresses;
44
- const payload_schemas = [assertEx(this.config.witnessSchema, 'Missing witnessSchema in config')];
45
- const payloads = [];
46
- const archivist = asArchivistInstance(await this.readArchivist(), 'Unable to resolve archivist');
47
- const bwDiviner = asDivinerInstance((await this.resolve(this.config.boundWitnessDiviner)).pop(), 'Unable to resolve boundWitnessDiviner');
48
- const limit = this.batchLimit;
49
- const witnessSchema = assertEx(this.config.witnessSchema, 'Missing witnessSchema in config');
50
- let timestamp = stopTimestamp;
51
- let more = true;
52
- // TODO: Window size vs sample size
53
- // Loop until there are no more BWs to process or we've got enough payloads to satisfy the training window
54
- while (more || payloads.length < this.maxTrainingLength) {
55
- const query = { addresses, limit, payload_schemas, schema: BoundWitnessDivinerQuerySchema, timestamp };
56
- const boundWitnesses = (await bwDiviner.divine([query])).filter((bw) => bw.timestamp && bw.timestamp >= startTimestamp && bw.timestamp <= stopTimestamp);
57
- if (boundWitnesses.length === 0)
58
- break;
59
- // Update the timestamp value for the next batch
60
- timestamp = boundWitnesses
61
- .map((bw) => bw.timestamp)
62
- .filter(exists)
63
- .reduce((a, b) => Math.min(a, b), Number.MAX_SAFE_INTEGER);
64
- if (timestamp === Number.MAX_SAFE_INTEGER)
65
- break;
66
- // Set the more flag to false if there are fewer documents returned than the batch size
67
- more = boundWitnesses.length === limit;
68
- // Get the corresponding payload hashes from the BWs
69
- const hashes = boundWitnesses.map((bw) => bw.payload_hashes[bw.payload_schemas.findIndex((s) => s === witnessSchema)]).filter(exists);
70
- // Get the payloads corresponding to the BW hashes from the archivist
71
- if (hashes.length !== 0) {
72
- const batchPayloads = (await archivist.get(hashes)).filter(exists);
73
- payloads.push(...batchPayloads);
74
- }
75
- }
76
- return payloads;
77
- }
78
- }
79
- //# sourceMappingURL=MemoryForecastingDiviner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MemoryForecastingDiviner.js","sourceRoot":"","sources":["../../src/MemoryForecastingDiviner.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js DELETED
@@ -1,2 +0,0 @@
1
- export * from './MemoryForecastingDiviner';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MemoryForecastingDiviner.d.ts","sourceRoot":"","sources":["../../src/MemoryForecastingDiviner.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAA;AAChH,OAAO,EAEL,oBAAoB,EAEpB,4BAA4B,EAC7B,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAkC,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAA;AAEnI,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAGpD,MAAM,MAAM,wBAAwB,GAAG,OAAO,oBAAoB,GAAG,OAAO,4BAA4B,CAAA;AAWxG,qBAAa,wBAAwB,CACnC,OAAO,SAAS,wBAAwB,GAAG,wBAAwB,CACnE,SAAQ,0BAA0B,CAAC,OAAO,CAAC;IAC3C,OAAgB,aAAa,6CAAmC;IAEhE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,CAGnG;IAED;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,QAAQ;IAGrC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,SAAS;IAE7C,cAAuB,iBAAiB,IAAI,iBAAiB,CAK5D;IAED,cAAuB,WAAW,IAAI,uBAAuB,CAG5D;cAEwB,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAyChH"}
@@ -1,2 +0,0 @@
1
- export * from './MemoryForecastingDiviner';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA"}