Skip to content

ES Linea de comandos

Jorge Sánchez edited this page Aug 3, 2026 · 2 revisions

Línea de comandos

Fitbauer ajusta sin necesidad de display: ambos CLIs usan los mismos motores que la GUI (core/), así que los resultados son idénticos. Referencia completa con ejemplos en el manual en inglés, apéndice Command-line tools.

Ajuste discreto — mossbauer_fit_cli.py

Parte de una plantilla de sesión guardada desde la GUI (Archivo ▸ Guardar sesión…) y uno o más espectros. Con varios espectros ejecuta una serie con warm-start: cada ajuste arranca en los valores convergidos del anterior.

python mossbauer_fit_cli.py --template plantilla.json \
    --spectrum medida.adt --out medida.fit.json

# Errores Monte Carlo e intervalos asimétricos por verosimilitud perfilada
python mossbauer_fit_cli.py --template plantilla.json --spectrum medida.adt \
    --out medida.fit.json --bootstrap 200 --profile-likelihood
Todas las opciones
usage: mossbauer_fit_cli.py [-h] --template TEMPLATE --spectrum SPECTRUM
                            [SPECTRUM ...] --out OUT [--vmax VMAX]
                            [--bootstrap N] [--profile-likelihood]
                            [--sextet-pattern {alpha_fe,normos}]
                            [--intensity-convention {depth,area}]
                            [--export-job FICHERO] [--src-frac F]
                            [--line-asym A] [--quiet]

Ajuste Mössbauer desde línea de comandos: una plantilla + espectros → ficheros de resultado.

Uso típico:

    python mossbauer_fit_cli.py         --template plantilla.json         --spectrum medida.adt         --out medida.fit.json

La plantilla es un fichero de sesión generado por la GUI (Archivo ▸ Guardar
sesión...). Aporta los parámetros iniciales del modelo (vars, fixed, tipos de
componente, perfil de línea, etc.). El centro de folding se detecta para cada
espectro automáticamente (la plantilla no impone el suyo).

Errores avanzados (opcionales, mismo motor que la GUI):

    --bootstrap N           errores por remuestreo Monte Carlo (N réplicas)
    --profile-likelihood    intervalos asimétricos 1σ/2σ por verosimilitud
                            perfilada (cruces Δχ²=1 y Δχ²=4)

Serie con warm-start: si se pasan varios espectros, cada ajuste parte de los
valores convergidos del anterior (``HeadlessSession.batch_fit_sequential``,
igual que el batch de la GUI) y ``--out`` recibe un único JSON con una fila
por fichero::

    python mossbauer_fit_cli.py --template T.json         --spectrum serie_010K.adt serie_050K.adt serie_100K.adt         --out serie.batch.json

El proceso es completamente headless: no necesita ningún display ni Tk. Se
apoya en ``core.session.HeadlessSession`` (la misma numérica que usa la GUI
a través de ``core.fit_engine``).

Salida (un espectro): el .json escrito contiene la misma estructura que una
sesión guardada desde la GUI (``session_payload``) más una sección
``batch_fit_result`` con los valores y errores del último ajuste, y, si se
pidieron, ``bootstrap`` y ``profile_likelihood``.

options:
  -h, --help            show this help message and exit
  --template TEMPLATE   Fichero .json de sesión que sirve como plantilla.
  --spectrum SPECTRUM [SPECTRUM ...]
                        Espectro(s) .ws5 o .adt a ajustar. Con varios, serie
                        con warm-start secuencial y un único JSON de salida.
  --out OUT             Fichero .json donde escribir el resultado.
  --vmax VMAX           Sobrescribe vmax (mm/s) — útil si la calibración
                        varía.
  --bootstrap N         Errores por remuestreo Monte Carlo con N réplicas
                        (solo con un espectro).
  --profile-likelihood  Intervalos asimétricos 1σ/2σ por verosimilitud
                        perfilada (solo con un espectro).
  --sextet-pattern {alpha_fe,normos}
                        Convenio de posiciones del sexteto: 'alpha_fe' (patrón
                        publicado de α-Fe, por defecto) o 'normos' (derivado
                        de los momentos nucleares, como NORMOS-SITE). Afecta
                        al sexteto discreto, al Hamiltoniano completo y al
                        kernel de distribución.
  --intensity-convention {depth,area}
                        Razones int1/int2 entre líneas de una componente:
                        'depth' (profundidad, histórico) o 'area' (ÁREA, que
                        es lo que son físicamente las probabilidades 3:2:1 y
                        lo que significan D13/D23 en NORMOS). Solo difieren si
                        las anchuras relativas no son 1.
  --export-job FICHERO  Escribe el modelo ajustado como fichero .JOB de
                        NORMOS-SITE (para comparar en NORMOS o compartir la
                        configuración). No ejecuta NORMOS.
  --src-frac F          Fracción RESONANTE de la fuente (FSO de NORMOS-SITE),
                        solo con el modelo de absorbente 'transmission': la
                        transmisión satura en 1−F en vez de en 0. Por defecto
                        1 (toda la radiación es resonante).
  --line-asym A         Asimetría de línea por interferencia (AKS de NORMOS-
                        SITE): el perfil se multiplica por 1 − A·(v−v0)/Γ. Por
                        defecto 0 (línea simétrica).
  --quiet               No imprimir el resumen por stdout (solo código de
                        salida).

