/article_RME_2023

Data, code and figure generation for the article "Tailoring the Rotational Memory Effect in Multimode Fibers"

Primary LanguageJupyter Notebook

Code examples and supporting data for the paper

DOI

R. Gutiérrez-Cuevas , A. Goetschy , G. Pelc, E. Ravn Andresen , L. Bigot , Y. Quiquempois , P. Sillard , M. Bigot, O. Katz , J. de Rosny , and S. M. Popoff

@misc{gutiérrezcuevas2023tailoring,
      title={Tailoring the Rotational Memory Effect in Multimode Fibers},
      author={Rodrigo Gutiérrez-Cuevas and Arthur Goetschy and Guy Pelc and Esben Ravn Andresen and Laurent Bigot and Yves Quiquempois and Maroun Bsaibes and Pierre Sillard and Marianne Bigot and Julien de Rosny and Sébastien M. Popoff},
      year={2023},
      eprint={2310.19337},
      archivePrefix={arXiv},
      primaryClass={physics.optics}
}

Global requirements:

  • Numpy
  • Matplotlib
  • Scipy
  • tqdm

For mode simulation (pyMMF) [Optional]:

  • numba
  • joblib

For RME channel video creation [Optional]:

Raw data files [Optional]:

  • Only required to regenerated the curated data files (in /Data) used to produce the results of the paper. Available on Zenodo:

DOI

We also used the pyMMF package to find the modes of the fiber. For consistancy, we use a local version of the package, which is included in the repository in /pyMMF.

Contain the data used in the paper. It corresponds to a subset of the large raw data files (hence the _small prefix) that are available on Zenodo

It also contain the processed data, generated by Experiment_VS_Model.ipynb, used to produce the figures of the paper. The data is organized in folders ./<FIBER>/, named after each fiber samples used, each one corresponding to a different fiber.
They all have the same geometrical adverized properties, i.e. a graded index fiber with parabolic index profile, $NA=0.2$, and a core size of $50 \mu m$. <FIBER> can be:

Content of each <FIBER> folder:

  • paraml.pkl is a pickle file containing a dictionnary of the complete experimental and numerical parameters. It corresponds to the metadata of the experiment.

  • param_small.pkl is a pickle file containing a subset of the complete parameters, we keep only what is useful for the post-treatment.

  • Ys_focus_small.npy contains the data corresponding to the rotated focus experiment (Fig.1b in the paper). We learn to focus on one point and rotate the input wavefront. The output intensity pattern is then recorded for various angles. The experiment is repeated for different values of the local deformation applied.

  • Ys_rnd_small_p<pola>_<n>.npz contains the output fields for rotated random inputs at the output polarization <pola> and for the deformation indexed by <n>. This data is used to compute the rotational memory effect angular correlation (defined in Eq.1 of the paper).

  • Ys_rm_small.npz contains the output fields for input wavefronts corresponding to the first singular vectors of the rotational memory effect operators for the different levels of deformation (see section IV and Appendix E of the paper).

  • TMs_mode.npy contains the transmission matrices of the fiber in the mode basis for different levels of deformation.

  • processed_data.pkl contains the results of the post-treatment done in Experiment_VS_Model.ipynb.

  • Validation_and_tests.ipynb contains the code to reproduce the validation and tests on the RME correlation presented in the paper as shown in Fig.1, Fig.2, Fig.5, and Fig.6. We present the results of the focusing and field correlation estimation, and compare the latter to the intensity correlation measurement and the numerical estimation using the TM.
  • Experiment_VS_Model.ipynb contains the main results to 1/ fit the theoretical mode (Eq.4) to the experimental data and 2/ to compare the experimental, thoery, and numerical results. Corresponds to Fig.3 and Fig.7 in the paper.

  • Show_results.ipynb contains the code to reproduce the figures of the paper without the need to recompute. Used the processed data from /Data/<FIBER>/processed_data.pkl generated by Experiment_VS_Model.ipynb.

  • RME_operator.ipynb contains the code to reproduce the results regarding the use of RME operators (Eq. 10 and Fig.4 in the paper). We experimentally estimated the operators for the different values of the deformation, computed the SVD, and displayed the corresponding wavefront on the modulator. We then measured the RME correlation for different singular vectors used.
  • ShrinkData.ipynb contains the code to generate the smaller data files used in the paper from the raw data files (too big for Github).
  • functions.py contain the common functions used in the notebooks for data processing and vizualisation.

Version of the pyMMF package used in the paper.

More information

Visit our website on Wavefrontshaping.net for more information, codes, and tutorials.