V0.7 Scope Freeze#
Summary#
v0.7 is the first structured external-data ingestion release for pdelie.
Its purpose is:
ingest external structured 1D uniform rectilinear PDE data into canonical
FieldBatch, so the existing stable scalar Heat/Burgers symmetry and discovery stack can run on imported data rather than only internally generated synthetic fixtures.
v0.7 is intentionally narrow.
It is not a broad dataset-adapter release.
Stable Scope#
Stable v0.7 scope is limited to:
pdelie.data.from_numpy(...)pdelie.data.from_xarray(...)strict conversion into canonical
FieldBatchstructured 1D uniform rectilinear trajectory data only
scalar-variable stable slice only
explicit dims, coords, metadata, mask, and provenance validation
parity with the existing Heat/Burgers symmetry and discovery pipeline
Stable v0.7 release definition:
external structured arrays -> canonical FieldBatch -> existing PDELie pipeline
Exact Public API Contracts#
Planned stable public APIs:
pdelie.data.from_numpy(values, *, dims, coords, var_name, metadata, mask=None, preprocess_log=None) -> FieldBatchpdelie.data.from_xarray(data_array, *, var_name=None, metadata, mask=None, preprocess_log=None) -> FieldBatch
from_xarray(...) is frozen to xarray.DataArray only in v0.7.
xarray.Dataset support is out of scope for the stable slice.
Variable-name rules:
from_numpy(...)always requires explicitvar_namefrom_xarray(...)resolvesvar_nameby:explicit
var_nameargument firstotherwise the single
varcoordinate value when explicitvaraxis existsotherwise
DataArray.nameotherwise validation failure
Accepted Layouts#
Stable accepted source layouts are:
("time", "x")("batch", "time", "x")("time", "x", "var")("batch", "time", "x", "var")
Frozen axis/layout rules:
timeis requiredxis requiredvarmay be omitted only for the scalar stable sliceif
varis omitted, the importer injects a trailing singletonvaraxisif
varis present, its length must be exactly1no static / no-time layouts in stable
v0.7no dim aliases in stable
v0.7no
y/zingestion in stablev0.7
Coordinate and Metadata Validation#
Coordinate validation:
timeandxcoordinates are requiredboth must be 1D finite numeric arrays
timemust be strictly increasing, uniform, and length>= 3xmust be strictly increasing, uniform, and length>= 4xuniformity uses the currentFieldBatchspatial tolerance policytimeuniformity is required because stablev0.7imports target the current trajectory / discovery pipelineno coordinate inference beyond extracting
time/xfrom the provided inputsno normalization, sorting, or repair of malformed coordinates
Metadata requirements:
the caller must supply the full required
FieldBatchmetadata mappingthere is no stable metadata inference in
v0.7required keys remain:
boundary_conditionsgrid_typecoordinate_systemgrid_regularityparameter_tags
stable
v0.7imported fields must validate as:grid_type == "rectilinear"grid_regularity == "uniform"coordinate_system == "cartesian"boundary_conditions["x"] == "periodic"
parameter_tagsmust be a mapping but may be emptyxarrayattrs are not used as stable metadata inference
Mask / NaN Policy#
Stable v0.7 importers preserve missing-data signals rather than normalizing them.
Frozen rules:
preserve both explicit masks and existing
NaN/ non-finite valuesdo not normalize
NaNvalues into masksdo not normalize masks into
NaNvaluesif
maskis provided andvaris injected, inject the singletonvaraxis into the mask toofrom_numpy(...)accepts array-likemaskfrom_xarray(...)acceptsxarray.DataArraymaskonlymask must align with the pre-normalized input layout and the resulting post-injection shape
Copy / Provenance Semantics#
Stable importers always materialize owned canonical data.
Frozen copy rules:
always materialize and copy imported values
always copy coordinates
always copy masks when present
deep-copy
metadataif
preprocess_logis omitted, start from[]if
preprocess_logis provided, deep-copy it and then append exactly one new entry
Frozen provenance rule:
append exactly one provenance entry:
operation = "from_numpy"or"from_xarray"parametersincludes at least:source_layoutimported_shapeinjected_var_axismask_provided
No broader provenance schema is introduced in v0.7 M0.
Optional xarray Dependency Policy#
Stable dependency behavior:
from_numpy(...)is core-onlyfrom_xarray(...)is a runtime-optional pathxarraymust be imported lazily inside the function / module pathif
xarrayis unavailable, callingfrom_xarray(...)raisesImportErrorwith an install messagethe optional dependency extra name for stable
from_xarray(...)support isxarray
Explicit Non-goals#
Out of stable v0.7 scope:
no
xarray.Datasetstable supportno dim aliases
no static-field ingestion
no multidimensional ingestion
no
y/zingestionno nonuniform-grid support
no metadata inference layer
no PDEBench-specific loader
no The Well adapter
no HDF5, netCDF, or Zarr stable loader
no weak-form methods
no operator methods
no stable KdV promotion piggybacked into ingestion work
no paper-specific experiment logic
Milestones#
Planned v0.7 sequence:
Milestone 0 — external ingestion contract freeze
Milestone 1 —
from_numpy(...)Milestone 2 —
from_xarray(...)Milestone 3 — parity tests and compact
v0.7release gate