Core Concepts

VectorScope is built around a few key concepts that form the foundation of the tool.

Layers

A Layer is a collection of points, each with an n-dimensional vector. Layers are the fundamental data containers in VectorScope.

Layer
├── id: unique identifier
├── name: display name
├── dimensionality: number of dimensions (e.g., 30)
├── point_count: number of points
├── is_derived: true if created by a transformation
└── points: list of Point objects

There are two types of layers:

Source Layers (green in the graph editor)

Original data loaded from files or generated. These can have column configuration for tabular data.

Derived Layers (blue in the graph editor)

Created by applying a transformation to another layer. These inherit the point structure but have different vectors.

Points

A Point represents a single data item with:

Point
├── id: unique identifier (preserved across transformations)
├── vector: list of floats [x1, x2, ..., xn]
├── label: optional text label
├── metadata: dictionary of additional properties
└── is_virtual: true for computed points (barycenters, etc.)

Point IDs are stable across transformations, allowing you to track individual points through a pipeline.

Transformations

A Transformation is an operation that maps one layer to another, creating a derived layer:

Transformation
├── type: scaling | rotation | affine | linear
├── source_layer_id: the input layer
├── target_layer_id: the output layer (created automatically)
├── parameters: type-specific settings
└── is_invertible: whether the operation can be reversed

Built-in transformation types:

Scaling

Multiply all vectors by a scale factor. Useful for normalizing magnitude.

Parameters: {scale_factors: [1.5]}

Rotation

Rotate vectors in a 2D plane within the n-dimensional space.

Parameters: {angle: 0.785, dims: [0, 1]}

Affine

Apply an affine transformation (linear + translation).

Parameters: {matrix: [[...]], bias: [...]}

Linear

Apply a linear transformation (matrix multiplication only).

Parameters: {matrix: [[...]]}

Projections

A Projection reduces an n-dimensional layer to 2D (or 3D) coordinates for visualization:

Projection
├── type: pca | tsne | custom_axes
├── layer_id: the source layer
├── dimensions: usually 2
├── parameters: type-specific settings
└── random_seed: for reproducibility

Built-in projection types:

PCA (Principal Component Analysis)

Linear projection onto the directions of maximum variance.

Parameters: {components: [0, 1]} (which PCs to use for X and Y)

t-SNE (t-distributed Stochastic Neighbor Embedding)

Non-linear projection that preserves local structure.

Parameters: {perplexity: 30, n_iter: 1000}

Custom Axes (planned)

Define projection axes from point pairs or manually.

The Data Pipeline

VectorScope organizes data as a directed acyclic graph (DAG):

Source Layer ──> Transformation ──> Derived Layer
      │                                    │
      │                                    ▼
      ▼                              Projection ──> 2D View
Projection ──> 2D View

Multiple layers can feed into projections, and projections can be viewed in multiple viewports.

State Management

VectorScope maintains state at multiple levels:

Backend (Python)
  • In-memory data store for layers and points

  • Transform engine for applying transformations

  • Projection engine for computing coordinates

Frontend (React/Zustand)
  • Layers, projections, transformations metadata

  • Projected coordinates cache

  • Selection state (shared across viewports)

  • Viewport configuration

Persistence

Sessions can be saved to JSON + NPZ files and reloaded later.