一些背景:
我正在准备一个脚本,用于分析GMS 2中的一系列EELS光谱。我将背景与幂律模型拟合,并从背景光谱中的标签获取拟合参数(值和sigma)。但是,如果尝试在单个脚本中分析各种边缘,我会发现拟合参数的sigma值取决于计算的顺序。为了对此进行检查,我显示了一个脚本。如果我只定义一次拟合区域,则可以正常工作,但是如果我两次定义拟合区域(仅用于测试,我知道那是胡说),则sigma值会减小。如果拟合区域不同,则结果相同。我想重置或删除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中的标签进行更全面的描述:
意识到
存在用于简单脚本的简化包装器命令
如
image img := RealImage( "", 4, 10 )
SetNumberNote( img, "TagPath:With:SubTag:TagName", 12.2 )
DeleteNote( img, "TagPath:With:SubTag:TagName")
但是,底层对象是TagGroup
带有许多特定命令的对象。当然,您始终也可以使用完整的对象来实现简单的操作。
接下来,重要的是要知道
TagGroup
和之间有区别TagList
。
两者都是TagGroup
表面上的对象,但是某些命令将仅对其中一个起作用。TagList具有索引条目,TagGroup具有带标签的条目。
当您开始插入组/列表或要从它们中删除时,两者的区别变得很重要,并且在遍历结构时也变得很重要。
还要注意,TagGroup
条目是按字母数字顺序排序的,而TagList
条目是按索引排序的。
一些例子:
表单命令TagGroupInsertTagAs...
TagGroupGetIndexedTagAs...
仅在TagLists
形式上的建议TagGroupSetTagAs...
TagGroupGetTagAs...
只适用于TagGroups
要从中删除标签,TagList
您需要使用TagGroupDeleteTagWithIndex
要从中删除标签,TagGroup
您需要使用TagGroupDeleteTagWithLabel
有时,您可以通过将a中的索引放在标签之间和作为标签路径来将其TagList
用作标签来解决此问题。但是在某些情况下,您需要使用'TagGroup'和'TagList'的区别[
]
有多种删除标签的选项
TagGroupDeleteAllTags()
删除TagGroup或TagList的“所有”子标签-但不删除组/列表条目本身。
TagGroupDeleteTagWithLabel()
删除标签指定的TagGroup中的指定标签。
TagGroupDeleteTagWithIndex()
删除索引指定的TagList中的指定标签。注意,这将更改其他条目的索引!
下面的代码根据上图创建tagGroup:
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 )
要删除“名称:Hello”标签(已排序组中的第3个标签),我们将使用以下三个之一:
rootTg.TagGroupDeleteTagWithLabel( "TagGroup:Name" )
tg.TagGroupDeleteTagWithLabel( "Name" )
tg.TagGroupDeleteTagWithIndex( 2 )
要删除TagList中的第三个条目,我们将使用以下三个之一:
rootTg.TagGroupDeleteTagWithLabel( "TagList:[2]" )
tl.TagGroupDeleteTagWithLabel( "[2]" )
tl.TagGroupDeleteTagWithIndex( 2 )
要删除整个TagList,我们将使用
rootTg.TagGroupDeleteTagWithLabel( "TagList" )
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句