> For the complete documentation index, see [llms.txt](https://zapit.gitbook.io/user-guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zapit.gitbook.io/user-guide/zapit-optostim-introduction/feature-list.md).

# 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.](/user-guide/using-the-gui/scanner-calibration.md#conducting-the-calibration)
* [Easy manual calibration of sterotaxic space to the live image feed. ](/user-guide/using-the-gui/sample-calibration.md)
* [GUI for building stimulus sets.](/user-guide/using-the-gui/stimconfig-editor.md)
* 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](/user-guide/using-the-gui/scanner-calibration.md#checking-the-calibration) and stimulus positions.
* [An easy to use API](/user-guide/running-experiments/matlab/basic-api-usage-in-matlab.md) for integrating photostimulation into experiment code in MATLAB and [Python](/user-guide/running-experiments/python/basic-zapit-api-use-in-python.md).&#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).
