Git Product home page Git Product logo

neovis's Introduction

NeoVis

Join the chat at https://gitter.im/ogmaneo/Lobby

NeoVis is a visualizer for EOgmaNeo hierarchies, built using 'dear imgui' (AKA ImGui) and the Simple and Fast Multimedia Library (AKA SFML).

Overview

NeoVis is an application that allows one to visualize in real-time the contents of an EOgmaNeo hierarchy. It uses sockets to communicate with the client program. It can be connected and disconnected seamlessly, provided the client code contains the appropriate visualization update function.

Building

The following commands can be used to build the NeoVis library:

cd NeoVis
mkdir build; cd build
cmake ..
make

The cmake command can be passed a CMAKE_INSTALL_PREFIX to determine where to install the visualization executable.

On Windows it is recommended to use cmake-gui to define which generator to use and specify optional build parameters.

CMake

Version 3.1, and upwards, of CMake is the required version to use when building the library.

Client code

Make sure to compile EOgmaNeo with the optional SFML dependency, as this will enable the ability to use the visualizer.

Example usage from EOgmaNeo Python bindings (C++ and other bindings are similar):

# Initialize and construct an EOgmaNeo hierarchy, for example
h = eogmaneo.Hierarchy()

h.create([ ( chunkSize, chunkSize) ], [ chunkSize ], [ True ], lds, 123)

# Initialize the VisAdapter
v = eogmaneo.VisAdapter()

v.create(h, 54000) # EOgmaNeo Hierarchy, port

# ...

# In simulation loop:
v.update()

Host operation

Once NeoVis is started, use the Connection button and Connection Wizard dialog box to open a connection to your hierarchy. Simply specify the address (localhost, if on same machine) of the client, and make sure that both applications are using the same port (default 54000). Once Connect! button has been pressed, and the status switches to "Connected", you should see several windows appear.

Each layer has a window for its hidden layer SDR (Sparse Distributed Representation). If you right-click on a particular unit in the SDR (highlighted in green), additional windows containing the weight matrices going in and out of that unit will appear.

At the moment, SDR and weight matrix visualization are the only features of NeoVis. Despite this, we found it quite handy for debugging our programs. If your application isn't functioning properly, it may be a good idea to pear into the network with NeoVis!

Note

Please note that the visualizer only works with simulation-like environments. It assumes that the client is running in real-time, and it streams whatever the latest state is for visualization. This makes is particularly handy for visualizing the EOgmaNeo hierarchy during reinforcement-learning-like tasks and other realtime applications.

Contributions

Refer to the CONTRIBUTING.md file for information on making contributions to NeoVis.

Creative Commons License
The work in this repository is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. See the NEOVIS_LICENSE.md and LICENSE.md file for further information.

Dear ImGui is licensed under the MIT License.
SFML license https://github.com/SFML/SFML/blob/master/license.md

Contact Ogma via [email protected] to discuss commercial use and licensing options.

NeoVis Copyright (c) 2017 Ogma Intelligent Systems Corp. All rights reserved.

neovis's People

Contributors

rcrowder avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.