# Cinderella: Automatic 2D class selection

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

From the fairy tale Cinderella

Our automatic 2d class selection tool (Cinderella) is based on a deep learning network to seperate 2D classes from .hdf / .mrcs files into good and bad classes. It uses the same deep neural network as crYOLO and was pretrained on a set good / bad classes. Cinderella 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.

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

# The Model

Our model was trained on a set of 2D classes from ISAC. The training dataset does not contain any Relion classes, so it might be that Cinderella will not work with them. However, you can easily contribute! 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.

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

Version: 0.2.0

# Contribute

Here is the repository of our training data:

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

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.

# Installation

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

Activate the environment:

source activate cinderella

Install Cinderella:

conda install numpy==1.14.5
pip install cinderella-X.Y.Z.tar.gz