An observation is already a result
Watch the wandering.
Keep the evidence.
A visible wandering track, a diffusion measurement and a molecular-number inference answer different questions. You can stop after observing without having failed to count anything.
Start with the synthetic practice file this page supplies. You need no biological samples, powders, ultraviolet sources or radioactive materials.
Three questions, not three grades
| Stage | Question | Supported conclusion |
|---|---|---|
| Observe | Does this particle wander? | A documented qualitative track. This is a complete observational result, not a molecular count. |
| Measure | What spread is compatible with these positions? | A model-dependent diffusion estimate with explicit timing, calibration, click error and selection limits. |
| Infer | What independent inputs permit a molecular-number estimate? | A conditional inference only after radius, viscosity, temperature and constant provenance are established. |
The quantitative model depends on particle size, shape, wall proximity, viscosity, drift and optical resolution. A known-size particle or a dataset with independent calibration and physical measurements is a better quantitative starting point than guessing those quantities. The supplied track is synthetic practice, not a reviewed real observation sequence.
Start with the supplied record
The practice file is generated by the camera model. It contains a particle track, separate stationary-feature clicks and declared calibration. Open the local analyzer and choose “Analyze synthetic practice data.” No worker starts merely because the page loaded. The radius is deliberately not supplied: observe the ambiguity before declaring an independent measurement.
Bring observations without rewriting them
Use positions measured in the original source-image pixels and record the actual frame timestamps. Give each particle its own object identity. Retain losses and their reasons, and explicitly decide whether a reacquired label is the same object or a new one. Never fill a gap with an invented measurement. Mark any interpolation as interpolated; it is not used as a measured point.
Record repeated clicks on one stationary feature under the same localization-error assumptions. A blank exposure is unknown, not a zero-duration exposure. Independently calibrated axes keep separate scales. Calibration declarations are not verified merely because they parse.
Read the uncertainty before the number
The analyzer uses disjoint frame pairs, fits constant drift and includes stationary-click sampling uncertainty. Unsupported timing, missing camera information and ambiguous calibration can withhold an interval. Excluding rows preserves them and their reasons but withholds interval coverage after manual sample selection. Lost particles can be informative: an interval based on the survivors does not correct that selection.
A radius inferred from these same displacements with an assumed molecular number is circular. An independent radius permits a conditional calculation, but this preview does not combine radius, calibration, temperature, viscosity and gas-constant uncertainty into a single coverage claim. A narrow conditional interval is not a narrow total uncertainty.
Keep your record
The analyzer reads the selected file in this browser. Its analysis worker has no upload or persistence step. Export the accepted observations to reopen them later, and export the analysis to retain its source identity, assumptions and results. Closing or reloading the page discards the in-memory session. Clearing one laboratory does not delete downloaded files or another placement’s data.
The analyzer now supports bounded local video annotation and calibration. It does not automatically save sessions or supply a reviewed microscope protocol or licensed real sequence.
A shared-schema classroom worksheet
Download the blank worksheet as text. The column lists and metadata keys below come from the same module as the importer. Complete all declarations and observation rows before importing. Unknown optional measurements may remain blank; missing declarations are different from unknown values.
Reader-filled columns and blank observation rows
| kind | object_id | frame_time_s | x_px | y_px | lost | loss_reason | point_status | exclusion_reason | calibration_id | identity_decision |
|---|---|---|---|---|---|---|---|---|---|---|
| ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ |
| ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ |
| ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ |
| ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ |
| ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ |
| ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ |
| ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ |
| ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ | ________ |
Required CSV header and metadata declaration keys
The complete import header includes the schema-version column. Every observation row starts with 2.
schema_version,kind,object_id,frame_time_s,x_px,y_px,lost,loss_reason,point_status,exclusion_reason,calibration_id,identity_decision
pixels_per_um_x_interval- Record the value or an explicitly permitted blank.
pixels_per_um_y_interval- Record the value or an explicitly permitted blank.
viscosity_interval_mpa_s- Record the value or an explicitly permitted blank.
gas_constant_interval- Record the value or an explicitly permitted blank.
radius_scale_axis- Record the value or an explicitly permitted blank.
physical_input_coverage- Record the value or an explicitly permitted blank.
physical_input_provenance- Record the value or an explicitly permitted blank.
source_width_px- Record the value or an explicitly permitted blank.
source_height_px- Record the value or an explicitly permitted blank.
working_scale- Record the value or an explicitly permitted blank.
rotation_degrees- Record the value or an explicitly permitted blank.
pixel_aspect_ratio- Record the value or an explicitly permitted blank.
pixels_per_um_x- Record the value or an explicitly permitted blank.
pixels_per_um_y- Record the value or an explicitly permitted blank.
pixels_per_um_x_uncertainty- Record the value or an explicitly permitted blank.
pixels_per_um_y_uncertainty- Record the value or an explicitly permitted blank.
calibration_axes- Record the value or an explicitly permitted blank.
calibration_method- Record the value or an explicitly permitted blank.
calibration_interval_um- Record the value or an explicitly permitted blank.
declared_interval_s- Record the value or an explicitly permitted blank.
frame_rate_hz- Record the value or an explicitly permitted blank.
timing_source- Record the value or an explicitly permitted blank.
temperature_k- Record the value or an explicitly permitted blank.
temperature_interval_k- Record the value or an explicitly permitted blank.
viscosity_mpa_s- Record the value or an explicitly permitted blank.
viscosity_source- Record the value or an explicitly permitted blank.
radius_um- Record the value or an explicitly permitted blank.
radius_interval_um- Record the value or an explicitly permitted blank.
radius_interval_coverage- Record the value or an explicitly permitted blank.
exposure_s- Record the value or an explicitly permitted blank.
drift_source- Record the value or an explicitly permitted blank.
constant_set_id- Record the value or an explicitly permitted blank.
sample- Record the value or an explicitly permitted blank.
data_origin- Record the value or an explicitly permitted blank.
radius_provenance- Record the value or an explicitly permitted blank.
Preserve the metadata comments in the practice CSV as a format example. Replace the synthetic values only with your actual declarations; a file’s declared origin is not independently verified.