# LinMaze module

The module used for making training protocolls in a 2D virtual linear maze. The user can define Levels that contain Frames (patterns the animal can see), Events (things that can happen to the animal in the simulation) and Rules (conditions for Events).

## Main module

- The Window class
- The Logger class
- The Session class

## Level

- The Level class

## Frame

- Static functions
- Abstract Frame classes
  - Frame
  - Random Frame
  - Wave Frame
- Specific Frames
  - Binary noise
  - Greyscale noise
  - Checkerboard pattern
  - Cloud pattern
  - Marble pattern
  - Wood grain pattern
  - Sine wave modulated grating
  - Square wave modulated grating
  - Image file as Frame

## Event

- Abstract Event class
- Specific Events
  - Teleportation
  - Random Teleportation
  - Port On/Off
  - Starting/Stopping bursting
  - Pausing/Unpausing
  - Printing messages

## Rule

- Abstract Rule class
- Specific Rules
  - Zone Rule
  - Velocity Rule
  - Smooth Velocity Rule
  - Speed Rule
  - Keypress Rule
  - Input Rule

## Zone

- The Zone class

## Output

- Log file structure
- Metadata