如何自动进行多次SI采集?

How to carry out multiple SI acquisition automatically?

我想编写一个 Gatan DigitalMicrograph 脚本来连续获取多个 EELS 光谱图像。如果有获取Spectrum Image (SI) 数据的命令,并将三维图像存储到数组中,我将实现我的计划。但是,我无法从参考手册中找到适用于 SI 成像模式的命令。在这种情况下我应该使用什么命令?您对我的目的有帮助吗?如果您分享一些智慧,我们将不胜感激。

如果您安装了光谱成像插件,那么 F1 帮助文件将在此处包含有关 STEM SI 脚本命令的部分...


但是,那里描述的命令将允许一个接一个地获取 SI。每个都将以与通过 UI.

重复启动 SI 采集时相同的开销重新开始

我的印象是您想获得 "faster" 重复 SI。 不幸的是,不存在可以轻松为您提供该功能的命令。

但是,您可以通过以下想法(未经测试)创建 "work-arround" 解决方案:

  • Set up a STEM SI with multiple-frames
    (Each frame pass will be summed into the same container)
  • Use the "SI HookUP Scripts" on a per-pixel basis (Pixel end) to catch the "last" acquired SI point (before the new frame starts). Use this to copy the existing data into a new container and set the orignal back to zero.

    Alternative:
  • You might also be able to use the "Correction start" HookUp script point, if you set spatial drift-correction to perform at end of frame...

以上仅适用于软件同步 SI。对于硬件同步,它变得更加棘手,但您可以使用 "ImageUpdate" 事件侦听器执行类似的操作。

关于如何使用 SIAcquisition 命令多次迭代 SI 采集和"renaming"采集的数据集的简短演示脚本。

// Assumptions:  
// -  GMS 2.3 used
// -  Valid survey image and ROI already assigned
// -  SI array size already defined
// -  Signals and other SI settings made

number SIx, SIy 
SIGetFieldValue( "2D Array, X samples", SIx )
SIGetFieldValue( "2D Array, Y samples", SIy )
Result("\n SI size:"+ SIx + "x" + SIy )

// Start SI
number nSI = 3
for (number i=0; i<nSI; i++ )
{
    SIInvokeButton( "Start/Stop", 1 )
    while(SIIsAcquisitionActive()) yield()
    sleep(0.5)          // Small delay needed to allow DM finish SI acquisition clean-up

    // Find (and rename) SI DataSets
    number nImgDoc = CountImageDocuments()
    string findStr = "Spectrum Image"
    for (number d=0; d<nImgDoc; d++ )
    {
        string docName = GetImageDocument(d).ImageDocumentGetName()
        if ( find(docName,findStr) == (len(docName)-len(findStr)) )
        {
            GetImageDocument(d).ImageDocumentSetName( docName + "#"+(d+1) )
        }   
    }
}
OKDialog( "Done" )