Communitygithub.com

rmcprofile-skill (RMCProfile-Kompetenz)

AI-Agent-Fertigkeit, verifiziertes Toolkit, Clean-Room-Lehrmotor, ausgeführtes Buch und Kurs für RMCProfile (Reverse Monte Carlo für Totalstreuung)

Was ist rmcprofile-skill (RMCProfile-Kompetenz)?

rmcprofile-skill ist eine umfassende Python-Toolkit-Fertigkeit für AI-Agenten, die den gesamten Workflow rund um RMCProfile abdeckt – einem Closed-Source-Programm für Reverse-Monte-Carlo-Simulationen der Totalstreuung. Die Fertigkeit kann alle Ein- und Ausgabeformate von RMCProfile 6.7.9 lesen und schreiben, führt Plausibilitätsprüfungen durch, die vor typischen Fehlern warnen, und ermöglicht das Ausführen des RMCProfile-Binärprogramms. Darüber hinaus bietet sie eine eigenständige Analysemöglichkeit von Konfigurationen (z. B. Paarverteilungsfunktionen, Koordination, Bindungswinkel) ohne das Originalprogramm. Ein besonderes Merkmal ist der enthaltene „rmclite“-Clean-Room-Motor, der speziell für Lehrzwecke entwickelt wurde. Die Fertigkeit enthält außerdem elf vollständig ausgeführte Jupyter-Notebooks (Kapitel 1–40), ein gesamtes Kursmaterial mit Folien, Handouts und Dozentennotizen sowie Werkzeuge zur wöchentlichen Überwachung des Upstream-Projekts. Unterstützt werden Plattformen wie Windows, Linux und macOS, wobei das RMCProfile-Paket selbst separat bezogen werden muss. Die Kommunikation erfolgt über Umgebungsvariablen (RMCPROFILE_HOME) und die Fertigkeit stellt sicher, dass keine lizenzierten Dateien kopiert oder mitgeliefert werden.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add fabiocampolim-design/rmcprofile-skill

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

rmcprofile-skill 0.5.5

Ein Python-Toolkit um RMCProfile, das Reverse-Monte-Carlo-Programm für Totalstreuung (rmcprofile.ornl.gov). Es liest und schreibt jedes Ein- und Ausgabeformat der Version 6.7.9 (references/formats.md), prüft einen Eingabesatz auf die Fehler, vor denen das Handbuch warnt, führt das vom Benutzer installierte Binärprogramm aus und analysiert Konfigurationen eigenständig (references/method.md). Es führt Selbsttests gegen das installierte Paket durch (scripts/upstream_adapter.py) und enthält einen kleinen Clean-Room-RMC-Motor für Lehrzwecke (scripts/rmclite.py, references/rmclite.md). RMCProfile ist Closed Source und wird unter eigenen „Non-Profit“-Bedingungen vertrieben; diese Fertigkeit liefert oder kopiert es nicht – sie findet es über RMCPROFILE_HOME (references/package.md). Lesen Sie references/pitfalls.md, bevor Sie ein Ausführungsverzeichnis betreten. Führen Sie alles aus dem Produktstammverzeichnis mit der Conda-Umgebung rmcprofile und PYTHONIOENCODING=utf-8 aus; alle Flags sind in AGENTS.md aufgeführt.

1. Einrichtung und Überprüfung

scripts/install_rmcprofile_windows.ps1        # oder scripts/install_rmcprofile.sh; beide akzeptieren einen Probelauf
export RMCPROFILE_HOME=/pfad/zu/RMCProfile_package    # das Verzeichnis mit exe/ und tutorial/
python scripts/verify_rmcprofile.py           # Importe, Formate, Keen-Identität, Steinsalz-Schalen, Paket-Smoke-Test

