UJFO SUPPLEMENTARY MATERIALS — USER AND REPRODUCIBILITY GUIDE

Manuscript:
Interference-based modal selection in a finite multilayer ring-core waveguide

PURPOSE OF THIS ARCHIVE
This archive contains the final article-supporting numerical datasets, supplementary figures,
configuration parameters, methodological notes, and a Jupyter notebook that loads the packaged
datasets and regenerates selected validation plots.

The CSV files are the primary numerical data. They can be inspected directly without running
Python. The notebook is provided as a convenience for loading the data and regenerating selected
figures; it is NOT the complete historical optimization code and it does NOT rerun the full
Maxwell eigenmode solver or the original design search.

1. OPERATING SYSTEM
No operating-system-specific software is required.

The data files use platform-independent formats and can be inspected under:
- Windows 10/11
- Linux
- macOS

The notebook can be run either locally in Jupyter/JupyterLab or in Google Colab.

Reference local environment used to verify the supplied notebook:
- OS: Linux x86_64
- Python: 3.13.5
- pandas: 2.2.3
- matplotlib: 3.10.8
- JupyterLab: 4.5.3
- Notebook: 7.5.3
- IPython kernel: ipykernel 7.2.0

No proprietary software, GPU, CUDA installation, or special hardware is required.

2. FILE FORMATS AND HOW TO VIEW THEM
- data/*.csv
  UTF-8, comma-separated text files. They can be opened directly in Microsoft Excel,
  LibreOffice Calc, a text editor, or Python/pandas.
- figures/*.png
  Standard PNG image files; no special software is required.
- config/final_geometry.json
  UTF-8 JSON text containing the final geometry and model parameters.
- notes/SUPPLEMENTARY_NOTES.md
  Markdown text; it can be read in any text editor or Markdown viewer.
- notebook/reproduce_selected_results.ipynb
  Jupyter notebook for loading the packaged CSV files and regenerating selected plots.

3. GOOGLE COLAB — NO LOCAL INSTALLATION REQUIRED
This is the simplest cloud-based way to run the supplied notebook.

Important: opening the .ipynb file from Google Drive does NOT automatically make the neighboring
folders or the ZIP archive visible to the Colab runtime. The notebook therefore contains a Colab-
aware setup cell.

Procedure:
1) Obtain this complete ZIP archive.
2) Open notebook/reproduce_selected_results.ipynb in Google Colab.
3) Run the FIRST code cell.
4) If the supplementary data are not already present in the runtime, a file-upload dialog appears.
5) Select and upload the COMPLETE supplementary ZIP archive (not only the .ipynb file).
6) The first cell automatically extracts the ZIP under /content, locates the data/ folder, and prints:
     Environment ready.
7) Run the remaining cells, or use Runtime -> Run all.

No Google Drive mounting is required for this workflow. An internet connection is needed only to
use the Colab service itself; the numerical datasets are read from the uploaded archive.

4. LOCAL PYTHON/JUPYTER SETUP
A recent Python 3 environment is sufficient. The verified package versions are listed above.
The supplied requirements.txt file reproduces the verified plotting/data-analysis environment.

First extract the COMPLETE ZIP archive while preserving the folder structure. The relevant layout is:

  UJFO_Supplementary_Materials/
      data/
      figures/
      config/
      notes/
      notebook/reproduce_selected_results.ipynb
      requirements.txt
      README.txt

Optionally create a clean virtual environment.

Windows:
  py -m venv .venv
  .venv\Scripts\activate

Linux/macOS:
  python3 -m venv .venv
  source .venv/bin/activate

Then, from the extracted UJFO_Supplementary_Materials folder:

  python -m pip install -r requirements.txt

5. HOW TO RUN THE NOTEBOOK LOCALLY
Option A — JupyterLab
From the extracted UJFO_Supplementary_Materials folder run:

  jupyter lab

Then open:
  notebook/reproduce_selected_results.ipynb

Choose a Python 3 kernel and use:
  Run -> Run All Cells

Option B — Jupyter Notebook
From the extracted UJFO_Supplementary_Materials folder run:

  jupyter notebook

Open the same notebook and use the available Run All command.

The notebook automatically searches the extracted archive structure and works when opened from the
archive root or from the notebook/ subfolder.

6. WHAT THE NOTEBOOK DOES
The notebook is an access and verification notebook for the packaged supplementary data. It:
- discovers and loads ALL Supplementary Data S01–S20;
- displays a dataset summary with file names, row counts and column counts;
- previews the numerical contents of every S01–S20 file;
- provides a helper function show_supplement("Sxx") for direct inspection of any dataset;
- displays MANUSCRIPT_CROSS_REFERENCE.csv and checks that all S01–S20 cited by the manuscript map are present;
- displays the packaged Supplementary Figs. S1–S4;
- regenerates selected plots directly from S07, S09, S10 and S12.

The CSV files remain the primary numerical records. The notebook is intended to make them easy to locate,
inspect and verify, including in Google Colab.

7. WHAT THE NOTEBOOK DOES NOT DO
The notebook does not:
- rerun the full-vector Maxwell eigenvalue solver;
- repeat the complete historical geometry optimization;
- reproduce every intermediate trial structure;
- perform a new full-wave 20–100 mm propagation calculation.

The final numerical datasets needed to support the manuscript are supplied directly as S01–S20.
The long-length S16–S18 datasets correspond to the reduced modal-beat/surrogate continuation
described explicitly in the manuscript and Supplementary Notes.

8. MODEL SETTINGS RELEVANT TO THE PACKAGED DATA
The final geometry is stored in config/final_geometry.json. The principal nominal values are:
- Reference RCF: a_ref = 1.09 µm, b_ref = 3.11 µm,
  n_ring = 1.474, n_clad = 1.444
- Nominal wavelength: 1550 nm
- Multilayer section: H-L-H-L-H
- a = 2.15 µm
- W = 4.00 µm
- layer widths = [0.672, 0.528, 1.600, 0.528, 0.672] µm
- n_H = 1.520
- n_L = 1.444
- nominal length L = 2.025 mm
- target: HE21-based OAM-compatible |l| = 1, m = 1 guided family

Open-guided convention:
Radiation components participate in interface matching and power accounting. After leaving the
finite cladding they are treated as escaped; only bound segment modes are propagated coherently
between the interfaces. Additional details are given in notes/SUPPLEMENTARY_NOTES.md and in
Supplementary Data S03–S05 and S19–S20.

9. DATA MAP
SUPPLEMENT_MAP.csv gives a file-by-file description of S01–S20.
MANUSCRIPT_CROSS_REFERENCE.csv maps each manuscript citation of Supplementary Data/Figures to the packaged files.
SUPPLEMENTARY_FIGURE_CAPTIONS.txt contains captions for Figs. S1–S4.

10. INTEGRITY CHECK
MANIFEST_SHA256.csv lists the file size and SHA-256 checksum of each packaged file (except the
manifest itself). It can be used to confirm that files were not altered after packaging.

11. TROUBLESHOOTING
If the notebook reports that it cannot locate the data directory:

Google Colab:
- re-run the first code cell;
- when the upload dialog appears, select the COMPLETE supplementary ZIP archive;
- do not upload only the notebook file;
- wait until the cell prints "Environment ready." before running the next cell.

Local Jupyter/JupyterLab:
- confirm that the complete ZIP archive was extracted;
- preserve the original data/, notebook/, figures/, config/, and notes/ folders;
- do not move the notebook out of notebook/ unless the full archive structure remains accessible.

If CSV files open in a spreadsheet with all values in one column, select comma "," as the field
separator/delimiter and UTF-8 as the text encoding.

12. CITATION IN THE MANUSCRIPT
Use textual references such as:
“Supplementary Data S01”, “Supplementary Data S03–S05”, “Supplementary Fig. S3”,
or “Supplementary Data S16–S18”.

Do not add the Supplementary Materials as a separate bibliography entry.

For the content and limitations of individual datasets, see:
- SUPPLEMENT_MAP.csv
- REPRODUCIBILITY_NOTE.txt
- notes/SUPPLEMENTARY_NOTES.md
