我知道编辑这个网站吗?

苗条曲线

The SLIM Curve plugin for ImageJ has been discontinued in favor of FLIMJ.

screenshot

SLIM Curve screenshot

SLIM Curve 是一个指数曲线拟合库,用于荧光寿命成像 (FLIM) 和光谱寿命成像 (SLIM)。它是由 Paul Barber 和 Cancer Research UK and Medical Research Council Oxford Institute for Radiation Oncology 的先进技术小组以及威斯康星大学麦迪逊分校的Laboratory for Optical and Computational Instrumentation 开发的。 SLIM Curve 用于 Advanced Technology Group 的 Time Resolved Imaging (TRI2) 软件以及 ImageJ 的 SLIM Curve 插件中的 FLIM 功能。

SLIM Curve 中有两种用于曲线拟合的算法:

  1. 第一种是三重积分方法,可以非常快速地估计单个指数寿命分量。
  2. 第二种是 Levenberg-Marquardt 算法或 LMA,它使用迭代、最小二乘最小化方法来生成拟合。这适用于单指数、双指数和三指数模型,以及拉伸指数模型。

SLIM Curve 库代码是用 C89 兼容的 C 语言编写的,并且对于同时拟合多个像素是线程安全的。提供了几个文件作为包装器,用于从 Java 代码调用库:EcfWrapper.c.h 提供 ImageJ 的 SLIM Curve 插件使用的函数调用子集,这些可以使用 JNA 直接从 Java 调用。此外,还有一个 Java CurveFitter 项目,它为 SLIM Curve 代码提供了包装器。这将使用 JNI 以及 loci_curvefitter_SLIMCurveFitter.c.h 调用 C 代码。

安装

SLIM Curve 插件可从“SLIM-Curve”update site 获取。

安装 SLIM Curve 插件后,它就可以在AnalyzeLifetimeSLIM Curve下的菜单中使用。

用法

当您运行该插件时,系统将首先提示您加载生命周期数据文件。 (这应该有一个 .sdt 或 .ics 后缀。)一旦文件加载,就会弹出生命周期图像的灰度版本,该图像是通过对每个像素的所有时间段的光子计数求和而生成的:

grayscale-image

这里红色表示光子计数较低的像素,并且将被排除在生成的任何拟合图像之外。该阈值可在用户界面中调整。创建拟合图像时,黄色像素表示拟合错误。在分析拟合图像期间,蓝色像素表示异常值。

十字光标显示当前拟合的像素。这从图像中最亮的像素开始。在灰度图像周围单击适合其他像素。

弹出拟合衰减图,显示像素拟合的结果:

fitted-decay-graph

此处的图表显示黑色方块表示随时间变化观察到的光子计数,红线表示拟合曲线。还有垂直的蓝色、绿色和红色线条或光标标记正在安装的衰减区域。衰减图下方是显示残差的图​​,即观察值和拟合值之间的差异。为了获得良好的拟合,残差应具有较低的值范围并呈现随机模式。

用户界面面板也会弹出,允许您控制拟合的设置。在名为 Fit 的用户界面面板的初始选项卡上,您可以选择要执行的拟合和分析类型:

ui-fit-tab

  • 区域 允许您拟合整个图像、单个像素、所有像素的总和或灰度图像上定义的每个 ROI 的总和。
  • 算法 选择拟合算法。 推荐 SLIMCurve RLD+LMA。这使用快速寿命确定(也称为三重积分拟合)来快速估计拟合参数。然后进行 Levenberg-Marquardt 最小二乘拟合来完善这些估计。
  • 函数让您可以在单指数、双指数和三指数拟合分量之间进行选择。拉伸指数拟合可用于表征多个指数寿命分量的分布。
  • 噪声模型补偿拟合数据中的噪声。这里的建议是使用最大似然估计噪声模型。这补偿了低光子计数。
  • 拟合图像 选择拟合整个图像时生成的输出图像。这些输出图像使用特殊的生命周期 LUT(查找表或调色板)进行着色。您可以为拟合的每个像素选择 A 强度、Tau 寿命、Z 背景和/或 卡方。当您拟合多个指数分量时,您还可以选择 f 分数贡献和 F 分数强度,以及 Tm 拟合 taus 的平均值。对于拉伸指数拟合,您可以选择 H,它表征多个生命周期的分布。
  • 对灰度进行着色 是一个将表示每个像素的参数值的 LUT 颜色与灰度图像相结合的选项。
  • 分析 允许您选择指定对拟合结果的进一步分析:导出到文本 生成拟合值的文本文件。 VisAD 将拟合数据发送到 VisAD 插件以进行进一步分析。 显示拟合结果 生成包含所有输出图像的单个图像。
  • 当源图像有多个通道时,适合所有通道复选框选择是否适合所有通道或仅适合当前通道。

