In a previous post we discussed if it was worth moving projects to the open source community and we concluded that both institutions and individuals can benefit from a growing community of developers. Therefore we believe in the importance of showing some of the available projects to give users an idea of what can be achieved. Not all projects are equally mature, but they are all a great starting point for further development.
Storm Control - Zhuang Lab
Storm Control is a platform for controlling a microscope to acquire Storm Images. It is built on Python and Qt5, the core technologies we use for the developments of Uetke. We suggest you to look into this project, even if you do not work with super-resolution in your lab, because it provides a lot of drivers for common devices such as cameras, stages, etc. The software section of Zhuang's lab website provides a lot of tools not only for acquiring data but also for analyzing it. They even provide some files for 3D printing parts to improve commercial microscopes. It is, overall, a very good example on how a lab can move to open source.
Instrumental - Mabuchi Lab
Instrumental is a package aimed at simplifying the automatization of experiments. According to their own description:
Instrumental’s goal is to make common tasks simple to perform, while still providing the flexibility to perform complex tasks with relative ease.
The repository is a great place to look for drivers and understand how different things can be achieved. For example, they have built a low-level network driver that allows triggering actions on devices remotely. They also have developed drivers and good examples on which base further development.
Odemis - Delmic
Odemis stands for Open Delmic Microscopy Software. Delmic is a company that develops hardware for correlative electron and optical microscopy and has made the software freely available. It is a very good example that shows how professionally developed software looks like. It is very well designed and has a lot of functionalities hard to find in other programs. For example, the backend and the frontend are detached, therefore it is very flexible for implementing extensions. Odemis is also a very good example of how a company can distribute its software openly, while maintaining its focus on their core business: hardware development.
Qudi - University of Ulm
Qudi started small and grew over the years to a complete package for controlling devices. Their own description says:
Qudi is a suite of tools for operating multi-instrument and multi-computer laboratory experiments. Originally built around a confocal fluorescence microscope experiments, it has grown to be a generally applicable framework for controlling experiments.
The code is fairly complex to follow, but they have many GUI resources to kickstart your own development; both compiled python and designer files are available.
We have discussed about Lantz in our previous post How to Write a Driver with Lantz. Lantz is a development similar to Instrumental, also brought to life by researchers. Its main difference is that it is a collaborative effort and therefore it is not directly associated with a single university. On the downside, the development has been stalled for the last several months.
One of the main advantages of Lantz is that it documents very clearly how to write your own drivers and the Features and Actions are incredibly handy when developing. If the efforts of Lantz and Instrumental were combined, the project would take a very interesting turn.
In the microscopy world, you can never forget about Micro Manager. It is a complete microscopy package, available online, and it is open source. The documentation is very complete, including video tutorials. Micro Manager, however, is very complex and therefore it is most suitable for plug-and-play. It is the kind of software that you install and it either works or it doesn't. Expanding it or learning from its code requires a lot of expertise in this particular program.
These are a mix of resources that may be worth checking, depending on your applications.
- OpenCV: supports a lot of algorithms related to Computer Vision and Machine Learning and it is expanding day-by-day.
- AndorSDK2: Object-oriented, high-level interface for Andor cameras.
- PyQtGraph: Scientific Graphics and GUI Library for Python.
- Smart Scan: control confocal microscopes and automate repetitive tasks.
- PyMeasure: makes scientific measurements easy to set up and run.
- PyQLab: A python library for instrument control and superconducting QIP experiments.
Header photo by Samuel Zeller on Unsplash