---
title: 'Spark Condition: Uses in Computing, Spark, and Ignition Systems'
url: https://www.emergentmind.com/topics/spark-condition
type: topic
---

# Spark Condition: Uses in Computing, Spark, and Ignition Systems

“Spark condition” is not a single standardized technical concept. In the literature represented here, the expression refers to several distinct condition systems: the **spark condition** in finite frame theory, which is an algebraic criterion for linear independence; conditions governing deterministic aggregation and effective execution in **Apache Spark**; physical and statistical conditions for ignition and relight; discharge conditions in gas detectors; spark-plug fault conditions; and semantic contracts that preserve policy-learning behavior in Spark-scale execution. The meaning therefore depends on whether “spark” denotes a mathematical property, a distributed-computing platform, an ignition event, an electrical discharge, or an engine component.

## 1. Mathematical spark condition in finite frames

In finite frame theory, the spark of an $M\times N$ synthesis matrix $F$ is

$$
\mathrm{Spark}(F)=\min\{\|x\|_0:Fx=0,\;x\neq0\}.
$$

The columns of $F$ are frame vectors $f_1,\ldots,f_N$ and

$$
Fy=\sum_{n=1}^N y[n]f_n.
$$

The spark is equivalently the cardinality of the smallest linearly dependent subset of columns. Thus, $\mathrm{Spark}(F)=s$ means that every collection of fewer than $s$ columns is linearly independent, whereas some collection of $s$ columns is linearly dependent.

The condition has direct implications for sparse representation. If two distinct coefficient vectors $x_1$ and $x_2$ are $K$-sparse and satisfy $Fx_1=Fx_2$, then $x_1-x_2$ is at most $2K$-sparse and lies in $\ker F$. Consequently, uniqueness of all $K$-sparse representations requires

$$
\mathrm{Spark}(F)>2K.
$$

Every signal of sparsity strictly less than $\mathrm{Spark}(F)/2$ is the unique sparsest solution of $y=Fx$, while nonuniqueness can occur at or above that threshold. These results and the associated deterministic constructions are developed in “Full Spark Frames” [1110.3548].

### Full spark

Because the rank of an $M\times N$ matrix is at most $M$, no collection of more than $M$ columns can be linearly independent. The largest possible spark is therefore $M+1$. A matrix is **full spark** when

$$
\mathrm{Spark}(F)=M+1.
$$

For an $M$-dimensional frame, this is equivalent to each of the following:

1. Every collection of at most $M$ frame vectors is linearly independent.
2. Every $M$-element subcollection spans the ambient space $\mathbb H_M\cong\mathbb C^M$.
3. Every $M\times M$ submatrix obtained by selecting $M$ columns is invertible.
4. Every such submatrix has nonzero determinant:

$$
\det(F_{\mathcal K})\neq0
\qquad
\text{for every }\mathcal K\subseteq\{1,\ldots,N\},\ |\mathcal K|=M.
$$

Full spark is an algebraic independence property, not a conditioning guarantee. Nonzero determinants may be arbitrarily small, so full spark does not imply that the corresponding submatrices are numerically well-conditioned. This distinguishes it from the restricted isometry property, defined by

$$
(1-\delta)\|x\|^2\leq\|Fx\|^2\leq(1+\delta)\|x\|^2
$$

for vectors satisfying $\|x\|_0\leq K$. RIP provides quantitative control over all relevant submatrices, whereas full spark only requires their minors to be nonzero.

### Constructions and applications

Full spark frames are maximally robust to erasures. If $N-M$ coefficients are erased, at least $M$ frame elements remain, and every such surviving collection spans the space. For real full spark frames with $N\geq2M-1$, the map $\mathcal D\circ F^*$ is injective, where $\mathcal D$ applies entrywise absolute values; recovery is consequently possible up to an overall sign from magnitude measurements.

