ruidaqan.script package#
Módulos para la lectura, procesamiento y análisis de los archivos con datos.
Se pueden leer los datos grabados tanto con la adquisición de RuiDAQAn como así tamibén con los archivos .RUI grabados por el FERCIN3.
Submodules#
ruidaqan.script.compara_rui_hdf module#
ruidaqan.script.data_fercin3_io module#
- class ruidaqan.script.data_fercin3_io.FitResults(file_name_pkl=None)[fuente]#
Bases:
objectEntre otras cosas, esta clase selecciona qué mediciones se utilizan para calcular ciertos parámetros (alfas, fq, etc). Por ejemplo, aquí se especifica que los fq se calculen sólo con las mediciones de 200Hz.
- average_parameters(plot=True)[fuente]#
Hace los promedios pesados de a, fq y e/b2
self.añfa_prom y self.alfa_std: floats self.fqs_av: list of touples (mag, std) self.eb2_av: list of touples (mag, std)
- fit_Ip_vs_I(limites=None, plot=True, *args, **kargs)[fuente]#
Se hacen todos los ajustes lineales entre corrientes
Ip vs I1, Ip vs I2
- class ruidaqan.script.data_fercin3_io.HDF5FileProcessing(file_name)[fuente]#
Bases:
objectProcesamiento de los archivos en formato HDF5 generados en la adquisición del programa.
Permite calcular los espectros y graficarlos.
- Parámetros:
file_name (str) – Nombre del archivo en formato hdf5
- calcula_parametros_cineticos(reactor, **kwargs)[fuente]#
Calcula parámetros cinéticos en base al ajuste espectral
- Parámetros:
reactor (reactor class) – Clase importada del archivo «constantes_reactores.py»
- Devuelve:
self.parametros_cineticos – Diccionario con los parámetros cinéticos estimados. Los keys son “alfa”, “potencia”, “fq” y “efi_over_beta2”. Los últimos dos son None en caso de ajustar una NCPSD
- Tipo del valor devuelto:
dic
- fit_spectrums(intervals, **kargs)[fuente]#
Ajuste de los espectros
- intervals: list of tuples
Lista con los límitesde los intervalos para el ajuste [(f_min, f_max), (f_min, f_max), …] en el orden [NPSD1, NPSD2, CPSD12]
- kargs:
- plot: bool
True si se quiere graficar. False por default
- get_normalized_spectrums(reactor_name, N_fft=None, N_overlap=None, freqs_to_remove=[50, 100, 150], freqs_to_remove_tr=[50, 100, 150])[fuente]#
Calcula los espectros normalizados con el método de Welch.
Se les quita las frencuencia de línea y sus dos armónicos. Están corregidos por la función transferencia.
Si no se especifica N_fft y N_overlap se usan los espectros estimados con .get_spectrum(). Si se especifican, se vuelven a calcular.
- Parámetros:
N_fft (int) – Puntos para calcular la FFT en cada bloque
N_overlap (int) – Cantidad de puntos para el solapamiento de bloques
reactor_name (string) – Identificación del reactor (para leer transferencias)
freqs_to_remove (list of floats) – Frecuencias que serán eliminadas del espectro medido
freqs_to_remove – Frecuencias que serán eliminadas de las transferencias
- Devuelve:
self.spectrums (listr of numpy arrays) – Lista con los espectros [NPSD1, NPSD1, NCPSD12] Los NPSD son reales, la NCPSD es compleja
self.f (numpy array) – Frecuencias asociadas a los espectros
- get_spectrums(N_fft=None, N_overlap=None)[fuente]#
Espectros sin normalizar ni corregidos con función transferencia
Son los valores que se guardan en los archivos .PSD con fercin3/5
Se estima el espectro con el estimador de Welch utilizando N_fft puntos y N_overlap puntos de solapamiento.
- Devuelve:
self.spectrums (lists of numpy arrays) – Lista con los espectros [APSD1, APSD2, CPSD]
self.f (numpy array) – Vector con las frecuencias asociada a los espectros
- class ruidaqan.script.data_fercin3_io.RUIFileProcessing(file_name, resolution=None)[fuente]#
Bases:
objectProcesamiento de los archivos .RUI generados por el programa FERCIN3
Permite calcular los espectros, normalizarlos, graficarlos y obtener los parámetros cinéticos a partir del ajuste.
- Parámetros:
file_name (str) – Nombre del archivo en formato hdf5
resolution (int) – Resolución del ADC con que se adquirió. Si no se especifica, se la trata de estimar en base a los valores registrados (elige entre 12 y 16 bits).
- calcula_parametros_cineticos(reactor, **kwargs)[fuente]#
Calcula parámetros cinéticos en base al ajuste espectral
- Parámetros:
reactor (reactor class) – Clase importada del archivo «constantes_reactores.py»
- Devuelve:
self.parametros_cineticos – Diccionario con los parámetros cinéticos estimados. Los keys son “alfa”, “potencia”, “fq” y “efi_over_beta2”. Los últimos dos son None en caso de ajustar una NCPSD
- Tipo del valor devuelto:
dic
- fit_spectrums(intervals, **kargs)[fuente]#
Ajuste de los espectros
- intervals: list of tuples
Lista con los límitesde los intervalos para el ajuste [(f_min, f_max), (f_min, f_max), …] en el orden [NPSD1, NPSD2, CPSD12]
- kargs:
- plot: bool
True si se quiere graficar. False por default
- get_normalized_spectrums(reactor_name, N_fft=None, N_overlap=None, freqs_to_remove=[50, 100, 150], freqs_to_remove_tr=[50, 100, 150])[fuente]#
Calcula los espectros normalizados con el método de Welch.
Se les quita las frencuencia de línea y sus dos armónicos. Están corregidos por la función transferencia.
Si no se especifica N_fft y N_overlap se usan los espectros estimados con .get_spectrum(). Si se especifican, se vuelven a calcular.
- Parámetros:
N_fft (int) – Puntos para calcular la FFT en cada bloque
N_overlap (int) – Cantidad de puntos para el solapamiento de bloques
reactor_name (string) – Identificación del reactor (para leer transferencias)
freqs_to_remove (list of floats) – Frecuencias que serán eliminadas del espectro medido
freqs_to_remove – Frecuencias que serán eliminadas de las transferencias
- Devuelve:
self.spectrums (listr of numpy arrays) – Lista con los espectros [NPSD1, NPSD1, NCPSD12] Los NPSD son reales, la NCPSD es compleja
self.f (numpy array) – Frecuencias asociadas a los espectros
- get_spectrums(N_fft=None, N_overlap=None)[fuente]#
Espectros sin normalizar ni corregidos con función transferencia
Son los valores que se guardan en los archivos .PSD con fercin3/5
Los valores temporales del .RUI se transforman a voltaje, y se estima el espectro con el estimador de Welch utilizando N_fft puntos y N_overlap puntos de solapamiento.
- Devuelve:
- lists of numpy arrays
Lista con los espectros [APSD1, APSD2, CPSD]
- self.f: numpy array
Vector con las frecuencias asociada a los espectros
- Tipo del valor devuelto:
self.spectrums
- raw_to_volt_NI(raw_data, volt_range)[fuente]#
Values for converting integer values into volt for the NI 6353 board
- The conversion is performed according to:
f(x) = a[0]x^0 + a[1]x^1 + a[2]*x^2 + a[3]*x^3
where “x” is the raw data measured, “a” are the coefficients given by the board specifications and f(x) is the data in Volts units.
With the NI 6353 (PCI and USB?) the range is alwas bipolar (why?). The data in the .RUI file is converted to unipolar by adding 32768. So this last value should be substracted before calling this function.
See Anexo 1 of IN-EN-GRYCN-FER-012_Rev0 for more info.
- Parámetros:
raw_data (array) – Raw data measured by the board
volt_range (string) –
- Range used for the measurement (“10”, “5”, “2”, “1”, “.5”,
”.2” and “.1”)
- Devuelve:
volt_data – Voltage converted
- Tipo del valor devuelto:
array
ruidaqan.script.fit_models module#
- ruidaqan.script.fit_models.ajuste_apsd(freq, psd, std_psd=None)[fuente]#
Ajuste no lineal de espectros (ver cuál)
- ruidaqan.script.fit_models.ajuste_cpsd(freq, psd, std_psd=None)[fuente]#
Ajuste no lineal de espectros (ver cuál)
TODO: Angel usa la coherencia como función de peso (sólo en la CPSD, no en la APSD). Ver si es necesario.
- ruidaqan.script.fit_models.ajuste_lineal(x, y, y_sig, *args, **kargs)[fuente]#
- Ajuste lineal de los datso
y = a * x + b
Devuelve los parámetros a y b en tipo ufloat, con sus errores correlacionados a partir de la matriz de covarianza del ajuste
ruidaqan.script.read_PSD module#
- ruidaqan.script.read_PSD.V2I_PSD(PSD_dic)[fuente]#
Función para convertir el voltaje leido de un .PSD a corriente
- Parámetros:
PSD_dic (dictionary) – Diccionario obtenido con la función “read_PSD_file”
- Devuelve:
I1, I2 – Valor de la corriente. Si sólo se utiliza una cámara, sólo I1.
- Tipo del valor devuelto:
float
Convierte el voltaje (medio) leído del archivo .PSD a correinte con el factor inversa de la sensibilidad (Z). Finalmente le resta la corriente de fondo.
TODO: Si esto se va a usar seriamente, agregar propagación de incerrtezas
- ruidaqan.script.read_PSD.ajuste_apsd(freq, psd, std_psd=None)[fuente]#
Ajuste no lineal de espectros (ver cuál)
- ruidaqan.script.read_PSD.ajuste_cpsd(freq, psd, std_psd=None)[fuente]#
Ajuste no lineal de espectros (ver cuál)
TODO: Angel usa la coherencia como función de peso (sólo en la CPSD, no en la APSD). Ver si es necesario.
- ruidaqan.script.read_PSD.get_transfer_function(file_name, freqs_to_remove=[50, 100, 150])[fuente]#
Función para leer archivos .PSD con las funciones de transferencia producidas por el programa TRA.EXE.
Se quitan también las frecuencias de línea.
- Parámetros:
file_name (string) – Nombre del archivo con extensión PSD de la función transferencia
- Devuelve:
H2_dB (numpy array) – Módulo cuadrado de la función transferencia. Expresado en dB 10*log10(H2)
ReH (numpy array) – Parte real de la función transferencia
ImH (numpy array) – Parte imaginaria de la función transferencia
- ruidaqan.script.read_PSD.get_transfer_name(PSD_dic, get_spectrum, reactor_name=None)[fuente]#
Function to get the name of the transfer funcition file
- The file name is coeded as:
TR[1,2,4,6,8][40,200]A[1,2].PSD
The first number is K/100 The second number is BW The thirdnumber is de detection system id
- Parámetros:
PSD_dic (dictionary) – Diccionario obtenido con la función “read_PSD_file”
get_spectrum (string ("APSD1", "APSD2" ó "CPSD")) – Nombre del espectro que se desee calcular
reactor_name (string (Optional)) –
- Nombre del reactor. Se asume que los archivos están en:
»trs/reactor_name/»
El nombre «trs» está hardcodeado Si no se especifica, se toma la carpeta como «trs/» TODO: definir la estructura luego.
- Devuelve:
path_file – Complete paths of the transfer function files One elmenent in case APSD, two if CPSD
- Tipo del valor devuelto:
touple
- ruidaqan.script.read_PSD.obtain_normalized_spectrum(PSD_dic, get_spectrum='APSD1', freqs_to_remove=[50, 100, 150], reactor_name=None)[fuente]#
Función para normalizar los espectros (NPSD o CPSD)
Se quitan tambén la frecuencia de línea y sus harmónicos
TODO: corregir con función transferencia
- Parámetros:
PSD_dic (dictionary) – Diccionario obtenido con la función “read_PSD_file”
get_spectrum (string ("APSD1", "APSD2" ó "CPSD")) – Nombre del espectro que se desee calcular
freqs_to_remove (double or array) – Frequency/ies to be removed
reactor_name (string (Optional)) –
- Nombre del reactor. Se asume que los archivos están en:
»trs/reactor_name/»
El nombre «trs» está hardcodeado Si no se especifica, se toma la carpeta como «trs/»
- Devuelve:
f (numpy array) – Fecuencias
NPSD_tr (numpy array) – Espectro normalizado y corregido con la función transferencia. sin frecuencia de línea. En caso de haber pedido «CPSD», devuelve la parte real.
- ruidaqan.script.read_PSD.read_PSD_file(file_name)[fuente]#
Función para leer archivos .PSD producidos por el programa FERCIN5T
- Parámetros:
file_name (string) – Nombre del archivo con extensión PSD
- Devuelve:
dicc – dicc[«FECHA»] dicc[«HORA»] dicc[«BW»] Ancho de banda de la adquisición (40Hz ó 200Hz) dicc[«DT»] Diferencia de tiempo entre pedido y adquirido (s) dicc[«Ip»] Corriente de la cadena CIp [A] dicc[«IpE»] Incerteza en Ip [A] dicc[«NDET»] Cantidad de cadenas utilizadas (1 ó 2)
Parámetros de la cadena 1
dicc[«V1»] Voltaje medio de cadena 1 [V] dicc[«V1E»] Incerteza en V1 [V] dicc[«I1F»] Corriente de fondo de I1 [A] dicc[«I1FE»] Incerteza en I1F [A] dicc[«Z1»] Inversa sensibilidad de cadena 1 [V/A] dicc[«Z1E»] Incerteza en Z1 [V/A] dicc[«K1»] Ganancia AC cadena 1 dicc[«K1E»] Incerteza en K1 dicc[«COM1»] Comentario sobre cadea 1 - Parámetros de la cadena 2 (en caso de existir, de lo contrario no se definen las claves) dicc[«V2»] Voltaje medio de cadena 2 [V] dicc[«V2E»] Incerteza en V2 [V] dicc[«I2F»] Corriente de fondo de I2 [A] dicc[«I2FE»] Incerteza en I2F [A] dicc[«Z2»] Inversa sensibilidad de cadena 2 [V/A] dicc[«Z2E»] Incerteza en Z2 [V/A] dicc[«K2»] Ganancia AC cadena 2 dicc[«K2E»] Incerteza en K2 dicc[«COM2»] Comentario sobre cadea 2 - Son todos numpy array’s: dicc[«FREQ»] Frecuencia [Hz] dicc[«RECPSD»] Parte real de la CPSD [ver] dicc[«IMCPSD»] Parte imaginaria de la CPSD [ver] dicc[«APSD1»] APSD de 1 [dB] dicc[«APSD2»] APSD de 2 [dB]
En caso de no utilizar la cadena dos se obtiene dicc[«RECPSD»] = dicc[«IMCPSD»] = dicc[«APSD2] = 0
- Tipo del valor devuelto:
dictionary
- ruidaqan.script.read_PSD.remove_utility_freq(frequency, spectrum, freqs_to_remove=[50, 100, 150])[fuente]#
Removes the utility frequencies from the spectrum
Values of “spectrum” at those freqs (+/- 1Hz) are replaced with those of its neighbours (Angel’s approach).
- Parámetros:
frequency (numpy array) – Vector with frequencies
spectrum (numpy array) – Vector with the spectrum (should be same size of frequency)
freqs_to_remove (double or array) – Frequency/ies to be removed
- Devuelve:
new_spectrum – Spectrum without the freqs_to_remove
- Tipo del valor devuelto:
numpy array