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: object

Entre 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

fit_p_vs_I(limites=None, plot=True, *args, **kargs)[fuente]#

Se hacen todos los ajustes lineales de corrientes y potencias

p vs I1, p vs I2, p vs Ip

simulate_data_S19()[fuente]#

Datos medidos en el RA-3 con dos detectores (serie 19)

class ruidaqan.script.data_fercin3_io.HDF5FileProcessing(file_name)[fuente]#

Bases: object

Procesamiento 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

get_temporal_signals()[fuente]#

Calcula las AC en voltaje. Convierte dependiendo ADC

plot_spectrums(normalizados=True, *args, **kargs)[fuente]#
class ruidaqan.script.data_fercin3_io.RUIFileProcessing(file_name, resolution=None)[fuente]#

Bases: object

Procesamiento 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

get_temporal_signals()[fuente]#

Calcula las AC en voltaje. Convierte dependiendo ADC

plot_spectrums(normalizados=True, *args, **kargs)[fuente]#
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.fit_models.model_apsd(freq, alfa, amplitud, constante)[fuente]#
ruidaqan.script.fit_models.model_cpsd(freq, alfa, amplitud)[fuente]#
ruidaqan.script.fit_models.rsquared(y_data, y_fit, y_sigma=None)[fuente]#

Calcula el factur R^2 del ajuste lineal

ruidaqan.script.fit_models.weighted_average(data, weights)[fuente]#

ave(data) = sum(data*weights) / sum(weights)

var(data) = var(data) * mean(weights**2) / mean(weights)**2 / n std(data) = sqrt(var(data))

Se suele tomar weights = 1 / sigma**2

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.calcula_parametros_cineticos(result, reactor, **kwargs)[fuente]#

TODO

ruidaqan.script.read_PSD.dB2V(data)[fuente]#

Función para pasar de dB a Voltaje (revisar)

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.model_apsd(freq, alfa, amplitud, constante)[fuente]#
ruidaqan.script.read_PSD.model_cpsd(freq, alfa, amplitud)[fuente]#
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