Neo: Hierarchical Confusion Matrix Visualization

Overview

Neo: Hierarchical Confusion Matrix

npm version

The confusion matrix, a ubiquitous visualization for helping people evaluate machine learning models, is a tabular layout that compares predicted class labels against actual class labels over all data instances. Neo is a visual analytics system that enables practitioners to flexibly author and interact with hierarchical and multi-output confusion matrices, visualize derived metrics, renormalize confusions, and share matrix specifications.

This code accompanies the research paper:

Neo: Generalizing Confusion Matrix Visualization to Hierarchical and Multi-Output Labels
Jochen Görtler, Fred Hohman, Dominik Moritz, Kanit Wongsuphasawat, Donghao Ren, Rahul Nair, Marc Kirchner, Kayur Patel
ACM Conference on Human Factors in Computing Systems (CHI), 2022.
image Paper, image Live demo, image Video, image Video Preview, image Code

Documentation

You can embed our confusion matrix visualization into your own project. There are two ways to use it.

NPM

Install with npm install --save @apple/hierarchical-confusion-matrix or yarn add @apple/hierarchical-confusion-matrix.

Then you can import the module in your project

import confMat from "@apple/hierarchical-confusion-matrix";

const spec = {
    classes: ['root'],
}

const confusions = [
    {
        actual: ['root:a'],
        observed: ['root:a'],
        count: 1,
    },
    {
        actual: ['root:a'],
        observed: ['root:b'],
        count: 2,
    },
    {
        actual: ['root:b'],
        observed: ['root:a'],
        count: 3,
    },
    {
        actual: ['root:b'],
        observed: ['root:b'],
        count: 4,
    }
]

confMat.embed('matContainer', spec, confusions);

Embed the Compiled File

If you prefer to load the compiled JavaScript directly, you have to compile it. To do this, run yarn install and copy the public/confMat.js into your project. Here is a simple example of a small confusion matrix:

<!doctype html>
<html>
<head>
    <meta charset="utf8">
    <meta name="viewport" content="width=device-width">
    <title>Neo: Hierarchical Confusion Matrix</title>
</head>

<body>
    <div id="matContainer"></div>
    <script src="confMat.js"></script>
    <script>
        const spec = {
            classes: ['root'],
        }

        const confusions = [
            {
                actual: ['root:a'],
                observed: ['root:a'],
                count: 1,
            },
            {
                actual: ['root:a'],
                observed: ['root:b'],
                count: 2,
            },
            {
                actual: ['root:b'],
                observed: ['root:a'],
                count: 3,
            },
            {
                actual: ['root:b'],
                observed: ['root:b'],
                count: 4,
            }
        ]

        confMat.embed('matContainer', spec, confusions);
    </script>
</body>
</html>

Specification

You can find all the options that you can pass via the spec argument in src/specification.ts.

Loaders

The different loaders can be found in src/loaders, which include loading data from json, csv, vega, and a synthetic example synth for testing.

Confusion Data Format Examples

Example 1: Conventional Confusions

The confusions for data with actual labels of fruit:lemon that are incorrectly predicted as fruit:apple, of which there are count 1 of them.

{
    "actual": [
        "fruit:lemon"
    ],
    "observed": [
        "fruit:apple"
    ],
    "count": 1
}

Example 2: Hierarchical Confusions

The confusions for hierarchical data with actual labels of fruit:citrus:lemon that are incorrectly predicted as fruit:pome:apple, of which there are count 2 of them. Note : denotes hierarchies.

{
    "actual": [
        "fruit:citrus:lemon"
    ],
    "observed": [
        "fruit:pome:apple"
    ],
    "count": 2
}

Example 3: Multi-output Confusions

The confusions for multi-output data with actual labels of fruit:lemon,taste:sweet that are incorrectly predicted as fruit:apple,taste:sour, of which there are count 3 of them. Note , denotes multi-ouput labels.

{
    "actual": [
        "fruit:lemon",
        "taste:sweet"
    ],
    "observed": [
        "fruit:apple",
        "taste:sour"
    ],
    "count": 3
}

Example 4: Hierarchical and Multi-output Confusions

The confusions for hierarchical and multi-output data with actual labels of fruit:citrus:lemon,taste:sweet,ripeness:ripe that are incorrectly predicted as fruit:pome:apple,taste:sour,ripeness:not-ripe, of which there are count 4 of them.

{
    "actual": [
        "fruit:citrus:lemon",
        "taste:sweet",
        "ripeness:ripe"
    ],
    "observed": [
        "fruit:pome:apple",
        "taste:sour"
        "ripeness:not-ripe"
    ],
    "count": 4
}

See fruit.json for a complete example of confusions for a hierarchical fruit, taste, and ripeness classification model.

Development

Build:

yarn install
yarn build

Test:

yarn test

Start:

yarn start

Dev Server:

yarn dev

Lint & Fix:

yarn format

Contributing

When making contributions, refer to the CONTRIBUTING guidelines and read the CODE OF CONDUCT.

BibTeX

To cite our paper, please use:

@inproceedings{goertler2022neo,
  title={Neo: Generalizing Confusion Matrix Visualization to Hierarchical and Multi-Output Labels},
  author={Görtler, Jochen and Hohman, Fred and Moritz, Dominik and Wongsuphasawat, Kanit and Ren, Donghao and Nair, Rahul and Kirchner, Marc and Patel, Kayur},
  booktitle={Proceedings of the SIGCHI Conference on Human Factors in Computing Systems},
  year={2022},
  organization={ACM},
  doi={10.1145/3491102.3501823}
}

License

This code is released under the LICENSE terms.

