@thi.ng/fuzzy-viz
    TypeScript icon, indicating that this package has built-in type declarations

    0.1.31 • Public • Published

    fuzzy-viz

    npm version npm downloads Twitter Follow

    This project is part of the @thi.ng/umbrella monorepo.

    About

    Visualization, instrumentation & introspection utils for @thi.ng/fuzzy.

    Status

    ALPHA - bleeding edge / work-in-progress

    Search or submit any issues for this package

    Installation

    yarn add @thi.ng/fuzzy-viz
    // ES module
    <script type="module" src="https://unpkg.com/@thi.ng/fuzzy-viz?module" crossorigin></script>
    
    // UMD
    <script src="https://unpkg.com/@thi.ng/fuzzy-viz/lib/index.umd.js" crossorigin></script>

    Package sizes (gzipped, pre-treeshake): ESM: 1.04 KB / CJS: 1.12 KB / UMD: 1.22 KB

    Dependencies

    API

    Generated API docs

    Linguistic variable visualization

    Generate an SVG visualization of all fuzzy sets defined in a linguistic variable:

    fuzzy set visualization of the example l-var

    import { varToSvg } from "@thi.ng/fuzzy-viz";
    
    // temperature sets (in celsius)
    const temp = variable(
        [-20, 40],
        {
            freezing: invSigmoid(0, 2),
            cold: trapezoid(-1, 2, 16, 20),
            warm: trapezoid(15, 20, 30, 34),
            hot: sigmoid(32, 2)
        }
    );
    
    // generate & write SVG file
    writeFileSync("temperature.svg", varToSvg(temp, { samples: 200 }));

    See VizualizeVarOpts for further options to configure the visualization.

    Instrument a DefuzzStrategy

    instrumentStrategy() is an higher order function. It takes an existing DefuzzStrategy and an instrumentation function. Returns new DefuzzStrategy which first executes original strategy, then calls instrument with the same args AND the computed result obtained from strategy. Returns result of original strategy.

    The instrumentation function is intended to perform side effects (e.g. debug outputs) and/or produce secondary results (e.g. visualizations). The latter can be obtained through the IDeref mechanism implemented by the returned function. Since defuzz() might call the strategy multiple times (i.e. if there are multiple output vars used), .deref() will always return an array of secondary results.

    Note: The secondary results from the instrumentation function will persist & accumulate. If re-using the instrumented strategy for multiple defuzz() invocations, it's highly recommended to clear any previous results using .clear().

    const strategy = instrumentStrategy(
      cogStrategy({ samples: 1000 }),
      fuzzySetToAscii({ width: 40, height: 8 })
    );
    
    // apply strategy as normal (well, usually done via defuzz())
    strategy(gaussian(5, 2), [0, 10]);
    // 4.995
    
    strategy.deref().forEach((viz) => console.log(viz));
    // .................▄▆█|█▆▄.................
    // ...............▅████|████▅...............
    // .............▄██████|██████▄.............
    // ...........▂▇███████|███████▇▂...........
    // ..........▅█████████|█████████▅..........
    // .......▁▅███████████|███████████▅▁.......
    // .....▃▆█████████████|█████████████▆▃.....
    // ▃▄▅▇████████████████|████████████████▇▅▄▃
    //                     ^ 5.00
    
    // cleanup (optional)
    strategy.clear();

    Using fuzzySetToHiccup()/fuzzySetToSvg() visualizations like below can be created following the same pattern as above:

    fuzzySetToSvg() visualization example

    Authors

    Karsten Schmidt

    If this project contributes to an academic publication, please cite it as:

    @misc{thing-fuzzy-viz,
      title = "@thi.ng/fuzzy-viz",
      author = "Karsten Schmidt",
      note = "https://thi.ng/fuzzy-viz",
      year = 2020
    }

    License

    © 2020 - 2021 Karsten Schmidt // Apache Software License 2.0

    Install

    npm i @thi.ng/fuzzy-viz

    DownloadsWeekly Downloads

    44

    Version

    0.1.31

    License

    Apache-2.0

    Unpacked Size

    53.3 kB

    Total Files

    16

    Last publish

    Collaborators

    • avatar