Das Paket wird vom Benutzer von rmcprofile.ornl.gov/download/ (SourceForge) heruntergeladen und entpackt; ohne RMCPROFILE_HOME werden alle paketgebundenen Prüfungen und Tests übersprungen, nicht fehlgeschlagen. verify_rmcprofile.py beendet sich nur mit 0, wenn alle Prüfungen bestanden sind; der Smoke-Test kopiert tutorial/ex_1 in ein temporäres Verzeichnis und führt es aus (einige Sekunden, χ²/FG 0,4201 bei beiden Builds).

2. Eingabesatz vor der Ausführung prüfen

python scripts/rmcprofile_tools.py check STEM --dir RUNVERZ

Gibt eine Zeile pro Fund aus, LEVEL code: nachricht, beendet sich mit 1 bei jedem ERROR. Codes: no-dat, dat-parse, no-configuration, rmc6f-parse, atom-order (ATOMS :: und die Konfiguration stimmen nicht überein), minimum-distances-count, maximum-moves-count, data-file-missing, data-file-parse, data-block-no-filename, bragg-file-missing, bragg-inst-missing, bragg-back-missing, bragg-parse, poly-file-missing (das Programm würde ewig warten), bulk-rho-missing (PARTICLE_RADIUS :: ohne BULK_RHO ::, das Programm stoppt); Warnungen end-point-beyond-data, filename-case (Linux/macOS würde die Datei nicht finden), no-weight, hkl-range-unspecified, stale-neighbour-files, history-file (eine .his6f von einem Null-Bewegungs-Durchlauf vergiftet den nächsten Lauf); Informationen potential-lists-regenerated, summary.

3. RMCProfile ausführen und Ergebnis lesen

python scripts/rmcprofile_tools.py run STEM --dir RUNVERZ --timeout 10      # Minuten; --home überschreibt RMCPROFILE_HOME

Der Prüfer wird zuerst ausgeführt und weigert sich, bei einem Fehler zu starten. Die Standardausgabe des Laufs geht nach RUNVERZ/run.log; die Zusammenfassungszeile gibt den Rückgabecode, die Wanduhrzeit und die Anzahl der Ausgabedateien an; final: gibt die letzte Zeile von <stem>.chi2 wieder. In Python: res = run_rmcprofile(stem, rundir, find_package()) → res.returncode, res.seconds, res.outputs, res.final_chi2. Lesen Sie den Fit mit read_csv_pair("<stem>_PDF1.csv") (r, calc, expt), read_partials_csv("<stem>_PDFpartials.csv"), read_chi2_history("<stem>.chi2"). Eine fehlende Konfiguration führt dazu, dass RMCProfile mit Exit-Code 0 stoppt – vertrauen Sie outputs und final_chi2, nicht dem Code.

4. Datendateien vorbereiten

from rmcprofile_tools import write_data_file, read_data_file
write_data_file("sample_gr.dat", r, G, "sample 300 K", style="two-line")   # oder style="stog"

DATA_TYPE/FIT_TYPE sind G(r), D(r), T(r) im Realraum und F(Q), S(Q), i(Q) im reziproken Raum; die Definitionen, die r → 0 Identität G(0) = −(Σ c_i b_i)² und die Gewichte finden sich in references/method.md. Ein G(r) dessen Plateau bei niedrigen r nicht −(Σ c b)² ist, wurde nicht so normalisiert, wie RMCProfile es erwartet.

5. Eine .dat-Datei erstellen oder bearbeiten

from rmcprofile_tools import read_dat
d = read_dat("sample.dat")
d.set("NEUTRON_REAL_SPACE_DATA", "WEIGHT", "0.02")
d.scalars["TIME_LIMIT"] = "30.00 MINUTES"
d.write("sample.dat")

DatFile behält Skalare, die ATOMS ::-Zeile und jeden Block in der Dateireihenfolge und schreibt sie byte-stabil zurück; d.get(block, key), d.data_blocks(), d.filenames(). Die Block-gegen-Skalar-Regel und jedes Schlüsselwort, das im Paket vorkommt, sind in references/formats.md aufgeführt. Halten Sie NUMBER_DENSITY gleich der Dichte im Header der Konfiguration.

