Ejemplos de uso del módulo tofsim

Iniciar la sesión

Para iniciar la sesión, importamos el paquete o sólo el objeto ToF Por ejemplo, en la forma:

import tofsim
T = tofsim.ToF()

o, simplemente:

from tofsim import ToF
T = ToF()

El objeto del tipo ToF contiene toda la información sobre los parámetros de construcción y de funcionamiento

print ('Parámetros del TOF')
print (T.tof_parameters)
print ('Valor original: Vs =', T.Vs)
T.Vs = T.Vs /2.
print ('Valor cambiado: Vs =', T.Vs)
for k in T.tof_parameters:
  print ('{0} = {1}'.format(k, T.__dict__[k]))
Parámetros del TOF
['s', 'd', 'D', 'Vs', 'Vd', 'ds', 'dt', 't0', 'r0']
Valor original: Vs = 200.0
Valor cambiado: Vs = 100.0
s = 0.59
d = 1.3
D = 100.0
Vs = 100.0
Vd = 2000.0
ds = 0.03
dt = 0.008
t0 = 0.0
r0 = 1000.0

Cálculos

Agregamos algunas sustancias a las cuales le vamos a simular las señales de tiempo de vuelo

T.add_substances('Li,H2O')
# Veamos que fragmentos hemos agregado:
print(T.fragments.to_text())
╒═════════════╤══════════════╤══════════╤══════════════╕
│ Sustancia   │ Fórmula      │     Masa │   Abundancia │
╞═════════════╪══════════════╪══════════╪══════════════╡
│ Li          │ 6Li^{0+}     │  6.01512 │     7.59     │
├─────────────┼──────────────┼──────────┼──────────────┤
│ Li          │ 7Li^{0+}     │  7.016   │    92.41     │
├─────────────┼──────────────┼──────────┼──────────────┤
│ H2O         │ 1H2-16O^{0+} │ 18.0106  │    99.7341   │
├─────────────┼──────────────┼──────────┼──────────────┤
│ H2O         │ 1H2-18O^{0+} │ 20.0148  │     0.204953 │
╘═════════════╧══════════════╧══════════╧══════════════╛

El método ToF.signal() devuelve la simulación de la señal que se observaría en el TOF.

s = T.signal()
print ('type(s):', type(s),'\n')
print ('keys:', s.keys())
type(s): <class 'dict'>

keys: dict_keys(['signal', '6Li^{0+}', '7Li^{0+}', '1H2-16O^{0+}', '1H2-18O^{0+}', 'time'])

El resultado es un diccionario donde cada elemento es un array de datos:

  • s[‘time’] tiene el eje x, con la ventana de tiempo

  • s[‘signal’] tiene los valores de la suma de todas las especies.

  • los restantes elementos s[sustancia] tienen los valores de señal producida por cada sustancia.

# Cada elemento es un numpy array
print (type(s['signal']))
<class 'numpy.ndarray'>

Notar que en realidad no es necesario guardar el valor de s en este caso ya que queda guardado en el objeto T.times

T.times == s
True

Gráficos

La manera más simple de graficar es utilizando el método make_plot.

f = T.make_plot(T.fragments, negative=True, graph_all=True, hide_legend=False)
_images/example1_0.png

Este método ofrece algo de flexibilidad, pero dado que los datos se guardan como numpy arrays, se pueden graficar separadamente

import matplotlib.pyplot as plt
x, y = T.times['time'], T.times['signal']
plt.plot(x, y)
[<matplotlib.lines.Line2D at 0x7fe9faa94ee0>]
_images/example1_1.png