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

时间:2016-04-01 14:19:36

标签: dm-script data-acquisition

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

2 个答案:

答案 0 :(得分:0)

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

enter image description here

然而,那里描述的命令将允许一个接一个地获得SI。当通过UI重复开始SI采集时,每个都会以相同的开销重新开始。

我的印象是你希望得到一个更快的"重复SI。 不幸的是,没有任何命令可以轻易地给你。

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

  
      
  • 设置具有多个帧的STEM SI(每个帧传递将被汇总到同一个容器中
  •   
  • 使用" SI HookUP Scripts"在每个像素的基础上( Pixel end )来捕捉" last"获取的SI点(在新帧开始之前)。使用此选项将现有数据复制到新容器中并将orignal设置为零。   

      的或者:
  •   
  • 您也可以使用" 更正开始" HookUp脚本点,如果您将空间漂移校正设置为在帧结束时执行...
  •   

以上内容仅适用于软件同步的SI。对于硬件同步,它变得更加棘手,但您可能能够使用" ImageUpdate"事件监听器。

答案 1 :(得分:0)

一个简短的演示脚本,介绍如何使用SIAcquisition命令进行SI采集的多次迭代,以及"重命名"获得的数据集。

// 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" )