6. Konfiguration ohne Binärprogramm analysieren

python scripts/rmcprofile_tools.py pdf    DATEI.rmc6f --rmax 8 --dr 0.02 --qmax 30 --dq 0.02 --radiation neutron --outdir out
python scripts/rmcprofile_tools.py coord  DATEI.rmc6f --pair Na Cl --rmax 3.0
python scripts/rmcprofile_tools.py angles DATEI.rmc6f --triplett Na Cl Cl --rmax 3.0 --dangle 2 --outdir out

pdf schreibt <stem>_PDFpartials.csv (g_ij), <stem>_GofR.csv (Keens G(r) in barn) und <stem>_FofQ.csv; coord gibt das Koordinationshistogramm aus; angles schreibt das B-A-C-Winkelhistogramm. Plausibilitätsprüfung: Der erste Wert von G(r) muss −(Σ c_i b_i)² (−0,2759 barn für SF6) sein. In Python: read_rmc6f, partial_gr, total_gr, fq_from_gr, coordination, bond_angles, average_cell, NEUTRON_B. --rmax muss unter der Hälfte der kürzesten Superzellenkante bleiben.

7. Fallstricke

references/pitfalls.md: die .poly-Wartezeit, Exit-Code 0 bei einem fatalen Fehler, .his6f-Priorität, veraltete Nachbardateien, die CUDA-gegen-CPU-Bewegungsrate, /mnt/*-Langsamkeit unter WSL, die beiden .rmc6f-Atomzeilenlayouts, CRLF, die r-Gitter-Konvention, natürliche Häufigkeitsgewichte, cp1252-Konsolen.

8. Selbsttest gegen das installierte Paket

python scripts/upstream_adapter.py list                      # die acht mitgelieferten Übungen und ihre Aufbauanleitungen
python scripts/upstream_adapter.py crosscheck ex_1 --timeout 3

crosscheck legt die unveränderten Eingaben der Übung in einem temporären Verzeichnis an (Ausgaben entfernt, .poly/.fs/.sf behalten, TIME_LIMIT von ex_7 auf 5 min gekürzt), führt das Paket aus und vergleicht dann unsere Partial- und Keen-G(r)-Werte für die resultierende .rmc6f mit den eigenen _PDFpartials.csv und _PDF1.csv des Pakets. „within tolerance: True“ bedeutet, dass jedes Paar innerhalb von tolerance_partials (1e-3; das Paket rechnet in einfacher Genauigkeit, gemessen 2,8e-4 auf dem g = 20 Peak) und G(r) innerhalb von tolerance_gofr (1e-4 barn, gemessen 3e-5) von tests/records/crosscheck_v1.json liegt. --update-records überschreibt die gemessenen Maxima und die Herkunft – nur nach einer bewussten Neumessung. In Python: crosscheck_partials(rmc6f, partials_csv), crosscheck_gofr(rmc6f, pdf_csv), stage_exercise, run_and_crosscheck.

9. Lehren mit rmclite

python scripts/rmclite.py synth truth_rmc6f --displace 0.05 --rmax 5 --outdir out     # Ziele der Wahrheit + eine verschobene Kopie
python scripts/rmclite.py fit   average.rmc6f --target out/truth_target_PDFpartials.csv --moves 3000 --sigma 0.2 --min-dist "Na-Na:3.0,Na-Cl:2.2,Cl-Cl:3.0" --outdir out

fit schreibt <stem>_fit.rmc6f, <stem>_fit.chi2 (RMCProfiles Header m_accepted m_generated m_tested chi2), <stem>_fit_PDFpartials.csv und <stem>_fit_GofR.csv – lesen Sie sie mit denselben Lesern wie die Ausgabe von RMCProfile. Die Akzeptanzregel ist Δ = Δχ²/2 + ΔU/k_BT, akzeptieren wenn Δ ≤ 0, sonst mit Wahrscheinlichkeit e^(−Δ). Starten Sie von der Durchschnittsstruktur, niemals von einer zufälligen Verzerrung; passen Sie niemals unverbreiterte (delta-scharfe) Ziele an; erwarten Sie, dass die Paarverteilung reproduziert wird, nicht die Koordinaten (references/rmclite.md §5). In Python: Box.from_rmc6f, Histogram, PartialTarget, TotalGTarget, FqTarget, ClosestApproach, DistanceWindow, BondPotential, RmcLite(...).run(n), synth_targets.

10. Das Buch lesen oder neu erstellen

chapters/RMCProfile_NN_*.ipynb – elf ausgeführte Notebooks (§1–40, Index in chapters/README.md): 1 Totalstreuung und die PDF, 2 der RMC-Algorithmus, 3 Startkonfigurationen, 4 Anpassen von Neutronendaten mit RMCProfile, 5 Röntgen und Bragg, 6 Nebenbedingungen und Potentiale, 7 Korrekturen (die gemessenen Formen von RESOLUTION_CORRECTION und PARTICLE_RADIUS), 8 EXAFS / magnetisch / diffus, 9 Analyse von Konfigurationen, 10 Benchmarks und Ökosystem. Verweisen Sie einen Benutzer auf das Kapitel, nicht auf eine Paraphrase: Jede Zahl darin wurde im Notebook berechnet. Zum Neuerstellen nach Bearbeitung von build/part*.py:

python build/assemble.py --which 07          # ein Kapitel neu generieren (unveränderte Notebooks werden mit ihren Ausgaben beibehalten)
RMCPROFILE_HOME=... python build/execute.py --which 07   # auf dem rmcprofile-mc-Kernel ausführen; PASS/FAIL-Zählung in logs/execute.log
python build/gallery.py                      # docs/figures + README-Galerie
python -m pytest tests/test_notebooks.py -q  # Quellen, Ausgaben, Summen, Speicherlecks

11. Den Kurs unterrichten

course/deck/index.html – elf Vorlesungen (L0 warum lokale Struktur … L10 beitragen), flach und linear, jede Kapitelabbildung unter ihrer Notebook-Beschriftung; course/slides.pdf ist dasselbe Deck ohne Browser; course/handout/handout.html die A4-Begleitung; course/notes/LECTURER_NOTES.md die Notizen jeder Folie mit der erwarteten Frage. Verweisen Sie einen Dozenten auf course/README.md (Lehrplan, Schlüssel, Neuerstellung). Nach erneuter Ausführung eines Kapitels:

python course/tools/extract_figures.py      # Abbildungen + Herkunft (--check zum Testen)
python course/tools/build_deck.py           # index.html, Handout, Notizen (--check zum Testen)
python course/tools/make_slides_pdf.py      # slides.pdf (Playwright; committet)
python -m pytest tests/test_course.py -q

12. Upstream wöchentlich beobachten

python scripts/watch_upstream.py --weekly          # SourceForge-Liste, Site-Seiten/Beiträge, Conda-Tools, GitHub-Nachbarn, Tracker-Status
python scripts/watch_upstream.py --snapshot        # Zustand ohne Bericht erfassen
powershell -File scripts/register_watch_task.ps1   # Windows Task Scheduler, Montags 08:00 (-DryRun, -Remove)

Berichte gehen nach <study>/docs/watch/YYYY-WW.md, der Snapshot und die Audit-Logs nach <study>/forum/upstream-watch/ (gitignoriert). Ein Feed, der keine Antwort liefert, wird als Zeile im Bericht und Exit 1 aufgeführt; lesen Sie den Bericht, bevor Sie einer stillen Woche vertrauen. Der erste Lauf (2026-W36) fand einen 6.8.0-rc.1-Kandidaten auf SourceForge, den die Download-Seite der Site nicht auflistete.

Verwandte Skills