/cryoEM-object-detection

A notebook demonstrating object detection in cryoEM micrographs

Primary LanguageJupyter NotebookMIT LicenseMIT

Object Detection in CryoEM Datasets

Binder

Object detection in a synthetic dataset with ODIN

Detection of objects in a synthetic image with ODIN. Bounding boxes: purple - ground truth, yellow - prediction.

Abstract

Electron Microscopy aims to image particles (e.g., proteins, molecules) on a near atomic resolution. However, with great resolution comes low signal-to-noise ratio. As such, computer vision models need to be trained on noisy datasets in order to detect objects.

CryoEM pipeline from raw image (left, individual particle highlighted in green) to the molecular structure (right)

The structure of the objects being imaged is calculated by averaging hundreds if not thousands of frames of said object in different orientations, rotations and positions. The dataset generated is, consequently, large - usually, the pre-processed images (or with some degree of processing like motion correction) are uploaded onto an online database called EMPIAR.

In this notebook, we use scivision to load memory-friendly synthetic data (AlphabetSoup with a noise filter) and real data from the online database of EM images (EMPIAR), and run them through our pre-trained Object Detection in Images with Noise (odin) model.

How to run

  • Open the notebook in an interactive session in your browser with Binder: Launch Binder

To run the notebook on your local machine:

  • Open your terminal
  • Check your conda installation with conda --version. If you don't have conda, install it by following these instructions
  • Clone the repository into your current folder: git clone https://github.com/scivision-gallery/cryoEM-object-detection.git
  • Change directory to the cloned repository, cd cryoEM-object-detection
  • Install the dependencies in a new environment conda env create -f environment.yml
  • Activate the installed environment, conda activate cryoEM-scivision-py39
  • Launch the jupyter interface of your preference by running either jupyter notebook or jupyter lab

The models and data sources used in this notebook