Comments
  • NPM version bump

    NPM version bump

    Given the security issues with d3-color, and all of the dependabot version bumps, is it expected to have a new version of the package released on npm?

    opened by 23pointsNorth 1
  • chore(deps-dev): bump @types/node from 18.7.14 to 18.7.23

    chore(deps-dev): bump @types/node from 18.7.14 to 18.7.23

    Bumps @types/node from 18.7.14 to 18.7.23.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 1
  • chore(deps): bump d3-array and @types/d3-array

    chore(deps): bump d3-array and @types/d3-array

    Bumps d3-array and @types/d3-array. These dependencies needed to be updated together. Updates d3-array from 2.12.1 to 3.2.0

    Release notes

    Sourced from d3-array's releases.

    v3.2.0

    v3.1.6

    • Fix incorrect behavior of d3.bisector when given an asymmetric comparator. #249 #250

    v3.1.5

    v3.1.4

    • Fix off-by-one bin assignment due to rounding error in d3.bin. #247

    v3.1.3

    • Significantly improve the performance of d3.bin. #220
    • Tweak the implementation of d3.thresholdScott. a8429c4a55c45b71a7502033925cda342c1fb662

    v3.1.2

    • Fix the implementation of d3.thresholdScott. #246

    v3.1.1

    • d3.rank can now take a comparator in addition to an accessor. #237
    • d3.rank, d3.sort, d3.bisector, and d3.groupSort now require comparators to have exactly two arguments. #238

    v3.1.0

    v3.0.4

    • Don’t mangle InternMap or InternSet in the generated UMD bundle.

    v3.0.3

    v3.0.2

    • Fix d3.sort, d3.bisector, and related methods to handle undefined order. #227 #217
    • Avoid anonymous default exports (to assist hot module reload tools). #226
    • Update dependencies.

    v3.0.1

    • Update dependencies.
    • Make build reproducible.

    v3.0.0

    ... (truncated)

    Commits

    Updates @types/d3-array from 3.0.2 to 3.0.3

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 1
  • chore(deps): bump d3-array and @types/d3-array

    chore(deps): bump d3-array and @types/d3-array

    Bumps d3-array and @types/d3-array. These dependencies needed to be updated together. Updates d3-array from 2.12.1 to 3.1.6

    Release notes

    Sourced from d3-array's releases.

    v3.1.6

    • Fix incorrect behavior of d3.bisector when given an asymmetric comparator. #249 #250

    v3.1.5

    v3.1.4

    • Fix off-by-one bin assignment due to rounding error in d3.bin. #247

    v3.1.3

    • Significantly improve the performance of d3.bin. #220
    • Tweak the implementation of d3.thresholdScott. a8429c4a55c45b71a7502033925cda342c1fb662

    v3.1.2

    • Fix the implementation of d3.thresholdScott. #246

    v3.1.1

    • d3.rank can now take a comparator in addition to an accessor. #237
    • d3.rank, d3.sort, d3.bisector, and d3.groupSort now require comparators to have exactly two arguments. #238

    v3.1.0

    v3.0.4

    • Don’t mangle InternMap or InternSet in the generated UMD bundle.

    v3.0.3

    v3.0.2

    • Fix d3.sort, d3.bisector, and related methods to handle undefined order. #227 #217
    • Avoid anonymous default exports (to assist hot module reload tools). #226
    • Update dependencies.

    v3.0.1

    • Update dependencies.
    • Make build reproducible.

    v3.0.0

    This package now requires Node.js 12 or higher. For more, please read Sindre Sorhus’s FAQ.

    Commits

    Updates @types/d3-array from 3.0.2 to 3.0.3

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 1
  • chore(deps-dev): bump @rollup/plugin-typescript from 8.4.0 to 10.0.1

    chore(deps-dev): bump @rollup/plugin-typescript from 8.4.0 to 10.0.1

    Bumps @rollup/plugin-typescript from 8.4.0 to 10.0.1.

    Changelog

    Sourced from @​rollup/plugin-typescript's changelog.

    v10.0.1

    2022-11-28

    Bugfixes

    • fix: emit assets when watchMode is false. fixes #1354 (5c88274)

    v10.0.0

    2022-11-27

    Breaking Changes

    • fix: incorrect declarations directory (a5c90d1)

    v9.0.2

    2022-10-21

    Updates

    • chore: update rollup dependencies (3038271)

    v9.0.1

    2022-10-11

    Bugfixes

    • fix: fix ESM build #1311

    v9.0.0

    2022-10-10

    Breaking Changes

    • fix: prepare for Rollup 3 #1282

    v8.5.0

    2022-09-06

    Features

    • feat: support 4.7 nodenext (#1194)
    Commits
    • 3405922 chore(release): typescript v10.0.1
    • 5c88274 fix(typescript): emit assets when watchMode is false. fixes #1354
    • a2e582a chore(repo): enable consistent-type-imports for typescript files (#1325)
    • fd93b71 chore(release): typescript v10.0.0
    • a5c90d1 fix(typescript)!: incorrect declarations directory
    • 2f2ba1e chore(release): typescript v9.0.2
    • 3038271 chore(commonjs,yaml,wasm,virtual,url,typescript,sucrase,strip,run,replace,plu...
    • c909327 chore(release): typescript v9.0.1
    • dfd4de3 fix(typescript): fix ESM build (#1311)
    • bffcfb2 chore(release): typescript v9.0.0
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump svelte from 3.50.1 to 3.53.1

    chore(deps-dev): bump svelte from 3.50.1 to 3.53.1

    Bumps svelte from 3.50.1 to 3.53.1.

    Changelog

    Sourced from svelte's changelog.

    3.53.1

    • Fix exception in rel= attribute check with dynamic values (#7994)
    • Do not emit deprecation warnings for css compiler options for now (#8009)
    • Make compiler run in browser again (#8010)
    • Upgrade tslib (#8013)

    3.53.0

    • Check whether parentNode exists before removing child (#6037)
    • Upgrade various dependencies, notably css-tree to 2.2.1 (#7572, #7982)
    • Extend css compiler option with 'external' | 'injected' | 'none' settings and deprecate old true | false values (#7914)

    3.52.0

    • Throw compile-time error when attempting to update const variable (#4895)
    • Warn when using <a target="_blank"> without rel="noreferrer" (#6188)
    • Support style:foo|important modifier (#7365)
    • Fix hydration regression with {@html} and components in <svelte:head> (#7941)

    3.51.0

    • Add a11y warnings:
      • a11y-click-events-have-key-events: check if click event is accompanied by key events (#5073)
      • a11y-no-noninteractive-tabindex: check for tabindex on non-interactive elements (#6693)
    • Warn when two-way binding to {...rest} object in {#each} block (#6860)
    • Support --style-props on <svelte:component> (#7461)
    • Supports nullish values for component event handlers (#7568)
    • Supports SVG elements with <svelte:element>(#7613)
    • Treat inert as boolean attribute (#7785)
    • Support --style-props for SVG components (#7808)
    • Fix false positive dev warnings about unset props when they are bound (#4457)
    • Fix hydration with {@html} and components in <svelte:head> (#4533, #6463, #7444)
    • Support scoped style for <svelte:element> (#7443)
    • Improve error message for invalid value for <svelte:component this={...}> (#7550)
    • Improve error message when using logic blocks or tags at invalid location (#7552)
    • Warn instead of throwing error if <svelte:element> is a void tag (#7566)
    • Supports custom elements in <svelte:element> (#7733)
    • Fix calling component unmount if a component is mounted and then immediately unmounted (#7817)
    • Do not generate a11y-role-has-required-aria-props warning when elements match their semantic role (#7837)
    • Improve performance of custom element data setting in <svelte:element> (#7869)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump @babel/core from 7.19.6 to 7.20.5

    chore(deps-dev): bump @babel/core from 7.19.6 to 7.20.5

    Bumps @babel/core from 7.19.6 to 7.20.5.

    Release notes

    Sourced from @​babel/core's releases.

    v7.20.5 (2022-11-28)

    Thanks @​davydof and @​SuperSodaSea for your first PRs!

    :eyeglasses: Spec Compliance

    • babel-helpers, babel-plugin-transform-destructuring, babel-plugin-transform-modules-commonjs, babel-preset-env, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime, babel-traverse
    • babel-cli, babel-helpers, babel-plugin-proposal-class-properties, babel-plugin-proposal-class-static-block, babel-plugin-transform-classes, babel-plugin-transform-runtime, babel-preset-env
    • babel-helper-create-class-features-plugin, babel-helpers, babel-plugin-proposal-decorators, babel-plugin-proposal-private-property-in-object, babel-preset-env, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime

    :bug: Bug Fix

    • babel-parser
    • babel-helper-wrap-function, babel-preset-env, babel-traverse
    • babel-plugin-transform-arrow-functions, babel-plugin-transform-parameters, babel-traverse
      • #15163 fix: Throw error when compiling super() in arrow functions with default / rest parameters (@​SuperSodaSea)
    • babel-helpers, babel-node, babel-plugin-proposal-async-generator-functions, babel-plugin-transform-regenerator, babel-preset-env, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime
    • babel-helper-create-regexp-features-plugin
    • babel-parser, babel-types
    • babel-generator
    • babel-plugin-transform-block-scoping, babel-traverse

    :nail_care: Polish

    :house: Internal

    Committers: 6

    ... (truncated)

    Changelog

    Sourced from @​babel/core's changelog.

    v7.20.5 (2022-11-28)

    :eyeglasses: Spec Compliance

    • babel-helpers, babel-plugin-transform-destructuring, babel-plugin-transform-modules-commonjs, babel-preset-env, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime, babel-traverse
    • babel-cli, babel-helpers, babel-plugin-proposal-class-properties, babel-plugin-proposal-class-static-block, babel-plugin-transform-classes, babel-plugin-transform-runtime, babel-preset-env
    • babel-helper-create-class-features-plugin, babel-helpers, babel-plugin-proposal-decorators, babel-plugin-proposal-private-property-in-object, babel-preset-env, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime

    :bug: Bug Fix

    • babel-parser
    • babel-helper-wrap-function, babel-preset-env, babel-traverse
    • babel-plugin-transform-arrow-functions, babel-plugin-transform-parameters, babel-traverse
      • #15163 fix: Throw error when compiling super() in arrow functions with default / rest parameters (@​SuperSodaSea)
    • babel-helpers, babel-node, babel-plugin-proposal-async-generator-functions, babel-plugin-transform-regenerator, babel-preset-env, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime
    • babel-helper-create-regexp-features-plugin
    • babel-parser, babel-types
    • babel-generator
    • babel-plugin-transform-block-scoping, babel-traverse

    :nail_care: Polish

    :house: Internal

    v7.20.4 (2022-11-08)

    :bug: Bug Fix

    v7.20.3 (2022-11-07)

    :bug: Bug Fix

    • babel-generator

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump babel-jest from 29.0.1 to 29.3.1

    chore(deps-dev): bump babel-jest from 29.0.1 to 29.3.1

    Bumps babel-jest from 29.0.1 to 29.3.1.

    Release notes

    Sourced from babel-jest's releases.

    v29.3.1

    Fixes

    • [jest-config] Do not warn about preset in ProjectConfig #13583

    Performance

    • [jest-transform] Defer creation of cache directory #13420

    v29.3.0

    Features

    • [jest-runtime] Support WebAssembly (Wasm) imports in ESM modules (#13505)

    Fixes

    • [jest-config] Add config validation for projects option (#13565)
    • [jest-mock] Treat cjs modules as objects so they can be mocked (#13513)
    • [jest-worker] Throw an error instead of hanging when jest workers terminate unexpectedly (#13566)

    Chore & Maintenance

    • [@jest/transform] Update convert-source-map (#13509)
    • [docs] Mention toStrictEqual in UsingMatchers docs. (#13560)

    New Contributors

    Full Changelog: https://github.com/facebook/jest/compare/v29.2.2...v29.3.0

    v29.2.2

    Fixes

    • [@jest/test-sequencer] Make sure sharding does not produce empty groups (#13476)
    • [jest-circus] Test marked as todo are shown as todo when inside a focussed describe (#13504)
    • [jest-mock] Ensure mock resolved and rejected values are promises from correct realm (#13503)
    • [jest-snapshot] Don't highlight passing asymmetric property matchers in snapshot diff (#13480)

    Chore & Maintenance

    • [docs] Update link to Jest 28 upgrade guide in error message (#13483)
    • [jest-runner, jest-watcher] Update emittery (#13490)

    New Contributors

    ... (truncated)

    Changelog

    Sourced from babel-jest's changelog.

    29.3.1

    Fixes

    • [jest-config] Do not warn about preset in ProjectConfig (#13583)

    Performance

    • [jest-transform] Defer creation of cache directory (#13420)

    29.3.0

    Features

    • [jest-runtime] Support WebAssembly (Wasm) imports in ESM modules (#13505)

    Fixes

    • [jest-config] Add config validation for projects option (#13565)
    • [jest-mock] Treat cjs modules as objects so they can be mocked (#13513)
    • [jest-worker] Throw an error instead of hanging when jest workers terminate unexpectedly (#13566)

    Chore & Maintenance

    • [@jest/transform] Update convert-source-map (#13509)
    • [docs] Mention toStrictEqual in UsingMatchers docs. (#13560)

    29.2.2

    Fixes

    • [@jest/test-sequencer] Make sure sharding does not produce empty groups (#13476)
    • [jest-circus] Test marked as todo are shown as todo when inside a focussed describe (#13504)
    • [jest-mock] Ensure mock resolved and rejected values are promises from correct realm (#13503)
    • [jest-snapshot] Don't highlight passing asymmetric property matchers in snapshot diff (#13480)

    Chore & Maintenance

    • [docs] Update link to Jest 28 upgrade guide in error message (#13483)
    • [jest-runner, jest-watcher] Update emittery (#13490)

    29.2.1

    Features

    • [@jest/globals, jest-mock] Add jest.Spied* utility types (#13440)

    Fixes

    • [jest-environment-node] make globalThis.performance writable for Node 19 and fake timers (#13467)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump rollup-plugin-css-only from 3.1.0 to 4.3.0

    chore(deps-dev): bump rollup-plugin-css-only from 3.1.0 to 4.3.0

    Bumps rollup-plugin-css-only from 3.1.0 to 4.3.0.

    Changelog

    Sourced from rollup-plugin-css-only's changelog.

    Changelog

    All notable changes to rollup-plugin-css-only will be documented in this file.

    [Unreleased]

    [4.0.0] - 2020-12-18

    Changed

    • BREAKING CHANGE: CSS is emitted as 1 asset instead of written using writeFile.
    • Order of imports is guaranteed
    • Require @​rollup/pluginutils@​4

    Added

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump @types/node from 18.7.23 to 18.11.9

    chore(deps-dev): bump @types/node from 18.7.23 to 18.11.9

    Bumps @types/node from 18.7.23 to 18.11.9.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump tslib from 2.4.0 to 2.4.1

    chore(deps-dev): bump tslib from 2.4.0 to 2.4.1

    Bumps tslib from 2.4.0 to 2.4.1.

    Release notes

    Sourced from tslib's releases.

    tslib 2.4.1

    This release contains fixes for early returns and throws invoked on generators.

    Commits
    • 8acd4b3 Bump version to 2.4.1.
    • 5f7365e Remove extra line in generator.md
    • b1d38ee Fix early call to return/throw on generator (#186)
    • 4e27e9f Merge pull request #181 from microsoft/users/GitHubPolicyService/201dd6b7-4ca...
    • 7af3973 Microsoft mandatory file
    • 5bfaf87 Merge pull request #172 from microsoft/add-test-vite
    • f541748 Drop node@10 from test matrix, add node@16
    • 8860d61 Add a test for vite
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • feat: add jupyter widgets and demo notebook for python support

    feat: add jupyter widgets and demo notebook for python support

    @grtlr please try installing this notebook extension to verify my instructions work, thanks!

    See the README.MD in the py-notebook folder for usage & install instructions.

    opened by mkery 1
  • How to utilize this tool for python users?

    How to utilize this tool for python users?

    I went through the paper and loved the idea. The roadblock is that I am a little unfamiliar with typescript. Let's say I have built a classification model (binary or multi-class or multi-label) and have the test versus prediction labels. I could create the JSON files using python but is there any documentation (examples) on how to use this library to get these beautiful visualizations?

    Maybe some youtube tutorials will help a lot of programmers like me who are more familiar with Python and love to see new tools in other languages.

    enhancement 
    opened by bhishanpdl 4
  • Can a tooltip be added as well when hovering on the cell ?

    Can a tooltip be added as well when hovering on the cell ?

    Hi,

    I just started using this and it has a very cool visualization interface. Would be great if you can add the following feature:

    If the number of classes that are present overall is big (say 200-250), it becomes difficult to read the message that is displayed in the place of "Hover over cells to show more information." , as you have to scroll left and right continuously. So, is it possible to also include a tooltip with the onhover of the matrix cells to easily show this information? Or somehow have the message dynamically centrally aligned so that the user does not have to go back and forth all the time on the screen?

    Have added a screenshot that I am talking about. Screenshot 2022-05-06 at 17 00 53

    Thanks!

    Nishant

    enhancement 
    opened by mintrinishant 1
Releases(v1.0.1)
  • v1.0.1(Oct 6, 2022)

    Summary

    • Add CI
    • Minor docs improvements
    • Update dependencies

    What's Changed

    • ci: add Github test action by @fredhohman in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/3
    • docs: add CITATION.cff by @grtlr in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/4
    • docs: add link to live demo by @grtlr in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/6
    • Better links to materials and demo by @fredhohman in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/7
    • docs: adding json to embedded code by @grtlr in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/8
    • fix: update lockfile to resolve from public npm instead by @domoritz in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/11
    • chore: remove github ci by @domoritz in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/12
    • ci: revert "chore: remove github ci (#12)" by @fredhohman in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/13
    • chore: add dependabot.yml by @grtlr in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/14
    • chore(deps-dev): bump ts-jest from 27.1.4 to 27.1.5 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/27
    • chore(deps-dev): bump @rollup/plugin-typescript from 8.3.2 to 8.3.3 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/26
    • chore(deps-dev): bump @typescript-eslint/eslint-plugin from 5.23.0 to 5.29.0 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/25
    • chore(deps-dev): bump @babel/preset-typescript from 7.16.7 to 7.17.12 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/23
    • chore(deps-dev): bump eslint from 8.15.0 to 8.18.0 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/22
    • chore(deps-dev): bump eslint-plugin-jest from 26.1.5 to 26.5.3 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/18
    • chore(deps-dev): bump @types/node from 17.0.32 to 18.0.0 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/21
    • chore(deps-dev): bump @rollup/plugin-commonjs from 21.1.0 to 22.0.0 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/20
    • chore: update gh actions as well by @domoritz in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/17
    • chore(deps-dev): bump typescript from 4.6.4 to 4.7.4 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/28
    • chore(deps-dev): bump svelte-check from 2.7.0 to 2.7.2 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/30
    • chore(deps-dev): bump @typescript-eslint/parser from 5.23.0 to 5.29.0 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/32
    • chore(deps-dev): bump gh-pages from 3.2.3 to 4.0.0 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/31
    • chore(deps-dev): bump eslint-plugin-svelte3 from 3.4.1 to 4.0.0 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/19
    • chore(deps): bump d3-dsv from 2.0.0 to 3.0.1 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/24
    • chore(deps-dev): bump @typescript-eslint/parser from 5.29.0 to 5.30.3 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/37
    • chore(deps-dev): bump @babel/preset-typescript from 7.17.12 to 7.18.6 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/35
    • chore(deps-dev): bump svelte-check from 2.7.2 to 2.8.0 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/34
    • chore(deps-dev): bump eslint from 8.18.0 to 8.19.0 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/38
    • chore(deps-dev): bump babel-jest from 27.5.1 to 28.1.2 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/36
    • chore(deps-dev): bump @typescript-eslint/eslint-plugin from 5.29.0 to 5.32.0 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/41
    • chore(deps-dev): bump rollup from 2.72.1 to 2.77.2 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/40
    • chore(deps-dev): bump @babel/core from 7.17.10 to 7.18.10 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/39
    • chore(deps-dev): bump eslint from 8.19.0 to 8.21.0 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/43
    • chore(deps): bump d3-scale from 3.3.0 to 4.0.2 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/42
    • chore(deps-dev): bump @rollup/plugin-typescript from 8.3.3 to 8.4.0 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/48
    • chore(deps-dev): bump @types/node from 18.0.0 to 18.7.14 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/47
    • chore(deps-dev): bump rollup from 2.77.2 to 2.79.0 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/46
    • chore(deps-dev): bump @rollup/plugin-commonjs from 22.0.0 to 22.0.2 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/45
    • chore(deps-dev): bump babel-jest from 28.1.2 to 29.0.1 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/49
    • chore(deps-dev): bump eslint from 8.21.0 to 8.24.0 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/53
    • chore(deps-dev): bump @typescript-eslint/eslint-plugin from 5.32.0 to 5.38.1 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/52
    • chore(deps-dev): bump svelte from 3.48.0 to 3.50.1 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/51
    • chore(deps-dev): bump svelte-preprocess from 4.10.6 to 4.10.7 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/50
    • chore(deps-dev): bump @types/node from 18.7.14 to 18.7.23 by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/54
    • chore(deps): bump d3-array and @types/d3-array by @dependabot in https://github.com/apple/ml-hierarchical-confusion-matrix/pull/44

    Authors

    • @fredhohman
    • @domoritz
    • @grtlr
    • @dependabot

    Full Changelog: https://github.com/apple/ml-hierarchical-confusion-matrix/compare/v1.0.0...v1.0.1

    Source code(tar.gz)
    Source code(zip)
matrix <=> discord moderation with the power of matrix-appservice-discord

graim matrix <=> discord moderation with the power of matrix-appservice-discord Social graim's website is viewable at gra.im. You can join the graim M

null 19 Dec 24, 2022
A matrix bot to monitor and respond to investment scam spamming across the matrix platform, for example in rooms with a permanently offline admin.

Spam Police A matrix bot to monitor and respond to investment scam spamming across the matrix platform, for example in rooms with a permanently offlin

jjj333_p 7 Dec 26, 2022
Hierarchical Converter for Array of Objects

Conversor Hierárquico para Array de Objetos - Hierarchical Converter to Array of Objects Docker-compose Cria a interface network e containers indicado

Victor Vinícius Eustáquio de Almeida 2 Jan 27, 2022
The Easel Javascript library provides a full, hierarchical display list, a core interaction model, and helper classes to make working with the HTML5 Canvas element much easier.

EaselJS EaselJS is a library for building high-performance interactive 2D content in HTML5. It provides a feature-rich display list to allow you to ma

CreateJS 8k Dec 29, 2022
A plugin for creating hierarchical navigation in Astro projects. Supports breadcrumbs too!

astro-navigation A plugin for creating hierarchical navigation in Astro projects. Supports breadcrumbs too! Full docs coming soon! Basic usage This pa

Tony Sullivan 7 Dec 19, 2022
Minimal implementation of SLIP-0010 hierarchical deterministic (HD) wallets

micro-ed25519-hdkey Secure, minimal implementation of SLIP-0010 hierarchical deterministic (HD) wallets. Uses audited @noble/ed25519 under the hood. B

Paul Miller 11 Dec 25, 2022
Matrix Moderation Widget for Mjolnir

A widget for moderating with mjolnir. Highly WIP. Use at your own risk!

Marcel 7 Jun 23, 2022
A various color Matrix filters and Presets for pixi.js

Pixi Color Effects A various color Matrix filters for pixi.js with TON of presets! DEMO Install # npm npm install pixi-color-effects # yarn yarn add

null 109 Nov 24, 2022
This widget allows to conduct polls in Matrix rooms.

Matrix Poll This widget allows to conduct polls in Matrix rooms. But unlike MSC3381, it is designed for more complex scenarios, like polls with multip

Nordeck IT + Consulting GmbH 14 Dec 19, 2022
An interactive git visualization and tutorial. Aspiring students of git can use this app to educate and challenge themselves towards mastery of git!

LearnGitBranching LearnGitBranching is a git repository visualizer, sandbox, and a series of educational tutorials and challenges. Its primary purpose

Peter Cottle 26.4k Jan 3, 2023
This is 2D Black Hole Visualization

Blackhole Live demo Blackhole Calculations How to run in your machine? Clone or download ZIP file Then open HTML file in VS code and run with live ser

Nikhil Yadav 13 Jan 7, 2023
JSON Visio is data visualization tool for your json data which seamlessly illustrates your data on graphs without having to restructure anything, paste directly or import file.

JSON Visio is data visualization tool for your json data which seamlessly illustrates your data on graphs without having to restructure anything, paste directly or import file.

Aykut Saraç 20.6k Jan 4, 2023
A tool to modify onnx models in a visualization fashion, based on Netron and flask.

English | 简体中文 Introduction To edit an ONNX model, One common way is to visualize the model graph, and edit it using ONNX Python API. This works fine.

Zhang Ge 413 Jan 4, 2023
neo4j graph visualization using d3.js

neo4jd3.js 基于d3.js的封装的图数据库的可视化界面,不依赖任何外部框架如: vue, react等;内部实现了节点的展示 Code structure ├── core # core 核心功能 │ └── neo4jToolsIcon

Alex 6 Nov 7, 2022
OSINT - Data Visualization - Blockchain - Awareness - Scam

poorSKeme OSINT - Data Visualization - Blockchain - Awareness - Scam Install Go to this site and click on the downdload button Or go to release sectio

Kenn Brothers Org 15 Dec 9, 2022
A Multi-Agent Path Finding visualization website.

MAPF Visualizer A visualization tool for multi-agent path finding algorithms. About The Project This project provides a visualization tool for Multi-A

Yutong Li 22 Dec 29, 2022
A powerful data visualization 2D/3D large-screen editor tool with low-code.

tp-editor(2D/3D)中文说明 A topology 2D/3D editor with nodejs, express, socket.io es6, HT for Web and vite. It's a powerful large-screen data visualization

Flying Li 11 Dec 25, 2022
A web-based 3D visualization tool for 3D computer vision.

Wis3D: A web-based 3D visualization tool for 3D computer vision Online Demo | Installation | Tutorial | Documentation Wis3D is a web-based 3D visualiz

ZJU3DV 131 Dec 27, 2022
A general purpose, real-time visualization library.

Epoch By Ryan Sandor Richards Epoch is a general purpose charting library for application developers and visualization designers. It focuses on two di

Epoch 5k Dec 30, 2022