X-ray physics · Inverse problems · Scientific software
M.S. student in Physics, Sogang University
When X-rays scatter from a crystal or a thin film, a detector records intensities—not a ready-made image of the structure or a list of layer thicknesses. Those have to be worked out from the measurements, and sometimes more than one answer appears plausible.
I build the software for that work: predicting diffraction patterns, fitting X-ray reflectivity curves, reconstructing images, and turning raw beamline data into quantities we can compare. Most of my research code is Python (NumPy, JAX, PyTorch); I also explore C++20/CUDA in QoraPhaseCU.
- TraTT: diffraction while sound enters a crystal. A sound wave can produce extra peaks beside the main Bragg peak. I simulate how those peaks form before the wave has crossed the crystal, using time-dependent Takagi–Taupin equations. Calculated findings · KPS 2026 Fall poster.
- ReflectoLearn: film structure from X-ray reflection. An X-ray reflectivity curve contains information about film thickness, roughness, and scattering strength. I use a neural-network starting guess and a physics-based fit, then study when that estimate goes wrong or cannot be distinguished from another structure. Findings and limits.
- QoraPhase: images from diffraction intensities. Diffraction measurements lose the wave's phase. This JAX package iteratively estimates the missing phase and the object that produced the pattern. Synthetic demonstration · Measured-data limitations.
- QoraFlow: raw detector frames to time traces. At PAL-XFEL, a laser excites the sample and X-rays probe it after different delays. The pipeline groups detector shots by laser state and delay, corrects the images, and tracks changes in a selected diffraction peak. Processing steps · Simulated example.
These are recorded calculations and benchmarks with specific limits—not claims that every program has been validated on an experimental sample.
| Work | Recorded result | What this does not prove |
|---|---|---|
| TraTT | Calculated acoustic-satellite overshoot mapped over 11,211 parameter pairs; selected full Takagi–Taupin checks agree with the reduced model. | No comparison to a measured transient dataset. |
| ReflectoLearn | 935 bounded local-fit refinements. Six incorrect parameter regions require at least 10⁴ counts to distinguish from the reference in the studied conditions (5 in test group R2a, 1 in X2e). | Does not search every possible solution or establish accuracy on a measured film. |
| Public XRR counts | 100 repeated public scans: median dispersion index 1.34 versus a Poisson benchmark near 1 (draft; not independently verified). | One experimental setup; the supported verdict requires a post-pre-check amendment. Under the original exclusion rule there is no verdict; the excess-noise source is unknown. |
| QoraPhase | Synthetic images were reconstructed; on two public coherent-diffraction datasets (CXIDB), the published images were not reproduced. | Matching diffraction intensity does not prove the reconstructed image is correct. |
Read the evidence and reproduction guide — sources, commands, data-access limits, and the next validation needed for each claim.
Not measured data: a simulated diffraction intensity reconstructed with QoraPhase. Reproduce the animation.
- Numerical performance: QoraPhaseCU explores C++20/CUDA phase retrieval; xray.ooguy provides beamline calculators.
- Scientific figures: qoraplot supplies Matplotlib publication layouts; cvdkit pairs color-vision-aware palettes with markers and line styles.
- Developer workflows: codigest packages selected code/diffs/terminal output as AI context; herdr-courier is designed to keep agent prompts from interrupting typed human input; hanfix repairs terminal commands typed under the Korean keyboard layout.
Technical notes · Repository index (last audited 2026-10-23)
Recent research and upstream contributions
NaNIsaac-Research/ReflectoLearndocs: index research findings and evidence mergedNaNIsaac-Research/TraTTdocs: add a findings page and a Findings section to the README mergedNaNIsaac-Research/ReflectoLearndocs(identifiability): redraw the experiment 001 figure from the saved results mergedNaNIsaac-Research/TraTTdocs: redraw the Entry 67 overshoot figure with residuals and full-TT checks mergedNaNIsaac-Research/ReflectoLearndocs(objective): register experiment 006, the cost of log-type objectives against the Poisson likelihood mergedNaNIsaac-Research/ReflectoLearnfix(genx_fit): oxide under the film, oxide roughness free in the final stage mergedNaNIsaac-Research/ReflectoLearndocs: add a Start here block to the reports index mergedNaNIsaac-Research/TraTTdocs: add a Start here block to the reports index merged
pydata/xarrayDOC: Link windowed operations tutorial from computation guide merged
Pepper (후추), my black-and-tan Shiba Inu, takes care of the contribution garden.
Formerly "SJB7777". Renamed to "NaNIsaac" on October 14, 2026, at 00:06:41 KST.




