@saehrimnir/druidjs / SQDMDS
Class: SQDMDS<T>
Defined in: dimred/SQDMDS.js:22
SQuadMDS (Stochastic Quartet MDS)
A lean Stochastic Quartet MDS improving global structure preservation in neighbor embedding like t-SNE and UMAP.
Template
T
Extends
DR
Type Parameters
| Type Parameter | Description |
|---|---|
T extends InputType |
Constructors
Constructor
new SQDMDS<T>(X: T, parameters?: Partial<ParametersSQDMDS>): SQDMDS<T>;Defined in: dimred/SQDMDS.js:36
SQuadMDS: a lean Stochastic Quartet MDS improving global structure preservation in neighbor embedding like t-SNE and UMAP.
Parameters
| Parameter | Type | Description |
|---|---|---|
X | T | - |
parameters? | Partial<ParametersSQDMDS> | - |
Returns
SQDMDS<T>
See
https://arxiv.org/pdf/2202.12087.pdf
Overrides
DR.constructorProperties
| Property | Type | Inherited from | Defined in |
|---|---|---|---|
__input | T | DR.__input | dimred/DR.js:46 |
_add | | ((...summands: Float64Array<ArrayBufferLike>[]) => Float64Array<ArrayBufferLike>) | undefined | - | dimred/SQDMDS.js:60 |
_D | number | DR._D | dimred/DR.js:28 |
_decay_start | number | undefined | - | dimred/SQDMDS.js:106 |
_distance_exaggeration | boolean | undefined | - | dimred/SQDMDS.js:155 |
_flat_quartets | Uint32Array<ArrayBufferLike> | undefined | - | dimred/SQDMDS.js:74 |
_grads | Matrix | undefined | - | dimred/SQDMDS.js:69 |
_HD_metric | | ((i: number, j: number, X: Matrix) => number) | undefined | - | dimred/SQDMDS.js:83 |
_HD_metric_exaggeration | | ((i: number, j: number, X: Matrix) => number) | undefined | - | dimred/SQDMDS.js:85 |
_indices | number[] | undefined | - | dimred/SQDMDS.js:70 |
_is_initialized | boolean | DR._is_initialized | dimred/DR.js:34 |
_LR | number | undefined | - | dimred/SQDMDS.js:65 |
_LR_init | number | undefined | - | dimred/SQDMDS.js:64 |
_minus | | ((a: Float64Array<ArrayBufferLike>, b: Float64Array<ArrayBufferLike>) => Float64Array<ArrayBufferLike>) | undefined | - | dimred/SQDMDS.js:62 |
_momentums | Matrix | undefined | - | dimred/SQDMDS.js:68 |
_mult | | ((a: Float64Array<ArrayBufferLike>, v: number) => Float64Array<ArrayBufferLike>) | undefined | - | dimred/SQDMDS.js:63 |
_N | number | DR._N | dimred/DR.js:30 |
_offset | number | undefined | - | dimred/SQDMDS.js:67 |
_parameters | ParametersSQDMDS | DR._parameters | dimred/DR.js:49 |
_randomizer | Randomizer | DR._randomizer | dimred/DR.js:32 |
_sub_div | | ((x: Float64Array<ArrayBufferLike>, y: Float64Array<ArrayBufferLike>, div: number) => Float64Array<ArrayBufferLike>) | undefined | - | dimred/SQDMDS.js:61 |
_type | "array" | "matrix" | "typed" | DR._type | dimred/DR.js:54 |
X | Matrix | DR.X | dimred/DR.js:56 |
Y | Matrix | DR.Y | dimred/DR.js:58 |
Accessors
projection
Get Signature
get projection(): T;Defined in: dimred/DR.js:219
Returns
T
The projection in the type of input X.
Inherited from
DR.projectionMethods
__add()
__add(d: number): (...summands: Float64Array<ArrayBufferLike>[]) => Float64Array<ArrayBufferLike>;Defined in: dimred/SQDMDS.js:477
Inline!
Parameters
| Parameter | Type | Description |
|---|---|---|
d | number | - |
Returns
(...summands: Float64Array<ArrayBufferLike>[]) => Float64Array<ArrayBufferLike>
__minus()
__minus(d: number): (a: Float64Array<ArrayBufferLike>, b: Float64Array<ArrayBufferLike>) => Float64Array<ArrayBufferLike>;Defined in: dimred/SQDMDS.js:463
Inline!
Parameters
| Parameter | Type | Description |
|---|---|---|
d | number | - |
Returns
(a: Float64Array<ArrayBufferLike>, b: Float64Array<ArrayBufferLike>) => Float64Array<ArrayBufferLike>
__mult()
__mult(d: number): (a: Float64Array<ArrayBufferLike>, v: number) => Float64Array<ArrayBufferLike>;Defined in: dimred/SQDMDS.js:496
Inline!
Parameters
| Parameter | Type | Description |
|---|---|---|
d | number | - |
Returns
(a: Float64Array<ArrayBufferLike>, v: number) => Float64Array<ArrayBufferLike>
__sub_div()
__sub_div(d: number): (x: Float64Array<ArrayBufferLike>, y: Float64Array<ArrayBufferLike>, div: number) => Float64Array<ArrayBufferLike>;Defined in: dimred/SQDMDS.js:510
Creates a new array (x - y) / div.
Parameters
| Parameter | Type | Description |
|---|---|---|
d | number | - |
Returns
(x: Float64Array<ArrayBufferLike>, y: Float64Array<ArrayBufferLike>, div: number) => Float64Array<ArrayBufferLike>
_fill_MDS_grads()
_fill_MDS_grads(
Y: Matrix,
grads: Matrix,
exaggeration?: boolean,
zero_grad?: boolean,
quartets?: Uint32Array<ArrayBufferLike>[]): Matrix;Defined in: dimred/SQDMDS.js:258
Computes the gradients.
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
Y | Matrix | undefined | The Projection. |
grads | Matrix | undefined | The gradients. |
exaggeration? | boolean | false | Whether or not to use early exaggeration. Default is false |
zero_grad? | boolean | true | Whether or not to reset the gradient in the beginning. Default is true |
quartets? | Uint32Array<ArrayBufferLike>[] | ... | Quartets to accumulate over. Pass the ones already drawn for this iteration; omitting them draws a fresh set, which advances the seeded randomizer. |
Returns
The gradients.
[dispose]()
dispose: void;Defined in: dimred/DR.js:320
Alias of release for the using declaration, so a hand-driven run frees its buffers when the block exits. Note that transform and a completed or break-ed generator() already release on their own — this only matters for a generator abandoned part way.
using tsne = new TSNE(X, { d: 2 });
const steps = tsne.generator(500);
steps.next(); // buffers released when the enclosing block exitsReturns
void
Inherited from
DR.[dispose]check_init()
check_init(): DR<T, ParametersSQDMDS>;Defined in: dimred/DR.js:210
If the respective DR method has an init function, call it before transform.
Returns
DR<T, ParametersSQDMDS>
Inherited from
DR.check_initgenerator()
generator(iterations?: number): Generator<T, T, void>;Defined in: dimred/SQDMDS.js:123
Computes the projection.
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
iterations? | number | 500 | Number of iterations. Default is 500 |
Returns
Generator<T, T, void>
The intermediate steps of the projection.
Overrides
DR.generatorinit()
abstract init(): void;Defined in: dimred/SQDMDS.js:55
Returns
void
Overrides
DR.initparameter()
Call Signature
parameter(): ParametersSQDMDS;Defined in: dimred/DR.js:82
Get all Parameters.
Returns
Inherited from
DR.parameterCall Signature
parameter<K>(name: K): ParametersSQDMDS[K];Defined in: dimred/DR.js:88
Get value of given parameter.
Type Parameters
| Type Parameter | Description |
|---|---|
K extends keyof ParametersSQDMDS |
Parameters
| Parameter | Type | Description |
|---|---|---|
name | K | Name of the parameter. |
Returns
Inherited from
DR.parameterCall Signature
parameter<K>(name: K, value: ParametersSQDMDS[K]): SQDMDS<T>;Defined in: dimred/DR.js:95
Set value of given parameter.
Type Parameters
| Type Parameter | Description |
|---|---|
K extends keyof ParametersSQDMDS |
Parameters
| Parameter | Type | Description |
|---|---|---|
name | K | Name of the parameter. |
value | ParametersSQDMDS[K] | Value of the parameter to set. |
Returns
SQDMDS<T>
Inherited from
DR.parameterrelease()
release(): SQDMDS<T>;Defined in: dimred/DR.js:302
Hands back the WASM buffers this instance is holding.
Only needed after driving generator() by hand and stopping early — a plain transform(), or a for…of over generator() (including one you break), already releases when it ends. It frees only this method's buffers, never another running instance's, and the next run simply reallocates, so it is safe to call at any time, more than once, and while other instances are mid-run.
Returns
SQDMDS<T>
Example
const tsne = new TSNE(X, { d: 2 });
const steps = tsne.generator(500);
steps.next();
tsne.release(); // stop early and give the buffers backInherited from
DR.releasetransform()
transform(iterations?: number): T;Defined in: dimred/SQDMDS.js:103
Computes the projection.
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
iterations? | number | 500 | Number of iterations. Default is 500 |
Returns
T
The projection.
Overrides
DR.transformtransform_async()
transform_async(...args: unknown[]): Promise<T>;Defined in: dimred/DR.js:241
Computes the projection.
Parameters
| Parameter | Type | Description |
|---|---|---|
...args | unknown[] | Arguments the transform method of the respective DR method takes. |
Returns
Promise<T>
The dimensionality reduced dataset.
Inherited from
DR.transform_asyncgenerator()
static generator<T>(X: T, parameters?: Partial<ParametersSQDMDS>): Generator<T, T, void>;Defined in: dimred/SQDMDS.js:533
Type Parameters
| Type Parameter | Description |
|---|---|
T extends InputType |
Parameters
| Parameter | Type | Description |
|---|---|---|
X | T | - |
parameters? | Partial<ParametersSQDMDS> | - |
Returns
Generator<T, T, void>
Overrides
DR.generatortransform()
static transform<T>(X: T, parameters?: Partial<ParametersSQDMDS>): T;Defined in: dimred/SQDMDS.js:522
Type Parameters
| Type Parameter | Description |
|---|---|
T extends InputType |
Parameters
| Parameter | Type | Description |
|---|---|---|
X | T | - |
parameters? | Partial<ParametersSQDMDS> | - |
Returns
T
Overrides
DR.transformtransform_async()
static transform_async<T>(X: T, parameters?: Partial<ParametersSQDMDS>): Promise<T>;Defined in: dimred/SQDMDS.js:545
Type Parameters
| Type Parameter | Description |
|---|---|
T extends InputType |
Parameters
| Parameter | Type | Description |
|---|---|---|
X | T | - |
parameters? | Partial<ParametersSQDMDS> | - |
Returns
Promise<T>
Overrides
DR.transform_async