Ajuste de distribuciones — fit_bhf_distribution_cli.py

Cubre los mismos modos que la GUI: P(BHF) y P(ΔEQ), formas histograma / gaussiana / VBF / binomial, regularización Tikhonov / TV / MaxEnt, kernel Voigt, correlaciones δ(H) y ΔEQ(H), y distribuciones 2D.

python fit_bhf_distribution_cli.py muestra.ws5 --bmin 0 --bmax 50 --nbins 50 \
    --gamma 0.18 --alpha 0.01 --plot --scan-alpha

# P(ΔEQ) con BHF fijo (0 = doblete); forma VBF; máxima entropía
python fit_bhf_distribution_cli.py muestra.adt --variable quad --bmax 3
python fit_bhf_distribution_cli.py muestra.adt --shape vbf --vbf-components 2
python fit_bhf_distribution_cli.py muestra.adt --reg-mode maxent
Todas las opciones
usage: fit_bhf_distribution_cli.py [-h] [--out-prefix OUT_PREFIX]
                                   [--center CENTER] [--vmax VMAX]
                                   [--norm-percentile NORM_PERCENTILE]
                                   [--variable {bhf,quad,delta}]
                                   [--fixed-bhf FIXED_BHF]
                                   [--shape {histograma,gaussiana,vbf,binomial}]
                                   [--vbf-components VBF_COMPONENTS]
                                   [--reg-mode {tikhonov,tv,maxent}]
                                   [--profile {Lorentziana,Voigt}]
                                   [--voigt-sigma VOIGT_SIGMA]
                                   [--delta-slope DELTA_SLOPE]
                                   [--quad-slope QUAD_SLOPE] [--d13 D13]
                                   [--d23 D23]
                                   [--kernel-treatment {1er_orden,hamiltoniano}]
                                   [--kernel-eta KERNEL_ETA]
                                   [--source-polarized]
                                   [--source-bhf SOURCE_BHF]
                                   [--source-theta SOURCE_THETA]
                                   [--absorber-theta ABSORBER_THETA]
                                   [--dist-2d] [--qmin QMIN] [--qmax QMAX]
                                   [--nbins-quad NBINS_QUAD]
                                   [--alpha-quad ALPHA_QUAD] [--delta DELTA]
                                   [--quad QUAD] [--gamma GAMMA] [--bmin BMIN]
                                   [--bmax BMAX] [--nbins NBINS]
                                   [--alpha ALPHA] [--no-fit-baseline]
                                   [--no-fit-slope] [--baseline BASELINE]
                                   [--slope SLOPE] [--sharp-bhf SHARP_BHF]
                                   [--sharp-delta SHARP_DELTA]
                                   [--sharp-quad SHARP_QUAD]
                                   [--sharp-gamma SHARP_GAMMA] [--scan-alpha]
                                   [--alpha-min ALPHA_MIN]
                                   [--alpha-max ALPHA_MAX]
                                   [--alpha-count ALPHA_COUNT] [--plot]
                                   [--edge-anchor B]
                                   [--intensity-convention {depth,area}]
                                   [--line-asym A]
                                   [--sextet-pattern {alpha_fe,normos}]
                                   input

Ajusta una distribucion hiperfina P(BHF)/P(ΔEQ) a un WS5 doblado.

positional arguments:
  input                 Fichero .ws5/.ADT

