Skip to content

Latest commit

 

History

History
294 lines (271 loc) · 16.6 KB

File metadata and controls

294 lines (271 loc) · 16.6 KB
layout splash
title Packages & Tools
author_profile true
classes wide
header
overlay_image overlay_filter caption
/assets/images/josh-redd-u_RiRTA_TtY-unsplash.jpg
0.0
<style> /* Single Column Layout */ .software-container { display: flex; flex-direction: column; gap: 30px; /* Space between projects */ margin-top: 2rem; } .software-card { /* background: #fff; */ border: 1px solid #333; border-radius: 8px; padding: 25px; display: flex; /* Makes content side-by-side */ gap: 25px; align-items: flex-start; transition: transform 0.2s ease, box-shadow 0.2s ease; } .software-card:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(0,0,0,0.08); border-color: #4facfe; } /* Left Side: Text Content */ .software-content { flex: 1; /* Takes up remaining space */ } /* Right Side: Figure/Image */ .software-figure { flex: 0 0 300px; /* Fixed width of 300px for images */ height: 180px; /* Fixed height to keep it uniform */ background-color: #f5f7fa; /* Placeholder gray background */ border-radius: 6px; border: 1px solid #eee; overflow: hidden; display: flex; align-items: center; justify-content: center; } .software-figure img { width: 100%; height: 100%; object-fit: cover; /* Ensures image fills the box without stretching */ } /* Header & Title */ .software-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 12px; border-bottom: 1px solid #f0f0f0; padding-bottom: 10px; flex-wrap: wrap; gap: 10px; } .software-title { font-size: 1.3rem; font-weight: 700; color: #ffffff; } .software-link { font-size: 0.85rem; color: #4facfe; text-decoration: none; font-weight: 600; border: 1px solid #4facfe; padding: 4px 10px; border-radius: 4px; transition: all 0.2s; } .software-link:hover { background: #4facfe; color: #fff; } .software-description { font-size: 1rem; color: #b0b0b0; line-height: 1.6; margin-bottom: 15px; } .software-subtitle { color: #4facfe; font-size: 0.9rem; line-height: 1.45; margin: -4px 0 12px 0; } .case-list { margin: 0 0 16px 0; padding: 0; list-style: none; } .case-list li { color: #b0b0b0; font-size: 0.92rem; line-height: 1.5; margin-bottom: 0.45rem; } .case-list strong { color: #ffffff; margin-right: 4px; } /* Tag Styling */ .software-tags { display: flex; gap: 8px; flex-wrap: wrap; margin-top: auto; /* Pushes tags to bottom if needed */ } .tag { font-size: 0.75rem; background: #222; color: #888; padding: 4px 10px; border-radius: 4px; border: 1px solid #444; } /* Mobile Responsive: Stack them vertically on small screens */ @media (max-width: 768px) { .software-card { flex-direction: column-reverse; } /* Image on top */ .software-figure { flex: none; width: 100%; height: 200px; } } </style>

Browser-first research tools for crystal & magnetic structure refinement, RMC analysis, neutron diffuse scattering, and phonon dynamics. These projects emphasize local data privacy, interactive visualization, and deployable workflows that can run directly from GitHub Pages when the science allows it.

MATERIA Workbench

An AI-native foundation for materials science — crystal & magnetic structure refinement that runs entirely in the browser.

A public-beta workbench that unifies single-crystal and powder, X-ray and neutron (CW and TOF), nuclear and magnetic refinement — in reciprocal space and in real space — on one Levenberg–Marquardt engine, and exposes the same pure scientific core to LLM agents as MCP tools, so an agent can drive the refinement loop the way an expert does.

  • Problem: Starting a refinement today means picking among several deep package ecosystems, each with its own formats, instrument files, and magnetic formalism — and the expert judgment loop (free only symmetry-allowed parameters, watch correlations, judge residuals) stays locked in human hands.
  • Approach: Every scientific capability is pure, tested TypeScript (1111 tests in CI, validated against GSAS-II) behind a guided workflow: auto-detected CIF/mCIF, hkl, GSAS and FullProf data/instrument formats; symmetry-constrained least squares; and an end-to-end magnetic workflow from peak detection through k-vector search to Shubnikov-group moment refinement.
  • Beyond the average structure: Real-space PDF refinement adds symmetry-mode fitting — Γ irrep decomposition, an isotropy-subgroup tree, and the full translationengleiche (Bärnighausen) subgroup lattice, with each mode's eigenvector drawn on the 3D model — plus a magnetic-PDF track validated against diffpy.mpdf and the published mPDF tutorial cases.
  • Uncertainty you can question: The engine samples the posterior rather than only linearizing it — affine-invariant ensemble MCMC and a gradient-based NUTS sampler, with R̂/ESS diagnostics and credible intervals. On the Ni PDF golden, posterior widths match the linearized esds to 1%. Approach after Fancher et al. (2016); reporting per McCluskey et al. (2023).
  • Value: Nothing to install and data never leaves the machine; the engine reports correlations, SVD near-null directions, and at-bound flags — not just wR — and 33 contract-tested MCP tools expose parse → build → refine → assess → sample_posterior → suggest → interpret so agents can reason about a fit, not just run it.
TypeScriptReact/ViteRietveldSingle CrystalPDF / mPDFSymmetry ModesBayesian MCMCMagnetic SymmetryMCP / Agent ToolsClient-side
MATERIA Workbench — a converged two-phase Mn3Ga + MnO time-of-flight Rietveld refinement with observed/calculated/difference curves and the symmetry-allowed parameter table
NEBULA3D

Neutron Elastic Background Utilities for Local Analysis & 3D-delta PDF.

A Python toolkit and hosted browser console for cleaning 3D reciprocal-space neutron diffuse scattering volumes and preparing 3D-ΔPDF analysis products from Mantid-style HKL data.

  • Problem: Weak diffuse signals can be buried under powder-ring backgrounds, sharp Bragg and satellite peaks, radial pedestals, and transform artifacts before 3D-ΔPDF interpretation even begins.
  • Approach: The workflow unifies ring subtraction, Bragg/satellite punching, q-shell backfill, radial-background flattening, 3D-ΔPDF transforms, inverse-FFT consistency checks, and multi-view visual QA.
  • Value: It provides both full-resolution native workflows and a GitHub Pages web app that can run real pipeline stages client-side via Pyodide for modest volumes, making cleanup decisions inspectable and reproducible.
PythonReactPyodideNeutron ScatteringDiffuse Scattering3D-ΔPDFGitHub Pages
[3D Diffuse Viewer]
RMCProfile Workbench

A no-install browser dashboard for RMCProfile, STOG, and EXAFS outputs. Select a local run folder to inspect refinement charts, KDE slices, folded 3D structures, and AI-guided summaries of model and fit details without uploading data.

  • Problem: RMC validation spans plots, logs, structures, and fit metrics that are hard to inspect together during refinement.
  • Approach: The React/Vite app reads run folders locally, auto-detects outputs, renders interactive charts, and connects KDE, slab, and Three.js structure views.
  • Reading the displacement cloud two ways: PCA thermal ellipsoids report each principal axis as the crystallographic direction [u v w] it runs along, while a Displacement Directions map bins the same displacements in solid angle on a hex-tiled sphere — exposing discrete hop directions and ±u asymmetry that an anisotropic U tensor averages away.
  • Value: Live monitoring, figure export, EXAFS-aware plotting, WebGPU KDE, and an AI assistant help users understand model details, fit quality, and refinement diagnostics in one private dashboard.
React/VitePythonAI AssistantRMCProfileEXAFSWebGPU KDEPCA / Displacement DirectionsThree.jsLive Monitoring
RMCProfile Workbench — the Displacement Directions view of a GaTa4Se8 RMC run: displacements for a Ta site binned in solid angle on a hex-tiled sphere, with fixed a/b/c axis views alongside and the site ellipsoids in the folded unit cell
RMC Phonon Dynamics

A fully client-side phonon analysis app for RMCProfile ensembles. Open the hosted page, select a local run folder, and compute phonon band structures, animated 3D modes, simulated INS S(|Q|,E), and phonon DOS directly in the browser.

  • Problem: RMC ensembles encode experimentally constrained local disorder, but translating those configurations into lattice-dynamical insight usually requires separate scripts, backends, or model assumptions.
  • Approach: The app extracts displacement-covariance phonons from the selected ensemble, runs the S(k) diagonalization on the user's machine with WebGPU, and keeps all files local through the browser folder picker.
  • Value: It turns RMC-derived structure into interactive dynamics: dispersion curves, soft-mode highlighting, 3D eigenvector animation, INS maps, DOS, fit-quality overlays, and phonopy-compatible exports without installing a scientific stack — with the S(Q,E)-derived DOS and the band structure sharing one energy axis in meV, so a computed dispersion and a measured spectrum can be read against each other directly.
React/ViteWebGPURMCProfilePhononsINSClient-sideGitHub Pages
[Phonon DOS Image]
Athanor — Agentic AI for Materials (exploratory) GitHub

An early, exploratory prototype — a research direction I am actively learning in, not a finished tool.

A closed-loop experiment in whether an LLM agent can usefully drive materials screening: it states a hypothesis, proposes candidate compositions, screens them with physics-grounded surrogate models, reflects in a lab notebook, and iterates, running on local models by default.

  • Question: Can an LLM agent that uses real domain tools, not just chat, meaningfully help decide which materials to try next, and can that help be measured rather than asserted?
  • Approach: A proposer LLM and an independent critic drive deterministic tools — charge-balance filters, CHGNet relaxation, convex-hull stability, MEGNet band gaps — with budgets enforced in code and every candidate logged to ground truth.
  • Honest status: A prototype under active development. Each campaign is benchmarked against non-LLM baselines (random and similarity) at equal compute, so "the agent helps" stays a claim with a control group, and often only a modest one. Treat the results as exploratory.
PythonLLM AgentsOllamaCHGNetMaterials ProjectExploratory
[Discovery Loop]