如何重置或删除 DM 脚本中的标签组和标签列表?
How to reset or remove tag groups and tag lists in a DM script?
如何重置或删除 DM 脚本中的标签组和标签列表?
一些背景:
我正在准备一个脚本,用于分析 GMS 2 中的一系列 EELS 光谱。我将背景拟合到幂律模型,并从背景光谱中的标签中获取拟合参数,包括值和西格玛。但是,如果尝试在单个脚本中分析各种边缘,我发现拟合参数的西格玛值取决于计算顺序。为了检查这一点,我展示了一个脚本。如果我只定义一次拟合区域,它就可以正常工作,但如果我这样做两次(仅用于测试,我知道那是无稽之谈),则西格玛值会降低。如果拟合区域不同,结果是相同的。我想重置或删除 TagGroup 以检查问题是否已解决,但我无法这样做。
TagGroup Tg
Number a0, sa0, a1, sa1
taggroup bandsTgs = NewTagList()
taggroup bandTg = NewTagGroup()
image spec := GetFrontImage()
// ...............First Time.....................................
bandTg.TagGroupSetTagAsFloat( "start", 600 ) // calibrated value!
bandTg.TagGroupSetTagAsFloat( "end", 800 ) // calibrated value!
bandsTgs.TagGroupInsertTagAsTagGroup( Infinity(), bandTg )
image bkg1 := EELSFitPowerLawBackground( spec, bandsTgs )
bkg1.ShowImage()
tg = bkg1.ImageGetTagGroup() // Fit parameters(in eV) from the BKG spectrum Tags
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a0:value", a0 )
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a0:sigma", sa0 )
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a1:value", a1 )
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a1:sigma", sa1 )
Result("\n Fitting BKG parameters. First time ")
Result("\n a0 : " + a0)
Result("\n sa0 : " + sa0)
Result("\n a1 : " + a1)
Result("\n sa1 : " + sa1)
// Second Time........I get a differetn result if a repeat the fit-region definition
bandTg.TagGroupSetTagAsFloat( "start", 600 ) // calibrated value!
bandTg.TagGroupSetTagAsFloat( "end", 800 ) // calibrated value!
bandsTgs.TagGroupInsertTagAsTagGroup( Infinity(), bandTg )
image bkg2 := EELSFitPowerLawBackground( spec, bandsTgs )
bkg2.ShowImage()
tg = bkg2.ImageGetTagGroup() // Fit parameters(in eV) from the BKG spectrum Tags
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a0:value", a0 )
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a0:sigma", sa0 )
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a1:value", a1 )
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a1:sigma", sa1 )
Result("\n")
Result("\n Fitting BKG parameters. Second time ")
Result("\n a0 : " + a0)
Result("\n sa0 : " + sa0)
Result("\n a1 : " + a1)
Result("\n sa1 : " + sa1)
bandsTgs.TagGroupOpenBrowserWindow( "BandTags", 0 ) // To show the Tag structure
我认为您需要的是对 DigitalMicrograph 中的 tags 更全面的描述:
请注意
There exist simplified wrapper commands for simple scripts
比如
image img := RealImage( "", 4, 10 )
SetNumberNote( img, "TagPath:With:SubTag:TagName", 12.2 )
DeleteNote( img, "TagPath:With:SubTag:TagName")
然而,底层对象是TagGroup
对象,有很多特定的命令。当然,您总是可以使用 complete 对象实现 simple 的东西。
接下来,重要的是要知道
There is a difference between TagGroup
and TagList
.
两者都是表面上的 TagGroup
个对象,但某些命令只对其中一个有效。 TagLists 有索引条目,TagGroups 有标签条目。
当您开始向组/列表中插入或要从它们中删除时,两者的区别变得很重要,当您遍历结构时,它也变得很重要。
另请注意,TagGroup
条目按字母数字排序,而 TagList
条目按索引排序。
一些例子:
格式为 TagGroupInsertTagAs...
TagGroupGetIndexedTagAs...
的命令仅适用于 TagLists
格式为 TagGroupSetTagAs...
TagGroupGetTagAs...
的命令仅适用于 TagGroups
要从 TagList
中删除标签,您需要使用 TagGroupDeleteTagWithIndex
要从 TagGroup
中删除标签,您需要使用 TagGroupDeleteTagWithLabel
有时您可以通过将 TagList
中的 index 用作 label 来解决此问题,方法是将其放入在 [
和 ]
之间作为标记路径。但也有一些情况需要'TagGroup'和'TagList'
的区别
There are different options to delete tags
TagGroupDeleteAllTags()
删除 TagGroup 或 TagList 的 'all' 个子标签 -但不是 group/list 条目本身。
TagGroupDeleteTagWithLabel()
删除标签指定的 TagGroup 中的特定标签。
TagGroupDeleteTagWithIndex()
删除索引指定的 TagList 中的特定标签。请注意,这会更改其他条目的索引!
例子
下面的代码从上图中创建标签组:
tagGroup rootTg = NewTagGroup()
tagGroup tg = NewTagGroup()
tagGroup tl = NewTagList()
tg.TagGroupSetTagAsString( "value", "I am a string tag")
tg.TagGroupSetTagAsString( "2", "My tag at #2")
tg.TagGroupSetTagAsString( "Name", "Hello")
tg.TagGroupSetTagAsString( "1", "My tag at #1")
tl.TagGroupInsertTagAsString( 0, "String tag #1" )
tl.TagGroupInsertTagAsString( 1, "String tag #2" )
tl.TagGroupInsertTagAsString( 2, "String tag #3" )
tl.TagGroupInsertTagAsString( 1, "String tag #4" )
rootTg.TagGroupSetTagAsTagGroup( "TagGroup", tg )
rootTg.TagGroupSetTagAsTagGroup( "TagList", tl )
rootTg.TagGroupOpenBrowserWindow( "TagGroup example", 0 )
要删除“姓名:你好”标签(已排序组中的第 3 个标签),我们将使用以下三种之一:
rootTg.TagGroupDeleteTagWithLabel( "TagGroup:Name" )
tg.TagGroupDeleteTagWithLabel( "Name" )
tg.TagGroupDeleteTagWithIndex( 2 )
要删除 TagList 中的第 3 个条目,我们将使用以下三种之一:
rootTg.TagGroupDeleteTagWithLabel( "TagList:[2]" )
tl.TagGroupDeleteTagWithLabel( "[2]" )
tl.TagGroupDeleteTagWithIndex( 2 )
要删除整个 TagList,我们将使用
rootTg.TagGroupDeleteTagWithLabel( "TagList" )
如何重置或删除 DM 脚本中的标签组和标签列表?
一些背景:
我正在准备一个脚本,用于分析 GMS 2 中的一系列 EELS 光谱。我将背景拟合到幂律模型,并从背景光谱中的标签中获取拟合参数,包括值和西格玛。但是,如果尝试在单个脚本中分析各种边缘,我发现拟合参数的西格玛值取决于计算顺序。为了检查这一点,我展示了一个脚本。如果我只定义一次拟合区域,它就可以正常工作,但如果我这样做两次(仅用于测试,我知道那是无稽之谈),则西格玛值会降低。如果拟合区域不同,结果是相同的。我想重置或删除 TagGroup 以检查问题是否已解决,但我无法这样做。
TagGroup Tg
Number a0, sa0, a1, sa1
taggroup bandsTgs = NewTagList()
taggroup bandTg = NewTagGroup()
image spec := GetFrontImage()
// ...............First Time.....................................
bandTg.TagGroupSetTagAsFloat( "start", 600 ) // calibrated value!
bandTg.TagGroupSetTagAsFloat( "end", 800 ) // calibrated value!
bandsTgs.TagGroupInsertTagAsTagGroup( Infinity(), bandTg )
image bkg1 := EELSFitPowerLawBackground( spec, bandsTgs )
bkg1.ShowImage()
tg = bkg1.ImageGetTagGroup() // Fit parameters(in eV) from the BKG spectrum Tags
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a0:value", a0 )
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a0:sigma", sa0 )
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a1:value", a1 )
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a1:sigma", sa1 )
Result("\n Fitting BKG parameters. First time ")
Result("\n a0 : " + a0)
Result("\n sa0 : " + sa0)
Result("\n a1 : " + a1)
Result("\n sa1 : " + sa1)
// Second Time........I get a differetn result if a repeat the fit-region definition
bandTg.TagGroupSetTagAsFloat( "start", 600 ) // calibrated value!
bandTg.TagGroupSetTagAsFloat( "end", 800 ) // calibrated value!
bandsTgs.TagGroupInsertTagAsTagGroup( Infinity(), bandTg )
image bkg2 := EELSFitPowerLawBackground( spec, bandsTgs )
bkg2.ShowImage()
tg = bkg2.ImageGetTagGroup() // Fit parameters(in eV) from the BKG spectrum Tags
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a0:value", a0 )
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a0:sigma", sa0 )
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a1:value", a1 )
tg.TagGroupGetTagAsNumber( "Processing:[0]:Parameters:Fit Parameters:a1:sigma", sa1 )
Result("\n")
Result("\n Fitting BKG parameters. Second time ")
Result("\n a0 : " + a0)
Result("\n sa0 : " + sa0)
Result("\n a1 : " + a1)
Result("\n sa1 : " + sa1)
bandsTgs.TagGroupOpenBrowserWindow( "BandTags", 0 ) // To show the Tag structure
我认为您需要的是对 DigitalMicrograph 中的 tags 更全面的描述:
请注意
There exist simplified wrapper commands for simple scripts
比如
image img := RealImage( "", 4, 10 )
SetNumberNote( img, "TagPath:With:SubTag:TagName", 12.2 )
DeleteNote( img, "TagPath:With:SubTag:TagName")
然而,底层对象是TagGroup
对象,有很多特定的命令。当然,您总是可以使用 complete 对象实现 simple 的东西。
接下来,重要的是要知道
There is a difference between
TagGroup
andTagList
.
两者都是表面上的 TagGroup
个对象,但某些命令只对其中一个有效。 TagLists 有索引条目,TagGroups 有标签条目。
当您开始向组/列表中插入或要从它们中删除时,两者的区别变得很重要,当您遍历结构时,它也变得很重要。
另请注意,TagGroup
条目按字母数字排序,而 TagList
条目按索引排序。
一些例子:
格式为
TagGroupInsertTagAs...
TagGroupGetIndexedTagAs...
的命令仅适用于TagLists
格式为
TagGroupSetTagAs...
TagGroupGetTagAs...
的命令仅适用于TagGroups
要从
TagList
中删除标签,您需要使用TagGroupDeleteTagWithIndex
要从
TagGroup
中删除标签,您需要使用TagGroupDeleteTagWithLabel
有时您可以通过将 TagList
中的 index 用作 label 来解决此问题,方法是将其放入在 [
和 ]
之间作为标记路径。但也有一些情况需要'TagGroup'和'TagList'
There are different options to delete tags
TagGroupDeleteAllTags()
删除 TagGroup 或 TagList 的 'all' 个子标签 -但不是 group/list 条目本身。TagGroupDeleteTagWithLabel()
删除标签指定的 TagGroup 中的特定标签。TagGroupDeleteTagWithIndex()
删除索引指定的 TagList 中的特定标签。请注意,这会更改其他条目的索引!
例子
下面的代码从上图中创建标签组:
tagGroup rootTg = NewTagGroup()
tagGroup tg = NewTagGroup()
tagGroup tl = NewTagList()
tg.TagGroupSetTagAsString( "value", "I am a string tag")
tg.TagGroupSetTagAsString( "2", "My tag at #2")
tg.TagGroupSetTagAsString( "Name", "Hello")
tg.TagGroupSetTagAsString( "1", "My tag at #1")
tl.TagGroupInsertTagAsString( 0, "String tag #1" )
tl.TagGroupInsertTagAsString( 1, "String tag #2" )
tl.TagGroupInsertTagAsString( 2, "String tag #3" )
tl.TagGroupInsertTagAsString( 1, "String tag #4" )
rootTg.TagGroupSetTagAsTagGroup( "TagGroup", tg )
rootTg.TagGroupSetTagAsTagGroup( "TagList", tl )
rootTg.TagGroupOpenBrowserWindow( "TagGroup example", 0 )
要删除“姓名:你好”标签(已排序组中的第 3 个标签),我们将使用以下三种之一:
rootTg.TagGroupDeleteTagWithLabel( "TagGroup:Name" )
tg.TagGroupDeleteTagWithLabel( "Name" )
tg.TagGroupDeleteTagWithIndex( 2 )
要删除 TagList 中的第 3 个条目,我们将使用以下三种之一:
rootTg.TagGroupDeleteTagWithLabel( "TagList:[2]" )
tl.TagGroupDeleteTagWithLabel( "[2]" )
tl.TagGroupDeleteTagWithIndex( 2 )
要删除整个 TagList,我们将使用
rootTg.TagGroupDeleteTagWithLabel( "TagList" )