Vandermonde matrices provide a basic construction. For distinct bases $\alpha_1,\ldots,\alpha_N$, every square minor has determinant

$$
\det(V)=\prod_{1\leq i<j\leq M}(\alpha_j-\alpha_i),
$$

so a Vandermonde matrix is full spark if and only if its bases are distinct. Choosing bases on the unit circle produces Fourier-type frames.

For prime-order discrete Fourier transforms, Chebotarëv’s theorem states that every square submatrix of the DFT is invertible. Consequently, every selection of $M$ rows from a prime-order DFT produces a full spark harmonic frame. These frames are equal-norm and tight by construction, and certain difference-set selections also yield full spark equiangular tight frames.

For prime powers $N=p^r$, a DFT row selection is full spark if and only if it is uniformly distributed over the divisors of $N$. This condition requires the selected rows to be distributed across cosets of each relevant cyclic subgroup with sizes differing by at most one. The criterion is specific to prime-power orders; uniformly distributed sets need not yield full spark submatrices for general composite orders.

Full spark Parseval frames are dense in the Stiefel manifold of Parseval frames. If $F$ is any full spark frame, then

$$
G=(FF^*)^{-1/2}F
$$

is full spark and Parseval because left multiplication by an invertible matrix preserves column dependencies. The density result follows from the algebraic-geometric structure of the Stiefel manifold and the fact that the determinant nonvanishing conditions form a nonempty Zariski-open subset.

Testing full spark for an arbitrary matrix is hard for $\NP$ under randomized polynomial-time reductions. The result does not imply that every structured family is difficult to test: prime-order and prime-power DFT families have explicit criteria. It instead establishes that deterministic constructions are significant because they certify a property that is generally difficult to verify exhaustively.

## 2. Spark as a condition for deterministic Apache Spark aggregation

In distributed computing, “Spark condition” can refer to the semantic conditions under which Apache Spark aggregation produces the same result for every permitted partitioning and merge order. “An Executable Sequential Specification for Spark Aggregation” [1702.02439] formalizes this behavior with PureSpark, an executable Haskell specification.

An RDD is modeled as a list of partitions:

```haskell
type Partition α = [α]
type RDD α       = [Partition α]
```

For the general combinator

```haskell
aggregate :: β
          -> (β -> α -> β)
          -> (β -> β -> β)
          -> RDD α
          -> β
```

the zero value is $z$, `seq` processes an element within a partition, and `comb` merges partial results across partitions. PureSpark models partition completion order with a nondeterministic permutation and can also model tree aggregation with different binary-tree shapes.

The deterministic specification requires that, for every list $L$ and every partitioning $part(L)$,

$$
aggregate^D(z,seq,comb,part(L))
=
foldl\ seq\ z\ L.
$$

Thus, determinism is universal agreement with the sequential fold, not merely repeated agreement under one observed cluster execution.

### Necessary and sufficient condition for `aggregate`

Let

$$
img(seq,z)=
\{y\mid \text{there is a list }L\text{ such that }foldl\ seq\ z\ L=y\}.
$$

Calls to `aggregate(z,seq,comb,rdd)` have deterministic outcomes if and only if:

1. $(img(seq,z),comb,z)$ is a commutative monoid; and
2. for every $d::\alpha$ and $e\in img(seq,z)$,

$$
seq(e,d)=comb(e,seq(z,d)).
$$

The commutative-monoid requirement is restricted to reachable accumulator values rather than the entire declared type. It includes closure, identity, associativity, and commutativity on $img(seq,z)$.

The compatibility equation is the essential additional requirement. It states that processing an element after an existing accumulated prefix must equal combining the existing summary with the independently computed contribution of that element. Equivalently, if

$$
h(L)=foldl\ seq\ z\ L,
$$

then

$$
h(p_1+p_2)=comb(h(p_1),h(p_2)).
$$

The sequential aggregation function must therefore behave as a list homomorphism into a commutative monoid.

