@saehrimnir/druidjs / PaCMAP
Class: PaCMAP<T, P>
Defined in: dimred/PaCMAP.js:50
Pairwise Controlled Manifold Approximation Projection (PaCMAP)
A dimensionality reduction technique that uses three types of point pairs — nearest neighbor (NN), mid-near (MN), and further (FP) pairs — with a dynamic three-phase weight schedule and Adam optimization to preserve both local and global structure. Neighbours are scaled by a local density estimate before selection, which is what separates the NN set from a plain KNN graph.
Template
T
Template
P
Widened by LocalMAP, which adds a parameter.
See
Example
import * as druid from "@saehrimnir/druidjs";
const X = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]];
const pacmap = new druid.PaCMAP(X, {
n_neighbors: 10,
MN_ratio: 0.5,
FP_ratio: 2.0,
seed: 42
});
const Y = pacmap.transform(); // 450 iterations (default)
// [[x1, y1], [x2, y2], [x3, y3]]Extends
DR
Extended by
Type Parameters
| Type Parameter | Default type | Description |
|---|---|---|
T extends InputType | - | |
P extends ParametersPaCMAP | ParametersPaCMAP | Widened by LocalMAP, which adds a parameter. |
Constructors
Constructor
new PaCMAP<T, P>(X: T, parameters?: Partial<P>): PaCMAP<T, P>;Defined in: dimred/PaCMAP.js:55
Parameters
| Parameter | Type | Description |
|---|---|---|
X | T | The high-dimensional data. |
parameters? | Partial<P> | Object containing parameterization of the DR method. |
Returns
PaCMAP<T, P>
Overrides
DR.constructorProperties
| Property | Type | Inherited from | Defined in |
|---|---|---|---|
__input | T | DR.__input | dimred/DR.js:46 |
_adam_m | Float64Array<ArrayBuffer> | undefined | - | dimred/PaCMAP.js:528 |
_adam_t | any | - | dimred/PaCMAP.js:452 |
_adam_v | Float64Array<ArrayBuffer> | undefined | - | dimred/PaCMAP.js:529 |
_D | number | DR._D | dimred/DR.js:28 |
_fp_pairs | Int32Array<ArrayBufferLike> | undefined | - | dimred/PaCMAP.js:525 |
_grad | Float64Array<ArrayBuffer> | undefined | - | dimred/PaCMAP.js:531 |
_is_initialized | boolean | DR._is_initialized | dimred/DR.js:34 |
_iter | number | - | dimred/PaCMAP.js:79 |
_mn_pairs | Int32Array<ArrayBufferLike> | undefined | - | dimred/PaCMAP.js:524 |
_N | number | DR._N | dimred/DR.js:30 |
_nn_pairs | Int32Array<ArrayBufferLike> | undefined | - | dimred/PaCMAP.js:520 |
_parameters | P | DR._parameters | dimred/DR.js:49 |
_randomizer | Randomizer | DR._randomizer | dimred/DR.js:32 |
_type | "array" | "matrix" | "typed" | DR._type | dimred/DR.js:54 |
_X_knn | Matrix | undefined | - | dimred/PaCMAP.js:511 |
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
[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, P>;Defined in: dimred/DR.js:210
If the respective DR method has an init function, call it before transform.
Returns
DR<T, P>
Inherited from
DR.check_initgenerator()
generator(iterations?: number): Generator<T, T, void>;Defined in: dimred/PaCMAP.js:605
Parameters
| Parameter | Type | Description |
|---|---|---|
iterations? | number | Total number of iterations. Defaults to sum of num_iters. |
Returns
Generator<T, T, void>
Overrides
DR.generatorinit()
init(): PaCMAP<T, P>;Defined in: dimred/PaCMAP.js:474
Initializes PaCMAP: preprocessing, PCA embedding, NN, MN and FP pairs, and Adam state.
Returns
PaCMAP<T, P>
Overrides
DR.initnext()
next(): Matrix;Defined in: dimred/PaCMAP.js:570
Performs one optimization step.
Returns
parameter()
Call Signature
parameter(): P;Defined in: dimred/DR.js:82
Get all Parameters.
Returns
P
Inherited from
DR.parameterCall Signature
parameter<K>(name: K): P[K];Defined in: dimred/DR.js:88
Get value of given parameter.
Type Parameters
| Type Parameter | Description |
|---|---|
K extends string | number | symbol |
Parameters
| Parameter | Type | Description |
|---|---|---|
name | K | Name of the parameter. |
Returns
P[K]
Inherited from
DR.parameterCall Signature
parameter<K>(name: K, value: P[K]): PaCMAP<T, P>;Defined in: dimred/DR.js:95
Set value of given parameter.
Type Parameters
| Type Parameter | Description |
|---|---|
K extends string | number | symbol |
Parameters
| Parameter | Type | Description |
|---|---|---|
name | K | Name of the parameter. |
value | P[K] | Value of the parameter to set. |
Returns
PaCMAP<T, P>
Inherited from
DR.parameterrelease()
release(): PaCMAP<T, P>;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
PaCMAP<T, P>
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/PaCMAP.js:591
Parameters
| Parameter | Type | Description |
|---|---|---|
iterations? | number | Total number of iterations. Defaults to sum of num_iters. |
Returns
T
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<ParametersPaCMAP>): Generator<T, T, void>;Defined in: dimred/PaCMAP.js:633
Type Parameters
| Type Parameter | Description |
|---|---|
T extends InputType |
Parameters
| Parameter | Type | Description |
|---|---|---|
X | T | - |
parameters? | Partial<ParametersPaCMAP> | - |
Returns
Generator<T, T, void>
Overrides
DR.generatortransform()
static transform<T>(X: T, parameters?: Partial<ParametersPaCMAP>): T;Defined in: dimred/PaCMAP.js:622
Type Parameters
| Type Parameter | Description |
|---|---|
T extends InputType |
Parameters
| Parameter | Type | Description |
|---|---|---|
X | T | - |
parameters? | Partial<ParametersPaCMAP> | - |
Returns
T
Overrides
DR.transformtransform_async()
static transform_async<T>(X: T, parameters?: Partial<ParametersPaCMAP>): Promise<T>;Defined in: dimred/PaCMAP.js:645
Type Parameters
| Type Parameter | Description |
|---|---|
T extends InputType |
Parameters
| Parameter | Type | Description |
|---|---|---|
X | T | - |
parameters? | Partial<ParametersPaCMAP> | - |
Returns
Promise<T>
Overrides
DR.transform_async