@datagrok-libraries/statistics 1.7.0 → 1.9.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.
- package/package.json +9 -6
- package/src/fit/fit-curve.d.ts +25 -66
- package/src/fit/fit-curve.d.ts.map +1 -1
- package/src/fit/fit-curve.js +16 -381
- package/src/fit/fit-data.d.ts +2 -1
- package/src/fit/fit-data.d.ts.map +1 -1
- package/src/fit/fit-data.js +3 -2
- package/src/fit/new-fit-API.d.ts +37 -7
- package/src/fit/new-fit-API.d.ts.map +1 -1
- package/src/fit/new-fit-API.js +279 -9
- package/src/mpo/mpo-line-editor.d.ts +10 -0
- package/src/mpo/mpo-line-editor.d.ts.map +1 -0
- package/src/mpo/mpo-line-editor.js +258 -0
- package/src/mpo/mpo-profile-editor.d.ts +13 -0
- package/src/mpo/mpo-profile-editor.d.ts.map +1 -0
- package/src/mpo/mpo-profile-editor.js +79 -0
- package/src/mpo/mpo.d.ts +19 -0
- package/src/mpo/mpo.d.ts.map +1 -0
- package/src/mpo/mpo.js +52 -0
package/package.json
CHANGED
|
@@ -4,24 +4,27 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"friendlyName": "statistics",
|
|
7
|
-
"version": "1.
|
|
7
|
+
"version": "1.9.0",
|
|
8
8
|
"description": "Statistics utilities",
|
|
9
9
|
"author": {
|
|
10
10
|
"name": "Dmytro Kovalyov",
|
|
11
11
|
"email": "dkovalyov@datagrok.ai"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@datagrok-libraries/utils": "^4.
|
|
14
|
+
"@datagrok-libraries/utils": "^4.5.7",
|
|
15
|
+
"@types/seedrandom": "^3.0.8",
|
|
15
16
|
"cash-dom": "^8.0.0",
|
|
16
17
|
"datagrok-api": "^1.20.0",
|
|
17
18
|
"dayjs": "^1.11.7",
|
|
18
19
|
"jstat": "^1.9.6",
|
|
19
|
-
"
|
|
20
|
-
"
|
|
20
|
+
"konva": "^9.3.20",
|
|
21
|
+
"rxjs": "^6.5.5",
|
|
22
|
+
"seedrandom": "^3.0.5"
|
|
21
23
|
},
|
|
22
24
|
"devDependencies": {
|
|
23
25
|
"@typescript-eslint/eslint-plugin": "^8.8.1",
|
|
24
26
|
"@typescript-eslint/parser": "^8.8.1",
|
|
27
|
+
"datagrok-tools": "^4.14.20",
|
|
25
28
|
"eslint": "^8.57.1",
|
|
26
29
|
"eslint-config-google": "^0.14.0",
|
|
27
30
|
"ts-loader": "^9.2.6",
|
|
@@ -35,9 +38,9 @@
|
|
|
35
38
|
"debug-statistics": "grok publish",
|
|
36
39
|
"release-statistics": "grok publish --release",
|
|
37
40
|
"build-statistics": "tsc",
|
|
38
|
-
"build": "tsc",
|
|
41
|
+
"build": "grok check --soft && tsc",
|
|
39
42
|
"lint": "eslint src --ext .ts",
|
|
40
43
|
"lint-fix": "eslint src --ext .ts --fix",
|
|
41
44
|
"build-all": "npm --prefix ./../../js-api run build && npm --prefix ./../../libraries/utils run build && npm run build"
|
|
42
45
|
}
|
|
43
|
-
}
|
|
46
|
+
}
|
package/src/fit/fit-curve.d.ts
CHANGED
|
@@ -38,6 +38,28 @@ export type FitInvertedFunctions = {
|
|
|
38
38
|
invertedTop: (y: number) => number;
|
|
39
39
|
invertedBottom: (y: number) => number;
|
|
40
40
|
};
|
|
41
|
+
/**
|
|
42
|
+
* Datagrok curve fitting
|
|
43
|
+
*
|
|
44
|
+
* - Fitting: computing parameters of the specified function to best fit the data
|
|
45
|
+
* - Uses BFGS optimization algorithm (multi-threading for performance).
|
|
46
|
+
* For dose-response curves, we are typically fitting the sigmoid function
|
|
47
|
+
* - Ability to dynamically register custom fitting functions
|
|
48
|
+
* - Automatic fit function determination
|
|
49
|
+
* - Caching of custom fitting functions
|
|
50
|
+
* - Ability to get fitting performance characteristics (r-squared, classification, etc)
|
|
51
|
+
* - Deep integration with the Datagrok grid
|
|
52
|
+
* - Either fitting on the fly, or using the supplied function + parameters
|
|
53
|
+
* - Multiple series in one cell
|
|
54
|
+
* - Candlesticks, confidence intervals, and droplines drawing
|
|
55
|
+
* - Ability to define chart, marker, or fitting options (such as fit function or marker color)
|
|
56
|
+
* on the column level, with the ability to override it on a grid cell or point level
|
|
57
|
+
* - Clicking a point in a chart within a grid makes it an outlier -> curve is re-fitted on the fly
|
|
58
|
+
* - Ability to specify a chart as "reference" so that it is shown on every other chart for comparison
|
|
59
|
+
* - Ability to overlay curves from multiple grid cells (special viewer)
|
|
60
|
+
* - Work with series stored in multiple formats (binary for performance, json for flexibility, etc)
|
|
61
|
+
*/
|
|
62
|
+
export declare const DROPLINES: string[];
|
|
41
63
|
export type FitMarkerType = 'asterisk' | 'circle' | 'cross border' | 'diamond' | 'square' | 'star' | 'triangle bottom' | 'triangle left' | 'triangle right' | 'triangle top';
|
|
42
64
|
export type FitOutlierMarkerType = 'asterisk' | 'circle' | 'cross border' | 'diamond' | 'outlier' | 'square' | 'star' | 'triangle bottom' | 'triangle left' | 'triangle right' | 'triangle top';
|
|
43
65
|
export type FitLineStyle = 'solid' | 'dotted' | 'dashed' | 'dashdotted';
|
|
@@ -121,84 +143,20 @@ export interface IFitSeriesOptions {
|
|
|
121
143
|
droplines?: string[];
|
|
122
144
|
columnName?: string;
|
|
123
145
|
}
|
|
124
|
-
/** Class for the fit functions */
|
|
125
|
-
export declare abstract class FitFunction {
|
|
126
|
-
abstract get name(): string;
|
|
127
|
-
abstract get parameterNames(): string[];
|
|
128
|
-
abstract y(params: Float32Array, x: number): number;
|
|
129
|
-
abstract getInitialParameters(x: number[], y: number[]): Float32Array;
|
|
130
|
-
}
|
|
131
|
-
/** Class that implements the linear function */
|
|
132
|
-
export declare class LinearFunction extends FitFunction {
|
|
133
|
-
get name(): string;
|
|
134
|
-
get parameterNames(): string[];
|
|
135
|
-
y(params: Float32Array, x: number): number;
|
|
136
|
-
getInitialParameters(x: number[], y: number[]): Float32Array;
|
|
137
|
-
}
|
|
138
|
-
/** Class that implements the sigmoid function */
|
|
139
|
-
export declare class SigmoidFunction extends FitFunction {
|
|
140
|
-
get name(): string;
|
|
141
|
-
get parameterNames(): string[];
|
|
142
|
-
y(params: Float32Array, x: number): number;
|
|
143
|
-
getInitialParameters(x: number[], y: number[]): Float32Array;
|
|
144
|
-
}
|
|
145
|
-
/** Class that implements the linear logarithmic function */
|
|
146
|
-
export declare class LogLinearFunction extends FitFunction {
|
|
147
|
-
get name(): string;
|
|
148
|
-
get parameterNames(): string[];
|
|
149
|
-
y(params: Float32Array, x: number): number;
|
|
150
|
-
getInitialParameters(x: number[], y: number[]): Float32Array;
|
|
151
|
-
}
|
|
152
|
-
/** Class that implements the exponential function */
|
|
153
|
-
export declare class ExponentialFunction extends FitFunction {
|
|
154
|
-
get name(): string;
|
|
155
|
-
get parameterNames(): string[];
|
|
156
|
-
y(params: Float32Array, x: number): number;
|
|
157
|
-
getInitialParameters(x: number[], y: number[]): Float32Array;
|
|
158
|
-
}
|
|
159
|
-
/** Class that implements the Four Parameter Logistic Regression function */
|
|
160
|
-
export declare class FourPLRegressionFunction extends FitFunction {
|
|
161
|
-
get name(): string;
|
|
162
|
-
get parameterNames(): string[];
|
|
163
|
-
y(params: Float32Array, x: number): number;
|
|
164
|
-
getInitialParameters(x: number[], y: number[]): Float32Array;
|
|
165
|
-
}
|
|
166
|
-
/** Class that implements user JS functions */
|
|
167
|
-
export declare class JsFunction extends FitFunction {
|
|
168
|
-
private _name;
|
|
169
|
-
private _parameterNames;
|
|
170
|
-
constructor(name: string, yFunc: (params: Float32Array, x: number) => number, getInitParamsFunc: (x: number[], y: number[]) => Float32Array, parameterNames: string[]);
|
|
171
|
-
get name(): string;
|
|
172
|
-
get parameterNames(): string[];
|
|
173
|
-
y(params: Float32Array, x: number): number;
|
|
174
|
-
getInitialParameters(x: number[], y: number[]): Float32Array;
|
|
175
|
-
}
|
|
176
|
-
export declare const fitFunctions: {
|
|
177
|
-
[index: string]: FitFunction;
|
|
178
|
-
};
|
|
179
146
|
/** Properties that describe {@link FitStatistics}. Useful for editing, initialization, transformations, etc. */
|
|
180
147
|
export declare const statisticsProperties: DG.Property[];
|
|
181
148
|
/** Properties that describe {@link IFitChartOptions}. Useful for editing, initialization, transformations, etc. */
|
|
182
149
|
export declare const fitChartDataProperties: DG.Property[];
|
|
183
|
-
/** Properties that describe {@link IFitSeriesOptions}. Useful for editing, initialization, transformations, etc. */
|
|
184
|
-
export declare const fitSeriesProperties: DG.Property[];
|
|
185
150
|
export declare const FIT_FUNCTION_SIGMOID = "sigmoid";
|
|
186
151
|
export declare const FIT_FUNCTION_LINEAR = "linear";
|
|
187
152
|
export declare const FIT_FUNCTION_LOG_LINEAR = "log-linear";
|
|
188
153
|
export declare const FIT_FUNCTION_EXPONENTIAL = "exponential";
|
|
189
154
|
export declare const FIT_FUNCTION_4PL_REGRESSION = "4pl-regression";
|
|
155
|
+
export declare const FIT_FUNCTION_4PL_DOSE_RESPONSE = "4pl-dose-response";
|
|
156
|
+
export declare const FIT_JS_FUNCTION = "js-function";
|
|
190
157
|
export declare const FIT_STATS_RSQUARED = "rSquared";
|
|
191
158
|
export declare const FIT_STATS_AUC = "auc";
|
|
192
|
-
export declare function getOrCreateFitFunction(seriesFitFunc: string | IFitFunctionDescription): FitFunction;
|
|
193
|
-
export declare function fitData(data: {
|
|
194
|
-
x: number[];
|
|
195
|
-
y: number[];
|
|
196
|
-
}, fitFunction: FitFunction, errorModel?: FitErrorModelType, parameterBounds?: FitParamBounds[]): FitCurve;
|
|
197
159
|
export declare function getFittedCurve(curveFunction: (params: Float32Array, x: number) => number, paramValues: Float32Array): (x: number) => number;
|
|
198
|
-
export declare function getCurveConfidenceIntervals(data: {
|
|
199
|
-
x: number[];
|
|
200
|
-
y: number[];
|
|
201
|
-
}, paramValues: Float32Array, curveFunction: (params: Float32Array, x: number) => number, confidenceLevel: number | undefined, errorModel: FitErrorModelType): FitConfidenceIntervals;
|
|
202
160
|
export declare function getStatistics(data: {
|
|
203
161
|
x: number[];
|
|
204
162
|
y: number[];
|
|
@@ -212,6 +170,7 @@ export declare function linear(params: Float32Array, x: number): number;
|
|
|
212
170
|
export declare function logLinear(params: Float32Array, x: number): number;
|
|
213
171
|
export declare function exponential(params: Float32Array, x: number): number;
|
|
214
172
|
export declare function fourPLRegression(params: Float32Array, x: number): number;
|
|
173
|
+
export declare function fourPLDoseResponse(params: Float32Array, x: number): number;
|
|
215
174
|
export declare function getAuc(fittedCurve: (x: number) => number, data: {
|
|
216
175
|
x: number[];
|
|
217
176
|
y: number[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fit-curve.d.ts","sourceRoot":"","sources":["fit-curve.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"fit-curve.d.ts","sourceRoot":"","sources":["fit-curve.ts"],"names":[],"mappings":"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"}
|