Feature/sof-8050 Feat: 1st implementation of Experimental data [WIP] - #429
Open
VsevolodX wants to merge 13 commits into
Open
Feature/sof-8050 Feat: 1st implementation of Experimental data [WIP]#429VsevolodX wants to merge 13 commits into
VsevolodX wants to merge 13 commits into
Conversation
…esis-loop properties Experimental data on the platform (AlphaFilm). A sample is a physical specimen at a fixed position on a substrate, with no crystal structure of its own; a measurement is one procedure applied to one or more samples by an instrument, recorded once finished — the analogues of material and job, kept as their own schemas so nothing that derives formula, lattice or hash ever sees a sample. - schema/sample.json, schema/measurement.json: composed from in_memory_entity/named_defaultable_has_metadata like job/base.json; the measurement embeds workflow.json as job.json does and takes its status enum from job/base.json by fragment reference. No _project: visibility comes from owner/sharing, not projects. - core/reference/external.json mirrors exabyte.json (measurementId, sampleId, unitId); property/holder.json source.info becomes a oneOf over the two reference kinds, so a property can name a measurement and the sample it is about. exabyteId stays required and is [] for experimental properties until a sample is matched to a material. - properties_directory: hysteresis_loop (2d_plot, x = bias, y = the measured channel, shape of band_structure) and five scalars shaped like pressure — imprint, coercive_voltage, loop_width, loop_height, remanent_response — with a field (on/off) enum and, where a branch is read, branch (rising/falling). definitions/units.json gains voltage. - examples copied from UTK run 20260901_171601_alscn_01448 (pad r0c00, the run header, off-field loop parameters of site00_step0_pt00). The hysteresis_loop example follows separately: its 198-point arrays live in a file not yet in hand. - tests/js/entityGraph.tests.ts pins updated: 573 nodes (+9), 943 edges; the holder's source.info oneOf turns its one contains edge into two variant edges (51 edges, 50 variants: 48 on data, 2 on info). plan/context/2026-08-16-schema-graph-measurements.md kept in step as the test's comment requires. Regenerated Python modules follow in a separate commit.
Output of the JS build (data/examples.py, data/properties.py, data/schemas.py) and of datamodel-codegen 0.28.5 with the options from .pre-commit-config.yaml, run against dist/js/schema after 697af87. Nine new models (sample, measurement, core/reference/external, hysteresis_loop and the five scalars); the 84 touched files are the generator's unstable enum-suffix renumbering (NameN, UnitsN, SlugifiedEntryOrSlugN), which .cursor/rules/resolve-generated-merge-conflicts.mdc says never to hand-merge.
…n_01448 In-field amplitude loop of site00_step0_pt00: 198 bias steps (bias_on.npy) against the segment-averaged Amp channel (Amp_on.npy) from UTK's loops folder, values to six significant digits. schemasWithExample 217 -> 218 and the measurements doc in step.
…etadata, status description
- example/sample.json: metadata is {} — siteIndex is a run-local id (ONTOLOGY §1) and does
not belong on the durable sample.
- core/reusable/field_condition.json and loop_branch.json replace the six inline copies of the
field enum and the two of branch (README §3.1: core/reusable exists to avoid duplication).
- hysteresis_loop.json: drop the yAxis.units block that only restated axis.json.
- measurement.json: status keeps a description through allOf, the literature.json pages idiom,
so the generated model no longer documents it as "job status".
- enum_options: loop_* before lumo_energy; units.json: voltage after length_atomic;
manifest: entries filed under SCALAR / NON-SCALAR, no provenance header.
- entity-graph pins: 575 nodes, 951 edges (extends 381, contains 392, variant 178), reusable 33;
measurements doc in step. Declined: anyOf for source.info — oneOf rejecting a payload that
names both a job and a measurement is the intended constraint.
…de, legend per series; loop scalars removed
The platform stores one property per pad: the hysteresis loop of that pad, with the
parameters read from it. The per-loop scalars were the wrong grain — they made 20-odd
property documents per pad and left the combining to the viewer.
- properties_directory/non-scalar/hysteresis_loop.json: yAxis is the response and only
the response; legend carries the field condition of each yDataSeries entry (the `field`
discriminator is gone — a document holds both conditions); parameters.on/off hold the
loop parameters and loopCount how many loops each series combines. Units stay on the
axes: parameter voltages read in xAxis.units, responses in yAxis.units.
- core/reusable/combined_value.json: the {value, uncertainty, count} leaf — mean, spread
and how many repeats it was taken over — built on core/primitive/scalar as
scalar_with_accuracy_levels is, and used by every parameter leaf.
core/reusable/hysteresis_loop_parameters.json holds imprint, coerciveVoltage,
loopWidth, loopHeight and remanentResponse, the branch now a key rather than an enum.
- removed: properties_directory/scalar/{imprint,coercive_voltage,loop_width,loop_height,
remanent_response}.json with their examples, holder data.oneOf entries, ScalarPropertyEnum
entries and manifest entries; core/reusable/loop_branch.json, unused once the branch is
a key. field_condition.json stays — the legend values — and so does the voltage units key.
- example: pad r0c01 of run 20260901_171601_alscn_01448, its eight loops combined by the
importer (bias identical across loops, response averaged point-wise, parameters as
mean/std/n).
- entity-graph pins recomputed from buildEntityGraph(): 571 nodes, 939 edges (377 extends,
389 contains, 173 variant), reusable 34, directory 157, 213 examples; the holder's data
variants drop from 48 to 43. plan/context/2026-08-16-schema-graph-measurements.md in step.
Regenerated Python modules follow in a separate commit.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…op property datamodel-codegen 0.28.5 over dist/js/schema, per .pre-commit-config.yaml, with --output ./src/py/mat3ra/esse/models (dist/py, the documented symlink, does not exist in a fresh worktree). The six models whose schemas are gone — the five loop scalars and core/reusable/loop_branch — are removed by hand: the generator only writes. The rest is the usual renumbering of generated enum and model suffixes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…se units pinned, rising/falling defined once, loopCount dropped, descriptions survive $ref Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…op property review round Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…mple measurement Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
❌ Deploy Preview for mat3ra-esse failed. Why did it fail? →
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.