os-optics-kit 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- os_optics_kit/__init__.py +9 -0
- os_optics_kit/__main__.py +3 -0
- os_optics_kit/_data/baseline.json +16 -0
- os_optics_kit/_data/cases/beam-expander/CASE.md +52 -0
- os_optics_kit/_data/cases/beam-expander/README.md +38 -0
- os_optics_kit/_data/cases/beam-expander/README.zh-CN.md +36 -0
- os_optics_kit/_data/cases/beam-expander/expected.json +10 -0
- os_optics_kit/_data/cases/beam-expander/images/iso.png +0 -0
- os_optics_kit/_data/cases/beam-expander/images/section.png +0 -0
- os_optics_kit/_data/cases/beam-expander/project.json +160 -0
- os_optics_kit/_data/cases/beam-expander/studies/beam_expander_l2_sweep.json +61 -0
- os_optics_kit/_data/cases/beam-expander/studies/beam_expander_move_l2.json +22 -0
- os_optics_kit/_data/cases/beam-expander/studies/beam_expander_swap_l2.json +22 -0
- os_optics_kit/_data/cases/detector-measurements/CASE.md +56 -0
- os_optics_kit/_data/cases/detector-measurements/README.md +37 -0
- os_optics_kit/_data/cases/detector-measurements/README.zh-CN.md +35 -0
- os_optics_kit/_data/cases/detector-measurements/data/README.md +60 -0
- os_optics_kit/_data/cases/detector-measurements/data/detector_response.csv +11 -0
- os_optics_kit/_data/cases/detector-measurements/data/reference_drift.csv +14 -0
- os_optics_kit/_data/cases/detector-measurements/expected.json +13 -0
- os_optics_kit/_data/cases/detector-measurements/images/top.png +0 -0
- os_optics_kit/_data/cases/detector-measurements/project.json +234 -0
- os_optics_kit/_data/cases/expansion-focus/CASE.md +55 -0
- os_optics_kit/_data/cases/expansion-focus/README.md +38 -0
- os_optics_kit/_data/cases/expansion-focus/README.zh-CN.md +37 -0
- os_optics_kit/_data/cases/expansion-focus/expected.json +12 -0
- os_optics_kit/_data/cases/expansion-focus/images/iso.png +0 -0
- os_optics_kit/_data/cases/expansion-focus/images/section.png +0 -0
- os_optics_kit/_data/cases/expansion-focus/project.json +278 -0
- os_optics_kit/_data/cases/expansion-focus/studies/compute_budget_default.json +1 -0
- os_optics_kit/_data/cases/expansion-focus/studies/compute_budget_limited.json +1 -0
- os_optics_kit/_data/cases/expansion-focus/studies/sensitivity_expander.json +21 -0
- os_optics_kit/_data/cases/expansion-focus/studies/sensitivity_expander_band_edge.json +65 -0
- os_optics_kit/_data/cases/expansion-focus/studies/tolerance_expander.json +89 -0
- os_optics_kit/_data/cases/expansion-focus/workflow.py +84 -0
- os_optics_kit/_data/cases/ideal-lens-focus/CASE.md +49 -0
- os_optics_kit/_data/cases/ideal-lens-focus/README.md +28 -0
- os_optics_kit/_data/cases/ideal-lens-focus/README.zh-CN.md +27 -0
- os_optics_kit/_data/cases/ideal-lens-focus/expected.json +10 -0
- os_optics_kit/_data/cases/ideal-lens-focus/ideal_lens_focus.py +76 -0
- os_optics_kit/_data/cases/ideal-lens-focus/images/section.png +0 -0
- os_optics_kit/_data/cases/ideal-lens-focus/project.json +133 -0
- os_optics_kit/_data/cases/interop-diffraction/CASE.md +58 -0
- os_optics_kit/_data/cases/interop-diffraction/README.md +38 -0
- os_optics_kit/_data/cases/interop-diffraction/README.zh-CN.md +35 -0
- os_optics_kit/_data/cases/interop-diffraction/expected.json +10 -0
- os_optics_kit/_data/cases/interop-diffraction/external_focus.py +349 -0
- os_optics_kit/_data/cases/interop-diffraction/hankel_reference.py +59 -0
- os_optics_kit/_data/cases/interop-diffraction/images/section.png +0 -0
- os_optics_kit/_data/cases/interop-diffraction/images/stop.png +0 -0
- os_optics_kit/_data/cases/interop-diffraction/opensci_handoff.py +201 -0
- os_optics_kit/_data/cases/interop-diffraction/project.json +215 -0
- os_optics_kit/_data/cases/interop-diffraction/requirements-diffractio.txt +9 -0
- os_optics_kit/_data/cases/interop-diffraction/requirements-diffraction.txt +13 -0
- os_optics_kit/_data/cases/interop-diffraction/tem00_field.py +62 -0
- os_optics_kit/_data/cases/interop-metasurface/CASE.md +57 -0
- os_optics_kit/_data/cases/interop-metasurface/README.md +38 -0
- os_optics_kit/_data/cases/interop-metasurface/README.zh-CN.md +37 -0
- os_optics_kit/_data/cases/interop-metasurface/expected.json +10 -0
- os_optics_kit/_data/cases/interop-metasurface/images/section.png +0 -0
- os_optics_kit/_data/cases/interop-metasurface/project.json +228 -0
- os_optics_kit/_data/cases/interop-metasurface/requirements-metasurface.txt +8 -0
- os_optics_kit/_data/cases/interop-metasurface/step1_unit_cells.py +113 -0
- os_optics_kit/_data/cases/interop-metasurface/step2_focusing.py +155 -0
- os_optics_kit/_data/cases/interop-metasurface/step3_fit_model.py +377 -0
- os_optics_kit/_data/cases/interop-metasurface/step4_engine_check.py +319 -0
- os_optics_kit/_data/cases/interop-optimization/CASE.md +52 -0
- os_optics_kit/_data/cases/interop-optimization/README.md +33 -0
- os_optics_kit/_data/cases/interop-optimization/README.zh-CN.md +31 -0
- os_optics_kit/_data/cases/interop-optimization/expected.json +10 -0
- os_optics_kit/_data/cases/interop-optimization/images/section.png +0 -0
- os_optics_kit/_data/cases/interop-optimization/optimize_expander.py +327 -0
- os_optics_kit/_data/cases/interop-optimization/project.json +168 -0
- os_optics_kit/_data/cases/interop-optimization/requirements-optimization.txt +8 -0
- os_optics_kit/_data/cases/interop-quantum/CASE.md +52 -0
- os_optics_kit/_data/cases/interop-quantum/README.md +35 -0
- os_optics_kit/_data/cases/interop-quantum/README.zh-CN.md +34 -0
- os_optics_kit/_data/cases/interop-quantum/build_layouts.py +188 -0
- os_optics_kit/_data/cases/interop-quantum/expected.json +11 -0
- os_optics_kit/_data/cases/interop-quantum/images/top.png +0 -0
- os_optics_kit/_data/cases/interop-quantum/network_io.py +278 -0
- os_optics_kit/_data/cases/interop-quantum/project.json +253 -0
- os_optics_kit/_data/cases/interop-quantum/quantum_inputs.json +64 -0
- os_optics_kit/_data/cases/interop-quantum/reference.py +110 -0
- os_optics_kit/_data/cases/interop-quantum/requirements-quantum.txt +12 -0
- os_optics_kit/_data/cases/interop-quantum/run_quantum.py +278 -0
- os_optics_kit/_data/cases/mirror-alignment/CASE.md +54 -0
- os_optics_kit/_data/cases/mirror-alignment/README.md +32 -0
- os_optics_kit/_data/cases/mirror-alignment/README.zh-CN.md +31 -0
- os_optics_kit/_data/cases/mirror-alignment/expected.json +15 -0
- os_optics_kit/_data/cases/mirror-alignment/images/iso.png +0 -0
- os_optics_kit/_data/cases/mirror-alignment/images/top.png +0 -0
- os_optics_kit/_data/cases/mirror-alignment/project.json +252 -0
- os_optics_kit/_data/cases/mirror-alignment/studies/sensitivity_alignment.json +126 -0
- os_optics_kit/_data/cases/mirror-alignment/studies/tolerance_alignment.json +138 -0
- os_optics_kit/_data/cases/mirror-alignment/workflow.py +272 -0
- os_optics_kit/_data/cases/polarization-control/CASE.md +54 -0
- os_optics_kit/_data/cases/polarization-control/README.md +34 -0
- os_optics_kit/_data/cases/polarization-control/README.zh-CN.md +32 -0
- os_optics_kit/_data/cases/polarization-control/expected.json +11 -0
- os_optics_kit/_data/cases/polarization-control/images/iso.png +0 -0
- os_optics_kit/_data/cases/polarization-control/project.json +265 -0
- os_optics_kit/_data/cases/polarization-control/studies/polarization_hwp_wavelength_sweep.json +75 -0
- os_optics_kit/_data/cases/polarization-control/studies/polarization_threshold.json +15 -0
- os_optics_kit/_data/cases/polarization-control/studies/sensitivity_polarization.json +98 -0
- os_optics_kit/_data/cases/polarization-control/studies/tolerance_polarization.json +102 -0
- os_optics_kit/_data/cases/polarization-control/workflow.py +107 -0
- os_optics_kit/_data/cases.json +348 -0
- os_optics_kit/_data/skills/candidates/SKILL.md +52 -0
- os_optics_kit/_data/skills/compare/SKILL.md +58 -0
- os_optics_kit/_data/skills/contrib-case/SKILL.md +66 -0
- os_optics_kit/_data/skills/contrib-tool/SKILL.md +65 -0
- os_optics_kit/_data/skills/edit/SKILL.md +66 -0
- os_optics_kit/_data/skills/measurements/SKILL.md +65 -0
- os_optics_kit/_data/skills/plot/SKILL.md +56 -0
- os_optics_kit/_data/skills/report/SKILL.md +53 -0
- os_optics_kit/_data/skills/run-case/SKILL.md +60 -0
- os_optics_kit/_data/skills/sensitivity/SKILL.md +66 -0
- os_optics_kit/_data/skills/summary/SKILL.md +55 -0
- os_optics_kit/_data/skills/sweep/SKILL.md +66 -0
- os_optics_kit/_data/skills/tolerance/SKILL.md +68 -0
- os_optics_kit/_data/skills.json +156 -0
- os_optics_kit/_data/templates/CASE.md +50 -0
- os_optics_kit/_data/templates/README.case.md +27 -0
- os_optics_kit/_data/templates/SKILL.md +56 -0
- os_optics_kit/_engine.py +148 -0
- os_optics_kit/_frontmatter.py +110 -0
- os_optics_kit/_resources.py +37 -0
- os_optics_kit/_version.py +3 -0
- os_optics_kit/analyze_measurements.py +362 -0
- os_optics_kit/build_report.py +354 -0
- os_optics_kit/cases.py +640 -0
- os_optics_kit/catalog_candidates.py +207 -0
- os_optics_kit/cli.py +74 -0
- os_optics_kit/compare_runs.py +361 -0
- os_optics_kit/contrib/__init__.py +44 -0
- os_optics_kit/contrib/_common.py +433 -0
- os_optics_kit/contrib/_templates.py +114 -0
- os_optics_kit/contrib/case.py +648 -0
- os_optics_kit/contrib/tool.py +444 -0
- os_optics_kit/design_workflow.py +607 -0
- os_optics_kit/edit_project.py +481 -0
- os_optics_kit/interop.py +162 -0
- os_optics_kit/optical_designs.py +861 -0
- os_optics_kit/plot_results.py +362 -0
- os_optics_kit/result_summary.py +172 -0
- os_optics_kit/sensitivity_analysis.py +913 -0
- os_optics_kit/skills.py +382 -0
- os_optics_kit/sweep_parameters.py +556 -0
- os_optics_kit/tolerance_study.py +594 -0
- os_optics_kit/workflow_common.py +557 -0
- os_optics_kit-0.1.0.dist-info/METADATA +140 -0
- os_optics_kit-0.1.0.dist-info/RECORD +156 -0
- os_optics_kit-0.1.0.dist-info/WHEEL +4 -0
- os_optics_kit-0.1.0.dist-info/entry_points.txt +2 -0
- os_optics_kit-0.1.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"""os-optics-kit: tools, cases and agent skills for OS Optics.
|
|
2
|
+
|
|
3
|
+
The tools are modules of this package and subcommands of ``os-optics-kit``; the cases and skills ship as package
|
|
4
|
+
data. The engine (``os_optics``, PyPI ``os-optics``) is imported only by the functions that need it.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from ._version import __version__
|
|
8
|
+
|
|
9
|
+
__all__ = ["__version__"]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "os-optics-kit.baseline",
|
|
3
|
+
"schema_version": 1,
|
|
4
|
+
"kit_version": "0.1.0",
|
|
5
|
+
"engine": {
|
|
6
|
+
"distribution": "os-optics",
|
|
7
|
+
"requirement": ">=0.12,<0.13",
|
|
8
|
+
"verified_version": "0.12.0"
|
|
9
|
+
},
|
|
10
|
+
"catalog": {
|
|
11
|
+
"version": "2026-10-28.1",
|
|
12
|
+
"schema_version": "3.2",
|
|
13
|
+
"sha256": "7d7f5f0a6fa1db7ce32503a6a1d86c5bdcd167035782b47b73c2ac00fc1acf30"
|
|
14
|
+
},
|
|
15
|
+
"python": ["3.11", "3.14"]
|
|
16
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: beam-expander
|
|
3
|
+
title: Catalog beam expander: swap a lens, sweep its spacing, restore collimation
|
|
4
|
+
summary: A Keplerian beam expander of two catalog plano-convex lenses (f = 50 mm and 100 mm, 780 nm, 1 mm waist) reaches its 1.9961 mm output waist. The studies swap L2 for a 100.3 mm fused-silica lens, sweep L2 along the beam and apply the best shift.
|
|
5
|
+
engine: 0.12.0
|
|
6
|
+
catalog: 2026-10-28.1
|
|
7
|
+
project: project.json
|
|
8
|
+
tools: candidates, edit, sweep, compare, plot, report
|
|
9
|
+
tags: catalog, beam-expander, lens-swap, parameter-sweep, edit-by-id
|
|
10
|
+
license: MIT
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## What it shows
|
|
14
|
+
|
|
15
|
+
`project.json` is the engine's reference design `os-optics project example --kind beam_expander`; its components
|
|
16
|
+
pin catalog release 2026-10-28.1. The target `expanded_waist` (waist radius of the output beam, a collimation
|
|
17
|
+
measure) asks for 1.9961 mm ± 1 %. The study files edit the design by ID: swapping L2 for the 100.3 mm lens breaks
|
|
18
|
+
collimation (`expanded_waist` 1.4407 mm, UNMET, while the radius at the plane, `output_beam_radius`, stays MET);
|
|
19
|
+
a twelve-sample sweep of the L2 position finds +0.54 mm (1.99645 mm, 5 of 12 samples PASS); applying it passes.
|
|
20
|
+
|
|
21
|
+
## Run
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
os-optics project run project.json --out-dir run
|
|
25
|
+
os-optics results targets run
|
|
26
|
+
os-optics-kit candidates --category LENS --form PLANO_CONVEX_LENS --wavelength-nm 780 \
|
|
27
|
+
--range focal_length_mm=95..105 --range outer_diameter_mm=12.7..12.7 --near focal_length_mm=100 --limit 8
|
|
28
|
+
os-optics-kit edit project.json --edits studies/beam_expander_swap_l2.json --out swapped.json --run swapped-run
|
|
29
|
+
os-optics-kit sweep studies/beam_expander_l2_sweep.json --base swapped.json --out l2-sweep
|
|
30
|
+
os-optics-kit plot sweep l2-sweep --y target:expanded_waist
|
|
31
|
+
os-optics-kit edit swapped.json --edits studies/beam_expander_move_l2.json --out final.json --run final-run
|
|
32
|
+
os-optics-kit compare run swapped-run final-run --project final.json --out compare
|
|
33
|
+
os-optics-kit report l2-sweep --project final.json --plots l2-sweep/plots --changes swapped.changes.json
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Targets
|
|
37
|
+
|
|
38
|
+
| Target | Metric | Plane | Bound | Verified |
|
|
39
|
+
| --- | --- | --- | --- | --- |
|
|
40
|
+
| `expanded_waist` | `waist_radius_x_mm` | `output` | 1.99612 mm ± 1 % | 1.99607 mm, MET |
|
|
41
|
+
|
|
42
|
+
## Baseline
|
|
43
|
+
|
|
44
|
+
os-optics 0.12.0, catalog 2026-10-28.1: run status PASS (`expected.json`).
|
|
45
|
+
`os-optics-kit cases verify beam-expander` repeats the run and compares it.
|
|
46
|
+
|
|
47
|
+
## Files
|
|
48
|
+
|
|
49
|
+
- `project.json`, `expected.json`: the design and its verified outcome.
|
|
50
|
+
- `studies/beam_expander_swap_l2.json`, `studies/beam_expander_l2_sweep.json`, `studies/beam_expander_move_l2.json`:
|
|
51
|
+
the lens swap, the L2 sweep and the final move.
|
|
52
|
+
- `README.md`, `README.zh-CN.md`, `images/`: the illustrated page.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Catalog beam expander
|
|
2
|
+
|
|
3
|
+
Two catalog plano-convex lenses (f = 50 mm and 100 mm, N-BK7, 12.7 mm diameter) expand a 780 nm Gaussian beam with a
|
|
4
|
+
1 mm waist radius twice. The target `expanded_waist` asks for an output waist radius of 1.9961 mm ± 1 %, a measure
|
|
5
|
+
of collimation. The components pin catalog release 2026-10-28.1.
|
|
6
|
+
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
## Run it
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
os-optics-kit cases copy beam-expander --dest .
|
|
15
|
+
cd beam-expander
|
|
16
|
+
os-optics project run project.json --out-dir run
|
|
17
|
+
os-optics results targets run
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Results
|
|
21
|
+
|
|
22
|
+
| Target | Value | Bound | Assessment |
|
|
23
|
+
| --- | --- | --- | --- |
|
|
24
|
+
| `expanded_waist` | 1.99607 mm | 1.99612 mm ± 1 % | MET |
|
|
25
|
+
|
|
26
|
+
## Swap a lens and restore collimation
|
|
27
|
+
|
|
28
|
+
The study files in `studies/` change the design by ID with `os-optics-kit edit` and `os-optics-kit sweep`:
|
|
29
|
+
|
|
30
|
+
| Step | Design | `expanded_waist` | Outcome |
|
|
31
|
+
| --- | --- | --- | --- |
|
|
32
|
+
| Swap L2 for a fused-silica lens, f = 100.3 mm | `swapped.json` | 1.4407 mm | FAIL |
|
|
33
|
+
| Sweep L2 along the beam, −1 … +2 mm, 12 samples | `l2-sweep/` | 0.7323 … 2.0098 mm | 5 PASS, 7 FAIL |
|
|
34
|
+
| Move L2 by the best shift, +0.54 mm | `final.json` | 1.99645 mm | PASS |
|
|
35
|
+
|
|
36
|
+
The beam radius at the output plane (`output_beam_radius`, added by the swap) stays within 1 % throughout: the
|
|
37
|
+
waist radius reacts to collimation, the radius at one plane barely does. Verified with os-optics 0.12.0 and catalog
|
|
38
|
+
2026-10-28.1; run status PASS.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# 目录扩束器
|
|
2
|
+
|
|
3
|
+
两片目录中的平凸透镜(f = 50 mm 与 100 mm,N-BK7,直径 12.7 mm)把波长 780 nm、束腰半径 1 mm 的高斯光束扩束两倍。
|
|
4
|
+
目标 `expanded_waist` 要求输出束腰半径为 1.9961 mm ± 1 %,用于衡量准直程度。元件固定在目录版本 2026-10-28.1。
|
|
5
|
+
|
|
6
|
+

|
|
7
|
+
|
|
8
|
+

|
|
9
|
+
|
|
10
|
+
## 运行
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
os-optics-kit cases copy beam-expander --dest .
|
|
14
|
+
cd beam-expander
|
|
15
|
+
os-optics project run project.json --out-dir run
|
|
16
|
+
os-optics results targets run
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 结果
|
|
20
|
+
|
|
21
|
+
| 目标 | 数值 | 界限 | 评估 |
|
|
22
|
+
| --- | --- | --- | --- |
|
|
23
|
+
| `expanded_waist` | 1.99607 mm | 1.99612 mm ± 1 % | MET |
|
|
24
|
+
|
|
25
|
+
## 更换透镜并恢复准直
|
|
26
|
+
|
|
27
|
+
`studies/` 中的研究文件通过 `os-optics-kit edit` 与 `os-optics-kit sweep` 按 ID 修改设计:
|
|
28
|
+
|
|
29
|
+
| 步骤 | 设计 | `expanded_waist` | 结果 |
|
|
30
|
+
| --- | --- | --- | --- |
|
|
31
|
+
| 把 L2 换成熔融石英透镜,f = 100.3 mm | `swapped.json` | 1.4407 mm | FAIL |
|
|
32
|
+
| 沿光束扫描 L2,−1 … +2 mm,12 个样本 | `l2-sweep/` | 0.7323 … 2.0098 mm | 5 个 PASS,7 个 FAIL |
|
|
33
|
+
| 按最佳位移 +0.54 mm 移动 L2 | `final.json` | 1.99645 mm | PASS |
|
|
34
|
+
|
|
35
|
+
输出面上的光束半径(换镜时新增的 `output_beam_radius`)始终在 1 % 以内:束腰半径对准直敏感,单个面上的半径几乎不变。
|
|
36
|
+
已用 os-optics 0.12.0 与目录 2026-10-28.1 验证;运行状态 PASS。
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
{
|
|
2
|
+
"components": [
|
|
3
|
+
{
|
|
4
|
+
"custom_part": {
|
|
5
|
+
"custom_part_key": "user-laser",
|
|
6
|
+
"description": "User-supplied laser source."
|
|
7
|
+
},
|
|
8
|
+
"instance_id": "SRC",
|
|
9
|
+
"nominal_pose": {
|
|
10
|
+
"position_mm": [
|
|
11
|
+
-200.0,
|
|
12
|
+
0.0,
|
|
13
|
+
0.0
|
|
14
|
+
],
|
|
15
|
+
"quaternion_wxyz": [
|
|
16
|
+
0.5,
|
|
17
|
+
0.5,
|
|
18
|
+
0.5,
|
|
19
|
+
0.5
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"optical_role": "source",
|
|
23
|
+
"retained_dofs": [],
|
|
24
|
+
"selected_parameters": [],
|
|
25
|
+
"source_model": {
|
|
26
|
+
"m2": 1.0,
|
|
27
|
+
"model_kind": "GAUSSIAN_BEAM",
|
|
28
|
+
"polarization": {
|
|
29
|
+
"angle_deg": 0.0,
|
|
30
|
+
"kind": "LINEAR"
|
|
31
|
+
},
|
|
32
|
+
"power_w": 0.001,
|
|
33
|
+
"waist_position_mm": 0.0,
|
|
34
|
+
"waist_radius_mm": 1.0,
|
|
35
|
+
"wavelength_nm": 780.0
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"instance_id": "L1",
|
|
40
|
+
"nominal_pose": {
|
|
41
|
+
"position_mm": [
|
|
42
|
+
0.0,
|
|
43
|
+
0.0,
|
|
44
|
+
0.0
|
|
45
|
+
],
|
|
46
|
+
"quaternion_wxyz": [
|
|
47
|
+
0.5,
|
|
48
|
+
0.5,
|
|
49
|
+
0.5,
|
|
50
|
+
0.5
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"optical_role": "lens",
|
|
54
|
+
"product": {
|
|
55
|
+
"catalog_version": "2026-10-28.1",
|
|
56
|
+
"optical_sku": "OS-OPT-LENS-PCX-D12P7-F50-T2P6-R25P8-NBK7-AR400-1100-W587P6"
|
|
57
|
+
},
|
|
58
|
+
"retained_dofs": [
|
|
59
|
+
{
|
|
60
|
+
"axis": "Tx",
|
|
61
|
+
"control": "MANUAL",
|
|
62
|
+
"frame": "COMPONENT_LOCAL"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"axis": "Ty",
|
|
66
|
+
"control": "MANUAL",
|
|
67
|
+
"frame": "COMPONENT_LOCAL"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"axis": "Tz",
|
|
71
|
+
"control": "NUMERICAL",
|
|
72
|
+
"frame": "COMPONENT_LOCAL"
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"selected_parameters": []
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"instance_id": "L2",
|
|
79
|
+
"nominal_pose": {
|
|
80
|
+
"position_mm": [
|
|
81
|
+
152.841,
|
|
82
|
+
0.0,
|
|
83
|
+
0.0
|
|
84
|
+
],
|
|
85
|
+
"quaternion_wxyz": [
|
|
86
|
+
0.5,
|
|
87
|
+
0.5,
|
|
88
|
+
-0.5,
|
|
89
|
+
-0.5
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
"optical_role": "lens",
|
|
93
|
+
"product": {
|
|
94
|
+
"catalog_version": "2026-10-28.1",
|
|
95
|
+
"optical_sku": "OS-OPT-LENS-PCX-D12P7-F100-T2P2-R51P5-NBK7-AR400-1100-W587P6"
|
|
96
|
+
},
|
|
97
|
+
"retained_dofs": [
|
|
98
|
+
{
|
|
99
|
+
"axis": "Tx",
|
|
100
|
+
"control": "MANUAL",
|
|
101
|
+
"frame": "COMPONENT_LOCAL"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"axis": "Ty",
|
|
105
|
+
"control": "MANUAL",
|
|
106
|
+
"frame": "COMPONENT_LOCAL"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"axis": "Tz",
|
|
110
|
+
"control": "NUMERICAL",
|
|
111
|
+
"frame": "COMPONENT_LOCAL"
|
|
112
|
+
}
|
|
113
|
+
],
|
|
114
|
+
"selected_parameters": []
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
"materials": [],
|
|
118
|
+
"observations": [
|
|
119
|
+
{
|
|
120
|
+
"absorbing": false,
|
|
121
|
+
"aperture": {
|
|
122
|
+
"center_offset_mm": [
|
|
123
|
+
0.0,
|
|
124
|
+
0.0
|
|
125
|
+
],
|
|
126
|
+
"obstruction_radius_mm": 0.0,
|
|
127
|
+
"radius_mm": 12.5,
|
|
128
|
+
"shape": "circle"
|
|
129
|
+
},
|
|
130
|
+
"medium": "air",
|
|
131
|
+
"observation_id": "output",
|
|
132
|
+
"pose": {
|
|
133
|
+
"position_mm": [
|
|
134
|
+
252.841,
|
|
135
|
+
0.0,
|
|
136
|
+
0.0
|
|
137
|
+
],
|
|
138
|
+
"quaternion_wxyz": [
|
|
139
|
+
0.5,
|
|
140
|
+
0.5,
|
|
141
|
+
0.5,
|
|
142
|
+
0.5
|
|
143
|
+
]
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
],
|
|
147
|
+
"project_schema_version": "2.0",
|
|
148
|
+
"schema": "opensci.project",
|
|
149
|
+
"targets": [
|
|
150
|
+
{
|
|
151
|
+
"metric": "waist_radius_x_mm",
|
|
152
|
+
"observation_id": "output",
|
|
153
|
+
"parameters": [],
|
|
154
|
+
"target_id": "expanded_waist",
|
|
155
|
+
"target_value": 1.9961240310077522,
|
|
156
|
+
"tolerance_rel": 0.01,
|
|
157
|
+
"unit": "mm"
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Sweep of the L2 position along the beam (design +X) of the edited beam expander (--base: the Project written with beam_expander_swap_l2.json). Each sample moves L2 by the value with a rigid transform in the design frame. Both output targets are recorded: expanded_waist (waist_radius_x_mm) changes strongly with spacing because the nearly collimated output has a Rayleigh range of metres and its waist moves by metres per millimetre of defocus; output_beam_radius (beam_radius_mm at the plane 100 mm after L2) changes by less than 0.1 % over the same range. Feasible: expanded_waist PASS; best: smallest |expanded_waist - 1.9961240310077522 mm|.",
|
|
3
|
+
"parameters": [
|
|
4
|
+
{
|
|
5
|
+
"name": "l2_shift",
|
|
6
|
+
"unit": "mm",
|
|
7
|
+
"values": [
|
|
8
|
+
-1,
|
|
9
|
+
-0.5,
|
|
10
|
+
0,
|
|
11
|
+
0.25,
|
|
12
|
+
0.4,
|
|
13
|
+
0.5,
|
|
14
|
+
0.54,
|
|
15
|
+
0.55,
|
|
16
|
+
0.6,
|
|
17
|
+
0.7,
|
|
18
|
+
1,
|
|
19
|
+
2
|
|
20
|
+
],
|
|
21
|
+
"ops": [
|
|
22
|
+
{
|
|
23
|
+
"op": "transform",
|
|
24
|
+
"selector": {
|
|
25
|
+
"ids": [
|
|
26
|
+
"L2"
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
"translation_mm": [
|
|
30
|
+
"$value",
|
|
31
|
+
0,
|
|
32
|
+
0
|
|
33
|
+
],
|
|
34
|
+
"frame": "design"
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"max_evaluations": 20,
|
|
40
|
+
"constraints": [
|
|
41
|
+
{
|
|
42
|
+
"target": "expanded_waist",
|
|
43
|
+
"assessment": [
|
|
44
|
+
"MET"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"derived": [
|
|
49
|
+
{
|
|
50
|
+
"name": "waist_error_mm",
|
|
51
|
+
"op": "abs_diff",
|
|
52
|
+
"a": "target:expanded_waist",
|
|
53
|
+
"b": 1.9961240310077522,
|
|
54
|
+
"unit": "mm"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"objective": {
|
|
58
|
+
"column": "derived:waist_error_mm",
|
|
59
|
+
"sense": "minimize"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Apply the best sweep sample to the edited beam expander: move L2 by 540 um along design +X (given in um, converted to mm by os-optics-kit edit).",
|
|
3
|
+
"ops": [
|
|
4
|
+
{
|
|
5
|
+
"op": "transform",
|
|
6
|
+
"selector": {
|
|
7
|
+
"ids": [
|
|
8
|
+
"L2"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
"translation_mm": [
|
|
12
|
+
{
|
|
13
|
+
"value": 540,
|
|
14
|
+
"unit": "um"
|
|
15
|
+
},
|
|
16
|
+
0,
|
|
17
|
+
0
|
|
18
|
+
],
|
|
19
|
+
"frame": "design"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Edit of the catalog beam_expander example (os-optics project example --kind beam_expander). Op 0 adds target output_beam_radius: beam_radius_mm (1/e^2 radius at the output plane) with the same target value and 1 % tolerance as the example's expanded_waist target (waist_radius_x_mm: radius of the waist the output beam has or had, a collimation measure). Op 1 replaces L2 (N-BK7, focal length 100 mm) by the fused-silica plano-convex lens with focal length 100.3 mm listed by os-optics-kit candidates for 780 nm (catalog 2026-10-28.1); L2 keeps its pose, so the pair is no longer afocal.",
|
|
3
|
+
"ops": [
|
|
4
|
+
{
|
|
5
|
+
"op": "add_target",
|
|
6
|
+
"target": {
|
|
7
|
+
"target_id": "output_beam_radius",
|
|
8
|
+
"metric": "beam_radius_mm",
|
|
9
|
+
"observation_id": "output",
|
|
10
|
+
"unit": "mm",
|
|
11
|
+
"target_value": 1.9961240310077522,
|
|
12
|
+
"tolerance_rel": 0.01,
|
|
13
|
+
"parameters": []
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"op": "set_component_product",
|
|
18
|
+
"instance_id": "L2",
|
|
19
|
+
"optical_sku": "OS-OPT-LENS-PCX-D12P7-F100P3-T2P2-R46-UVFS-AR400-1100-W587P6"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: detector-measurements
|
|
3
|
+
title: Detector linearity and reference-channel normalization
|
|
4
|
+
summary: A 1 mW, 532 nm beam is split 50:50 onto a signal and a reference detector, each with a 2.5 mm radius active area. Two synthetic data sets with known answers calibrate the signal detector's linearity and normalize slow source drift by the reference channel.
|
|
5
|
+
engine: 0.12.0
|
|
6
|
+
catalog: none
|
|
7
|
+
project: project.json
|
|
8
|
+
tools: measurements
|
|
9
|
+
tags: catalog-free, measurements, detector, calibration, beam-splitter, reference-channel
|
|
10
|
+
license: MIT
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## What it shows
|
|
14
|
+
|
|
15
|
+
`project.json` is the measurement setup: Gaussian source `SRC` (0.5 mm waist), native plate splitter `BS`
|
|
16
|
+
(R = T = 0.5) at 45°, absorbing planes `signal` (transmitted) and `reference` (reflected) 100 mm away. The run confirms
|
|
17
|
+
that each detector receives 0.5 mW and that the beam (0.5046 mm radius) fits the active area, the conditions the
|
|
18
|
+
analysis assumes. `os-optics-kit measurements` subtracts dark readings, optionally divides by the reference
|
|
19
|
+
channel, fits a line and checks the RMSE. The CSV readings are synthetic, with deliberate bad rows:
|
|
20
|
+
|
|
21
|
+
| Data | Rows used | Fit |
|
|
22
|
+
| --- | --- | --- |
|
|
23
|
+
| `data/detector_response.csv` | 7 of 10 | 2 V/mW · P + 0.005 V, RMSE 0.002 V |
|
|
24
|
+
| `data/reference_drift.csv` | 8 of 13 | ratio 0.4, slope 0, RMSE 0 |
|
|
25
|
+
|
|
26
|
+
Both analyses return WARNING (rows excluded) with the RMSE target PASS.
|
|
27
|
+
|
|
28
|
+
## Run
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
os-optics project run project.json --out-dir run
|
|
32
|
+
os-optics results targets run
|
|
33
|
+
os-optics-kit measurements data/detector_response.csv --x input_power_mW --signal signal_V \
|
|
34
|
+
--background dark_V --x-unit mW --signal-unit V --maximum-rmse 0.003 --out detector
|
|
35
|
+
os-optics-kit measurements data/reference_drift.csv --x time_s --signal signal_V --background dark_V \
|
|
36
|
+
--x-unit s --signal-unit V --reference reference_V --reference-background reference_dark_V \
|
|
37
|
+
--reference-unit V --maximum-rmse 0.000000000001 --out reference
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Targets
|
|
41
|
+
|
|
42
|
+
| Target | Metric | Plane | Bound | Verified |
|
|
43
|
+
| --- | --- | --- | --- | --- |
|
|
44
|
+
| `signal_power`, `reference_power` | `power_W` | `signal`, `reference` | 0.5 mW ± 1 % | 0.5 mW, MET |
|
|
45
|
+
| `signal_beam_radius`, `reference_beam_radius` | `beam_radius_mm` | `signal`, `reference` | ≤ 1 mm | 0.5046 mm, MET |
|
|
46
|
+
|
|
47
|
+
## Baseline
|
|
48
|
+
|
|
49
|
+
os-optics 0.12.0, no catalog: run status PASS (`expected.json`).
|
|
50
|
+
`os-optics-kit cases verify detector-measurements` repeats the run and compares it.
|
|
51
|
+
|
|
52
|
+
## Files
|
|
53
|
+
|
|
54
|
+
- `project.json`, `expected.json`: the setup and its verified outcome.
|
|
55
|
+
- `data/`: the two CSV files and their construction and attribution (`data/README.md`).
|
|
56
|
+
- `README.md`, `README.zh-CN.md`, `images/top.png`: the illustrated page.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Detector linearity and reference-channel normalization
|
|
2
|
+
|
|
3
|
+
A 1 mW, 532 nm laser beam is split 50:50 by a plate beam splitter. The transmitted half reaches the signal detector,
|
|
4
|
+
the reflected half the reference detector; both detectors have a 2.5 mm radius active area. The engine run confirms
|
|
5
|
+
the power on each detector and that the beam fits the active area. Two synthetic data sets then calibrate the
|
|
6
|
+
signal detector and remove slow source drift with the reference channel.
|
|
7
|
+
|
|
8
|
+

|
|
9
|
+
|
|
10
|
+
## Run it
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
os-optics-kit cases copy detector-measurements --dest .
|
|
14
|
+
cd detector-measurements
|
|
15
|
+
os-optics project run project.json --out-dir run
|
|
16
|
+
os-optics-kit measurements data/detector_response.csv --x input_power_mW --signal signal_V \
|
|
17
|
+
--background dark_V --x-unit mW --signal-unit V --maximum-rmse 0.003 --out detector
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Results
|
|
21
|
+
|
|
22
|
+
| Target | Value | Bound | Assessment |
|
|
23
|
+
| --- | --- | --- | --- |
|
|
24
|
+
| `signal_power` | 0.5 mW | 0.5 mW ± 1 % | MET |
|
|
25
|
+
| `reference_power` | 0.5 mW | 0.5 mW ± 1 % | MET |
|
|
26
|
+
| `signal_beam_radius` | 0.5046 mm | ≤ 1 mm | MET |
|
|
27
|
+
| `reference_beam_radius` | 0.5046 mm | ≤ 1 mm | MET |
|
|
28
|
+
|
|
29
|
+
| Data | Rows used | Fitted response |
|
|
30
|
+
| --- | --- | --- |
|
|
31
|
+
| `data/detector_response.csv` (dark-subtracted signal vs incident power) | 7 of 10 | 2 V/mW · P + 0.005 V, RMSE 0.002 V |
|
|
32
|
+
| `data/reference_drift.csv` (signal / reference, both dark-subtracted, over 7 s) | 8 of 13 | 0.4, constant, RMSE 0 |
|
|
33
|
+
|
|
34
|
+
Both channels drift by 7 % over the scan; their ratio does not. Rows with a missing or invalid reading or a
|
|
35
|
+
non-positive dark-subtracted reference are excluded and listed in `processed.csv`; the analyses report WARNING for the exclusions and PASS for the
|
|
36
|
+
RMSE targets. `data/README.md` gives the formulas behind the data and their attribution. Verified with
|
|
37
|
+
os-optics 0.12.0; run status PASS.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# 探测器线性度与参考通道归一化
|
|
2
|
+
|
|
3
|
+
1 mW、532 nm 的激光束由平板分束镜按 50:50 分开:透射光到达信号探测器,反射光到达参考探测器;两个探测器的有效区域
|
|
4
|
+
半径均为 2.5 mm。引擎运行确认每个探测器上的功率,并确认光束落在有效区域之内。随后用两组合成数据标定信号探测器,
|
|
5
|
+
并借助参考通道消除光源的缓慢漂移。
|
|
6
|
+
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
## 运行
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
os-optics-kit cases copy detector-measurements --dest .
|
|
13
|
+
cd detector-measurements
|
|
14
|
+
os-optics project run project.json --out-dir run
|
|
15
|
+
os-optics-kit measurements data/detector_response.csv --x input_power_mW --signal signal_V \
|
|
16
|
+
--background dark_V --x-unit mW --signal-unit V --maximum-rmse 0.003 --out detector
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 结果
|
|
20
|
+
|
|
21
|
+
| 目标 | 数值 | 界限 | 评估 |
|
|
22
|
+
| --- | --- | --- | --- |
|
|
23
|
+
| `signal_power` | 0.5 mW | 0.5 mW ± 1 % | MET |
|
|
24
|
+
| `reference_power` | 0.5 mW | 0.5 mW ± 1 % | MET |
|
|
25
|
+
| `signal_beam_radius` | 0.5046 mm | ≤ 1 mm | MET |
|
|
26
|
+
| `reference_beam_radius` | 0.5046 mm | ≤ 1 mm | MET |
|
|
27
|
+
|
|
28
|
+
| 数据 | 使用行数 | 拟合响应 |
|
|
29
|
+
| --- | --- | --- |
|
|
30
|
+
| `data/detector_response.csv`(扣除暗读数的信号对入射功率) | 10 行中 7 行 | 2 V/mW · P + 0.005 V,RMSE 0.002 V |
|
|
31
|
+
| `data/reference_drift.csv`(信号 / 参考,均扣除暗读数,7 s 内) | 13 行中 8 行 | 0.4,恒定,RMSE 0 |
|
|
32
|
+
|
|
33
|
+
两个通道在扫描期间都漂移了 7 %,二者之比保持不变。读数缺失或无效、或扣除暗读数后参考值非正的行被排除,并列在 `processed.csv` 中;
|
|
34
|
+
两项分析因排除行而报告 WARNING,RMSE 目标为 PASS。`data/README.md` 给出数据的构造公式与来源说明。
|
|
35
|
+
已用 os-optics 0.12.0 验证;运行状态 PASS。
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Synthetic measurement data and attribution
|
|
2
|
+
|
|
3
|
+
The readings in these two CSV files are synthetic: constructed from the formulas
|
|
4
|
+
below with known answers, for the `os-optics-kit measurements` analysis of this
|
|
5
|
+
case ([README](../README.md)).
|
|
6
|
+
|
|
7
|
+
## Detector response
|
|
8
|
+
|
|
9
|
+
`detector_response.csv` has `input_power_mW` (mW), `signal_V` (V), `dark_V` (V),
|
|
10
|
+
and the textual `data_origin` label. For the seven valid rows, indexed `i = 0..6`:
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
input_power_mW = i / 10
|
|
14
|
+
dark_V = 0.020
|
|
15
|
+
signal_V = dark_V + 2 * input_power_mW + 0.005 + residual_V[i]
|
|
16
|
+
residual_V = [0.002, -0.003, 0.001, 0, 0.001, -0.003, 0.002]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
The residuals sum to zero and have zero covariance with x. Thus the OLS slope is
|
|
20
|
+
2 V/mW, intercept is 0.005 V, and RMSE is exactly 0.002 V in real arithmetic.
|
|
21
|
+
Tests accept absolute error of 1e-12 for these quantities. Three appended rows
|
|
22
|
+
exercise missing signal, invalid incident power, and missing dark background.
|
|
23
|
+
|
|
24
|
+
## Reference drift
|
|
25
|
+
|
|
26
|
+
`reference_drift.csv` adds `time_s` (s), `reference_V` (V), and
|
|
27
|
+
`reference_dark_V` (V). For eight valid rows, `time_s = i = 0..7`:
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
reference_dark_V = 0.010
|
|
31
|
+
dark_V = 0.020
|
|
32
|
+
reference_V = reference_dark_V + 1 + 0.01 * i
|
|
33
|
+
signal_V = dark_V + 0.4 * (1 + 0.01 * i)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The dark-subtracted channels grow by 7%; their quotient stays 0.4. The ratio's
|
|
37
|
+
fitted slope is zero, intercept is 0.4, and RMSE is zero in real arithmetic.
|
|
38
|
+
Tests use absolute tolerance 1e-12. R² is undefined for this constant response.
|
|
39
|
+
Five appended rows exercise zero corrected reference, missing reference,
|
|
40
|
+
invalid signal, negative corrected reference, and missing reference background.
|
|
41
|
+
|
|
42
|
+
## Sources and changes
|
|
43
|
+
|
|
44
|
+
The workflow ideas adapt **JunLin615 and contributors**, *Free-space Optical
|
|
45
|
+
Experiment Benchmark*, at commit
|
|
46
|
+
`e72ad3a9b6be12c7f0dbb00121fda23289c4e908`:
|
|
47
|
+
|
|
48
|
+
- [EX-DETECT-01: Detector linearity calibration](https://github.com/JunLin615/free-space-optical-experiment-benchmark/blob/e72ad3a9b6be12c7f0dbb00121fda23289c4e908/benchmark/case_library/EX-DETECT-01.md), blob `81fc82e61aec5e3929b51f45eea4eb8c6b869817`.
|
|
49
|
+
- [EX-DRIFT-01: Reference channel for slow drift](https://github.com/JunLin615/free-space-optical-experiment-benchmark/blob/e72ad3a9b6be12c7f0dbb00121fda23289c4e908/benchmark/case_library/EX-DRIFT-01.md), blob `55374f93e53046837423e909b2e55696bbe12854`.
|
|
50
|
+
|
|
51
|
+
Benchmark case content is licensed under [Creative Commons Attribution 4.0
|
|
52
|
+
International](https://creativecommons.org/licenses/by/4.0/), as recorded in its
|
|
53
|
+
[LICENSE-CONTENT](https://github.com/JunLin615/free-space-optical-experiment-benchmark/blob/e72ad3a9b6be12c7f0dbb00121fda23289c4e908/LICENSE-CONTENT).
|
|
54
|
+
These adaptations replace the detector case's illustrative 12% filter test with
|
|
55
|
+
a calibrated-power scan, add explicit offsets, deterministic residuals and
|
|
56
|
+
invalid records, and turn the reference case's 7% shared-drift idea into concrete
|
|
57
|
+
CSV values. The Python implementation, equations for these fixtures, and actual
|
|
58
|
+
data values were created for this repository. No benchmark dataset, gold answer,
|
|
59
|
+
or scorer is copied. The case README explains the adapted workflows;
|
|
60
|
+
generated provenance records these source links and the exact revision.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
input_power_mW,signal_V,dark_V,data_origin
|
|
2
|
+
0,0.027,0.020,synthetic
|
|
3
|
+
0.1,0.222,0.020,synthetic
|
|
4
|
+
0.2,0.426,0.020,synthetic
|
|
5
|
+
0.3,0.625,0.020,synthetic
|
|
6
|
+
0.4,0.826,0.020,synthetic
|
|
7
|
+
0.5,1.022,0.020,synthetic
|
|
8
|
+
0.6,1.227,0.020,synthetic
|
|
9
|
+
0.7,,0.020,synthetic_missing_signal
|
|
10
|
+
invalid,1.625,0.020,synthetic_invalid_power
|
|
11
|
+
0.9,1.825,,synthetic_missing_background
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
time_s,signal_V,dark_V,reference_V,reference_dark_V,data_origin
|
|
2
|
+
0,0.420,0.020,1.010,0.010,synthetic
|
|
3
|
+
1,0.424,0.020,1.020,0.010,synthetic
|
|
4
|
+
2,0.428,0.020,1.030,0.010,synthetic
|
|
5
|
+
3,0.432,0.020,1.040,0.010,synthetic
|
|
6
|
+
4,0.436,0.020,1.050,0.010,synthetic
|
|
7
|
+
5,0.440,0.020,1.060,0.010,synthetic
|
|
8
|
+
6,0.444,0.020,1.070,0.010,synthetic
|
|
9
|
+
7,0.448,0.020,1.080,0.010,synthetic
|
|
10
|
+
8,0.452,0.020,0.010,0.010,synthetic_zero_corrected_reference
|
|
11
|
+
9,0.456,0.020,,0.010,synthetic_missing_reference
|
|
12
|
+
10,invalid,0.020,1.110,0.010,synthetic_invalid_signal
|
|
13
|
+
11,0.464,0.020,0.005,0.010,synthetic_negative_corrected_reference
|
|
14
|
+
12,0.468,0.020,1.130,,synthetic_missing_reference_background
|