Associativity handles different parenthesizations and merge-tree shapes; commutativity handles reordered partial results; identity handles the initial value and empty partitions; closure keeps merged reachable values within the reachable domain. Idempotence is not required. Integer addition is not idempotent, but it satisfies the relevant algebraic properties when paired consistently with `seq`.

### Other Spark combinators

For `reduce`, the corresponding condition is that $(\alpha,comb)$ be a commutative semigroup. An explicit identity is unnecessary because `reduce` operates on nonempty inputs.

For `treeAggregate` and `treeReduce`, tree execution adds nondeterministic merge structures but does not introduce a new algebraic requirement:

$$
\text{treeAggregate is deterministic}
\iff
\text{aggregate is deterministic},
$$

and similarly for `treeReduce` and `reduce`.

For pair RDDs, `aggregateByKey` is deterministic exactly when the corresponding general aggregate is deterministic for each key. `reduceByKey` is deterministic when its value combiner is a commutative semigroup. The same reasoning applies to GraphX message aggregation.

### Numerical and graph-processing consequences

Floating-point addition is not associative in finite precision:

$$
(a+b)+c\neq a+(b+c)
$$

in general. Consequently, Spark operations using floating-point addition can produce different outcomes under different tree shapes and partitioning arrangements. The paper reports such variability for logistic regression, linear SVM, `StandardScaler`, and numerical integration. In one `StandardScaler` experiment, a data set containing equal numbers of $-10^{20}$, $600$, and $10^{20}$ had exact mean $200$, but the transformed value ranged from $-944$ to $1142$ across 50 runs using a 100-partition RDD.

By contrast, connected components using minimum, triangle counting using set union and integer addition, and in-degree computation using integer addition satisfy the relevant commutative-semigroup conditions. Their aggregation results are deterministic. Deliberate algorithmic randomness, such as random choices in vertex coloring, is distinct from aggregation-order nondeterminism and is not eliminated by the Spark aggregation condition.

## 3. Operational conditions for effective Apache Spark execution

A different use of “Spark condition” denotes the workload, data, resource, and execution circumstances under which Apache Spark’s advertised properties—generality, fault tolerance, scalability, and high-performance in-memory processing—are realized. “A Survey on Spark Ecosystem for Big Data Processing” [1811.08834] treats the phrase as an interpretive label rather than a formally defined concept.

Spark is most effective when data is large enough to require distributed processing, computation is expressible as data-parallel operations over partitions, intermediate datasets are reused, sufficient aggregate memory exists, partitions are balanced, and transformations do not generate excessive shuffles.

### RDDs, transformations, and actions

A Resilient Distributed Dataset is an immutable collection of records partitioned across multiple machines. RDDs are created from external reliable storage or other RDDs and are manipulated through coarse-grained operations.

Transformations such as `map`, `filter`, and `groupByKey` create new RDDs. Narrow transformations depend on a small number of input partitions and can often be pipelined locally. Wide transformations require data redistribution, generally through a shuffle.

Actions such as `count`, `collect`, `save`, and `reduce` trigger computation. Spark uses lazy evaluation, allowing it to construct a dependency graph, pipeline compatible operations, avoid unused work, and optimize scheduling and data movement.

RDD lineage records how partitions were derived. If a partition is lost, Spark can reconstruct it by replaying the relevant transformations. This recovery model depends on retained lineage, available input data, sufficient resources for recomputation, and an operational driver. It does not provide full fault tolerance under driver failure or lost lineage.

### Partitions, stages, and shuffles

A Spark application normally consists of a driver and multiple executors. The driver constructs the dependency graph and schedules jobs. The DAGScheduler converts the graph into stages, while the TaskScheduler submits tasks to executors. A task normally processes one partition for one stage.

Partitioning controls parallelism, locality, task duration, shuffle volume, load balance, and memory pressure. Too few partitions underutilize the cluster; too many small partitions increase scheduling and file-management overhead. Uneven partitions create stragglers.

