Scanbot
Featured
Functional Overview
Scanbot is a collection of several automated STM and nc-AFM data acquisition commands compatible with Nanonis V5 SPM control software. It can help with:
- STM
- Bias dependent imaging with drift correction
- Automated sample surveying (NxN grid)
- STS
- STS grids with drift correction
- nc-AFM (Not yet available in the web application)
- z-dependent nc-AFM
- nc-AFM registration
- Automation
- Tip shaping
- Full control over the coarse motors
- Hooks
- Scanbot has a number of built-in hooks to let you customise key functionality.
Installation
There are several ways to install Scanbot:
- Quick Start:
For a quick start on Windows, download and run the .exe file from here. This method automatically sets up and launches the Scanbot web app. - Installing via pip:
If you prefer using pip, you can install Scanbot directly with:
pip install scanbot
-
Building from Source:
To install Scanbot from its source, particularly if you want the latest version or wish to contribute to its development, follow these steps:- Clone the Scanbot repository
- Install node.js from here or if you're using anaconda, run
conda install conda-forge::nodejs
- Navigate to
scanbot/scanbot/App
and runnpm install
- From the same directory, run
npm run build
- Navigate to the project root directory, and run
pip install .
- Start Scanbot by running the command
scanbot
Running
Scanbot can be run as a web application or in a terminal:
- Web Application:
The web app can be launched by running the command:scanbot
You can test Scanbot with the Nanonis V5 Simulator before integrating it with your STM by following these instructions.
The general user guide is available here. - Terminal:
Scanbot can run in a terminal after running:scanbot -c
For a full list of Scanbot commands, see here. Alternatively run thehelp
command or, for help with a specific command, runhelp <command_name>
.
Contributing
We welcome contributions from the community to Scanbot. Here's how you can contribute:
Issues
Encounter a problem? Please report it by opening a new issue. If you're able to fix the issue yourself, feel free to submit a pull request.
Feature Requests
Have an idea for a new feature? Submit it through our issue tracker. Please provide detailed information about your feature to help us understand your vision.
Develop New Scanbot Commands
Interested in expanding Scanbot's capabilities? Follow these steps:
- Open a new issue detailing your proposed command.
- If approved, you can either develop your command using the hk_commands hook or by updating Scanbot's source directly.
- Submit a pull request for review.
Pull Requests
If you're going to submit a pull request for any of the above please ensure the following:
- Changes are compatible with the latest version of the V4 branch
- Titles and summaries are clear, concise, and explain the rationale behind the changes, what issues they address, and any other relevant context.
- You have an open issue that can be linked to the pull request.
- All new code is well-documented and any new features or bug fixes include appropriate tests.
- Tag ceds92 for review as they are the main reviewer for this project. Include any other contributors who might be impacted by or interested in the changes.
Documentaion
If your changes to Scanbot require updates to the documentation, please handle this on the mkdocs branch. You can update the documentation there and submit a separate pull request linked to the same issue:
- Check out the mkdocs branch from the main repository.
- Update or add documentation to reflect the changes made to the software. Ensure that all new features, configurations, or usage instructions are clearly documented.
- Use clear, concise language and format the documentation for easy reading. Include examples if applicable.
- Submit a pull request for the documentation updates, ensuring it references the same issue as your code changes.
- Tag ceds92 in the pull request for the documentation as well, to ensure consistency and accuracy in both code and informational updates.
Support
If you have questions or need assistance that the documentation doesn’t address, please don’t hesitate to open an issue in our issue tracker. We are committed to providing support and will do our best to assist you promptly!
Citing
APA
Ceddia, J., Hellerstedt, J., Lowe, B., & Schiffrin, A. (2024). Scanbot: An STM Automation Bot. Journal of Open Source Software, 9(99), 6028. https://doi.org/10.21105/joss.06028
BibTeX
@article{Ceddia_Scanbot_An_STM_2024,
author = {Ceddia, Julian and Hellerstedt, Jack and Lowe, Benjamin and Schiffrin, Agustin},
doi = {10.21105/joss.06028},
journal = {Journal of Open Source Software},
month = jul,
number = {99},
pages = {6028},
title = {{Scanbot: An STM Automation Bot}},
url = {https://joss.theoj.org/papers/10.21105/joss.06028},
volume = {9},
year = {2024}
}
Acknowledgements
Special thanks to FLEET for their contribution through the FLEET Translation Program.