-
Notifications
You must be signed in to change notification settings - Fork 0
ES NORMOS interoperabilidad
⚙️ Página generada — no la edites aquí. Origen:
docs/normos_job.md. Corrígela en el repositorio y el wiki se regenera solo.
Módulo: core/normos_job.py (funciones puras) · GUI: Archivo ▸ NORMOS (.JOB)
NORMOS (R. A. Brand, 1990-1994) es el programa con el que se ha analizado buena
parte de la bibliografía Mössbauer publicada. Corre bajo DOS, es propietario y ya
no se mantiene, pero muchos laboratorios guardan años de trabajo en ficheros
.JOB.
Fitbauer lee y escribe ese formato. No ejecuta NORMOS ni lo distribuye: solo habla su formato de texto, que no es propietario.
Archivo ▸ NORMOS (.JOB) ▸ Importar trabajo de NORMOS…
Reconstruye el modelo en los paneles y carga el espectro. Un .JOB nombra sus
ficheros en las cuatro primeras líneas, sin ruta, porque NORMOS corría en DOS con
todo en el mismo directorio:
Fe080725.ws5 ← espectro
distcri1.JOB ← el propio trabajo
Fe0807di.res ← resultados que escribirá NORMOS
Fe0807di.plt ← gráfico
&DATA
NLTEXT=4, VMAX=-11.966, TRIANG=.true.,
&END
resuelve_fichero_de_datos() busca el espectro junto al .JOB sin distinguir
mayúsculas de minúsculas —los nombres vienen de DOS y rara vez coinciden en caja
con los del disco—, y si el declarado no aparece prueba con el nombre del propio
trabajo y, en último caso, con el único espectro de la carpeta. Nunca devuelve una
salida de NORMOS (.RES/.PLT).
Deja todos los ficheros del trabajo en la misma carpeta. Es lo que NORMOS espera y lo que hace que la importación funcione de una vez.
Se reconocen solas dos familias:
| Familia | Qué son sus subespectros | Dónde acaba |
|---|---|---|
| NORMOS-SITE | sitios discretos | componentes singlete / doblete / sextete |
| NORMOS-DIST | los puntos de una malla | panel P(BHF)/P(ΔEQ) |
En los de DIST se traduce la malla (origen y paso), la forma (histograma,
gaussiana, binomial o fija), la correlación δ(x) y los anclajes de borde; los
subespectros «cristalinos» (NXLS) pasan a ser componentes nítidos.
Archivo ▸ NORMOS (.JOB) ▸ Exportar trabajo de NORMOS… escribe el modelo actual en formato NORMOS. Se ha comprobado que NORMOS acepta el fichero que produce Fitbauer y reproduce la teoría original con diferencia exactamente cero.
Es la parte delicada, y equivocarse aquí no da ningún error:
| NORMOS | Significado en Fitbauer |
|---|---|
WID, W13, W23
|
WID es la anchura de las líneas 3,4 y W13/W23 son relativas a ella; gamma1 es la de las líneas 1,6. La conversión es gamma1 = WID·W13
|
D13, D23
|
Razones de área. int1/int2 son razones de profundidad. Coinciden solo si las anchuras son iguales |
DEP (o ARE) |
El área del subespectro en mm/s, no una profundidad |
NDEX/FACTOR/CONST
|
Ligaduras en la numeración global de NORMOS, 13 + 15·(n−1)
|
NORMOS deriva las posiciones del sexteto de los momentos nucleares; Fitbauer usa el patrón publicado de α-Fe. No difieren en un simple factor de escala. Para reproducir un BHF suyo exactamente, ajusta con el convenio de NORMOS activo:
from core.constants import sextet_pattern
with sextet_pattern("normos"):
... # el ajuste usa las posiciones de NORMOSLa diferencia es de unos 0,1 T.
El PFP que trae el &DATA es la semilla de la búsqueda del punto de doblado,
no su resultado: NORMOS lo refina en dos ciclos, y en trabajos reales acaba a más
de un canal de lo que pedía el fichero. Fitbauer hace su propia búsqueda —que es el
análogo correcto— e informa del PFP solo como dato.
Hay una segunda sutileza. El punto refinado que NORMOS imprime en su .RES
tampoco es donde dobla: su rutina final (normospr.for:601-604) lo trunca y suma
canales enteros,
IPFA = PFA + 1.0E-4 ! asignación real→entero: trunca
IPFP = PFP + 1.0E-4
DO 602 L=1,NP
TEMP(L) = Y(IPFA-L+1) + Y(IPFA+L)Los pares suman 2·IPFA+1, así que el eje de simetría cae en ⌊PFP⌋ + 0,5. Está
en core.normos_job.punto_de_doblado_normos(), y tenerlo en cuenta es lo que
permite reproducir sus ajustes.
El importador avisa de cada uno de estos puntos, porque lo que no se ha traducido importa tanto como lo que sí:
- Distribuciones Czjzek / Le Caër (
DISTRI=4) y el modelo de vecinos de Billard–Chamberod (METHOD=3). - Varios bloques de distribución solapados: Fitbauer maneja uno.
- El parámetro de suavizado
LAMDA. El de NORMOS es absoluto y elalphade Fitbauer adimensional, así que no hay conversión uno a uno: hay que fijarlo con la L-curve. La razónBETA/LAMDAsí se conserva y es el anclaje de bordes. -
DTQen las distribuciones de campo. Los bucles dedistcalf.forpara METHOD 1-5 calculanRH = BHF+PP*DTByRI = ISO+PP*DTIy no tocan ΔEQ, así que trasladarlo metería una correlación que NORMOS nunca aplicó.
Cuidado con los
.JOBheredados. El formato de DIST no admite claves de SITE comoNLINE,DEP,W13oW23. Si vienen copiadas de otro trabajo, NORMOS las lee y las descarta sin decir nada, de modo que ese subespectro nunca entró en su ajuste. Fitbauer sí lo avisa.
El CLI de ajuste discreto acepta un .JOB como plantilla, detectado por contenido
y no por extensión:
python mossbauer_fit_cli.py --template MI_TRABAJO.JOB --spectrum medida.ws5
python mossbauer_fit_cli.py --template modelo.json --spectrum medida.ws5 \
--export-job SALIDA.JOBLa equivalencia con NORMOS no es una afirmación de intenciones: está medida sobre
dos bancos independientes —411 espectros sintéticos y 564 ajustes reales hechos con
el programa original—, con los informes completos en
validacion/informe/.
En 355 de 503 trabajos comparables (71 %) Fitbauer iguala o mejora el χ² reducido de NORMOS.
© Jorge Sánchez Marcos, Nieves Menéndez González — Departamento de Química Física, UAM · Wiki generado desde docs/ para Fitbauer v5.0.0
Fitbauer v5.0.0
Start
- Home
- Installation
- User flows Data
- Folding
- Calibration (33 T)
- Spectrum comparison Fitting
- Distribution fitting
- Peak detection
- Profile likelihood
- Batch fitting Reference
- Command-line tools
- NORMOS (.JOB)
- Session format
- Sextet model (spec)
- Architecture
Inicio
- Inicio
- Instalación
- Flujos de usuario Datos
- Plegado (folding)
- Calibración (33 T)
- Comparación de espectros Ajuste
- Distribuciones
- Detección de mínimos
- Verosimilitud perfilada
- Ajuste en serie Referencia
- Línea de comandos
- NORMOS (.JOB)
- Formato de sesión
- Modelo de sextete (spec)
- Arquitectura