Shuffles are many-to-many data transfers required by grouping, joining, aggregation, and repartitioning. They incur network transfer, serialization, deserialization, disk activity, synchronization, memory pressure, and garbage collection. A large or skewed shuffle can make a computation network- or I/O-bound rather than CPU-bound.

The surveyed optimizations include shuffle-file consolidation, columnar compression, adaptive prefetching, shared-memory shuffle, aggregation at selected data centers, RDMA, and systems such as Riffle and Succinct. These mechanisms address the cost of moving, storing, or materializing intermediate data but do not remove the fundamental expense of wide dependencies.

### Caching and resource limitations

Caching is beneficial when an RDD is reused, especially in iterative machine learning, interactive analytics, and graph processing. It exchanges storage cost for reduced recomputation and I/O. Insufficient memory causes eviction or spilling; excessive cached data increases garbage-collection pressure and object-management overhead.

Spark’s execution resources include memory for cached RDDs and memory for task execution and temporary objects. Their allocation is nontrivial. JVM serialization, garbage collection, data skew, scheduler bottlenecks, transient resources, and heterogeneous hardware can weaken performance.

Spark can be approximately $10\times$ to $100\times$ faster than MapReduce in batch processing under favorable conditions, primarily by avoiding repeated disk materialization and retaining reused data in memory. This is not a universal guarantee: workloads that are read once, memory-constrained, shuffle-dominated, or strongly sequential may obtain little advantage.

## 4. Spark conditions in data ingestion and distributed scientific workloads

Apache Spark’s effectiveness also depends on how external data is mapped to partitions. “FITS Data Source for Apache Spark” [1804.07501] examines this issue for astronomical binary-table data through the `spark-fits` connector.

FITS files contain Header Data Units, each with 2880-byte header blocks and optional data blocks. The connector supplies a Scala FITSIO library and a Spark connector that parses headers, reads binary tables, infers schemas, and distributes decoded records across executors.

A typical interface is:

```scala
val df = spark.read
  .format("fits")
  .option("hdu", 1)
  .load("hdfs://...")
```

### Logical and physical partitioning

HDFS divides files into fixed-size blocks without understanding FITS headers, binary-table rows, or HDU boundaries. A block can begin or end in the middle of a header, data stream, or table row. `spark-fits` therefore creates logical Spark partitions that approximately follow HDFS block sizes while preserving FITS structure and row boundaries.

This design preserves decoding correctness but can weaken locality. A logical partition may require bytes from more than one DataNode, causing remote reads. The cost is manageable when remote data is small relative to the partition or block size and when records are read incrementally.

Once decoded, FITS data is represented as RDDs or DataFrames. Spark’s lazy execution means loading constructs a logical data set; decoding begins when an action such as `count`, `collect`, or `reduce` is invoked.

### Conditions for effective FITS processing

The connector is most effective when input files contain readable binary-table HDUs, the files reside on distributed storage accessible from executors, enough partitions exist to occupy available cores, storage and network bandwidth are adequate, and the data is reused sufficiently to amortize the loading cost.

In Cloud@VirtualData experiments, the configuration used nine executors, 17 cores per executor, 30 GB RAM per machine, 162 GB total Spark cache allocation, 128 MB HDFS blocks, and HDFS replication factor three. Data sets ranged from 11 GB to 1.2 TB. Without caching, median throughput was approximately 15 MB/s per mapper and 2.3 GB/s for the cluster. Loading time was attributed approximately 60% to storage transfer, 30% to FITS decoding, and the remaining 10% to other overheads.

Caching added approximately 20% overhead to the first iteration. When the working set fit in cache, later iterations were almost two orders of magnitude faster; data sets up to approximately 110 GB showed this behavior in the described runs. When the data exceeded cache, uncached partitions were recomputed in the experiment, and later-iteration time increased as the cached fraction decreased.

