Giter Club home page Giter Club logo

transit's Introduction

The paper

Code supporting Transit effects for non-linear index measurement in hot atomic vapors.
This code aims at giving the tools for both measurement and numerical estimation of non-linear index of refractions in hot alkali vapors.
It aims at providing an easily reusable codebase in modern langages (Python) while benefiting from the performance of a compiled langage (Julia).
Please note : This code base is provided without any guarantee nor reliable support. However feel free to raise an issue if you want to reuse the code and need some help.
Please do cite us !

@misc{aladjidi2022transit,
      title={Transit effects for non-linear index measurement in hot atomic vapors}, 
      author={Tangui Aladjidi and Murad Abuzarli and Guillaume Brochier and Tom Bienaimé and Thomas Picot and Alberto Bramati and Quentin Glorieux},
      year={2022},
      eprint={2202.05764},
      archivePrefix={arXiv},
      primaryClass={quant-ph}
}

Usage

The codebase provides two main components : one for measurement, the other for simulation.

Phase measurement

All image processing utilities are in contrast.py.
The workhorse of these utilities is the im_osc function :

def im_osc(im: np.ndarray,  cont: bool = True, plot: bool = False) -> tuple:
    """Separates the continuous and oscillating components of an image using
    Fourier filtering.

    :param np.ndarray im: Description of parameter `im`.
    :param bool cont: Returns or not the continuons component
    :param bool plot: Plots a visualization of the analysis result
    :return np.ndarray: The oscillating component of the image, or both
    components

    """
    ...
    return im_cont, im_fringe

This function will analyze an interferogram and automatically extract the continuous and oscillating components.
Its workflow is represented in the following image.

Atomic Monte-Carlo simulations

The aomic simulations are written mainly in Julia and wrapped to a convenient Python class in bloch_time.py.
Physical parameters such as detuning, cell temperature, cell length etc... can be easily specified using the __init__ method of the class.\ The physical setup is described at length in the paper, but it can be easily summarized in the following figure For each velocity class and each passing atom, we solve the Maxwell-Bloch equations all along the atom's trajectory and accumulate the states in a 2D grid.
The actual solving is done using the Julia codes do_V_span.jl and do_V_span_pop.jl.
The RHS and skeleton of the "fast" julia code was also adapted in Python using Numba. While not providing the actual Monte-Carlo part of the simulation, it should be a good start if you do not want to fuss with Julia code.

Dependencies

These are the main depedencies of the codebase.
For Python :

  • PyJulia : needs to be statically linked to libpython to work ! See PyJulia documentation for further details.
  • Numpy
  • scikit-image
  • Numba (for JIT compilation)

For Julia :

  • DifferentialEquations
  • ProgressBars
  • Distributions

transit's People

Contributors

taladjidi avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.