下一个选项卡的标题是光标

ui-cursors-tab

这里列出了拟合光标的位置。有两种游标:

瞬态光标将适合的衰减区域括起来。 瞬态开始对应于拟合衰减图左侧的蓝色垂直线。 数据开始是中间的绿线。 瞬态结束是右侧的红线。在 Fitted Decay Graph 上拖动这些光标线也会更改 UI 的 Cursors 选项卡上的值,并导致当前像素的重新调整。

激励光标包含要在拟合中使用的激励或仪器响应函数衰减的区域。如果加载激励,衰减会显示在仪器响应函数图中,其光标线类似于拟合衰减图:

excitation-graph

水平绿线控制激发基线,即激发中包含的最小光子计数。垂直的蓝色和绿色光标线定义激励的开始和结束。 励磁延迟瞬态启动 和励磁开始之间的偏移。 激励宽度是激励结束点减去开始点。

为了与 TRI2 兼容,光标值表示为时间值(激发基线 除外,它是光子计数),但该复选框可让您查看衰减直方图中相应的精确索引。

估计光标按钮重置光标,估计当前像素瞬态和激励。还可以通过拖动光标或输入新值来调整它们。如果调整未能优化贴合度,您可以使用“估计光标”按钮返回原始设置。如果加载新图像,则所有设置都不会更改,因此您可能需要使用“估计光标”来查找更适合新图像的光标。

激励 下拉列表用于创建、加载或取消激励。使用激励是可选的,但可以更好地配合。通常,实验者会使用相同的设置创建单独的激发图像,但仅对一些非荧光材料(例如珠子)进行成像。

目前,创建激励需要两个步骤。使用激发寿命图像运行 SLIM 曲线,然后找到合适的像素来使用,也许是默认的最亮的像素。从 UI 的此选项卡中的 Exitation 下选择 Use Current X Y。程序将提示输入名称和保存激发文件的位置。对于第二步,使用“新图像/批次”按钮加载要分析的生命周期图像。现在,在“激励”下拉列表中选择“从文件加载”,然后输入您保存的文件名。当加载激励时,将估计光标。

如果加载了激励,它也会以浅灰色显示在拟合衰减图上:

fitted-decay-graph-excitation

在 UI 面板的下一个标题为 Control 的选项卡中,您可以微调配合的某些方面:

ui-control-tab

  • XY 指定最后一个拟合像素的位置。 (您可以通过将“区域”设置为“单像素”并单击“适合像素”按钮或仅单击灰度图像来适合单个像素。)
  • 开始停止选择要安装的开始和结束时间段。
  • 阈值 确定给定像素的衰减曲线中拟合该像素所需的最小光子数。
  • 卡方目标 控制迭代 LMA 拟合过程将停止的卡方值。 (拟合也会在最大迭代次数后停止。)
  • Bin 可以通过对相邻像素的光子进行分箱来补偿较低的光子计数,但会牺牲一些空间分辨率。

用户界面面板的最后一个选项卡是标题为“参数”的部分,它显示并允许您约束拟合参数。该子面板的实际内容将取决于所选的功能。

ui-params-tab

对于每个参数:

  • 标签,例如 A1Tau2 标识参数。
  • 文本字段显示该参数的当前值。
  • 标有“修复”的复选框可让您在拟合过程中修复该参数的值。
  • 减少卡方AIC 都是拟合优度的度量。 AIC 代表赤池信息标准。与 chisquare 不同,AIC 没有绝对含义,但可用于比较单指数、双指数和三指数拟合以确定哪个模型具有最佳拟合。 拟合单个像素或所有像素求和后,可以在此用户界面面板 Params 部分中查看拟合参数。