On Cori at NERSC, a 1.2-TB FITS data set was loaded at approximately 17 GB/s with default one-OST Lustre striping and approximately 21 GB/s with eight-OST striping. Later in-memory iterations took $2.4\pm0.8$ seconds with default striping and $2.1\pm1.3$ seconds with eight-way striping. Additional striping beyond eight OSTs produced no significant improvement.

The results establish conditional rather than universal scalability. Storage transfer, decoding, cache capacity, data locality, partition balance, and shuffle-intensive operations remain the main limits.

## 5. Spark conditions for scalable data interfaces and policy learning

Spark can also serve as a distributed execution layer while delegating data access or model-specific computation to specialized systems. “Zero-Cost, Arrow-Enabled Data Interface for Apache Spark” [2106.13020] defines an interoperability condition: Spark supplies distributed computation, while Apache Arrow’s Dataset API supplies native columnar data access.

The prerequisite is that the source be readable through the Arrow Dataset API and that a native C++ Arrow implementation be available through JNI. Spark remains responsible for query planning, scheduling, DataFrames, Datasets, RDDs, and SQL operations. Arrow performs source discovery, format selection, parsing, decoding, and batch production.

The interface is implemented as an Arrow-aware Spark `FileFormat`. A typical use is:

```scala
val df: DataFrame = session.read.arrow(path)
df.createOrReplaceTempView("People")
session.sql("SELECT name FROM People WHERE age > 42")
```

Arrow produces columnar batches, but Spark operators in the implementation require row-wise access through `ColumnarBatch`. The “zero-cost” claim therefore means practical parity or improvement under suitable workloads, not absence of JNI, IPC, copying, or conversion costs.

The paper reports that `Arrow-Spark` becomes competitive or faster as input size increases and fixed JNI costs are amortized. For CSV, it begins at approximately $4.5\times$ speedup under the tested conditions. For large Parquet workloads, its advantage is greatest in the approximately 1–2 TB range of the experiments. Batch size is critical: 8,192 rows, equal to 256 KB for four 64-bit-integer columns, was optimal on the tested hardware because it matched the 256 KB L2 cache per core.

“Spark Policy Toolkit” [2604.25061] extends this semantics-oriented view to policy learning. Its fixed-input semantic contract requires identical rows, row identifiers, feature order, treatment vocabulary, preprocessing manifest, split boundaries, forest arrays, and deterministic expansion order. Under that contract, `mapInPandas` and `mapInArrow` provide partition-initialized vectorized inference, while collect-less split search scores candidates on executors rather than materializing the candidate table on the driver.

The inference primitive initializes the forest once per partition and emits per-row treatment-score vectors. The split-search primitive constructs prefix statistics, evaluates both missing-value routes, checks treatment support and leaf-size constraints, and returns only a `BestSplit` record.

The semantic conditions are stricter than merely obtaining similar aggregate utility. They preserve per-row score vectors, candidate-validity sets, split winners, serialized tree signatures, leaf assignments, treatment assignments, policy value, AUUC, and Qini.

On a 40-worker Databricks cluster, `mapInArrow` reached 4.72 million rows/s at 10 million rows and 7.23 million rows/s at 50 million rows. Across 24 backend-ablation settings, `mapInArrow` won 18 and `mapInPandas` won six, so backend choice was workload-dependent. Collect-less split search remained operational through $F=1000$ features and 124,000 candidate rows, where driver collection was intentionally skipped.

After fixed-input locking, six repartition, coalesce, shuffle, and intra-partition-order perturbations produced identical signatures and no policy-vector or leaf drift. Before locking, all six produced exact policy-vector drift, and three produced leaf drift. The results illustrate a general Spark condition: distributed execution preserves application semantics only when the inputs and semantic conventions that determine those semantics are explicitly fixed.

## 6. Physical spark conditions in ignition, detectors, and engines

