Synaptic Wall Project

Instructions

  • Press 1 to switch to Creation mode. Click to create a soma. Click and drag existing somas to change their location. Click on the outer ring around a Soma to change it's threshold level.
  • Press 2 to switch to Deletion mode. Click to delete (not implemented)
  • Press 3 to switch to Interaction mode. Click and drag on the sliders to change properties. Click on empty areas to create selection boxes. When at least one object is selected, the control panel that can control all corresponding elements in the selection
  • Press m to show a zoom lense, move the mouse around to move the focus of the lense
  • Press p to pause rendering
  • Press o to resume rendering
  • Press c to clear the screen

Design

Enviroment

This file sets up the environment and delegates all the events to the global SynapticWall object and sets up the Grid used to place objects and define paths

The controller for all inputs such as mouse interactions and keypress events. It handles state transitions and keeps track of what current mode (creation, deletion, interaction) it's in and determines the result of each input depending on context. It's also responsible for sending interaction events down to the ObjectCollection, the Grid, the ControlPanel, as well as other temporary objects being created.

An utility object that keeps the state, renders, and provide information about the selection rectangle

Geometric Grid used for positioning objects in the world with constraints in order to have geometric appeareances and properties

All constants used for rendering or calculations are defined within this file. It's then made available to all objects through inheritance. Some constants can be recalculated based on a scale constant


Objects

Abstract class that extends Constants that keeps track for basic information such as location, color, creation time, and flags such as Visible and Movable

Abstract class that extends Drawable that defines the methods used for handling events and interactions with default implementations

Abstract Class that extends Interactive that provides methods for adjusting locations of objects

Abstract Class that extends Shape that contains default behavior for shapes that have controls

Abstract Class that extends ControllableShape that outlines how Shapes interact with Paths and fire signal

Class that extends Cell that contains Soma specific behavior and rendering, such as the decay of the Soma's potential and how Action Potentials are fired

Class that extends Cell that contains Initiator specific behavior and rendering, such as how Post Synaptic Potentials are generated and the parameters that control the firing behavior of the cell

Class that extends ControllableShape that specifies how a Synapse updates its appearance and state based on its firing timer

Abstract Class that extends Interactive that details how Paths (Axons and Dendrites) process signals, junctions, and events

Class that extends Path that contains Axon specific behavior logic and rendering code

Class that extends Path that contains Dendrite specific behavior logic and rendering code

A class that contains methods for adding or removing items from the collection, event handling, selection, and rendering

The collection that keeps track of all the primary objects (Soma, Initiator, Dendrite, Axon, Synapse) in Synaptic Wall


Controls

Abstract Class that extends Interactive that contains fields required for Control objects

Interface that defines how objects can interact with Controllable objects

Slider UI element that maps a value within a range

A simple rectangular Slider that maps values along the x axis

A circular Slider that maps values to radian angles

A CircularSlider that allows only integer values

A CircularSlider that allows a range of values instead of a single particular value on the slider

A CircularSlider that's used to represent a Cell's firing potential


Control Panel

A object that encapsulates the objects in the Control Panel on the right side of the app and manages its behavior in response to control adjustments and interactions

A Soma SubClass that's used to display special information in the Control Panel

A Synapse SubClass that's used to display special information in the Control Panel


Utilities

A timer object that can fire an event at a particular point in the future

A collection of utility functions that are used throughout the code base to do computation

Processing plugin functions that provide functions to draw shapes such as arcs and rings