PyTom: General information

What PyTom does:

PyTom (Python and Tomography) is a toolbox for processing of cryo electron tomograms. (Hrabe et. al., J. Struct. Biol. 178:177-88 (2012))

PyTom covers key functions for processing three-dimensional data, such as cryo electron tomograms.
It supports 3D-reconstruction (e.g., weighted backprojection), algorithms for detection of macromolecules in tomograms (e.g., template matching), and subtomogram analysis (e.g., subtomogram averaging and classification).
(Hrabe and Foerster, Encyclopedia of Life Sciences 2011).

The software is tested on Linux and MacOS (it should be straighforward to get it to run on Windows as well, but we do not support Windows due to our limited resources). PyTom supports parallel processing and Linux clusters are currently the most sensible environment for processing large amounts of data using PyTom.

What PyTom does not:

The long-term goal of PyTom is to support all essential functions for processing of CET data. Processing for other types of cryo-electron microscopy such as single particle analysis (e.g., projection matching or random conical tilting) is not planned albeit subtomogram analysis bears significant similarities.

PyTom Software Design:

PyTom uses an increasingly popular software-enginnering approach: Algorithms are implemented in the programming language Python. Python is a modern object-oriented programming language that is easy to learn and python-code is generally straighforward to understand. Python does not need to be compiled and thus python code is platform-independent (all major platforms are supported). In essence, python usage is similar to the popular (commercial) scripting language matlab with the advantage of being object oriented and free of charge.
For selected applications we developed web interfaces. These interfaces can be used to generate xml input files for these core applications (template matching, subtomogram averaging, subtomogram classification).
Core 'number-crunching' routines are implemented in C++. These routines are accessible via python and allow very efficient processing.

How to use PyTom and this Tutorial

PyTom essentially provides three levels of user interaction.

1. The user interface where you can quickly specify any kind of job.
2. Custom python scripts interfacing PyTom components and XML files specifying processing jobs.
3. The terminal for interactive mode.

All tutorials here include a short video showing how to use the web-based user interface for setting up jobs.
Writing your own scripts, however, requires a bit of programming and Python knowledge. You will find documentation of respective methods in the API documentation.