In combustion and instrumentation, “spark condition” denotes the physical state required for an electrical spark to produce a self-sustaining flame, avoid discharge, or maintain engine performance.

### Ignition probability and relight

“MIST” in “A statistical model to predict ignition probability” [2010.08871] models whether a spark creates a flame kernel large enough to become effectively resistant to extinction. It does not model subsequent fully developed flame stabilization or light-round and is intended for the first few milliseconds, while the kernel remains small enough that its thermal expansion does not substantially modify the cold-flow field.

The model identifies three broad requirements:

1. A favorable mixture, characterized by flammable mixture availability or rapid fuel availability along the kernel path.
2. Moderate turbulence, with sufficiently low velocity fluctuations and dissipation to avoid extinction.
3. A favorable kernel trajectory, in which large-scale structures transport the kernel toward regions where it can grow and toward the injector or flame-stabilization zone.

The local spark state alone is therefore insufficient. The kernel’s trajectory through a spatially varying velocity, mixture, turbulence, and dissipation field determines the outcome.

MIST uses non-reacting statistics such as mean velocity, velocity fluctuations, mixture fraction, turbulent integral scale, dissipation, temperature, flame speed, and flame thickness. It computes a flammability factor

$$
F_f=\int_{Z_{\mathrm{lean}}}^{Z_{\mathrm{rich}}}P(Z)\,\mathrm dZ
$$

and models kernel temperature, growth, cooling, turbulent stretch, and stochastic transport. The kernel position follows a Langevin equation,

$$
\frac{\mathrm d\boldsymbol{x}(t)}{\mathrm dt}
=
\boldsymbol{\mu}(\boldsymbol{x})
+
\boldsymbol{\sigma}(\boldsymbol{x})\boldsymbol{\eta}(t),
$$

with drift related to mean velocity and diffusion related to velocity fluctuations.

The Karlovitz number is modeled as

$$
Ka=0.157\frac{(\nu\varepsilon)^{1/2}}{(S_L^0)^2},
$$

with turbulent quenching declared when $Ka>Ka_c$. The calibrated critical value is $Ka_c=4.5$. Ignition failure occurs when the kernel radius falls below $r_f$, approximated by the laminar flame thickness; success occurs when it exceeds $r_s$, taken as the turbulent integral length scale in the studied burner.

The model reproduced the topology of experimental ignition maps for premixed, non-premixed, and spray combustion. In premixed operation, turbulent stretch was dominant. In non-premixed operation, local mixture formation and flammability were more influential. In spray operation, gaseous fuel availability, evaporation, droplet motion, two-phase flame speed, and turbulent stretch interacted.

“Data-driven Analysis of Relight variability of Jet Fuels induced by Turbulence” [2011.06696] studies a different spark condition: fixed spark and nominal operating conditions with event-to-event variability generated by changing only the initial turbulent field. Jet-A success was associated with fuel entrainment by organized, relatively large-scale structures, especially a vortex ring. C1 was more sensitive to small-scale strain and disorganized turbulence and exhibited kernel breakdown.

The simulations used deposited spark energies of $0.96$ J for Jet-A and $1.1275$ J for C1, adjusted to produce approximately equal numbers of ignitions and misfires. These values are ensemble-calibration parameters rather than universal minimum ignition energies or design optima. The paper reports 237 successes and 230 failures for Jet-A, and 212 successes and 220 failures for C1, after discarding unresolved cases.

At approximately 0.4 ms, higher near-kernel vorticity promoted Jet-A ignition by enhancing fuel entrainment, whereas C1 failures exhibited near-kernel strain rates approximately 30% higher than successful cases. C1 breakdown occurred in approximately 27% of failures and was much more likely to produce misfire than success. The findings establish relight as a coupled spark–flow problem rather than a function of nominal deposited energy alone.

### Spark discharge in triple-GEM detectors

