Date Published: April 01, 2020
Publisher: International Union of Crystallography
Author(s): José Miguel de la Rosa-Trevín, Pedro Alberto Hernández Viga, Joaquín Otón, Erik Lindahl.
This article presents an overview of the development of two basic software libraries for image manipulation and data visualization in cryo-EM: emcore and emvis.
Advances in cryo-EM have been closely related to image-processing and software development since the early days of the field (Kühlbrandt, 2014 ▸; Belnap, 2015 ▸; Bai et al., 2015 ▸). Back in 1992, seven software packages that were in use at the time were reviewed by Hegerl (1992 ▸), and just a few years later, in 1996, a special issue of the Journal of Structural Biology was dedicated to software tools for molecular microscopy (Carragher & Smith, 1996 ▸). Over time, the number of programs has increased considerably. At the time of writing, the Wikipedia page https://en.wikibooks.org/wiki/Software_Tools_For_Molecular_Microscopy contained 17 general packages, 27 specific packages, 38 application tools, 19 visualization tools and six utilities, with many programs not being registered on the list.
We strongly believe that open-source software is one of the supporting pillars of modern science, and as such we distribute the tools described in this work under GPLv3 (https://www.gnu.org/licenses/gpl-3.0.en.html). Apart from the technical aspects, another strong motivation for this work is to create a community project that will unite efforts among scientific developers. The only possible way to pursue this goal is to use a license that protects the freedom of the code and encourages collaboration and sharing.
Here, we have presented our work in developing basic libraries for cryo-EM image processing and data analysis. The main focus of these libraries is to create solid building blocks with a clear API and following good software-engineering practices. Currently, the libraries do not aim to implement many processing algorithms or visualization tools, but rather to establish a well structured framework that others might build on. Nonetheless, the current implementation already provides interesting features that could be useful for users or developers. Moreover, the overall design has been conceived with integration in mind, either with other cryo-EM packages in the field or with more general scientific packages in the Python ecosystem.