# The Essential Scattering Applications for Everyone.

Neutron and X-ray scattering techniques belong to a family of analytical techniques with unique possibilities for investigating crystal structures, chemical composition and physical properties of bulk materials and thin films.

By observing the scattered intensity of an X-ray or neutron beam as a function of incident and scattered angles, energy and polarization, we can disclose subnanometer resolution information of descriptive parameters from materials:

• interface diffusion and interface rougness
• layers thicknesses
• crystal lattice structure of each layer
• scattering density profile
• concentration of compounds in alloys
• layer-by-layer magnetization and many others

We are glad to introduce you to the project called ESCAPE. This project collects different scattering applications utilizing the power of modern C++ and Python. For more details check our publication.

Or run it with a single command using Docker:

docker run -p 8888:8888 -it escapeapp/escape-jupyterlab:0.9.2


## Why?

The main goal of ESCAPE is to provide a complete set of cross-platform applications for different scattering problems that appear in science and metrology.

## How?

The core of ESCAPE is developed with C++17 and tested with GCC, MSVC and Clang compilers under Linux, Windows and OSX. The Python bindings, made with Cython, integrated C++ core functionality to Jupyter notebooks.

## Who can use?

ESCAPE is available at no cost for non-commercial applications and is dedicated first of all to experienced physicists - scattering instrument or laboratory responsibles, people who understand in details scattering techniques, data preparation and required scattering formalism for obtaining succesfull results. The notebooks created and shared in the frame of ESCAPE can be adopted further by less experienced users for their research.

## Core Modules

The ESCAPE core package allows to define simulation models in terms of parameters and functors and to fit several intensity models to experimental data simultaneously. The core package has ready for usage stochastic and gradient based optimizers performing fits and neural network regressor for fast parameters estimation during batch processing.

## Scattering Modules

The scattering package contains ready objects for material and sample description and ready functors for the common scattering applications like: specular reflectivity, polarized neutrons reflectivity, high resolution X-ray diffraction, small angle scattering, etc.

## Integrations

ESCAPE utilizes Jupyter notebooks as a default file format. Users can share their models with others and publish their results online in our repository.

The graphical representation of parametes, functors, models and optimizers makes usage of ESCAPE easier for non-experienced users.

But ESCAPE has not been created for Jupyter notebooks only, its structure together with python interface allows to integrate its modules in custom applications and environments.