Fit 2dtm peaks
In [10]:
Copied!
import pooch
import mrcfile
import matplotlib.pyplot as plt
import torch
from torch_find_peaks.find_peaks import find_peaks_2d
from torch_find_peaks.refine_peaks import refine_peaks_2d
import pooch
import mrcfile
import matplotlib.pyplot as plt
import torch
from torch_find_peaks.find_peaks import find_peaks_2d
from torch_find_peaks.refine_peaks import refine_peaks_2d
In [2]:
Copied!
mip = pooch.retrieve("https://ftp.ebi.ac.uk/empiar/world_availability/11544/data/scaled_mips/136_Sep13_10.27.07_231_1_scaled_mip_29_0.mrc",known_hash=None)
mip = pooch.retrieve("https://ftp.ebi.ac.uk/empiar/world_availability/11544/data/scaled_mips/136_Sep13_10.27.07_231_1_scaled_mip_29_0.mrc",known_hash=None)
In [3]:
Copied!
with mrcfile.open(mip) as mrc:
mip_tensor = torch.tensor(mrc.data[0])
with mrcfile.open(mip) as mrc:
mip_tensor = torch.tensor(mrc.data[0])
In [4]:
Copied!
plt.imshow(mip_tensor, cmap='gray',interpolation='none',vmax=8.0,vmin=6.0)
plt.imshow(mip_tensor, cmap='gray',interpolation='none',vmax=8.0,vmin=6.0)
Out[4]:
<matplotlib.image.AxesImage at 0x7fe782b39690>
In [62]:
Copied!
peak_data = find_peaks_2d(mip_tensor-float(mip_tensor.median()),
threshold_abs=7.6-float(mip_tensor.median()),
min_distance=5,
return_as='dataframe')
peak_data = find_peaks_2d(mip_tensor-float(mip_tensor.median()),
threshold_abs=7.6-float(mip_tensor.median()),
min_distance=5,
return_as='dataframe')
In [63]:
Copied!
plt.hist(peak_data['height'], bins=20)
pass
plt.hist(peak_data['height'], bins=20)
pass
In [64]:
Copied!
refined_peaks = refine_peaks_2d(mip_tensor-mip_tensor.median(),
peak_coords=peak_data,
boxsize=6,
learning_rate=0.1,
sigma_x=1.5,
sigma_y=1.5,
return_as='dataframe')
refined_peaks = refine_peaks_2d(mip_tensor-mip_tensor.median(),
peak_coords=peak_data,
boxsize=6,
learning_rate=0.1,
sigma_x=1.5,
sigma_y=1.5,
return_as='dataframe')
In [65]:
Copied!
plt.hist(refined_peaks['amplitude'].to_numpy()+float(mip_tensor.median()), bins=20)
plt.hist(refined_peaks['amplitude'].to_numpy()+float(mip_tensor.median()), bins=20)
Out[65]:
(array([ 3., 13., 21., 27., 38., 40., 36., 32., 31., 31., 23., 6., 12., 4., 4., 3., 3., 1., 1., 1.]), array([ 7.25453329, 7.53774309, 7.82095337, 8.10416317, 8.38737297, 8.67058277, 8.95379257, 9.23700237, 9.52021217, 9.80342293, 10.08663273, 10.36984253, 10.65305233, 10.93626213, 11.21947193, 11.50268173, 11.78589249, 12.06910133, 12.35231209, 12.63552189, 12.91873169]), <BarContainer object of 20 artists>)
In [73]:
Copied!
plt.hist(refined_peaks['sigma_x'], bins=20)
pass
plt.hist(refined_peaks['sigma_x'], bins=20)
pass
In [70]:
Copied!
plt.hist(refined_peaks['sigma_y'], bins=20)
pass
plt.hist(refined_peaks['sigma_y'], bins=20)
pass
In [71]:
Copied!
plt.plot(refined_peaks['sigma_x'], refined_peaks['amplitude'].to_numpy()+float(mip_tensor.median()), 'ro', markersize=1)
pass
plt.plot(refined_peaks['sigma_x'], refined_peaks['amplitude'].to_numpy()+float(mip_tensor.median()), 'ro', markersize=1)
pass
In [72]:
Copied!
plt.plot(refined_peaks['sigma_x'], refined_peaks['sigma_y'], 'ro', markersize=1)
pass
plt.plot(refined_peaks['sigma_x'], refined_peaks['sigma_y'], 'ro', markersize=1)
pass
In [ ]:
Copied!
In [ ]:
Copied!