这里提供一种检验成像通道是否对齐的方式。
利用激光共聚焦显微镜对多色信号成像进行三维共定位分析具有非常广泛的应用。而共定位分析的一个前提假设是:如果一个分子同时被多种荧光染料标记,那么在相应的成像通道中,所得荧光信号的空间坐标基本上是一致的。得益于激光点扫描和精妙的光学系统设计,这个前提假设在激光共聚焦显微镜是满足的。
不过,我们还是可以通过采集多色荧光小球的信号,通过数据分析来判断是否满足要求。
如上图所示,是荧光小球通过激光共聚焦进行三维成像,然后使用Imaris分析渲染的结果。其中红色代表Cy3染料,绿色代表FAM荧光染料。可以很清楚地看到,这个多色荧光小球作为marker,不同通道下的定位基本上一致。同时也能发现,从单颗粒角度看,荧光小球实际大小还是变化比较大的,而且包含的荧光分子比例也各不相同。
通过 Imaris 选中一些合适的 marker 单颗粒,然后导出它们的坐标数据,接下来我们就可以进行分析了。
fps = glob("*/*Detailed.csv")cy3 = pd.read_csv(fps[0], header=2)fam = pd.read_csv(fps[1], header=2)showChannelTranslation(cy3, fam)使用自定义函数 showChannelTranslation 函数可以查看这两个通道的空间定位平均偏差。结果如下:
可以看到,通过202对marker共定位信号的分析,在 x 轴方向存在的平均偏移是 0.037 μm,y方向是 0.052 μm,z方向更小。相对于激光共聚焦显微镜的空间分辨率来说,这个偏移是完全可以接受的。
showChannelTranslation
from glob import globimport pandas as pdfrom scipy.spatial import KDTreeimport numpy as np
def showChannelTranslation(ch1:pd.DataFrame, ch2:pd.DataFrame)->dict: '''查看多色marker信号在ch2通道相对于ch1的偏移情况''' locs = ch1.filter(items=['Position X', 'Position Y', 'Position Z']) tree = KDTree(locs) # 收集数据 box = [] dd = [] for idx, row in ch2.iterrows(): ploc = np.array([row['Position X'], row['Position Y'], row['Position Z'], ]) distances, inds = tree.query(ploc, k=2) dist = distances[0] ind = inds[0] row_ = locs.loc[ind] ploc_ = np.array([row_['Position X'], row_['Position Y'], row_['Position Z'], ]) arrow = ploc - ploc_ box.append(arrow) dd.append(dist) dat = np.array(box) res = { 'mean': dat.mean(axis=0), 'std': dat.std(axis=0), 'n': len(dat), 'dat': dat, 'dist': dd } return res