Apple Picker

We demonstrate ASPIRE’s particle picking methods using the Apple class.

import logging
import os

import matplotlib.pyplot as plt
import mrcfile

from aspire.apple.apple import Apple

logger = logging.getLogger(__name__)

Read and Plot Micrograph

Here we demonstrate reading in and plotting a raw micrograph.

file_path = os.path.join(
    os.path.dirname(os.getcwd()), "data", "falcon_2012_06_12-14_33_35_0.mrc"
)

with mrcfile.open(file_path, mode="r") as mrc:
    micro_img = mrc.data

plt.title("Sample Micrograph")
plt.imshow(micro_img, cmap="gray")
plt.show()
Sample Micrograph

Initialize Apple

Initiate ASPIRE’s Apple class. Apple admits many options relating to particle sizing and mrc processing.

apple_picker = Apple(
    particle_size=78, min_particle_size=19, max_particle_size=156, tau1=710, tau2=7100
)

Pick Particles and Find Centers

Here we use the process_micrograph method from the Apple class to find particles in the micrograph. It will also return an image suitable for display, and optionally save a jpg.

centers, particles_img = apple_picker.process_micrograph(file_path, create_jpg=True)

# Note that if you only desire ``centers`` you may call ``process_micrograph_centers(file_path,...)``.
  0%|          | 0/256 [00:00<?, ?it/s]
  0%|          | 1/256 [00:00<00:52,  4.89it/s]
  1%|          | 2/256 [00:00<00:36,  6.91it/s]
  1%|          | 3/256 [00:00<00:33,  7.45it/s]
  2%|▏         | 5/256 [00:00<00:32,  7.80it/s]
  2%|▏         | 6/256 [00:00<00:30,  8.23it/s]
  3%|▎         | 8/256 [00:00<00:27,  8.97it/s]
  4%|▎         | 9/256 [00:01<00:29,  8.24it/s]
  4%|▍         | 10/256 [00:01<00:28,  8.63it/s]
  5%|▍         | 12/256 [00:01<00:26,  9.09it/s]
  5%|▌         | 13/256 [00:01<00:29,  8.16it/s]
  6%|▌         | 15/256 [00:01<00:27,  8.67it/s]
  7%|▋         | 17/256 [00:02<00:28,  8.44it/s]
  7%|▋         | 19/256 [00:02<00:26,  9.00it/s]
  8%|▊         | 20/256 [00:02<00:25,  9.16it/s]
  8%|▊         | 21/256 [00:02<00:27,  8.45it/s]
  9%|▊         | 22/256 [00:02<00:26,  8.69it/s]
  9%|▉         | 24/256 [00:02<00:25,  9.18it/s]
 10%|▉         | 25/256 [00:02<00:28,  8.18it/s]
 11%|█         | 27/256 [00:03<00:25,  8.98it/s]
 11%|█         | 28/256 [00:03<00:24,  9.18it/s]
 11%|█▏        | 29/256 [00:03<00:27,  8.34it/s]
 12%|█▏        | 30/256 [00:03<00:26,  8.63it/s]
 12%|█▎        | 32/256 [00:03<00:24,  9.32it/s]
 13%|█▎        | 33/256 [00:03<00:26,  8.36it/s]
 14%|█▎        | 35/256 [00:04<00:24,  9.13it/s]
 14%|█▍        | 37/256 [00:04<00:25,  8.51it/s]
 15%|█▍        | 38/256 [00:04<00:24,  8.73it/s]
 16%|█▌        | 40/256 [00:04<00:23,  9.21it/s]
 16%|█▌        | 41/256 [00:04<00:25,  8.34it/s]
 17%|█▋        | 43/256 [00:04<00:23,  8.96it/s]
 17%|█▋        | 44/256 [00:05<00:23,  9.09it/s]
 18%|█▊        | 45/256 [00:05<00:27,  7.66it/s]
 18%|█▊        | 47/256 [00:05<00:23,  8.86it/s]
 19%|█▉        | 48/256 [00:05<00:23,  8.99it/s]
 19%|█▉        | 49/256 [00:05<00:26,  7.90it/s]
 20%|█▉        | 50/256 [00:05<00:26,  7.78it/s]
 20%|██        | 52/256 [00:06<00:22,  9.08it/s]
 21%|██        | 53/256 [00:06<00:24,  8.31it/s]
 21%|██        | 54/256 [00:06<00:23,  8.64it/s]
 21%|██▏       | 55/256 [00:06<00:24,  8.23it/s]
 22%|██▏       | 57/256 [00:06<00:23,  8.54it/s]
 23%|██▎       | 58/256 [00:06<00:22,  8.80it/s]
 23%|██▎       | 59/256 [00:06<00:21,  9.07it/s]
 23%|██▎       | 60/256 [00:06<00:21,  8.99it/s]
 24%|██▍       | 61/256 [00:07<00:26,  7.46it/s]
 25%|██▍       | 63/256 [00:07<00:21,  8.80it/s]
 25%|██▌       | 65/256 [00:07<00:22,  8.38it/s]
 26%|██▌       | 66/256 [00:07<00:22,  8.32it/s]
 27%|██▋       | 68/256 [00:07<00:20,  9.18it/s]
 27%|██▋       | 69/256 [00:08<00:22,  8.25it/s]
 28%|██▊       | 71/256 [00:08<00:20,  8.82it/s]
 28%|██▊       | 72/256 [00:08<00:20,  9.02it/s]
 29%|██▊       | 73/256 [00:08<00:23,  7.68it/s]
 29%|██▉       | 75/256 [00:08<00:20,  8.83it/s]
 30%|███       | 77/256 [00:09<00:22,  7.96it/s]
 30%|███       | 78/256 [00:09<00:21,  8.21it/s]
 31%|███▏      | 80/256 [00:09<00:18,  9.36it/s]
 32%|███▏      | 81/256 [00:09<00:20,  8.51it/s]
 32%|███▏      | 83/256 [00:09<00:18,  9.17it/s]
 33%|███▎      | 85/256 [00:09<00:20,  8.19it/s]
 34%|███▍      | 87/256 [00:10<00:18,  9.15it/s]
 34%|███▍      | 88/256 [00:10<00:18,  9.24it/s]
 35%|███▍      | 89/256 [00:10<00:19,  8.49it/s]
 35%|███▌      | 90/256 [00:10<00:19,  8.65it/s]
 36%|███▌      | 92/256 [00:10<00:17,  9.29it/s]
 36%|███▋      | 93/256 [00:10<00:19,  8.36it/s]
 37%|███▋      | 95/256 [00:11<00:18,  8.91it/s]
 38%|███▊      | 96/256 [00:11<00:17,  8.96it/s]
 38%|███▊      | 97/256 [00:11<00:20,  7.66it/s]
 39%|███▊      | 99/256 [00:11<00:17,  9.10it/s]
 39%|███▉      | 100/256 [00:11<00:16,  9.18it/s]
 39%|███▉      | 101/256 [00:11<00:20,  7.75it/s]
 40%|███▉      | 102/256 [00:11<00:18,  8.11it/s]
 41%|████      | 104/256 [00:12<00:16,  9.14it/s]
 41%|████      | 105/256 [00:12<00:18,  8.29it/s]
 41%|████▏     | 106/256 [00:12<00:17,  8.53it/s]
 42%|████▏     | 108/256 [00:12<00:16,  9.08it/s]
 43%|████▎     | 109/256 [00:12<00:19,  7.68it/s]
 43%|████▎     | 110/256 [00:12<00:18,  8.05it/s]
 44%|████▍     | 112/256 [00:13<00:15,  9.14it/s]
 44%|████▍     | 113/256 [00:13<00:17,  8.26it/s]
 45%|████▍     | 114/256 [00:13<00:17,  8.04it/s]
 45%|████▌     | 116/256 [00:13<00:15,  9.23it/s]
 46%|████▌     | 117/256 [00:13<00:17,  7.93it/s]
 46%|████▌     | 118/256 [00:13<00:16,  8.18it/s]
 47%|████▋     | 120/256 [00:13<00:14,  9.29it/s]
 47%|████▋     | 121/256 [00:14<00:17,  7.80it/s]
 48%|████▊     | 122/256 [00:14<00:16,  8.24it/s]
 48%|████▊     | 124/256 [00:14<00:14,  9.41it/s]
 49%|████▉     | 125/256 [00:14<00:15,  8.51it/s]
 50%|████▉     | 127/256 [00:14<00:14,  8.91it/s]
 50%|█████     | 129/256 [00:15<00:15,  8.40it/s]
 51%|█████     | 130/256 [00:15<00:14,  8.62it/s]
 51%|█████     | 131/256 [00:15<00:14,  8.50it/s]
 52%|█████▏    | 133/256 [00:15<00:15,  8.09it/s]
 53%|█████▎    | 135/256 [00:15<00:13,  9.13it/s]
 53%|█████▎    | 136/256 [00:15<00:13,  9.21it/s]
 54%|█████▎    | 137/256 [00:16<00:15,  7.80it/s]
 54%|█████▍    | 139/256 [00:16<00:13,  8.97it/s]
 55%|█████▍    | 140/256 [00:16<00:12,  8.95it/s]
 55%|█████▌    | 141/256 [00:16<00:14,  8.15it/s]
 55%|█████▌    | 142/256 [00:16<00:14,  7.98it/s]
 56%|█████▋    | 144/256 [00:16<00:12,  9.13it/s]
 57%|█████▋    | 145/256 [00:16<00:14,  7.70it/s]
 57%|█████▋    | 147/256 [00:17<00:12,  8.92it/s]
 58%|█████▊    | 148/256 [00:17<00:12,  8.94it/s]
 58%|█████▊    | 149/256 [00:17<00:14,  7.51it/s]
 59%|█████▉    | 151/256 [00:17<00:12,  8.61it/s]
 59%|█████▉    | 152/256 [00:17<00:11,  8.86it/s]
 60%|█████▉    | 153/256 [00:17<00:12,  7.92it/s]
 61%|██████    | 155/256 [00:18<00:11,  8.48it/s]
 61%|██████▏   | 157/256 [00:18<00:12,  8.25it/s]
 62%|██████▏   | 159/256 [00:18<00:11,  8.80it/s]
 62%|██████▎   | 160/256 [00:18<00:10,  8.85it/s]
 63%|██████▎   | 161/256 [00:18<00:12,  7.63it/s]
 64%|██████▎   | 163/256 [00:19<00:10,  9.03it/s]
 64%|██████▍   | 164/256 [00:19<00:10,  9.05it/s]
 64%|██████▍   | 165/256 [00:19<00:11,  7.60it/s]
 65%|██████▍   | 166/256 [00:19<00:11,  8.09it/s]
 66%|██████▌   | 168/256 [00:19<00:09,  9.22it/s]
 66%|██████▌   | 169/256 [00:19<00:10,  8.30it/s]
 67%|██████▋   | 171/256 [00:19<00:09,  8.94it/s]
 67%|██████▋   | 172/256 [00:20<00:09,  9.11it/s]
 68%|██████▊   | 173/256 [00:20<00:10,  7.81it/s]
 68%|██████▊   | 175/256 [00:20<00:09,  8.84it/s]
 69%|██████▉   | 176/256 [00:20<00:08,  9.06it/s]
 69%|██████▉   | 177/256 [00:20<00:10,  7.74it/s]
 70%|██████▉   | 179/256 [00:20<00:08,  8.83it/s]
 71%|███████   | 181/256 [00:21<00:08,  8.50it/s]
 71%|███████   | 182/256 [00:21<00:08,  8.32it/s]
 72%|███████▏  | 184/256 [00:21<00:07,  9.29it/s]
 72%|███████▏  | 185/256 [00:21<00:08,  7.94it/s]
 73%|███████▎  | 187/256 [00:21<00:07,  8.73it/s]
 74%|███████▍  | 189/256 [00:22<00:07,  8.39it/s]
 75%|███████▍  | 191/256 [00:22<00:07,  8.76it/s]
 75%|███████▌  | 193/256 [00:22<00:07,  7.96it/s]
 76%|███████▌  | 195/256 [00:22<00:06,  9.03it/s]
 77%|███████▋  | 196/256 [00:22<00:06,  9.00it/s]
 77%|███████▋  | 197/256 [00:23<00:07,  8.33it/s]
 78%|███████▊  | 199/256 [00:23<00:06,  8.92it/s]
 79%|███████▊  | 201/256 [00:23<00:06,  8.03it/s]
 79%|███████▉  | 203/256 [00:23<00:05,  9.00it/s]
 80%|███████▉  | 204/256 [00:23<00:05,  9.04it/s]
 80%|████████  | 205/256 [00:23<00:06,  8.23it/s]
 81%|████████  | 207/256 [00:24<00:05,  8.94it/s]
 81%|████████▏ | 208/256 [00:24<00:05,  9.04it/s]
 82%|████████▏ | 209/256 [00:24<00:05,  8.09it/s]
 82%|████████▏ | 211/256 [00:24<00:04,  9.06it/s]
 83%|████████▎ | 212/256 [00:24<00:04,  9.17it/s]
 83%|████████▎ | 213/256 [00:24<00:05,  7.69it/s]
 84%|████████▍ | 215/256 [00:25<00:04,  9.12it/s]
 84%|████████▍ | 216/256 [00:25<00:04,  9.20it/s]
 85%|████████▍ | 217/256 [00:25<00:04,  8.30it/s]
 86%|████████▌ | 219/256 [00:25<00:04,  8.97it/s]
 86%|████████▋ | 221/256 [00:25<00:04,  8.39it/s]
 87%|████████▋ | 223/256 [00:25<00:03,  9.25it/s]
 88%|████████▊ | 224/256 [00:26<00:03,  9.20it/s]
 88%|████████▊ | 225/256 [00:26<00:04,  7.66it/s]
 89%|████████▊ | 227/256 [00:26<00:03,  9.02it/s]
 89%|████████▉ | 228/256 [00:26<00:03,  9.03it/s]
 89%|████████▉ | 229/256 [00:26<00:03,  8.04it/s]
 90%|█████████ | 231/256 [00:26<00:02,  8.92it/s]
 91%|█████████ | 233/256 [00:27<00:02,  8.51it/s]
 92%|█████████▏| 235/256 [00:27<00:02,  9.06it/s]
 92%|█████████▏| 236/256 [00:27<00:02,  9.02it/s]
 93%|█████████▎| 237/256 [00:27<00:02,  7.71it/s]
 93%|█████████▎| 239/256 [00:27<00:01,  8.94it/s]
 94%|█████████▍| 240/256 [00:27<00:01,  8.86it/s]
 94%|█████████▍| 241/256 [00:28<00:01,  8.04it/s]
 95%|█████████▍| 242/256 [00:28<00:01,  8.20it/s]
 95%|█████████▌| 244/256 [00:28<00:01,  8.86it/s]
 96%|█████████▌| 245/256 [00:28<00:01,  7.67it/s]
 96%|█████████▋| 247/256 [00:28<00:00,  9.06it/s]
 97%|█████████▋| 248/256 [00:28<00:00,  9.09it/s]
 97%|█████████▋| 249/256 [00:29<00:00,  8.04it/s]
 98%|█████████▊| 251/256 [00:29<00:00,  9.04it/s]
 98%|█████████▊| 252/256 [00:29<00:00,  9.16it/s]
 99%|█████████▉| 253/256 [00:29<00:00,  8.37it/s]
 99%|█████████▉| 254/256 [00:29<00:00,  8.27it/s]
100%|██████████| 256/256 [00:29<00:00,  9.41it/s]
100%|██████████| 256/256 [00:29<00:00,  8.59it/s]

Plot the Picked Particles

Observe the number of particles picked and plot the result from Apple.

img_dim = micro_img.shape
particles = centers.shape[0]
logger.info(f"Dimensions of the micrograph are {img_dim}")
logger.info(f"{particles} particles were picked")

plt.imshow(particles_img, cmap="gray")
plt.show()
apple picker

Total running time of the script: (0 minutes 52.801 seconds)

Gallery generated by Sphinx-Gallery