Source code for palmari.image_tools.intensity
import numpy as np
import pandas as pd
import dask.array as da
from dask_image.ndfilters import convolve
[docs]def smooth_average(x, w):
r = (da.arange(w) - w / 2) / (w / 6)
gaussian = da.exp(-0.5 * r**2)
gaussian /= da.sum(gaussian)
return convolve(x, gaussian, "reflect").compute()
[docs]def mean_intensity_center(data):
T, W, H = data.shape
# indices = tuple(
# np.ogrid[0:T, (W // 2 - 10) : (W // 2 + 10), (H // 2 - 10) : (H // 2 + 10)]
# )
# center = data[indices]
# print(indices)
center = data[:, (W // 2 - 10) : (W // 2 + 10), :]
center = center[:, :, (H // 2 - 10) : (H // 2 + 10)]
average = center.mean(axis=(1, 2))
smoothed_average = smooth_average(average, min(500, average.shape[0]))
return pd.DataFrame.from_dict(
{
"intensity": smoothed_average,
"frame": np.arange(smoothed_average.shape[0]),
}
)