Skip to main content

The package tool for neutron reflectivity analysis

Project description

NR-SCFT-ML: Neutron Reflectivity SCFT Machine Learning

A Python package for Neutron Reflectivity data analysis using Machine Learning.
Including Chi parameter prediction from SLD profile data and SLD profile prediction from NR curves.


Overview

NR-SCFT-ML (implemented as the pyreflect package) is a Python toolkit for efficient processing and analysis of Neutron Reflectivity (NR) data. It provides a streamlined pipeline for:

  • Preprocessing NR datasets
  • Predicting SLD profiles using CNN-based models
  • Predicting Chi parameters using a combined Autoencoder and MLP architecture

Prerequisites

  • Python >= 3.10
  • Strongly recommended: Conda (local machines and HPC clusters)
  • Optional: GPU with CUDA-capable PyTorch build for faster training and inference

Large-scale synthetic data generation and model training are memory intensive. HPC resources or a workstation with large RAM and optionally a GPU are recommended.


Installation

pyreflect depends on scientific Python libraries with native extensions (NumPy, SciPy, refnx, refl1d, etc.).
For reliability across platforms, Conda is the recommended installation method, especially on Windows and HPC systems.


Option 1. ✅ Recommended: Conda (Local or HPC)

1. Create and activate a Conda environment

conda create -n pyreflect python=3.10
conda activate pyreflect

2. Install scientific dependencies via conda-forge

conda install -c conda-forge \
    numpy scipy refnx refl1d numba llvmlite

3. Install pyreflect

pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple pyreflect==1.4.1

After installation, you can access the CLI via:

python -m pyreflect --help

GPU support (optional)

For GPU-accelerated training and inference, install a CUDA-enabled PyTorch build inside the same environment, following the official PyTorch instructions for your system or cluster.


Option 2. 🛠 Automated setup (using setup.sh)

This repository provides a helper script setup.sh that:

  • Detects your Conda installation
  • Creates a Conda environment named pyreflect (Python 3.10)
  • Installs core scientific dependencies
  • Registers a Jupyter kernel called Python (pyreflect)

You can fetch and run it as follows:

curl -fsSLo setup.sh https://raw.githubusercontent.com/williamQyq/pyreflect/main/setup.sh
bash setup.sh

After it completes:

  • In Jupyter, select the Python (pyreflect) kernel
  • The environment is ready for use

⚠️ pip-only installation (not recommended on Windows)

A pure pip installation may work on Linux or macOS systems with a full build toolchain.
On Windows, this may require Microsoft C++ Build Tools and is not recommended.

python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install --upgrade pip
pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple pyreflect==1.4.1

If installation fails due to native extensions, switch to the Conda workflow above.


👩‍💻 Development setup (for contributors)

Poetry is used for development and maintenance, not for end-user installation.

git clone https://github.com/williamQyq/pyreflect.git
cd pyreflect

poetry install
poetry shell

You can then run:

python -m pyreflect --help

Example Notebooks

Example notebooks are available in the examples directory:

Tutorial video:

For detailed CLI usage, configuration, and typical research workflows, see docs/usage.md.


Credits

This project builds on work by:

  • Brian Qu (NR-SLD-CNN)
  • Dr. Rajeev Kumar
  • Prof. Miguel Fuentes-Cabrera (NR-SCFT-ML)
  • Shanshou Li
  • Hudson Kass

Author

Yuqing Qiao (William) – Maintainer and developer of this package Shanshou Li - Developer Hudson Kass - Developer

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyreflect_nr-1.4.1.tar.gz (28.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyreflect_nr-1.4.1-py3-none-any.whl (35.6 kB view details)

Uploaded Python 3

File details

Details for the file pyreflect_nr-1.4.1.tar.gz.

File metadata

  • Download URL: pyreflect_nr-1.4.1.tar.gz
  • Upload date:
  • Size: 28.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for pyreflect_nr-1.4.1.tar.gz
Algorithm Hash digest
SHA256 dcca45a3b7c688685f9324d352a1b5b27cec87491aebd811f0365b9efa083d49
MD5 2ead4218c524b330306b9bee8dccbfb0
BLAKE2b-256 cfd8b390e47423f08a9838f286755b0df2df2cf23ad010f1f715c6d9b0c4934b

See more details on using hashes here.

File details

Details for the file pyreflect_nr-1.4.1-py3-none-any.whl.

File metadata

  • Download URL: pyreflect_nr-1.4.1-py3-none-any.whl
  • Upload date:
  • Size: 35.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for pyreflect_nr-1.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2e476d4a2681e6d4dc32f6af28fa60bd61369f5947cf34abc356c0ffc7b20c26
MD5 a25ef3b5005c433cf68e827dc2d7ce36
BLAKE2b-256 e5bf350c5d247cd7035505c9a3286003ea632676a4a34557c6d83ef88145edb2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page