This version is outdated by a newer approved version.DiffThis version (2019/12/16 10:42) is a draft.
Approvals: 0/1
The Previously approved version (2019/12/16 10:38) is available.Diff

This is an old revision of the document!

Cinderella: Deep learning based binary classification tool

"The good ones go into the pot, the bad ones go into your crop."

                                                        From the fairy tale Cinderella

Our 2d class and micrograph selection tool (Cinderella) is based on a deep learning network to separate 2D classes or micrographs into good and bad. For 2D classes, it supports .hdf/.mrcs and for micrographs .mrc format. Cinderella provides a pretrained general model for classifying 2D classes and was written to automate cryo-em data processing. It's open source and easy to use (see tutorial). You can easily train it with your own set of classes/micrographs.

Here are a couple of examples for good / bad classes in Cinderella:

2D class selection model

Our model was trained on a set of 2D classes from ISAC. During the creation of the training dataset, I tried to ask myself “Which class would I select If I would not know the particle?” to decide which is a good class.

The training dataset does not contain any Relion classes, so it might be that Cinderella will not work with well them.

You can easily contribute your own classes!

Right now our model is trained on 19 datasets. But we will increase the number often!


Version: 0.5.0

Uploaded: 16. December 2019


Uploaded: 10. December 2019, Datasets: 20


Valid configuration file

Old versions of cinderella and the pretrained model can be found in the archive

Version 0.5

  • Add support for subtomograms
  • Faster file reading

Version 0.4

  • Balances unbalanced training datasets.
  • It is now possible to train Cinderella to select micrographs
  • Updated the general model for 2D class selection.

Version 0.3.1

  • Downgrade to tensorflow 1.10.1 again, as user report long initialization times
  • Only report the number of good / bad classes + their fraction.

Version 0.3.0

  • More data augmentation (add rotation)
  • Better sampling of validation data. It is now ensured that each file contributes some validation data.
  • Updated tensorflow to 1.12.3 to make it compatible to the crYOLO environment


Here is the repository of our training data:

Download the public training data

Unfortunately, we cannot upload the complete training dataset, as some classes are from projects that are not yet published.

If you want to contribute with your own classes, please upload them here:

Contribute good / bad classes

Ideally, please upload separate HDF/mrcs files for good and bad classes. You can do this separation with EMAN2's e2display. However, you can also upload the classes without separation and we will try to do it.


The following instructions assume that pip and anaconda or miniconda are available. In case you have a old cinderella environment installed, first remove the old one with:

conda env remove --name cinderella

After that, create a new virtual environment:

conda create -n cinderella -c anaconda python=3.6 pyqt=5 cudnn=7.1.2 numpy==1.14.5

Activate the environment:

source activate cinderella

Install Cinderella for GPU:

pip install cinderella[gpu]

… or CPU:

pip install cinderella[cpu]


  • auto_2d_class_selection.1576489325.txt.gz
  • Last modified: 2019/12/16 10:42
  • by twagner