Skip to content

saehm/DruidJS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a8c3d97 · Aug 11, 2023
Dec 29, 2021
Aug 11, 2023
Aug 11, 2023
Aug 11, 2023
Jul 25, 2023
Aug 23, 2020
Aug 23, 2020
Feb 21, 2022
Dec 29, 2021
Mar 24, 2021
Dec 29, 2021
Dec 29, 2021
Jul 25, 2023
Aug 11, 2023
Jul 25, 2023
Aug 11, 2023
Dec 29, 2021
Dec 29, 2021

Repository files navigation

DruidJS — A JavaScript Library for Dimensionality Reduction.

DruidJS is a JavaScript library for dimensionality reduction. With dimesionality reduction you can project high-dimensional data to a lower dimensionality while keeping method-specific properties of the data. DruidJS makes it easy to project a dataset with the implemented dimensionality reduction methods.


Resources

@inproceedings{cutura2020druid,
  title={{DRUIDJS — A JavaScript Library for Dimensionality Reduction}},
  author={Cutura, Rene and Kralj, Christoph and Sedlmair, Michael},
  booktitle={2020 IEEE Visualization Conference (VIS)},
  pages={111--115},
  year={2020},
  organization={IEEE}
}

Installation

If you use npm, install with npm install @saehrimnir/druidjs, and use it with

import * as druid from "@saehrimnir/druidjs";

Otherwise download the files here, or use for instance unpkg this way:

<script src="https://unpkg.com/@saehrimnir/druidjs"></script>

Matrix

DruidJS uses internally the Matrix class for storing data. You can use it by creating a druid.Matrix object for instance with the function from, in example:

    import * as druid from '@saehrimnir/druidjs';

    let data = [[...], [...], ...];
    let matrix = druid.Matrix.from(data);

You can create a druid.Matrix object programmatically by:

    let fn = (row, col) => row == col ? 1 : 0;
    let matrix = new druid.Matrix(rows, columns, fn);

If rows == columns, then matrix would be a identity matrix. A shortcut for a identity matrix is:

    let matrix = new druid.Matrix(rows, columns, "I");
    // or
    let matrix = new druid.Matrix(rows, columnbs, "identity");

There are more shortcuts for creating matrices:

    let matrix = new druid.Matrix(3, 3, "zeros"); // matrix would be a 3x3 matrix with zeroes
    let matrix = new druid.Matrix(3, 3, "center"); // matrix would be a 3x3 center matrix;
    let number = 12;
    let matrix = new druid.Matrix(3, 3, number); // matrix would b a 3x3 matrix filled with 'number'

If you want to use a druid.Matrix object, for instance, with d3, you can use either the to2dArray property, the iterate_rows generator function, or just use the druid.Matrix object as an iterable (works with d3 since version 6).

    let data = await d3.csv("data.csv");
    let matrix = druid.Matrix.from(data);
    d3.selectAll("datapoints").data(matrix.to2dArray)//...
    d3.selectAll("datapoints").data(matrix.iterate_rows())//...
    d3.selectAll("datapoints").data(matrix)//...

DR methods

Transform

Example

Generator

Example

TopoMap Example

Example ...