Process reference
vaft.process is the computation layer of VAFT. Almost every function in it takes plain NumPy
arrays and scalars and returns arrays, tuples or dataclasses; it does not read or write ODS. The
ODS-aware layer lives in vaft.omas (mainly vaft.omas.process_wrapper), which pulls geometry and
signals out of an ODS, calls into vaft.process, and writes the results back.
Rule of thumb:
vaft.processis the math,vaft.omas.compute_*is the API you usually call.
Every public processing function is documented under one contract, and these pages are generated
from those docstrings by python -m vaft.process.catalog. Where a formula page answers what is
this quantity and when is it valid, a process page answers how is this input turned into this
output: the parameters and returns with their units, the processing steps in order, the defaults
that change the result and what kind of value each is, the conventions assumed, the machine scope,
the limitations, and the provenance of the method. Nothing here is written by hand, so the site
and vaft.process.describe("<name>") always agree.
import vaft.process as P
print(P.describe("repair_clipped_interval")) # one routine, rendered
P.search("vest.yaml") # every routine whose text mentions it
P.list_processes(category="signal_processing") # imports only that submodule
The discovery layer is loaded on first use only; import vaft.process.signal_processing never
touches it.
Categories
The layer is being brought under the contract one submodule at a time (#252). A category gets a reference page when every function in it conforms; until then its count is shown and its page is absent.
| Category | Module | Functions | Under contract | Contents |
|---|---|---|---|---|
| profile | vaft.process.profile |
28 | yes | Kinetic profiles: from diagnostic points to a stored ``core_profiles`` slice. |
| equilibrium | vaft.process.equilibrium |
80 | yes | Axisymmetric equilibrium: from a flux map to the quantities derived from it. |
| camera_geometry | vaft.process.camera_geometry |
4 | yes | Pinhole camera projection math for the VEST FAST camera. |
| signal_processing | vaft.process.signal_processing |
27 | yes | Conditioning of one waveform on a plain time axis. |
| fluctuation | vaft.process.fluctuation |
11 | yes | Diagnostic-independent spectral analysis of scalar fluctuation time series. |
| soft_x_rays | vaft.process.soft_x_rays |
10 | yes | VEST soft X-ray fluctuation and two-filter analysis routines. |
| electromagnetics | vaft.process.electromagnetics |
10 | yes | Axisymmetric electromagnetic response: what a current does elsewhere, and how the vessel answers. |
| numerical | vaft.process.numerical |
1 | yes | Numerical primitives on plain arrays. |
| magnetics | vaft.process.magnetics |
16 | yes | Magnetic diagnostics: from a coil voltage to a current, a flux, or a mode number. |
| perturbation | vaft.process.perturbation |
27 | yes | Resonant response at the rational surfaces: windows, reductions, ratios. |
| statistical_analysis | vaft.process.statistical_analysis |
11 | yes | Log-linear regression of confinement time against engineering parameters. |
| atomic | vaft.process.atomic |
5 | yes | Atomic-radiation processing on OMAS data structures. |
| langmuir | vaft.process.langmuir |
8 | yes | Backend-independent VEST triple Langmuir probe physics. |
| impa | vaft.process.impa |
14 | yes | Generic algorithms for the VEST Internal Magnetic Probe Array. |
| onset | vaft.process.onset |
13 | yes | Onset and active-window primitives on plain arrays (issue #409). |
| wall_modes | vaft.process.wall_modes |
22 | yes | Segment-wise eigenmode basis of a passive wall, with global coupling (vaft #473). |
| coils_non_axisymmetric | vaft.process.coils_non_axisymmetric |
3 | yes | Kernels on non-axisymmetric coil sets: toroidal mode content and vacuum field. |
| camera_fluctuation | vaft.process.camera_fluctuation |
7 | yes | Fluctuation analysis of FAST-camera image sequences. |
| line_of_sight | vaft.process.line_of_sight |
3 | yes | Line integrals of a poloidal-plane field along diagnostic sightlines (issue #886). |
| magnetic_island | vaft.process.magnetic_island |
4 | yes | An analytic magnetic island placed on an axisymmetric equilibrium (issue #886). |
| field_line_topology | vaft.process.field_line_topology |
10 | yes | Relative heat-load proxies from field-line tracing products (issue #1099). |
| ml | vaft.process.ml |
24 | yes | Backend-neutral machine-learning processing: data to published model (#669). |
| transients | vaft.process.transients |
2 | yes | Measurements of a plasma-current transient on plain arrays. |
| nbi | vaft.process.nbi |
1 | yes | Reduced neutral-beam attenuation along a prescribed 1-D path (vaft #1136). |
| profile_gradients | vaft.process.profile_gradients |
5 | yes | Profile gradients with an explicit coordinate, gradient coordinate and reference length. |
| resistive_zeff | vaft.process.resistive_zeff |
7 | yes | Resistive effective charge from the transformer balance and a conductivity model. |
| transport_state | vaft.process.transport_state |
11 | yes | Resolved transport states: one qualified plasma state shared by TGLF, NEO and classical. |
| confinement | vaft.process.confinement |
18 | yes | Power balance and slice qualification for energy-confinement scaling (vaft #548). |
| impurity | vaft.process.impurity |
11 | yes | Impurity composition: which mixture a plasma is assumed, derived or measured to carry, resolved once. |
| species | vaft.process.species |
4 | yes | Canonical species/population state and physics-specific projections of it (issue #1567). |
| kinetic_closure | vaft.process.kinetic_closure |
4 | yes | Analytic kinetic closure: dilution-aware thermal pressure and a classical fast-ion estimate (issue #1606). |
| gyrokinetics | vaft.process.gyrokinetics |
17 | yes | Turbulence--zonal-flow diagnostics of gyrokinetic time series and the predator--prey fit (issue #1820). |
| zeff_projection | vaft.process.zeff_projection |
6 | yes | Resistive projection of an effective-charge profile: Z_eff(rho) -> R_p -> Z_eff^res,equiv. |
| mode_frequency | vaft.process.mode_frequency |
1 | yes | Predicted lab-frame mode-frequency tracks from an equilibrium and a rotation profile. |
| mhd_stability | vaft.process.mhd_stability |
6 | yes | Post-processing of DCON stability results read back from ``mhd_linear`` (#940). |
| q_profile_context | vaft.process.q_profile_context |
3 | yes | Equilibrium context for core low-n MHD interpretation (#1798, child of #1797). |
| ordering_state | vaft.process.ordering_state |
8 | yes | Asymptotic ordering quantities of measured plasma states (#1627 §2, for the #1629 atlas). |
| ntv_coil_response | vaft.process.ntv_coil_response |
11 | yes | Quadratic coil-response model of a signed NTV torque, and its qualification. |
| coil_operating_space | vaft.process.coil_operating_space |
1 | yes | The common result of a non-axisymmetric coil operating-space study (#1178). |
| resonant_coil_response | vaft.process.resonant_coil_response |
6 | yes | Resonant-field response of coil-group phasors: a verified linear operator and its optima. |
| local_mhd_criteria | vaft.process.local_mhd_criteria |
7 | yes | Local MHD stability criteria evaluated from one reconstructed equilibrium (#1902). |
| cocos | vaft.process.cocos |
6 | yes | Operational COCOS handling: consistency checking against Sauter Eq. 23. |
Machine-independent or VEST policy
Every function’s Applicability section opens with one of two sentences, and each page badges
it. Machine-independent means the caller supplies every machine-specific number – an
acquisition rail, a chord length, a processing window – and the routine infers nothing about the
hardware; the VEST values are read from vest.yaml by vaft.machine_mapping, never here.
VEST-specific means the routine embeds a VEST constant, a VEST column name or a VEST
acquisition-era rule, and its page says which and for what shot range.
Where a default came from
A default that changes the result is classified on its page as one of: physical constant, literature value, diagnostic calibration, empirical estimate, validated-workflow default, machine-specific setting, acquisition-era policy, legacy compatibility value, or numerical convenience. A legacy compatibility value is one that arrived with a ported routine and whose derivation is not recorded; the page says so rather than inventing one.
Refreshing this snapshot
From a checkout of the develop branch, run:
python -m vaft.process.catalog --output docs/_data/process_catalog.yml
The snapshot records the SHA-256 of every vaft/process/*.py source file, the private
_equilibrium_parametric.py included; documentation validation compares them when
VAFT_REGISTRY_SOURCE points to the corresponding source checkout. The same text is available
offline as vaft.process.describe("<name>"), vaft.process.search("<text>") and
vaft.process.list_processes(category="<category>").
What these objects mean scientifically – which concept a plot draws, which diagnostic measures it, which Data Dictionary path represents it – is generated in the scientific ontology explorer.