SLIM Curve 启动时,UI 的 Fit 选项卡下的 Region 设置为 Image。按“适合图像”按钮将生成在“适合图像”下拉菜单项中选择的图像。 拟合图像下拉菜单中的图像列表随所选的拟合函数而变化,即单指数或多指数。它包括 UI 的 Params 选项卡中显示的拟合参数的组合,以及多指数拟合的分数贡献、分数强度和 tau 均值。

创建拟合图像时,还会弹出直方图工具面板。该面板显示了拟合图像中遇到的值的范围和用于显示这些值的 LUT,以及图像中这些值的分布直方图。

fitted-image-histogram

默认情况下,直方图工具以自动模式出现,LUT 范围的开始和结束自动调整为图像中的最小值和最大值,因此您可以看到所有拟合值的分布。这里灰色虚线表示分布的四分位数。如果取消选中此将范围调整为最小/最大值复选框,直方图将根据四分位数范围进行放大。 (这使用 Tukey 的离群值规则:如果 Q1 是第一个四分位值,Q3 是第三个四分位值,则让四分位距 IQR 等于 Q3 - Q1。然后,小于 Q1 - 1.5 * IQR 或大于 Q3 + 1.5 * IQR 的值被视为离群值并被丢弃。)您还可以输入新的开始值和结束值(这对于强加统一的 LUT 范围很有用,以便您可以比较不同的生命周期图像)或只是拖动直方图开头和结尾的标记。

异常像素将显示为黑色像素。如果将光标放在拟合图像中的它们上,拟合值将显示在 ImageJ 工具栏中。 隐藏范围外的像素复选框会丢弃这些离群值,将它们从所有拟合图像和直方图中排除,它们显示为黑色,并且拟合值变为 Double.NaN。该特殊值被排除在拟合图像的任何后续统计测量之外。它们也以蓝色显示在灰度图像上。

对于具有多个通道的图像,还会有一个“显示所有通道”复选框。当您显示所有通道时,直方图会显示所有通道组合的值。最后,对数 复选框将直方图显示为对数值。请注意,此直方图工具经过增强,如果值非零,则始终在非对数模式下显示至少一个像素条形图,以便可以看到异常值。类似地,在对数模式下,如果直方图 bin 计数为 1,则显示比例条形图,以便可以区分 1 和 0 的 bin 计数。

保存/加载默认提示

excitation

Controlling the default excitation

由于加载/保存文件是用户每次都执行需要的操作,简化了相应过程。无论宏用户想要设置为默认提醒,用户都应该正常加载sdt文件,设置瞬态开始/结束时间提醒文件保存为*irf。然后,用户应从下拉列表中选择“设置为默认值”。这样,具有瞬态开始/结束时间的警告将被保存为默认。一旦需要加载默认时,选择“使用默认警告”即可加载默认。

宏语言支持

SLIM Plugin操作中的所有操作兼容流行的ImageJ macro language。每个按钮、选择、算法选择、分级、噪声模型、下面带有自定义开始结束的默认提示选择都是完全可宏记录的。是典型的典型宏记录,其中用户设置算法、噪声模型、更改瞬时状态时间、加载默认指示、设置chi2目标、固定带宽时间的A值,然后开始初始化。

macro-recording

Example of macro recording SLIM Curve

