我想写一个Gatan DigitalMicrograph脚本来连续获取多个EELS频谱图像。如果有命令获取Spectrum Image(SI)数据,并将三维图像存储到数组中,我将实现我的计划。但是,我从参考手册中找不到适合SI成像模式的命令。在这种情况下我应该使用什么命令?你对我的目的有什么帮助吗?如果你有一些智慧,将不胜感激。
答案 0 :(得分:0)
如果您安装了频谱成像插件,那么F1帮助文件将在此处有一个关于STEM SI脚本命令的部分......
然而,那里描述的命令将允许一个接一个地获得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" )