# Feature List

#### Features

* Open source [hardware](https://github.com/Zapit-Optostim/zapit_CAD) and [software](https://github.com/Zapit-Optostim/zapit).&#x20;
* [One-click automatic calibration of the scanners to camera using a grid of points.](https://zapit.gitbook.io/user-guide/using-the-gui/scanner-calibration#conducting-the-calibration)
* [Easy manual calibration of sterotaxic space to the live image feed. ](https://zapit.gitbook.io/user-guide/using-the-gui/sample-calibration)
* [GUI for building stimulus sets.](https://zapit.gitbook.io/user-guide/using-the-gui/stimconfig-editor)
* On a single trial one or more locations are stimulated in series. The maximum number of points is limited by laser power and the kinetics of the opsin.
* Interactive tools for [checking calibrations](https://zapit.gitbook.io/user-guide/using-the-gui/scanner-calibration#checking-the-calibration) and stimulus positions.
* [An easy to use API](https://zapit.gitbook.io/user-guide/running-experiments/matlab/basic-api-usage-in-matlab) for integrating photostimulation into experiment code in MATLAB and [Python](https://zapit.gitbook.io/user-guide/running-experiments/python/basic-zapit-api-use-in-python).&#x20;
* Automatic logging of stimuli during an experiment.&#x20;
* Power is conveniently displayed to the user in mW following a simple calibration procedure.
* Stimuli are sent to the DAQ at the trial start then hardware triggered for precise onset.&#x20;
* Stimuli may be presented for a fixed duration or terminated after an arbitrary time.&#x20;
* Installation and updates via MATLAB's add-on manager. User notified of new versions in the GUI.&#x20;

#### The Geeky Bit

* It's been neatly version controlled with [releases](https://github.com/Zapit-Optostim/zapit/releases) and [Issues are logged](https://github.com/Zapit-Optostim/zapit/issues?q=).&#x20;
* The code is [idiomatically written with extensive comments](https://github1s.com/Zapit-Optostim/zapit/blob/main/zapit/+zapit/@pointer/sendSamples.m), making it easy to modify and fix.([Here is how that last link works](https://www.stefanjudis.com/notes/github1s-open-any-github-repository-in-vs-code-in-your-browser/). Add MATLAB syntax highlighting via the Extensions icon on the left.)
* Everything is [structured neatly in packages](https://github.com/Zapit-Optostim/zapit/tree/main/zapit/%2Bzapit). For example, try typing `help zapit.settings`.
* The GUIs and underlying logic are [separated in a model/view/controller architecture](https://github.com/Zapit-Optostim/zapit/blob/main/zapit/%2Bzapit/%2Bgui/README_GUIs.md).&#x20;
* There are [tests](https://github.com/Zapit-Optostim/zapit/tree/main/tests) and [examples](https://github.com/Zapit-Optostim/zapit/tree/main/examples).