命令列表如下:

  • 使用生命周期(*.sdt 或 *.ics)文件启动插件:
      call("loci.slim.SLIMProcessor.startSLIMCurve", "true", "/Users/msagar/downloads/", "/4t1_740_60xW_zoom4_256_1mg_1_140218_copy.sdt");
      run("SLIM Curve");
    
  • 改变算法:
      call("loci.slim.SLIMProcessor.setAlgorithmType", "SLIMCurve RLD");
    

    -设定指数数量:

      call("loci.slim.SLIMProcessor.setFunctionType", "Double Exponential");
    
  • 更改噪声模型:
      call("loci.slim.SLIMProcessor.setNoiseModel", "Poisson Data");
    
  • 更改参数:
      call("loci.slim.SLIMProcessor.setFittedImagesType", "3");
    
  • 设置瞬态开始时间:
      call("loci.slim.SLIMProcessor.setTransientStart", "2.0");
    
  • 设置分档:
      call("loci.slim.SLIMProcessor.setBinnning", "3 x 3");
    
  • 加载默认提示:
      call("loci.slim.SLIMProcessor.loadDefaultExcitation", "true");
    
  • 加载默认提示:
      call("loci.slim.SLIMProcessor.loadDefaultExcitation", "true");
    
  • 设置chi2目标值:
      call("loci.slim.SLIMProcessor.setChi2Target", "1.75");
    
  • 修复A值(所有“修复”都是可记录的):
      call("loci.slim.SLIMProcessor.fixA1", "true");
    
  • 开始安装:
      call("loci.slim.SLIMProcessor.startFitting", "");
    
  • 加载现有的激励文件:
      call("loci.slim.SLIMProcessor.setExcitation", "/Users/msagar/Documents/qwe.irf");
    
  • 设置为双指数(组件数量=2):
      call("loci.slim.SLIMProcessor.setFunctionType", "Double Exponential");
    
  • 修复Z以进行双指数导出:
      call("loci.slim.SLIMProcessor.fixZ", "true");
    

    对于批处理,可以记录整个操作过程。宏记录导出值所需的文件名。典型的批处理宏代码如下所示:

  • 开始安装:
      call("loci.slim.SLIMProcessor.batchModeSet", "true");
      call("loci.slim.SLIMProcessor.exportFileSet", "pixel.tsv", "histograms.tsv", "summary.tsv");
      call("loci.slim.SLIMProcessor.startBatchMacro", "");
    

    当选择“将直方图导出到文本”或/和“将像素导出到文本”时,将输出导出到也记录在宏中的CSV或TSV文件时。典型的代码如下所示:

    call("loci.slim.SLIMProcessor.exportHistoFileName", "histoGram.csv", ",");
    call("loci.slim.SLIMProcessor.exportPixelFileName", "pixel.csv", ",");
    call("loci.slim.SLIMProcessor.setAnalysisList", "true", "2");
    

    完整的宏示例

将直方图和像素信息导出到 CSV 文件的完整宏示例:

call("loci.slim.SLIMProcessor.startSLIMCurve", "true", "/Users/msagar/downloads/", "/4t1_740_60xW_zoom4_256_1mg_1_140218_copy.sdt");
run("SLIM Curve");
call("loci.slim.SLIMProcessor.setFunctionType", "Double Exponential");
call("loci.slim.SLIMProcessor.loadDefaultExcitation", "true");
wait(1000);
call("loci.slim.SLIMProcessor.setWidthPrompt", "1.8359");
call("loci.slim.SLIMProcessor.setWidthPrompt", "4.8533");
call("loci.slim.SLIMProcessor.setDelayPrompt", "-0.3791");
call("loci.slim.SLIMProcessor.setBinnning", "3 x 3");
call("loci.slim.SLIMProcessor.fixZ", "true");
wait(1000);
call("loci.slim.SLIMProcessor.startFitting", "");
call("loci.slim.SLIMProcessor.exportHistoFileName", "histogram1.csv", ",");
call("loci.slim.SLIMProcessor.exportPixelFileName", "pixel1.csv", ",");
call("loci.slim.SLIMProcessor.setAnalysisList", "true", "2");

批处理模式

一旦您对源图像的完成设置感到满意,您就可以在一系列相似的上图像使用相同的设置。所有图像应具有相同数量的时间段。要进入批处理模式,只需单击“新文件/批处理”按钮并选择一个文件夹或一组图像。将弹出批处理模式 UI:

batch-mode-ui

您可以将像素值、直方图值和统计数据以及汇总直方图值和统计数据导出到文件。这可以是相同的文件或单独的文件。默认值是制表符分隔值,但分隔符允许分隔值。

批处理开始后,将弹出一个窗口,每个生命周期文件的直方图和统计信息,以及摘要直方图和统计信息:

