3.1 Learning Java
The following sections assume a basic working knowledge of the Java language and Object-Oriented programming (OOP) methodology. To learn more about Java, there are many excellent tutorials on Youtube, Code Academy, and Learn Java Online.
3.2 Learning HAL
The best way to learn HAL is to browse the “Examples” or “LEARN_HERE” folders. The first contains several in depth full models and the second gives detail on implementation of specific components (agents, grids, etc). Alternatively, several tutorials are posted to YouTube:
- HAL Tutorial 1: Setup
- HAL Tutorial 2: On Lattice Model
- HAL Tutorial 3: Intellij Tips and On Lattice Model Continued
- HAL Tutorial 4: Off Lattice
3.3 Source Code Organization
Examples
This folder contains models that utilize a full range of HAL’s features, including off-lattice and on-lattice agents, PDE solvers, UI visualization components, and more.
LEARN_HERE
This folder contains smaller examples that highlight specific framework components with clarity.
Framework
This folder contains all the components of the source code of HAL. In general, these files should not be changed or altered. Descriptions of the 7 subsections contained within the framework folder are detailed below.
3.4 Components of HAL
- GridsAndAgents
- Contains all of the Agent and Grid types that the framework supports. There are 2D and 3D, stackable and unstackable, on-lattice and off-lattice agents and grids to contain them. The base classes that the grids and agents extend are also in this folder.
- Gui
- Contains the main UIWindow class, as well as many component classes that can be added to the UI.
- Tools
- Contains many useful tool classes, such as a FileIO wrapper, a genetic algorithm class, a multiwell experiment runner, etc. as well as a Util class that is a container of generic static methods. It also contains classes that are used internally by these tools.
- Interfaces
- Contains interfaces that are used by the framework internally. It is useful to reference this folder if a framework function takes a function interface argument, or implements an interface.
- Lib
- Contains outside libraries that have been integrated with the framework.
- Util
- Utility functions such as color functions, array functions, cellular automata neighborhood functions, and math functions.