“Spark probability measurement of a single mask triple GEM detector” [2107.00883] examines the condition for electrical discharge in a $10\times10~\mathrm{cm^2}$ triple-GEM detector operating in Ar/$\mathrm{CO_2}$ (70/30 by volume). The detector was tested with a focused 150 GeV/$c$ pion beam and with particles from a hadronic/electromagnetic shower.

Spark probability was calculated as

$$
P_{\mathrm{spark}}
=
\frac{N_{\mathrm{spark}}}{N_{\mathrm{particle}}}.
$$

A primary identification criterion classified a spark when the GEM count-rate-to-beam-rate ratio fell below 65% of its average value during a spill. Current excursions above $2~\mu\mathrm A$ served as confirmation. The count-rate method was preferred because it had better temporal resolution and could identify multiple sparks in one spill.

For direct pions, spark probability increased approximately exponentially with effective gain over the tested range of roughly $4\times10^4$ to $1.3\times10^5$. At a pion rate of 150 kHz and gain between $4\times10^4$ and $8\times10^4$, the reported probability was approximately $10^{-7}$.

The shower contained approximately 13.009 secondary particles per incident pion, including highly ionizing particles, but these particles were distributed across the full detector area. No spark was observed in the shower measurements. The focused pion beam had much higher local rates, approximately 0.8–17 kHz/mm$^2$, whereas the shower rates were approximately 0.008–0.16 kHz/mm$^2$. The comparison shows that local avalanche density can dominate the discharge condition: larger ionization per particle does not necessarily produce more sparks when the particles are spatially diluted.

For CBM-MUCH, the intended gain is approximately 5000–8000. Extrapolation from the high-gain measurements suggested a spark probability of order $10^{-9}$, but the study did not directly validate operation at the expected maximum rate of approximately $1~\mathrm{MHz/cm^2}$.

### Spark-plug fault condition

“Contrastive Multi-Modal Representation Learning for Spark Plug Fault Diagnosis” [2311.02282] uses vibration and acoustic signals to identify a widened spark-plug gap. The healthy condition uses a 0.9-mm gap; defective conditions use a 1.4-mm gap on cylinder 1, 2, or 3. The engine is an inline four-cylinder, four-stroke spark-ignition engine operating at 867 rpm with no load.

A widened gap requires higher voltage to initiate the spark. Delayed or weakened ignition can reduce combustion quality and engine performance and contribute to emissions, misfire, knocking, or pre-ignition.

The proposed Denoising Multi-Modal Autoencoder processes synchronized accelerometer and microphone signals. Separate encoders produce modality representations, which are fused into a common code. Training combines reconstruction, missing-modality reconstruction, and supervised contrastive objectives. At inference, one absent modality is represented by a zero vector.

The data set contains 705 samples after outlier removal: 244 healthy, 120 cylinder-1 faults, 173 cylinder-2 faults, and 168 cylinder-3 faults. With both modalities, the method achieved 96.99% accuracy and a 97.21% $F_1$ score. When trained on the joint representation, acoustic-only testing achieved 91.53% accuracy and vibration-only testing achieved 81.24%.

The result defines a diagnostic spark condition rather than a physical ignition threshold: a learned multimodal representation can infer spark-plug health and fault location even when one sensor is unavailable. The evidence is limited to one engine, one operating condition, one widened-gap severity, and one private data set collected under non-laboratory conditions.

Across these domains, “spark condition” therefore has no single universal definition. In frame theory it is the nonvanishing-minor condition $\mathrm{Spark}(F)=M+1$; in Apache Spark it is a semantic, partitioning, resource, and execution condition; in ignition it is a stochastic combination of mixture, turbulence, kernel trajectory, and spark deposition; in GEM detectors it is governed by local avalanche charge and particle density; and in engine diagnosis it denotes an observable fault state whose effects can be inferred from multimodal measurements.

Source: https://www.emergentmind.com/topics/spark-condition