EnviroLog_PRT_SALVOGAS1 - giugno 2021

Log reader e configurazione timestamp

Questo script analizza il Log ASCII registrato da sensori di GAS (mics 6814) a bordo della sensorboard Enviro+ durante il test PRT_SALVOGAS1

il log viene importato rapidamente in un data frame tramite la funzione read.csv2, però c'è una cosa un po' ambigua. le colonne del data frame sono caratteri e non numeri anche se la funzione plot tratta i dati come numeri ma se provo a fare qualche operazione sui dati devo per forza usare la funzione as.numeric. Forse ciò è causato dal fatto che nel file ascii c'è qualche riga scritta male.

In prima battuta bisogna leggere correttamente il timestamp contenuto nel log.

Ho incontrato diverse Funzioni utili alla lettura e formattazione corretta delle date:

la funzione 

as.POSIXlt(as.numeric(Envlog$time[1]), origin="1970-01-01") 

l'ho usata per convertire il numero del timestamp rappresentato dal Envlog$time[1]) (numero progressivo in secondi dal 1 gen 1970) in una data con formato standard per R:

[1] "2021-03-04 09:54:29 CET"

POSIX è l'interprete della data e può avere diverse declinazioni come POSIXlt, POSIXct. La differenza tra i due è sottile ma, volendo essere pragmatici l'output che generano localmente è sempre lo stesso.

inoltre ho conosciuto i comandi strptime e strftime:
strptime permette di leggere correttamente qualsiasi formato data affinchè sia trattato come un oggetto POSIXlt, basta specificare come è fatto il formato. ad esempio se ho una data scritta come "02/06/2021 9:35" per far si che sia considerata una data scriverò
data <- strptime("02/06/2021 9:35", format = "%d/%m/%Y %H:%M")
infatti:

strftime invece fa il contrario cioè permette di esportare la data in qualsiasi formato serva. Io, in questo script, l'ho usato per memorizzare il giorno senza l'ora:
giorno <- strftime(startime, format="%Y-%m-%d")
in modo poi da unirlo a degli orari contenuti nel vettore "prt" per poi poter inserire nei Grafici dei sensori delle linee verticali negli orari registrati nel vettore "prt" con il comando:
abline(v=as.numeric(strptime(paste(giorno, prt), format="%Y-%m-%d %H:%M")))
In figura un Esempio:
osservate che bisogna utilizzare sempre la funzione as.numeric affinchè la variabile sia letta correttamente.
Per il grafico a doppio asse visualizzato nella precedente figura si utilizzano i seguenti comandi:

par(mar=c(5, 4, 4, 8))

serve a dare più spazio a dx del grafico per poi inserire il titolo dell'asse;

par(new = T)

permette di aggiungere un Layer dove inserire il secondo plot;

il secondo plot deve avere i seguenti parametri: xlab=NA, ylab = NA, axes = F 

e poi bisogna aggiungere l'asse e il titolo:

axis(side = 4, col.axis = "red", col= "red")
mtext("diff", side=4, line=3, cex.lab=1,las=2, col="red")
  
ci dovrebbe essere un modo per fare l'allineamento verticale del titolo a destra ma per ora non lo so.
Nello scripit incontriamo altre due funzioni che vedremo spesso:
loess e predict. 
loess che io uso per fare smoothing dei dati è un "Local Polynomial Regression Fitting"
mentre predict prende la funzione trovata da loess e la proietta sull'asse delle x
il seguente link fornisce maggiori chiarimenti:
http://r-statistics.co/Loess-Regression-With-R.html

Infine allego a titolo di esempio:

lo script descritto: EnviroLog_PRT_SALVOGAS1.R
un file ASCII valido per le elaborazioni e utilizzato in questo blog

varianti di EnviroLog_PRT_SALVOGAS1.R:
EnviroLog_PRT_SALVOGAS2.R che spezza il run nei 5 test che lo compongono
Envirolog_1.R generalizza per un protocollo con qualsiasi numero di step
openQCMreadlog1.R derivato per il Log della openQCM
openQCM_OS1.R derivato dal precedente per il LOG relativo a protocolli OneStep

Commenti

Post popolari in questo blog

Comandi utili per formattazione e stampa figure per articoli: