generative-bayesian-network 2.0.0-dev.0 → 2.0.0-dev.3
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.
- package/bayesian-network.d.ts +44 -0
- package/bayesian-network.d.ts.map +1 -0
- package/bayesian-network.js +111 -0
- package/bayesian-network.js.map +1 -0
- package/bayesian-node.d.ts +76 -0
- package/bayesian-node.d.ts.map +1 -0
- package/bayesian-node.js +157 -0
- package/bayesian-node.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.d.ts.map +1 -0
- package/index.js.map +1 -0
- package/index.mjs +4 -0
- package/package.json +3 -7
- package/tsconfig.build.tsbuildinfo +1 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export declare type RecordList = Record<string, any>[];
|
|
2
|
+
/**
|
|
3
|
+
* BayesianNetwork is an implementation of a bayesian network capable of randomly sampling from the distribution
|
|
4
|
+
* represented by the network.
|
|
5
|
+
*/
|
|
6
|
+
export declare class BayesianNetwork {
|
|
7
|
+
private nodesInSamplingOrder;
|
|
8
|
+
private nodesByName;
|
|
9
|
+
constructor({ path }: {
|
|
10
|
+
path: string;
|
|
11
|
+
});
|
|
12
|
+
/**
|
|
13
|
+
* Randomly samples from the distribution represented by the bayesian network.
|
|
14
|
+
* @param inputValues Already known node values.
|
|
15
|
+
*/
|
|
16
|
+
generateSample(inputValues?: Record<string, string>): Record<string, string>;
|
|
17
|
+
/**
|
|
18
|
+
* Randomly samples values from the distribution represented by the bayesian network,
|
|
19
|
+
* making sure the sample is consistent with the provided restrictions on value possibilities.
|
|
20
|
+
* Returns false if no such sample can be generated.
|
|
21
|
+
* @param valuePossibilities A dictionary of lists of possible values for nodes (if a node isn't present in the dictionary, all values are possible).
|
|
22
|
+
*/
|
|
23
|
+
generateConsistentSampleWhenPossible(valuePossibilities: Record<string, string[]>): Record<string, string>;
|
|
24
|
+
/**
|
|
25
|
+
* Recursively generates a random sample consistent with the given restrictions on possible values.
|
|
26
|
+
* @param sampleSoFar Already known node values.
|
|
27
|
+
* @param valuePossibilities A dictionary of lists of possible values for nodes (if a node isn't present in the dictionary, all values are possible).
|
|
28
|
+
* @param depth Current recursion depth.
|
|
29
|
+
*/
|
|
30
|
+
private recursivelyGenerateConsistentSampleWhenPossible;
|
|
31
|
+
/**
|
|
32
|
+
* Sets the conditional probability distributions of this network's nodes to match the given data.
|
|
33
|
+
* @param dataframe A Danfo.js dataframe containing the data.
|
|
34
|
+
*/
|
|
35
|
+
setProbabilitiesAccordingToData(data: RecordList): void;
|
|
36
|
+
/**
|
|
37
|
+
* Saves the network definition to the specified file path to be used later.
|
|
38
|
+
* @param networkDefinitionFilePath File path where the network definition should be saved.
|
|
39
|
+
*/
|
|
40
|
+
saveNetworkDefinition({ path }: {
|
|
41
|
+
path: string;
|
|
42
|
+
}): void;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=bayesian-network.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bayesian-network.d.ts","sourceRoot":"","sources":["../src/bayesian-network.ts"],"names":[],"mappings":"AAGA,oBAAY,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;AAE/C;;;GAGG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,WAAW,CAAqC;gBAE5C,EAAE,IAAI,EAAE,EAAE;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC;IAapC;;;OAGG;IACH,cAAc,CAAC,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAUvD;;;;;OAKG;IACH,oCAAoC,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAIjF;;;;;OAKG;IACH,OAAO,CAAC,+CAA+C;IA4BvD;;;OAGG;IACH,+BAA+B,CAAC,IAAI,EAAE,UAAU;IAUhD;;;OAGG;IACH,qBAAqB,CAAC,EAAE,IAAI,EAAE,EAAG;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC;CAWlD"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BayesianNetwork = void 0;
|
|
4
|
+
const AdmZip = require("adm-zip");
|
|
5
|
+
const bayesian_node_1 = require("./bayesian-node");
|
|
6
|
+
/**
|
|
7
|
+
* BayesianNetwork is an implementation of a bayesian network capable of randomly sampling from the distribution
|
|
8
|
+
* represented by the network.
|
|
9
|
+
*/
|
|
10
|
+
class BayesianNetwork {
|
|
11
|
+
constructor({ path }) {
|
|
12
|
+
Object.defineProperty(this, "nodesInSamplingOrder", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
configurable: true,
|
|
15
|
+
writable: true,
|
|
16
|
+
value: []
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(this, "nodesByName", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
configurable: true,
|
|
21
|
+
writable: true,
|
|
22
|
+
value: {}
|
|
23
|
+
});
|
|
24
|
+
const zip = new AdmZip(path);
|
|
25
|
+
const zipEntries = zip.getEntries();
|
|
26
|
+
const networkDefinition = JSON.parse(zipEntries[0].getData().toString('utf8'));
|
|
27
|
+
this.nodesInSamplingOrder = networkDefinition.nodes.map((nodeDefinition) => new bayesian_node_1.BayesianNode(nodeDefinition));
|
|
28
|
+
this.nodesByName = this.nodesInSamplingOrder.reduce((p, node) => ({
|
|
29
|
+
...p,
|
|
30
|
+
[node.name]: node,
|
|
31
|
+
}), {});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Randomly samples from the distribution represented by the bayesian network.
|
|
35
|
+
* @param inputValues Already known node values.
|
|
36
|
+
*/
|
|
37
|
+
generateSample(inputValues = {}) {
|
|
38
|
+
const sample = inputValues;
|
|
39
|
+
for (const node of this.nodesInSamplingOrder) {
|
|
40
|
+
if (!(node.name in sample)) {
|
|
41
|
+
sample[node.name] = node.sample(sample);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return sample;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Randomly samples values from the distribution represented by the bayesian network,
|
|
48
|
+
* making sure the sample is consistent with the provided restrictions on value possibilities.
|
|
49
|
+
* Returns false if no such sample can be generated.
|
|
50
|
+
* @param valuePossibilities A dictionary of lists of possible values for nodes (if a node isn't present in the dictionary, all values are possible).
|
|
51
|
+
*/
|
|
52
|
+
generateConsistentSampleWhenPossible(valuePossibilities) {
|
|
53
|
+
return this.recursivelyGenerateConsistentSampleWhenPossible({}, valuePossibilities, 0);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Recursively generates a random sample consistent with the given restrictions on possible values.
|
|
57
|
+
* @param sampleSoFar Already known node values.
|
|
58
|
+
* @param valuePossibilities A dictionary of lists of possible values for nodes (if a node isn't present in the dictionary, all values are possible).
|
|
59
|
+
* @param depth Current recursion depth.
|
|
60
|
+
*/
|
|
61
|
+
recursivelyGenerateConsistentSampleWhenPossible(sampleSoFar, valuePossibilities, depth) {
|
|
62
|
+
const bannedValues = [];
|
|
63
|
+
const node = this.nodesInSamplingOrder[depth];
|
|
64
|
+
let sampleValue;
|
|
65
|
+
do {
|
|
66
|
+
sampleValue = node.sampleAccordingToRestrictions(sampleSoFar, valuePossibilities[node.name], bannedValues);
|
|
67
|
+
if (!sampleValue)
|
|
68
|
+
break;
|
|
69
|
+
sampleSoFar[node.name] = sampleValue;
|
|
70
|
+
if (depth + 1 < this.nodesInSamplingOrder.length) {
|
|
71
|
+
const sample = this.recursivelyGenerateConsistentSampleWhenPossible(sampleSoFar, valuePossibilities, depth + 1);
|
|
72
|
+
if (Object.keys(sample).length !== 0) {
|
|
73
|
+
return sample;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
return sampleSoFar;
|
|
78
|
+
}
|
|
79
|
+
bannedValues.push(sampleValue);
|
|
80
|
+
} while (sampleValue);
|
|
81
|
+
return {};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Sets the conditional probability distributions of this network's nodes to match the given data.
|
|
85
|
+
* @param dataframe A Danfo.js dataframe containing the data.
|
|
86
|
+
*/
|
|
87
|
+
setProbabilitiesAccordingToData(data) {
|
|
88
|
+
this.nodesInSamplingOrder.forEach((node) => {
|
|
89
|
+
const possibleParentValues = {};
|
|
90
|
+
for (const parentName of node.parentNames) {
|
|
91
|
+
possibleParentValues[parentName] = this.nodesByName[parentName].possibleValues;
|
|
92
|
+
}
|
|
93
|
+
node.setProbabilitiesAccordingToData(data, possibleParentValues);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Saves the network definition to the specified file path to be used later.
|
|
98
|
+
* @param networkDefinitionFilePath File path where the network definition should be saved.
|
|
99
|
+
*/
|
|
100
|
+
saveNetworkDefinition({ path }) {
|
|
101
|
+
const network = {
|
|
102
|
+
nodes: this.nodesInSamplingOrder,
|
|
103
|
+
};
|
|
104
|
+
// creating archives
|
|
105
|
+
const zip = new AdmZip();
|
|
106
|
+
zip.addFile('network.json', Buffer.from(JSON.stringify(network), 'utf8'));
|
|
107
|
+
zip.writeZip(path);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.BayesianNetwork = BayesianNetwork;
|
|
111
|
+
//# sourceMappingURL=bayesian-network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bayesian-network.js","sourceRoot":"","sources":["../src/bayesian-network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { RecordList } from './bayesian-network';
|
|
2
|
+
/**
|
|
3
|
+
* Bayesian network node definition.
|
|
4
|
+
*/
|
|
5
|
+
interface NodeDefinition {
|
|
6
|
+
/**
|
|
7
|
+
* Name of this node.
|
|
8
|
+
*/
|
|
9
|
+
name: string;
|
|
10
|
+
/**
|
|
11
|
+
* Name of the current node's parent nodes.
|
|
12
|
+
*/
|
|
13
|
+
parentNames: string[];
|
|
14
|
+
/**
|
|
15
|
+
* Array of possible values for this node.
|
|
16
|
+
*/
|
|
17
|
+
possibleValues: string[];
|
|
18
|
+
/**
|
|
19
|
+
* Conditional probabilities for the `possibleValues`, given specified ancestor values.
|
|
20
|
+
*/
|
|
21
|
+
conditionalProbabilities: any;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* BayesianNode is an implementation of a single node in a bayesian network allowing sampling from its conditional distribution.
|
|
25
|
+
*/
|
|
26
|
+
export declare class BayesianNode {
|
|
27
|
+
private nodeDefinition;
|
|
28
|
+
/**
|
|
29
|
+
* @param nodeDefinition Node structure and distributions definition taken from the network definition file.
|
|
30
|
+
*/
|
|
31
|
+
constructor(nodeDefinition: NodeDefinition);
|
|
32
|
+
toJSON(): NodeDefinition;
|
|
33
|
+
/**
|
|
34
|
+
* Extracts unconditional probabilities of node values given the values of the parent nodes
|
|
35
|
+
* @param parentValues Parent nodes values.
|
|
36
|
+
*/
|
|
37
|
+
private getProbabilitiesGivenKnownValues;
|
|
38
|
+
/**
|
|
39
|
+
* Randomly samples from the given values using the given probabilities
|
|
40
|
+
* @param possibleValues A list of values to sample from.
|
|
41
|
+
* @param totalProbabilityOfPossibleValues Sum of probabilities of possibleValues in the conditional distribution.
|
|
42
|
+
* @param probabilities A dictionary of probabilities from the conditional distribution, indexed by the values.
|
|
43
|
+
*/
|
|
44
|
+
private sampleRandomValueFromPossibilities;
|
|
45
|
+
/**
|
|
46
|
+
* Randomly samples from the conditional distribution of this node given values of parents
|
|
47
|
+
* @param parentValues Values of the parent nodes.
|
|
48
|
+
*/
|
|
49
|
+
sample(parentValues?: {}): string;
|
|
50
|
+
/**
|
|
51
|
+
* Randomly samples from the conditional distribution of this node given restrictions on the possible
|
|
52
|
+
* values and the values of the parents.
|
|
53
|
+
* @param parentValues Values of the parent nodes.
|
|
54
|
+
* @param valuePossibilities List of possible values for this node.
|
|
55
|
+
* @param bannedValues What values of this node are banned.
|
|
56
|
+
*/
|
|
57
|
+
sampleAccordingToRestrictions(parentValues: Record<string, string>, valuePossibilities: string[], bannedValues: string[]): string | false;
|
|
58
|
+
/**
|
|
59
|
+
* Sets the conditional probability distribution for this node to match the given data.
|
|
60
|
+
* @param dataframe A Danfo.js dataframe containing the data.
|
|
61
|
+
* @param possibleParentValues A dictionary of lists of possible values for parent nodes.
|
|
62
|
+
*/
|
|
63
|
+
setProbabilitiesAccordingToData(data: RecordList, possibleParentValues?: Record<string, string[]>): void;
|
|
64
|
+
/**
|
|
65
|
+
* Recursively calculates the conditional probability distribution for this node from the data.
|
|
66
|
+
* @param dataframe A Danfo.js dataframe containing the data.
|
|
67
|
+
* @param possibleParentValues A dictionary of lists of possible values for parent nodes.
|
|
68
|
+
* @param depth Depth of the current recursive call.
|
|
69
|
+
*/
|
|
70
|
+
private recursivelyCalculateConditionalProbabilitiesAccordingToData;
|
|
71
|
+
get name(): string;
|
|
72
|
+
get parentNames(): string[];
|
|
73
|
+
get possibleValues(): string[];
|
|
74
|
+
}
|
|
75
|
+
export {};
|
|
76
|
+
//# sourceMappingURL=bayesian-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bayesian-node.d.ts","sourceRoot":"","sources":["../src/bayesian-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAmBhD;;GAEG;AACH,UAAU,cAAc;IACpB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB;;OAEG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;OAEG;IACH,wBAAwB,EAAE,GAAG,CAAC;CACjC;AAED;;GAEG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,cAAc,CAAiB;IAEvC;;OAEG;gBACS,cAAc,EAAE,cAAc;IAI1C,MAAM;IAIN;;;OAGG;IACH,OAAO,CAAC,gCAAgC;IAcxC;;;;;OAKG;IACH,OAAO,CAAC,kCAAkC;IAe1C;;;OAGG;IACH,MAAM,CAAC,YAAY,KAAK;IAOxB;;;;;;OAMG;IACH,6BAA6B,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,GAAI,MAAM,GAAG,KAAK;IAiB1I;;;;OAIG;IACH,+BAA+B,CAAC,IAAI,EAAE,UAAU,EAAE,oBAAoB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;IASrG;;;;;OAKG;IACH,OAAO,CAAC,2DAA2D;IAoCnE,IAAI,IAAI,IAAK,MAAM,CAElB;IAED,IAAI,WAAW,IAAK,MAAM,EAAE,CAE3B;IAED,IAAI,cAAc,IAAK,MAAM,EAAE,CAE9B;CACJ"}
|
package/bayesian-node.js
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BayesianNode = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Calculates relative frequencies of values of specific attribute from the given data
|
|
6
|
+
* @param dataframe A Danfo.js dataframe containing the data.
|
|
7
|
+
* @param attributeName Attribute name.
|
|
8
|
+
*/
|
|
9
|
+
function getRelativeFrequencies(data, attributeName) {
|
|
10
|
+
const frequencies = {};
|
|
11
|
+
const totalCount = data.length;
|
|
12
|
+
data.forEach((record) => {
|
|
13
|
+
const value = record[attributeName];
|
|
14
|
+
frequencies[value] = (frequencies[value] ?? 0) + 1;
|
|
15
|
+
});
|
|
16
|
+
return Object.fromEntries(Object.entries(frequencies).map(([key, value]) => [key, value / totalCount]));
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* BayesianNode is an implementation of a single node in a bayesian network allowing sampling from its conditional distribution.
|
|
20
|
+
*/
|
|
21
|
+
class BayesianNode {
|
|
22
|
+
/**
|
|
23
|
+
* @param nodeDefinition Node structure and distributions definition taken from the network definition file.
|
|
24
|
+
*/
|
|
25
|
+
constructor(nodeDefinition) {
|
|
26
|
+
Object.defineProperty(this, "nodeDefinition", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
configurable: true,
|
|
29
|
+
writable: true,
|
|
30
|
+
value: void 0
|
|
31
|
+
});
|
|
32
|
+
this.nodeDefinition = nodeDefinition;
|
|
33
|
+
}
|
|
34
|
+
toJSON() {
|
|
35
|
+
return this.nodeDefinition;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Extracts unconditional probabilities of node values given the values of the parent nodes
|
|
39
|
+
* @param parentValues Parent nodes values.
|
|
40
|
+
*/
|
|
41
|
+
getProbabilitiesGivenKnownValues(parentValues = {}) {
|
|
42
|
+
let probabilities = this.nodeDefinition.conditionalProbabilities;
|
|
43
|
+
for (const parentName of this.parentNames) {
|
|
44
|
+
const parentValue = parentValues[parentName];
|
|
45
|
+
if (parentValue in probabilities.deeper) {
|
|
46
|
+
probabilities = probabilities.deeper[parentValue];
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
probabilities = probabilities.skip;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return probabilities;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Randomly samples from the given values using the given probabilities
|
|
56
|
+
* @param possibleValues A list of values to sample from.
|
|
57
|
+
* @param totalProbabilityOfPossibleValues Sum of probabilities of possibleValues in the conditional distribution.
|
|
58
|
+
* @param probabilities A dictionary of probabilities from the conditional distribution, indexed by the values.
|
|
59
|
+
*/
|
|
60
|
+
sampleRandomValueFromPossibilities(possibleValues, totalProbabilityOfPossibleValues, probabilities) {
|
|
61
|
+
let chosenValue = possibleValues[0];
|
|
62
|
+
const anchor = Math.random() * totalProbabilityOfPossibleValues;
|
|
63
|
+
let cumulativeProbability = 0;
|
|
64
|
+
for (const possibleValue of possibleValues) {
|
|
65
|
+
cumulativeProbability += probabilities[possibleValue];
|
|
66
|
+
if (cumulativeProbability > anchor) {
|
|
67
|
+
chosenValue = possibleValue;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return chosenValue;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Randomly samples from the conditional distribution of this node given values of parents
|
|
75
|
+
* @param parentValues Values of the parent nodes.
|
|
76
|
+
*/
|
|
77
|
+
sample(parentValues = {}) {
|
|
78
|
+
const probabilities = this.getProbabilitiesGivenKnownValues(parentValues);
|
|
79
|
+
const possibleValues = Object.keys(probabilities);
|
|
80
|
+
return this.sampleRandomValueFromPossibilities(possibleValues, 1.0, probabilities);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Randomly samples from the conditional distribution of this node given restrictions on the possible
|
|
84
|
+
* values and the values of the parents.
|
|
85
|
+
* @param parentValues Values of the parent nodes.
|
|
86
|
+
* @param valuePossibilities List of possible values for this node.
|
|
87
|
+
* @param bannedValues What values of this node are banned.
|
|
88
|
+
*/
|
|
89
|
+
sampleAccordingToRestrictions(parentValues, valuePossibilities, bannedValues) {
|
|
90
|
+
const probabilities = this.getProbabilitiesGivenKnownValues(parentValues);
|
|
91
|
+
let totalProbability = 0.0;
|
|
92
|
+
const validValues = [];
|
|
93
|
+
const valuesInDistribution = Object.keys(probabilities);
|
|
94
|
+
const possibleValues = valuePossibilities || valuesInDistribution;
|
|
95
|
+
for (const value of possibleValues) {
|
|
96
|
+
if (!bannedValues.includes(value) && valuesInDistribution.includes(value)) {
|
|
97
|
+
validValues.push(value);
|
|
98
|
+
totalProbability += probabilities[value];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (validValues.length === 0)
|
|
102
|
+
return false;
|
|
103
|
+
return this.sampleRandomValueFromPossibilities(validValues, totalProbability, probabilities);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Sets the conditional probability distribution for this node to match the given data.
|
|
107
|
+
* @param dataframe A Danfo.js dataframe containing the data.
|
|
108
|
+
* @param possibleParentValues A dictionary of lists of possible values for parent nodes.
|
|
109
|
+
*/
|
|
110
|
+
setProbabilitiesAccordingToData(data, possibleParentValues = {}) {
|
|
111
|
+
this.nodeDefinition.possibleValues = Array.from(new Set(data.map((record) => record[this.name])));
|
|
112
|
+
this.nodeDefinition.conditionalProbabilities = this.recursivelyCalculateConditionalProbabilitiesAccordingToData(data, possibleParentValues, 0);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Recursively calculates the conditional probability distribution for this node from the data.
|
|
116
|
+
* @param dataframe A Danfo.js dataframe containing the data.
|
|
117
|
+
* @param possibleParentValues A dictionary of lists of possible values for parent nodes.
|
|
118
|
+
* @param depth Depth of the current recursive call.
|
|
119
|
+
*/
|
|
120
|
+
recursivelyCalculateConditionalProbabilitiesAccordingToData(data, possibleParentValues, depth) {
|
|
121
|
+
let probabilities = {
|
|
122
|
+
deeper: {},
|
|
123
|
+
};
|
|
124
|
+
if (depth < this.parentNames.length) {
|
|
125
|
+
const currentParentName = this.parentNames[depth];
|
|
126
|
+
for (const possibleValue of possibleParentValues[currentParentName]) {
|
|
127
|
+
const skip = !data.map((record) => record[currentParentName]).includes(possibleValue);
|
|
128
|
+
let filteredData = data;
|
|
129
|
+
if (!skip) {
|
|
130
|
+
filteredData = data.filter((record) => record[currentParentName] === possibleValue);
|
|
131
|
+
}
|
|
132
|
+
const nextLevel = this.recursivelyCalculateConditionalProbabilitiesAccordingToData(filteredData, possibleParentValues, depth + 1);
|
|
133
|
+
if (!skip) {
|
|
134
|
+
probabilities.deeper[possibleValue] = nextLevel;
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
probabilities.skip = nextLevel;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
probabilities = getRelativeFrequencies(data, this.name);
|
|
143
|
+
}
|
|
144
|
+
return probabilities;
|
|
145
|
+
}
|
|
146
|
+
get name() {
|
|
147
|
+
return this.nodeDefinition.name;
|
|
148
|
+
}
|
|
149
|
+
get parentNames() {
|
|
150
|
+
return this.nodeDefinition.parentNames;
|
|
151
|
+
}
|
|
152
|
+
get possibleValues() {
|
|
153
|
+
return this.nodeDefinition.possibleValues;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
exports.BayesianNode = BayesianNode;
|
|
157
|
+
//# sourceMappingURL=bayesian-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bayesian-node.js","sourceRoot":"","sources":["../src/bayesian-node.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
ADDED
package/index.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAA5C,mHAAA,eAAe,OAAA"}
|
package/index.mjs
ADDED
package/package.json
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "generative-bayesian-network",
|
|
3
|
-
"version": "2.0.0-dev.
|
|
3
|
+
"version": "2.0.0-dev.3",
|
|
4
4
|
"author": {
|
|
5
5
|
"name": "Apify"
|
|
6
6
|
},
|
|
7
|
-
"files": [
|
|
8
|
-
"dist"
|
|
9
|
-
],
|
|
10
7
|
"main": "index.js",
|
|
11
8
|
"module": "index.mjs",
|
|
12
9
|
"types": "index.d.ts",
|
|
@@ -20,8 +17,7 @@
|
|
|
20
17
|
"url": "https://github.com/apify/generative-bayesian-network/issues"
|
|
21
18
|
},
|
|
22
19
|
"dependencies": {
|
|
23
|
-
"adm-zip": "^0.5.9"
|
|
24
|
-
"danfojs-node": "^1.1.1"
|
|
20
|
+
"adm-zip": "^0.5.9"
|
|
25
21
|
},
|
|
26
22
|
"description": "An implementation of a bayesian network usable for .",
|
|
27
23
|
"homepage": "https://github.com/apify/generative-bayesian-network#readme",
|
|
@@ -36,5 +32,5 @@
|
|
|
36
32
|
"compile": "tsc -p tsconfig.build.json && gen-esm-wrapper ./index.js ./index.mjs",
|
|
37
33
|
"copy": "ts-node -T ../../scripts/copy.ts"
|
|
38
34
|
},
|
|
39
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "e7932f0439efe4da1ef1c03af581879443db88da"
|
|
40
36
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/adm-zip/util.d.ts","../../../node_modules/@types/adm-zip/index.d.ts","../src/bayesian-node.ts","../src/bayesian-network.ts","../src/index.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/chalk/index.d.ts","../../../node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../node_modules/pretty-format/build/types.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-diff/build/types.d.ts","../../../node_modules/jest-diff/build/diffLines.d.ts","../../../node_modules/jest-diff/build/printDiffs.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/form-data/index.d.ts","../../../node_modules/@types/node-fetch/externals.d.ts","../../../node_modules/@types/node-fetch/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/puppeteer/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/useragent/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts","../../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","3eb679a56cab01203a1ba7edeade937f6a2a4c718513b2cd930b579807fa9359","aea179452def8a6152f98f63b191b84e7cbd69b0e248c91e61fb2e52328abe8c",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"ff667ee99e5a28c3dc5063a3cfd4d3436699e3fb035d4451037da7f567da542a","affectsGlobalScope":true},{"version":"34478567f8a80171f88f2f30808beb7da15eac0538ae91282dd33dce928d98ed","affectsGlobalScope":true},{"version":"6ea9ab679ea030cf46c16a711a316078e9e02619ebaf07a7fcd16964aba88f2d","affectsGlobalScope":true},{"version":"6bda95ea27a59a276e46043b7065b55bd4b316c25e70e29b572958fa77565d43","affectsGlobalScope":true},{"version":"aedb8de1abb2ff1095c153854a6df7deae4a5709c37297f9d6e9948b6806fa66","affectsGlobalScope":true},{"version":"11ffe3c281f375fff9ffdde8bbec7669b4dd671905509079f866f2354a788064","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"4576b4e61049f5ffd7c9e935cf88832e089265bdb15ffc35077310042cbbbeea","0cba3a5d7b81356222594442753cf90dd2892e5ccfe1d262aaca6896ba6c1380","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"e5979905796fe2740d85fbaf4f11f42b7ee1851421afe750823220813421b1af",{"version":"fcdcb42da18dd98dc286b1876dd425791772036012ae61263c011a76b13a190f","affectsGlobalScope":true},"1dab5ab6bcf11de47ab9db295df8c4f1d92ffa750e8f095e88c71ce4c3299628","f71f46ccd5a90566f0a37b25b23bc4684381ab2180bdf6733f4e6624474e1894",{"version":"54e65985a3ee3cec182e6a555e20974ea936fc8b8d1738c14e8ed8a42bd921d4","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","5b30f550565fd0a7524282c81c27fe8534099e2cd26170ca80852308f07ae68d","34e5de87d983bc6aefef8b17658556e3157003e8d9555d3cb098c6bef0b5fbc8","d97cd8a4a42f557fc62271369ed0461c8e50d47b7f9c8ad0b5462f53306f6060","f27371653aded82b2b160f7a7033fb4a5b1534b6f6081ef7be1468f0f15327d3","c762cd6754b13a461c54b59d0ae0ab7aeef3c292c6cf889873f786ee4d8e75c9","f4ea7d5df644785bd9fbf419930cbaec118f0d8b4160037d2339b8e23c059e79",{"version":"bfea28e6162ed21a0aeed181b623dcf250aa79abf49e24a6b7e012655af36d81","affectsGlobalScope":true},"b8aca9d0c81abb02bec9b7621983ae65bde71da6727580070602bd2500a9ce2a","ae97e20f2e10dbeec193d6a2f9cd9a367a1e293e7d6b33b68bacea166afd7792","10d4796a130577d57003a77b95d8723530bbec84718e364aa2129fa8ffba0378","063f53ff674228c190efa19dd9448bcbd540acdbb48a928f4cf3a1b9f9478e43","bf73c576885408d4a176f44a9035d798827cc5020d58284cb18d7573430d9022","7ae078ca42a670445ae0c6a97c029cb83d143d62abd1730efb33f68f0b2c0e82",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"963fe86b2ebd07a34b92b52c6532ab45ec5ccda218a6c477de354fcad2aae0cb","12eea70b5e11e924bb0543aea5eadc16ced318aa26001b453b0d561c2fd0bd1e","08777cd9318d294646b121838574e1dd7acbb22c21a03df84e1f2c87b1ad47f2","08a90bcdc717df3d50a2ce178d966a8c353fd23e5c392fd3594a6e39d9bb6304",{"version":"9f8dd3922db205bc8a362a6b18078708fd699185b11648522159cbf3743561b5","affectsGlobalScope":true},"2a12d2da5ac4c4979401a3f6eaafa874747a37c365e4bc18aa2b171ae134d21b","002b837927b53f3714308ecd96f72ee8a053b8aeb28213d8ec6de23ed1608b66","1dc9c847473bb47279e398b22c740c83ea37a5c88bf66629666e3cf4c5b9f99c","a9e4a5a24bf2c44de4c98274975a1a705a0abbaad04df3557c2d3cd8b1727949","821dcb2b571bf698841d8ec25fde9d5f615ef3958957227962602f9dbfa8d800","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","5f0ed51db151c2cdc4fa3bb0f44ce6066912ad001b607a34e65a96c52eb76248",{"version":"af9771b066ec35ffa1c7db391b018d2469d55e51b98ae95e62b6cbef1b0169ca","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","103d70bfbeb3cd3a3f26d1705bf986322d8738c2c143f38ebb743b1e228d7444","f52fbf64c7e480271a9096763c4882d356b05cab05bf56a64e68a95313cd2ce2","59bdb65f28d7ce52ccfc906e9aaf422f8b8534b2d21c32a27d7819be5ad81df7",{"version":"3a2da34079a2567161c1359316a32e712404b56566c45332ac9dcee015ecce9f","affectsGlobalScope":true},"28a2e7383fd898c386ffdcacedf0ec0845e5d1a86b5a43f25b86bc315f556b79","3aff9c8c36192e46a84afe7b926136d520487155154ab9ba982a8b544ea8fc95","a880cf8d85af2e4189c709b0fea613741649c0e40fffb4360ec70762563d5de0","85bbf436a15bbeda4db888be3062d47f99c66fd05d7c50f0f6473a9151b6a070","9f9c49c95ecd25e0cb2587751925976cf64fd184714cb11e213749c80cf0f927","f0c75c08a71f9212c93a719a25fb0320d53f2e50ca89a812640e08f8ad8c408c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"aee3379fb20741a337a779530cc3e608aba5f34776511033d1d2db7ca45c4193","0e0b0baaf6e3845418c2741c9b47478cf6fc086ef8dd5ad4b9ab91499e51de28","ca6e8a62a3e4f5cc3fea6ab45c2e5e128db4d90d81d70547a65047e3f13996f1",{"version":"802273e3966746548d51eb5f3b1798cb2e7aa57715800c3fbc004aeb5c8c9057","signature":"22459166aecbeccdc45d05065e09f9150ce09998aed2d0b7dace43b092ba2942"},{"version":"9d3916af7252cab3bba1cac4e977364b48239a19d46bc468068c4b68b7bf4b71","signature":"d5d91c12473c86e0492d8326c5b0be048a1d77d71050541a4607bd1cdf551a15"},"b36fed136ab154cc5f53c60b33b1b0a8615d2ff5ea2a57d806fe2be858e4fb97","e432b56911b58550616fc4d54c1606f65fe98c74875b81d74601f5f965767c60","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","a46a2e69d12afe63876ec1e58d70e5dbee6d3e74132f4468f570c3d69f809f1c","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","fc72135da24040641388fb5f2c2a7a99aa5b962c0fa125bd96fabeec63dd2e63","5426e62886b7be7806312d31a00e8f7dccd6fe63ba9bbefe99ee2eab29cc48a3","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","7adecb2c3238794c378d336a8182d4c3dd2c4fa6fa1785e2797a3db550edea62","dc12dc0e5aa06f4e1a7692149b78f89116af823b9e1f1e4eae140cd3e0e674e6","1bfc6565b90c8771615cd8cfcf9b36efc0275e5e83ac7d9181307e96eb495161","8a8a96898906f065f296665e411f51010b51372fa260d5373bf9f64356703190","7f82ef88bdb67d9a850dd1c7cd2d690f33e0f0acd208e3c9eba086f3670d4f73",{"version":"4564f780fd20582c57ae218a4cd017717181ab0e228639d905ef054288655b5e","affectsGlobalScope":true},"f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","208bb742e0f201470da121bc73847c74b62cff4172f38ae5949ae77d6c9c6b71","3663d1b50f356656a314e5df169bb51cb9d5fd75905fa703f75db6bb32030568","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","f1d8b21cdf08726021c8cce0cd6159486236cf1d633eeabbc435b5b2e5869c2e","dd432baba70577d8ef35db945b4e5e536013d73e3e8595683aafc277bf226f75","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","48220b3395376205a0938f3f23c363a1084e86534caaec82b885efb1e0407408","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","105b9a2234dcb06ae922f2cd8297201136d416503ff7d16c72bfc8791e9895c1","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"importsNotUsedAsValues":0,"module":1,"newLine":1,"noEmitHelpers":true,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","preserveConstEnums":true,"removeComments":false,"skipLibCheck":true,"sourceMap":true,"strict":true,"target":7,"useDefineForClassFields":true},"fileIdsList":[[98,111],[98],[71,98,105,106],[98,111,112,113,114,115],[98,111,113],[71,98,105],[98,118],[98,119],[98,124,129],[73,97,98,105,135,136],[55,98],[58,98],[59,64,98],[60,70,71,78,87,97,98],[60,61,70,78,98],[62,98],[63,64,71,79,98],[64,87,94,98],[65,67,70,78,98],[66,98],[67,68,98],[69,70,98],[70,98],[70,71,72,87,97,98],[70,71,72,87,98],[98,102],[73,78,87,97,98],[70,71,73,74,78,87,94,97,98],[73,75,87,94,97,98],[55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104],[70,76,98],[77,97,98],[67,70,78,87,98],[79,98],[80,98],[58,81,98],[82,96,98,102],[83,98],[84,98],[70,85,98],[85,86,98,100],[70,87,88,89,98],[87,89,98],[87,88,98],[90,98],[91,98],[70,92,93,98],[92,93,98],[64,78,87,94,98],[95,98],[78,96,98],[59,73,84,97,98],[64,98],[87,98,99],[98,100],[98,101],[59,64,70,72,81,87,97,98,100,102],[87,98,103],[60,98,105],[98,144],[70,87,98,105],[73,87,98,105],[98,122,125],[98,122,125,126,127],[98,124],[98,121,128],[98,123],[54,98,107,108],[54,98,109],[109]],"referencedMap":[[113,1],[111,2],[107,3],[106,2],[116,4],[112,1],[114,5],[115,1],[117,6],[118,2],[119,7],[120,8],[130,9],[131,2],[132,2],[133,2],[134,2],[136,2],[137,10],[55,11],[56,11],[58,12],[59,13],[60,14],[61,15],[62,16],[63,17],[64,18],[65,19],[66,20],[67,21],[68,21],[69,22],[70,23],[71,24],[72,25],[57,26],[104,2],[73,27],[74,28],[75,29],[105,30],[76,31],[77,32],[78,33],[79,34],[80,35],[81,36],[82,37],[83,38],[84,39],[85,40],[86,41],[87,42],[89,43],[88,44],[90,45],[91,46],[92,47],[93,48],[94,49],[95,50],[96,51],[97,52],[98,53],[99,54],[100,55],[101,56],[102,57],[103,58],[138,2],[139,2],[140,2],[141,59],[142,2],[143,2],[144,2],[145,60],[146,61],[121,2],[135,62],[122,2],[126,63],[128,64],[127,63],[125,65],[129,66],[124,67],[123,2],[54,2],[11,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[33,2],[34,2],[35,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[8,2],[47,2],[44,2],[45,2],[46,2],[48,2],[9,2],[49,2],[50,2],[51,2],[52,2],[1,2],[10,2],[53,2],[109,68],[108,69],[110,69]],"exportedModulesMap":[[113,1],[111,2],[107,3],[106,2],[116,4],[112,1],[114,5],[115,1],[117,6],[118,2],[119,7],[120,8],[130,9],[131,2],[132,2],[133,2],[134,2],[136,2],[137,10],[55,11],[56,11],[58,12],[59,13],[60,14],[61,15],[62,16],[63,17],[64,18],[65,19],[66,20],[67,21],[68,21],[69,22],[70,23],[71,24],[72,25],[57,26],[104,2],[73,27],[74,28],[75,29],[105,30],[76,31],[77,32],[78,33],[79,34],[80,35],[81,36],[82,37],[83,38],[84,39],[85,40],[86,41],[87,42],[89,43],[88,44],[90,45],[91,46],[92,47],[93,48],[94,49],[95,50],[96,51],[97,52],[98,53],[99,54],[100,55],[101,56],[102,57],[103,58],[138,2],[139,2],[140,2],[141,59],[142,2],[143,2],[144,2],[145,60],[146,61],[121,2],[135,62],[122,2],[126,63],[128,64],[127,63],[125,65],[129,66],[124,67],[123,2],[54,2],[11,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[33,2],[34,2],[35,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[8,2],[47,2],[44,2],[45,2],[46,2],[48,2],[9,2],[49,2],[50,2],[51,2],[52,2],[1,2],[10,2],[53,2],[108,70],[110,69]],"semanticDiagnosticsPerFile":[113,111,107,106,116,112,114,115,117,118,119,120,130,131,132,133,134,136,137,55,56,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,57,104,73,74,75,105,76,77,78,79,80,81,82,83,84,85,86,87,89,88,90,91,92,93,94,95,96,97,98,99,100,101,102,103,138,139,140,141,142,143,144,145,146,121,135,122,126,128,127,125,129,124,123,54,11,13,12,2,14,15,16,17,18,19,20,21,3,4,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,37,42,43,38,39,40,41,8,47,44,45,46,48,9,49,50,51,52,1,10,53,109,108,110]},"version":"4.7.2"}
|