Espectro do PCSL não irradiado:
fileDSCNI<-"C:/Users/rodri_000/Google Drive/R/PCSL EPR paper/espectros/PCSL_NI_07julho2016_09h33.DSC"
fileDTANI<-"C:/Users/rodri_000/Google Drive/R/PCSL EPR paper/espectros/PCSL_NI_07julho2016_09h33.DTA"
#
dscNI <- readLines(fileDSCNI,encoding="UTF-8")
#
pontos<-grep("XPTS",dscNI,value=T);campos<-strsplit(pontos,'\t')[[1]];XPTS<-as.numeric(campos[2])
pontos<-grep("XMIN",dscNI,value=T);campos<-strsplit(pontos,'\t')[[1]];XMIN<-as.numeric(campos[2])
pontos<-grep("XWID",dscNI,value=T);campos<-strsplit(pontos,'\t')[[1]];XWID<-as.numeric(campos[2])
pontos<-grep("MWFQ",dscNI,value=T);campos<-strsplit(pontos,' ')[[1]];MF<-as.numeric(campos[2])/1e9#GHz
pontos<-grep("RCAG",dscNI,value=T);campos<-strsplit(pontos,' ')[[1]];RG<-as.numeric(campos[2])
pontos<-grep("SPTP",dscNI,value=T);campos<-strsplit(pontos,' ')[[1]];CT<-as.numeric(campos[2])*1000#ms
pontos<-grep("AVGS",dscNI,value=T);campos<-strsplit(pontos,' ')[[1]];SCAN<-as.numeric(campos[2])
pontos<-grep("MWPW",dscNI,value=T);campos<-strsplit(pontos,' ')[[1]];MWPW<-as.numeric(campos[2])*1000#mW
info<-grep("DATE", dscNI,value=T);campos<-strsplit(info,' ')[[1]];DATE<-(campos[2])
info<-grep("TIME", dscNI,value=T);campos<-strsplit(info,' ')[[1]];TIME<-(campos[2])
#infos$NOME[[i]]<-nome[1]
#
passo<-round(XWID/XPTS,1)
b<-seq(1:XPTS)
for(j in 1:XPTS){
b[j]<-XMIN+(passo*(j-1))
}
b<-data.frame(b)
g<-714.55*MF/b
s<-readBin(fileDTANI, double(), n = XPTS, size = 8, endian = "big");s<-data.frame(s);
#Data normalization - Bruker Manual cap.5.6
sn<-s/(CT*SCAN*20*10^(RG/20))
#
dados<-cbind(b,g,s,sn);colnames(dados)[2] <- "g";colnames(dados)[4] <- "sn"
#
plot(dados$b,dados$sn,type="n",xlab="Magnetic Field (G)",ylab="EPR Signal Normalized (a.u.)",ylim=c(-20,20))
lines(dados$b,dados$sn,col="black");grid(NULL,NULL)
Irradiação em: 21/06/2016
Dose: 23,9 kGy
Leitura dos arquivos do diretório C:/Users/rodri_000/Google Drive/R/PCSL EPR paper:
Geração da planilha com 25 arquivos.
Colunas:
b - Campo Magnético (G)
g - fator g calculado por: \[
gFactor=\frac{714.55*v(GHz)}{B(G)}
\] S - Intensidade do sinal de EPR (u.a.)
Sn - Intensidade do sinal de EPR normalizado utilizando a equação da Bruker:
\[
sn=\dfrac{s}{C_{T}(ms)*N_{SCAN}*20*10^{RG(dB)/20}}
\]
#
Acompanhamento do decaimento do sinal e RPE ao longo de aproximadamente 180 dias.
library(baseline)
Attaching package: <U+393C><U+3E31>baseline<U+393C><U+3E32>
The following object is masked from <U+393C><U+3E31>package:stats<U+393C><U+3E32>:
getCall
library(sqldf)
Carregando pacotes exigidos: gsubfn
Carregando pacotes exigidos: proto
Carregando pacotes exigidos: RSQLite
library(data.table)
data.table 1.9.8
The fastest way to learn (by data.table authors): https://www.datacamp.com/courses/data-analysis-the-data-table-way
Documentation: ?data.table, example(data.table) and browseVignettes("data.table")
Release notes, videos and slides: http://r-datatable.com
library(knitr)
#versão 07 de 08-12-2016
#preparacao de uma tabela
#############################################
#carregando a lista de arquivos DSC do dir
# tratarei o zero em outro script
fileDSC<-list.files(pattern="*.DSC$")
fileDTA<-list.files(pattern="*.DTA$")
#num de arquivos
nn<-length(fileDSC)
#
espectros<-list()#carrego e armazeno todos os espectros: formato espectros[[i]]$(b,g,s,sn)
infos<-list("NOME"=1:nn,"XPTS"=1:nn,"RG"=1:nn,"DATE"=1:nn,"TIME"=1:nn,"MF"=1:nn,"CT"=1:nn,"SCAN"=1:nn,"MWPW"=1:nn,"Hpap"=1:nn,"Hpapsn"=1:nn)
#
for (i in 1:nn)
{
dsc <- readLines(fileDSC[i],encoding="UTF-8")
#
nome<-(strsplit(fileDSC[i],"\\."))[[1]]
#
fileDTA<-paste0(nome[1],".DTA")
pontos<-grep("XPTS",dsc,value=T);campos<-strsplit(pontos,'\t')[[1]];infos$XPTS[[i]]<-as.numeric(campos[2])
pontos<-grep("XMIN",dsc,value=T);campos<-strsplit(pontos,'\t')[[1]];XMIN<-as.numeric(campos[2])
pontos<-grep("XWID",dsc,value=T);campos<-strsplit(pontos,'\t')[[1]];XWID<-as.numeric(campos[2])
pontos<-grep("MWFQ",dsc,value=T);campos<-strsplit(pontos,' ')[[1]];infos$MF[[i]]<-as.numeric(campos[2])/1e9#GHz
pontos<-grep("RCAG",dsc,value=T);campos<-strsplit(pontos,' ')[[1]];infos$RG[[i]]<-as.numeric(campos[2])
pontos<-grep("SPTP",dsc,value=T);campos<-strsplit(pontos,' ')[[1]];infos$CT[[i]]<-as.numeric(campos[2])*1000#ms
pontos<-grep("AVGS",dsc,value=T);campos<-strsplit(pontos,' ')[[1]];infos$SCAN[[i]]<-as.numeric(campos[2])
pontos<-grep("MWPW",dsc,value=T);campos<-strsplit(pontos,' ')[[1]];infos$MWPW[[i]]<-as.numeric(campos[2])*1000#mW
info<-grep("DATE", dsc,value=T);campos<-strsplit(info,' ')[[1]];infos$DATE[[i]]<-(campos[2])
info<-grep("TIME", dsc,value=T);campos<-strsplit(info,' ')[[1]];infos$TIME[[i]]<-(campos[2])
infos$NOME[[i]]<-nome[1]
#
passo<-round(XWID/infos$XPTS[[i]],1)
b<-seq(1:infos$XPTS[[i]])
for(j in 1:infos$XPTS[[i]]){
b[j]<-XMIN+(passo*(j-1))
}
b<-data.frame(b)
g<-714.55*infos$MF[[i]]/b
s<-readBin(fileDTA, double(), n = infos$XPTS[[i]], size = 8, endian = "big");s<-data.frame(s);
#Data normalization - Bruker Manual cap.5.6
sn<-s/(infos$CT[[i]]*infos$SCAN[[i]]*20*10^(infos$RG[[i]]/20))
#
dados<-cbind(b,g,s,sn);colnames(dados)[2] <- "g";colnames(dados)[4] <- "sn"
#guardo os espectros
espectros[[i]]<-dados
#Hpap sn
infos$Hpapsn[i]<-max(dados[,4])-min(dados[,4])
#Hpap s
infos$Hpap[i]<-max(dados[,3])-min(dados[,3])
}
Exemplo do espectro do PCSL irradiado (medida em 2016-06-21 13:58:24):
#
plot(espectros[[21]]$b,espectros[[21]]$sn,type="n",xlab="Magnetic Field (G)",ylab="EPR Signal Normalized (a.u.)",xlim=c(3400,3600))
lines(espectros[[21]]$b,espectros[[21]]$sn,col="black");grid(NULL,NULL)
#
# até aqui carreguei os arquivos DSC em infos[[]] e DTA em dados[[]]
# calculei g e sn e estimei os HPaP e HPaPn
#criando um novo conjunto de dados
tmed<-list("TD"=1:nn,"Arq"=1:nn,"Hpap"=1:nn,"Hpapsn"=1:nn)
for (i in 1:nn)
{
tmed$TD[i]<-paste(infos$DATE[i],infos$TIME[i])
tmed$Arq[i]<-infos$NOME[i]
tmed$Hpap[i]<-infos$Hpap[i]
tmed$Hpapsn[i]<-infos$Hpapsn[i]
}
tmed$TD=as.POSIXct(tmed$TD,format="%m/%d/%y %H:%M:%S",tz="UTC")
#crio um data.frame
tmed<-data.frame(tmed)
# ordeno os indices pela data
ind<-order(tmed$TD,decreasing=F)
#tabela
kable(tmed[order(tmed$TD),],caption = "Dados")
| TD | Arq | Hpap | Hpapsn | |
|---|---|---|---|---|
| 21 | 2016-06-21 13:58:24 | PCSL25kGy_21junho2016_13h57 | 14493110.2 | 10187.59351 |
| 22 | 2016-06-21 14:54:11 | PCSL25kGy_21junho2016_14h54 | 13827080.5 | 9719.42348 |
| 19 | 2016-06-21 15:33:57 | PCSL25kGy_21jun2016_15h33 | 13776301.4 | 9683.72945 |
| 20 | 2016-06-21 16:39:45 | PCSL25kGy_21jun2016_16h40 | 13491199.7 | 9483.32392 |
| 23 | 2016-06-22 08:38:11 | PCSL25kGy_22jun2016_08h38 | 10966520.8 | 7708.65977 |
| 24 | 2016-06-22 10:48:00 | PCSL25kGy_22junho2016_10h38 | 10438072.2 | 7337.19919 |
| 9 | 2016-06-22 16:44:00 | PCSL25kGy-22jun2016-16h42 | 9830958.8 | 6910.44301 |
| 10 | 2016-06-23 09:14:47 | PCSL25kGy-23jun2016-09h15 | 8459219.8 | 5946.21109 |
| 11 | 2016-06-23 16:13:08 | PCSL25kGy-23jun2016-16h13 | 8023780.0 | 5640.12888 |
| 12 | 2016-06-24 09:10:52 | PCSL25kGy-24jun2016-09h10 | 6742392.5 | 4739.40741 |
| 13 | 2016-06-27 09:18:04 | PCSL25kGy-27jun2016-09h17 | 4716107.8 | 3315.07791 |
| 25 | 2016-06-28 08:55:11 | PCSL25kGy_28junho2016_0845 | 4247508.2 | 2985.68674 |
| 6 | 2016-06-29 10:06:53 | PCSL25kG_29jun2016_10h07 | 3843868.2 | 2701.95743 |
| 14 | 2016-06-30 09:33:04 | PCSL25kGy-30jun2016-09h33 | 3405401.4 | 2393.74745 |
| 7 | 2016-07-01 09:21:03 | PCSL25kGy-01jul2016-09h21 | 3072432.9 | 2159.69500 |
| 8 | 2016-07-04 09:16:24 | PCSL25kGy-04jul2016-09h16 | 2388973.6 | 1679.27324 |
| 15 | 2016-07-05 09:23:09 | PCSL25kGy_05julho2016_09h13 | 2237723.9 | 1572.95578 |
| 16 | 2016-07-07 09:27:40 | PCSL25kGy_07julho2016_09h18 | 1915544.2 | 1346.48708 |
| 17 | 2016-07-14 15:51:40 | PCSL25kGy_14jul2016_15h52 | 1186932.5 | 834.32651 |
| 4 | 2016-07-28 13:47:55 | PCSL-25kGy-28jul2016-13h48 | 684015.2 | 480.81253 |
| 1 | 2016-08-04 16:19:39 | PCSL-25kGy-04ago2016-16h20 | 507293.9 | 356.59043 |
| 3 | 2016-09-13 10:01:38 | PCSL-25kGy-13set2016-10h01 | 180753.4 | 127.05637 |
| 5 | 2016-09-30 09:14:40 | PCSL-25kGy-30set2016-09h15 | 141788.2 | 99.66673 |
| 2 | 2016-10-04 09:53:12 | PCSL-25kGy-04out2016-09h53 | 133777.3 | 94.03562 |
| 18 | 2016-12-16 14:11:20 | PCSL25kGy_16dez2016_14h13 | 128264.7 | 50.70109 |
Observações:
* Hpap: valor pico-a-pico
* Hpapsn: valor pico-a-pico normalizado
#
# calculo os tempos relativos a medida inicial (ind[1])
fading<-list("F"=1:nn,"Hpap"=1:nn,"Hpapsn"=1:nn)
fading$F[1]<-0
fading$Hpap[1]<-tmed$Hpap[ind[1]]
fading$Hpapsn[1]<-tmed$Hpapsn[ind[1]]
#
for (i in 2:nn)
{
#fading$F[i]<-difftime(tmed$TD[ind[i]],tmed$TD[ind[1]],units="hours")
fading$F[i]<-difftime(tmed$TD[ind[i]],tmed$TD[ind[1]],units="days")
fading$Hpap[i]<-tmed$Hpap[ind[i]]
fading$Hpapsn[i]<-tmed$Hpapsn[ind[i]]
}
df.fading<-data.frame(fading)
#tabela
kable(df.fading,caption = "Decaimento do sinal ao longo dos dias")
| F | Hpap | Hpapsn |
|---|---|---|
| 0.0000000 | 14493110.2 | 10187.59351 |
| 0.0387384 | 13827080.5 | 9719.42348 |
| 0.0663542 | 13776301.4 | 9683.72945 |
| 0.1120486 | 13491199.7 | 9483.32392 |
| 0.7776273 | 10966520.8 | 7708.65977 |
| 0.8677778 | 10438072.2 | 7337.19919 |
| 1.1150000 | 9830958.8 | 6910.44301 |
| 1.8030440 | 8459219.8 | 5946.21109 |
| 2.0935648 | 8023780.0 | 5640.12888 |
| 2.8003241 | 6742392.5 | 4739.40741 |
| 5.8053241 | 4716107.8 | 3315.07791 |
| 6.7894329 | 4247508.2 | 2985.68674 |
| 7.8392245 | 3843868.2 | 2701.95743 |
| 8.8157407 | 3405401.4 | 2393.74745 |
| 9.8073958 | 3072432.9 | 2159.69500 |
| 12.8041667 | 2388973.6 | 1679.27324 |
| 13.8088542 | 2237723.9 | 1572.95578 |
| 15.8119907 | 1915544.2 | 1346.48708 |
| 23.0786574 | 1186932.5 | 834.32651 |
| 36.9927199 | 684015.2 | 480.81253 |
| 44.0980903 | 507293.9 | 356.59043 |
| 83.8355787 | 180753.4 | 127.05637 |
| 100.8029630 | 141788.2 | 99.66673 |
| 104.8297222 | 133777.3 | 94.03562 |
| 178.0089815 | 128264.7 | 50.70109 |
Observação:
* F : intervalo de tempo em dias entre a irradiação e a medida.
#
#
plot(fading$F,fading$Hpapsn,xlab="Fading (d)",ylab="EPR Signal Normalized (a.u.)",xlim=c(0,200))
lines(fading$F,fading$Hpapsn,col="red");grid(NULL,NULL)
#
Orlando (abril/2017)