スペクトル描画スクリプト

先程のスクリプトにグラフの描画機能を加えたもの

スペース、tab, commaなどで区切られた2つのデータファイルを基にスペクトル、差スペクトルの描画を行います。

 

#pragma rtGlobals=1		// Use modern global access method.
// simple macros for unit conversion 1st Aug 2011 by T.Hayashi
// A Macro for Data analysis implemented on 1st Aug 2011 by T. Hayashi

Menu  "Raman"
	Submenu "Calc"
			"WL2WN"
			"WN2WL"
	end
	Submenu "Analysis"
			"Draw"
			"Add"
			"Dif"
			"BGsub"
	end
End

function  WL2WN()
	variable laser=488,wl=500
	Prompt laser, "Laser(nm)"
	Prompt wl, "wavelength(nm)"
	DoPrompt "Wave length to Wave number",laser ,wl
	Print  wl, "nm  corresponds to Raman shift of",(1e7/laser)-(1e7/wl)," cm-1","(LASER:", laser,"nm)"
End

function  WN2WL()
	variable laser=488,wn=1400
	Prompt laser, "Laser(nm)"
	Prompt wn, "wavenumber(cm-1)"
	DoPrompt "Wave length to  Wave number",laser ,wn
	Print " Raman shift of",wn,"cm-1 appears at",1/((1e7/laser)-wn)*1e7," nm","(LASER:", laser,"nm)"
End

Function Draw()
	LoadWave/g/n/a=data
	spec1()
// Use "spec1" as a test script
end

Function Add()
	LoadWave/g/n/a=data
	spec2()
// Use "spec2" as a test script to append new data to the existing grapha
end

Function Dif()
	LoadWave/g/n/a=data, "signal + BG"
	LoadWave/g/n/a=bg, "BG"
	spec3()
End

Function BGsub()
	LoadWave/g/n/a=data, "signal + BG"
	LoadWave/g/n/a=bg, "BG"
	spec4()
End

//
// spec1 draws an initial graph
Function spec1()
	string  name
	variable laser=488
	Prompt name, "Data name"
	Prompt laser, "Excitation Laser"
	DoPrompt "Enter the data name",name,laser
//
	string int="_int",cm="_cm"
	Duplicate data0,wn_temp; duplicate data1,int_temp
	wn_temp=(1e7/laser)-(1e7/wn_temp)
	Duplicate wn_temp,$(name+cm); duplicate int_temp,$(name+int)
	killwaves data0,data1,wn_temp,int_temp
	AppendToTable  $(name+int),$(name+cm)
//Draw Graph
	display $(name+int) vs $(name+cm)
	Label bottom "Wavenumber (cm-1)"
	Label left "Intensity (total counts)"
	Legend/C/N=text0/F=0/A=MC
	ModifyGraph width=400,height=300
End

Function spec2()
//
	string  name
	variable laser=488
	Prompt name, "Data name"
	Prompt laser, "Excitation Laser"
	DoPrompt "Enter the data name",name,laser
//
	string int="_int",cm="_cm"
	Duplicate data0,wn_temp; duplicate data1,int_temp
	wn_temp=(1e7/laser)-(1e7/wn_temp)
	Duplicate wn_temp,$(name+cm); duplicate int_temp,$(name+int)
	killwaves data0,data1,wn_temp,int_temp
	AppendToTable  $(name+int),$(name+cm)
	AppendToGraph $(name+int) vs $(name+cm)
	Legend/C/N=text0/F=0/A=MC
End

Function spec3()
//
	string  name
	variable laser=488
	Prompt name, "Data name"
	Prompt laser, "Excitation Laser"
	DoPrompt "Enter the data name",name,laser
//
	string int="_int",cm="_cm"
	Duplicate data0,wn_temp; duplicate data1,int_temp
	Duplicate bg0,wnbg_temp; duplicate bg1,intbg_temp
	wn_temp=(1e7/laser)-(1e7/wn_temp)
	wnbg_temp=(1e7/laser)-(1e7/wnbg_temp)
	int_temp=int_temp-intbg_temp
	Duplicate wn_temp,$(name+cm); duplicate int_temp,$(name+int)
	killwaves data0,data1,bg0,bg1,wn_temp,int_temp,wnbg_temp,intbg_temp
//
	display $(name+int) vs $(name+cm)
	Label bottom "Wavenumber (cm-1)"
	Label left "difference in spectra (counts)]"
	Legend/C/N=text0/F=0/A=MC
	ModifyGraph width=400,height=300
End

Function spec4()
//
	string  name
	variable laser=488
	Prompt name, "Data name"
	Prompt laser, "Excitation Laser"
	DoPrompt "Enter the data name",name,laser
//
	string int="_int",cm="_cm"
	Duplicate data0,wn_temp; duplicate data1,int_temp
	Duplicate bg0,wnbg_temp; duplicate bg1,intbg_temp
	wn_temp=(1e7/laser)-(1e7/wn_temp)
	wnbg_temp=(1e7/laser)-(1e7/wnbg_temp)
	int_temp=int_temp-intbg_temp
	Duplicate wn_temp,$(name+cm); duplicate int_temp,$(name+int)
	killwaves data0,data1,bg0,bg1,wn_temp,int_temp,wnbg_temp,intbg_temp
//
	display $(name+int) vs $(name+cm)
	Label bottom "Wavenumber (cm-1)"
	Label left "Intensity (BG subtracted ) counts"
	Legend/C/N=text0/F=0/A=MC
	ModifyGraph width=400,height=300
End

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください