Repository navigation
Conversation
…l property source A Sample is a physical specimen or a site on one: label, optional position, set membership. A Measurement is one procedure applied to one sample by an instrument: _sample, workflow (the technique is its application), status, and an instrument block — the experimental analogue of a job's compute: name, description, session (typed: name, started, finished, operator, directory), settings, environment, registration (permissive). measurement/set adds _sampleSet, the run's tie to its specimen. A property holder's source may be external: measurementId, sampleId, unitId. The entity graph learns the measurement domain.
A switching-spectroscopy PFM loop: the response as x/y series with a legend per branch, and its parameters (imprint, coercive voltages, remanent response, on/off field) as value + standardDeviation + count over the repeated loops. Reusable pieces: combined_value, field_condition (on/off, rising/falling) and the parameter set; units for the loop quantities. Example from run 20260901_171601_alscn_01448.
…elines 573 schemas, 941 edges, 215 examples; the property holder's source is a union now (internal or external), so its variants hang off data or source.
✅ Deploy Preview for mat3ra-esse ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
…nal schemas; descriptions The generator emits the measurement models as a package once schema/measurement/ exists, so the stale measurement.py module goes; the package model carries the required instrument block and no _materials, and the sample's position is optional. The workflow's description no longer calls the instrument its application (the technique is; the machine is the instrument). The sample's description drops the fixed-position and material-matching claims. The external reference gets a title so its class is named. Examples carry no personal machine paths. One stray manifest line.
VsevolodX
marked this pull request as ready for review
September 8, 2026 05:05
Renamed from instrument on the group's decision: setup = the machine and the sitting (name, description, session, settings, environment, registration). Same shape, Python models regenerated.
VsevolodX
commented
Sep 13, 2026
| -2.5685e-10, | ||
| -2.54596e-10, | ||
| -2.507e-10, | ||
| -2.45596e-10 |
Review (VsevolodX): the example should be smaller. It illustrates the shape; the data is the real measurement's, cut after the twelfth bias step. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ease] Review (VsevolodX): a job set does not hold a typed back-reference, and a measurement set does not need one either. The run's specimen is already reachable: a measurement names its sample, and the sample belongs to the specimen's set. Nothing read _sampleSet, so measurement/set.json goes and a measurement set is the plain system set. Graph baselines follow: 572 nodes, 939 edges, 214 schemas with an example. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…eferences [release] Review (VsevolodX): a result's origin should resolve the way every other link on the platform resolves. core/reference/exabyte named the producer in the field itself (jobId), so every reader had to compare field names to learn the kind. The external variant, which is new and unmerged and written only by our uploader, now carries `origin` and `subject` as entity references whose `cls` says what they are - so a reader resolves them through the class registry with no comparison. core/reference/exabyte is untouched: jobs and materials keep their stored shape. Graph baselines follow: 941 edges, 388 of them contains. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…chema [release] sample: a place on a wafer where a measurement was taken — position is the instrument's reading in its set's frame, 2-3 axes; the wafer block for the wafer's own record. sample/set: the placement, its wafer and origin reading. wafer: identity, synthesis record, layout. setup keeps what every instrument has; environment, registration and the session directory move to metadata. Python models regenerated from these schemas: the sample becomes a package, wafer is new, measurement/set.py goes with the schema 0616c8f removed, and the external reference catches up with 1bfe5c9's origin/subject. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Requiring the wafer made every set a placement, and the Samples explorer's New Set button, move-to-set and update-set all send a name alone. The wafer is typed when present, and identified properly when it is: physicalId stays required inside the block. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…every sample [release] wafer.json and sample/set.json go. A sample carries the identifier written on the physical thing it is part of; that string is the join between everything measured on one piece. The frame a position was read in is metadata on the sample, untyped until a second instrument shows its shape. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…-reference source Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…er repo's does
esse shipped an EMPTY src/py/mat3ra/__init__.py. standata, utils, wode and the
rest all ship the one line that makes `mat3ra` a pkgutil namespace package:
__path__ = __import__("pkgutil").extend_path(__path__, __name__)
Installing esse overwrites that file in site-packages with the empty one, so
`mat3ra` stops spanning locations and every mat3ra.* package outside
site-packages — any editable install — disappears. In this workspace that took
out mat3ra.notebooks_utils and broke the measurement notebook at its first
import; reproducible by reinstalling esse and importing anything editable.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…criptions in standard terms Co-authored-by: Cursor <cursoragent@cursor.com>
Five property schemas, one per physical quantity, so any instrument that measures it posts the same shape: structural/film_thickness m XRF via density, step, ellipsometry structural/areal_surface_texture ISO 25178 parameter ∈ Sq Sa Sz Ssk Sku Sal Sdq Sdr structural/grain_size m statistic ∈ median mean std iqr structural/grain_coverage fraction non-scalar/current_voltage_curve V, A elemental_ratio already existed; it and the five are now in property/holder's data union, which is the gate the platform validates against - a schema outside it validates alone and is still rejected as a holder. The union's discriminator needs `name` required on every branch; the four that lacked it have it. Graph baselines: 577 nodes, 952 edges, directory 162, examples 219, Properties 90. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
Schemas for experimental data: the places measured on a physical piece, and the measurements.
label,position(the instrument's reading, 2–3 axes, as read),physicalId— the identifier written on the thing it is part of. That string is the join between everything measured on one piece._sample,workflow,setup,status.compute: name, description, session, settings. Only what every instrument has; the rest of what a run reports is metadata.origin(the measurement),subject(the sample),unitId.Sets are plain folders, as material sets are. The frame a position was read in is metadata on the sample; relating positions across sets is an analysis, not a field. Rejected on the way, and recorded in the planning repo: a wafer schema, typed sample sets, frame/anchor/rotation fields, descriptions that state rules instead of what a thing is.
572 schemas, 940 edges, 214 examples; Python models and data modules regenerated from these schemas.
Jira: https://mat3ra.atlassian.net/browse/SOF-8051 (epic SOF-8050).
🤖 Generated with Claude Code