options:
  -h, --help            show this help message and exit
  --out-prefix OUT_PREFIX
                        Prefijo de salida; por defecto <input>_bhf
  --center CENTER       Centro interno de doblado. Si se omite usa .RES o
                        busqueda chi2.
  --vmax VMAX           Velocidad maxima mm/s. Si se omite usa .JOB/.PLT o 12.
  --norm-percentile NORM_PERCENTILE
                        Percentil para normalizar cuentas dobladas.
  --variable {bhf,quad,delta}
                        Variable de la distribucion: bhf → P(BHF); quad →
                        P(ΔEQ) con BHF fijo; delta → P(δ), distribucion de
                        desplazamiento isomerico (paridad con METHOD=8 de
                        NORMOS-DIST; con --fixed-bhf 0 y --quad 0 el kernel
                        son singletes, que es el caso de NORMOS, pero tambien
                        admite sexteto o doblete).
  --fixed-bhf FIXED_BHF
                        BHF fijo (T) del kernel cuando --variable quad (0 =
                        doblete).
  --shape {histograma,gaussiana,vbf,binomial}
                        Forma de la distribucion (gaussiana = VBF con N=1 y
                        linea Lorentziana).
  --vbf-components VBF_COMPONENTS
                        Numero de gaussianas del VBF (solo --shape vbf).
  --reg-mode {tikhonov,tv,maxent}
                        Regularizador del histograma Hesse-Rübartsch.
  --profile {Lorentziana,Voigt}
                        Perfil de linea del kernel.
  --voigt-sigma VOIGT_SIGMA
                        Anchura gaussiana instrumental (mm/s) con --profile
                        Voigt.
  --delta-slope DELTA_SLOPE
                        Correlacion lineal δ(H): dδ/dH (mm/s por unidad de la
                        malla). 0 = clasico.
  --quad-slope QUAD_SLOPE
                        Correlacion lineal ΔEQ(H): dΔEQ/dH. 0 = clasico.
  --d13 D13             Ratio de area lineas (1,6)/(3,4) del kernel sextete
                        (convenio NORMOS D13; 3 = patron estandar). Solo
                        --shape histograma.
  --d23 D23             Ratio de area lineas (2,5)/(3,4) del kernel sextete
                        (convenio NORMOS D23; 2 = polvo, 0-4 = textura). Solo
                        --shape histograma.
  --kernel-treatment {1er_orden,hamiltoniano}
                        Física del kernel sextete: '1er_orden' clásico o
                        'hamiltoniano' (promedio de polvo del Hamiltoniano
                        completo; --quad pasa a ser el módulo del EFG
                        aleatorio, análogo exacto del EXACT/QUP de NORMOS-
                        DIST). Solo --shape histograma.
  --kernel-eta KERNEL_ETA
                        Asimetría η del EFG con --kernel-treatment
                        hamiltoniano.
  --source-polarized    Fuente POLARIZADA (paridad METHOD=4/POLAR de NORMOS-
                        DIST): kernel de peine 36 líneas por selección de
                        helicidad. Solo --shape histograma con --variable bhf.
  --source-bhf SOURCE_BHF
                        Campo hiperfino de la FUENTE (T) con --source-
                        polarized.
  --source-theta SOURCE_THETA
                        Ángulo fuente-haz (grados) con --source-polarized (0 =
                        paralelo, validado).
  --absorber-theta ABSORBER_THETA
                        Ángulo campo del absorbente-haz (grados) con --source-
                        polarized (0 = alineado).
  --dist-2d             Distribucion bidimensional P(BHF, ΔEQ) regularizada.
  --qmin QMIN           ΔEQ minimo (mm/s) en modo 2D.
  --qmax QMAX           ΔEQ maximo (mm/s) en modo 2D.
  --nbins-quad NBINS_QUAD
                        Bins de ΔEQ en modo 2D.
  --alpha-quad ALPHA_QUAD
                        Regularizacion en la direccion ΔEQ (2D); por defecto
                        igual a --alpha.
  --delta DELTA         CS/delta fijo. Por defecto intenta .RES o 0.
  --quad QUAD           DeltaEQ fijo. Por defecto intenta .RES/.JOB o 0.
  --gamma GAMMA         Gamma FWHM fija. Por defecto intenta WID de .RES o
                        0.36.
  --bmin BMIN           Minimo de la malla (T para bhf, mm/s para quad). Por
                        defecto 0.
  --bmax BMAX           Maximo de la malla (T para bhf, mm/s para quad). Por
                        defecto 50 T / 3 mm/s.
  --nbins NBINS         Numero de bins de la malla
  --alpha ALPHA         Regularizacion
  --no-fit-baseline     Fija baseline
  --no-fit-slope        Fija slope
  --baseline BASELINE   Baseline inicial/fijo
  --slope SLOPE         Slope inicial/fijo
  --sharp-bhf SHARP_BHF
                        Añade un sextete nítido no regularizado con este BHF.
                        Repetible, p.ej. --sharp-bhf 33
  --sharp-delta SHARP_DELTA
                        Delta de sextetes nítidos; por defecto usa --delta
  --sharp-quad SHARP_QUAD
                        Quad de sextetes nítidos; por defecto usa --quad
  --sharp-gamma SHARP_GAMMA
                        Gamma de sextetes nítidos; por defecto usa --gamma
  --scan-alpha          Ademas escanea alpha para una L-curve simple
  --alpha-min ALPHA_MIN
  --alpha-max ALPHA_MAX
  --alpha-count ALPHA_COUNT
  --plot                Guarda PNG con espectro y P(BHF)
  --edge-anchor B       Anclaje de los extremos de la malla (BETA1/BETA2 de
                        NORMOS-DIST): fuerza P->0 en el primer y ultimo bin. 0
                        = sin anclaje. Util para que el histograma no apile
                        peso espurio en el borde.
  --intensity-convention {depth,area}
                        Razones de intensidad entre lineas del kernel: 'depth'
                        (profundidad, historico) o 'area' (AREA, convenio
                        D13/D23 de NORMOS). Solo difieren si las anchuras
                        relativas no son 1.
  --line-asym A         Asimetria de linea por interferencia (AKS de NORMOS-
                        SITE): el perfil se multiplica por 1 - A*(v-v0)/Gamma.
                        0 = linea simetrica.
  --sextet-pattern {alpha_fe,normos}
                        Convenio de posiciones del sexteto del kernel:
                        'alpha_fe' (patron publicado de alfa-Fe, por defecto)
                        o 'normos' (derivado de los momentos nucleares, como
                        NORMOS-SITE).

Ver también: Distribuciones · Ajuste en serie

Clone this wiki locally