Note
Go to the end to download the full example code
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()
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()
Total running time of the script: (0 minutes 52.801 seconds)