Code Monkey home page Code Monkey logo

nocliper / ilt Goto Github PK

View Code? Open in Web Editor NEW
6.0 1.0 3.0 41.26 MB

:microscope: Numerical routines to inverse the Laplace Transform for semiconductor Deep Level Transient Spectroscopy.         To cite: Vasilev, A. (2024). Numerical Inverse Laplace Transform for Deep-Level Transient Spectroscopy. https://doi.org/10.5281/zenodo.10462383

Jupyter Notebook 85.36% Python 14.64%
regression ill-posed tikhonov-regularization material-characterization

ilt's Introduction

Inverse Laplace Transform for Deep-Level Transient Spectroscopy

Try In Colab

This repository contains code for analysing DLTS and Laplace DLTS data using different regularisation approaches to produce reliable results. Arrhenius plot option available to plot temperature swept data.

Cite with: Vasilev, A. (2024). Numerical Inverse Laplace Transform for Deep-Level Transient Spectroscopy. Zenodo. https://doi.org/10.5281/zenodo.10462383

Classic DLTS

The time-window concept proposed by D. Lang is the reason why classic DLTS is very sensitive to the small concentration of deep traps even with a low SNR (signal-to-noise ratio). But the main drawback of this approach is the inability to deconvolute the signal of two overlapped traps.

Laplace DLTS

So instead of setting the time window and searching for the peaks, regularization is imposed and brings a full emission rate picture for one transient. This gives an increase in trap separation but higher SNR is needed. Higher SNR can be achieved by averaging many transients (SNR $\propto$ $\sqrt{N}$, where $N$ – number of averaged transients).

Used algorithms

Multiple algorithms are used to increase the reliability of results:

  • python version of Contin – Fast and reliable algorithm. Original code was rewritten in python by caizkun.
  • FISTA – Used to obtain sparse solutions. Works well when opposite sign traps are present in transient.
  • pyReSpect – imported algorithm from shane5ul/pyReSpect-time.
  • Simple L2 and L1+L2 regularization.

(L-curve is used with Contin, L2 and reSpect for regularization parameter optimisation)

Results

This notebook can be used to perform Laplace DLTS to .DLTS files in the data folder. Contin and pyReSpect will work in 99% of cases. L1, L1 + L2 and especially FISTA work well in the other 1% with different sign exponential decays (example of FISTA probing mobile ions in perovskites).


Notebook working cell



Results obtained using reSpect algorithm

Articles

ilt's People

Contributors

nocliper avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

ilt's Issues

Transient with non-equidistant time spacing

Hi Anton,
awesome tool, thanks for sharing!
I was wondering if it's also possible to import data containing time steps? Our DLTS setup doesn't sample the capacitance transient equidistant, so its not possible to use the "t_step". Is it already possible to include it in the .DLTS file or would the "read_file.py" module need a change?

Many thanks for you help,
Chris

About the "process(C, proc)" function in "read_file"

Hi Anton,

I again want to express my sincere gratitude for sharing your code. I have now spent a significant amount of time delving into it and have been able to understand most of its functionality. I have also successfully implemented some very useful tools, such as a peak-finding algorithm for the heatmap, allowing me to create a scatter plot of emission rates over temperature (Arrhenius plot). Additionally, the code now performs linear regression on the Arrhenius plot to identify defect characteristics, specifically activation energy and capture cross-section.

However, I am still struggling to fully grasp the purpose and functionality of the "process(C, proc)" function. I would be incredibly grateful if you could explain the rationale behind its implementation. Using your original code with my data consistently results in low-frequency noise. Could you perhaps provide some insight into this issue?

Screenshot 2024-02-29 172447

This noise vanishes when not performing the "F = F + np.average(F)*2":

Screenshot 2024-02-29 172651

Therefore, the "Contin" algorithm appears to perform less effectively in the low-temperature regime. This is likely due to the increased noise in the initial transient data. Unfortunately, the "reSpect" algorithm is incompatible with this specific modification. If you have any experience with the suitability of different transient processing techniques for various data types, I would greatly appreciate your insights.

Thank you very much & best regards,
Chris

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.