batch-mode-window

每个源生命周期对于图像 UI 的 Fit 选项卡的 Fitted Images 下拉列表中的参数每个都有一行直方图。单击该行将源图像加载到插件中。

请注意,您不能以批量处理模式开始,您需要首先导入单个图像并确保导入设置合适。

宏示例

dir = getDirectory("Choose Source Directory ");
Dialog.create("Batch Processing");
Dialog.addCheckbox("Export Pixels to Text", true);
Dialog.addCheckbox("Export Histograms to Text", true);
Dialog.addCheckbox("Export Batch Histogram to Text", true);
Dialog.addString("Save as", "", 20);
Dialog.show();
pixels = Dialog.getCheckbox();
histos = Dialog.getCheckbox();
batchHisto = Dialog.getCheckbox();
output = Dialog.getString();
if (pixels || histos) {
    list = getFileList(dir);
    setBatchMode(true);
    okay = call("loci.slim.SLIM_PlugIn.startBatch");
//  if (okay) { // doesn't work
        for (i = 0; i < list.length; i++) {
            showProgress(i+1, list.length);
            call("loci.slim.SLIM_PlugIn.batch", dir + list[i], output, pixels, histos);
        }
        call("loci.slim.SLIM_PlugIn.endBatch");
//  }
}
if (batchHisto) {
    list = getFileList(dir);
    setBatchMode(true);
    call("loci.slim.SLIM_PlugIn.startBatchHisto");
    for (i = 0; i < list.length; ++i) {
        showProgress(i+1, list.length);
        call("loci.slim.SLIM_PlugIn.batchHisto", dir + list[i], output);
    }
    call("loci.slim.SLIM_PlugIn.endBatchHisto");
}

###使用分类进行细分

对于某些特定的应用程序,您可能需要分析生命周期图像中的特定片段。特别是,Fiji 的 §§5§§§ 插件对于基于机器学习的图像分割非常有用。我们使用可以特定训练实例的一张图像来训练分类器,然后使用该分类器来分割图像其他。通过分层数据,我们可以创建一个角色,并使用 ROI 管理器,我们可以覆盖 ROI 来分析的不同部分。使用分类进行分割的步骤是:

  1. 使用 SLIM Curve 插件打开生命周期图像。
  2. Train the classifier使用可训练的Weka分割。
  3. 创建实例以使用所需的类数据来训练分类器。 4.点击“训练分类器”按钮来训练分类器。
  4. 选择“创建结果”来创建分割图像(您可以保存分类器以供以后使用)。 6.使用阈值工具对图像进行阈值处理,删除不需要的区域。 7.运行“创建蒙版”和“创建选区”命令来创建ROI。您可以使用search bar(按T)轻松执行命令。
  5. L将 ROI 添加到 ROI 管理器。将其与寿命图像平均值并开始分析。

weka-module overlay

###结果比较

SLIM Curve 插件的结果与 SPCImage 等寿命分析软件进行了合理的比较。以下是使用 SPCImage 和 SLIM 曲线获得的寿命之间的比较小,香用于豆素 6 染料的寿命分析。已分析的寿命图像可在here中找到,用于产生的预测的尿素图像可在here中找到。严格设置在 1.5 至 5.2 ns之间。(Z)固定为0.7。进行了单部件。分箱为3x3。结果表明,对于随机选择的5个点,从SLIM曲线获得的寿命值与从SPCImage获得的值超出0.5%-2%。下面给出了相同位置的寿命。

X SLIM 曲线(以ps为单位) SPCImage(以 ps 为单位) 差异(%)  
166 166 166 113 166 113 113 2582 2582 2567 2582 2567 2567 0.584 0.584
93 93 93 37 37 2488 2488 2539 2488 2539 2539 -2.01 -2.01
195 195 195 76 76 2548 2548 2602 2602 -2.08 -2.08
207 207 207 202 207 202 202 2464 2464 2487 2464 2487 2487 -0.92 -0.92
219 219 219 49 219 49 49 2470 2470 2493 2470 2493 2493 -0.922  

获取帮助

如果您有疑问,请在 Image.sc Forumslim-curve tag 上提问。