[{"data":1,"prerenderedAt":168},["ShallowReactive",2],{"page:\u002Farticles\u002Fplot-lmodea":3},{"id":4,"title":5,"author":6,"body":10,"cover":154,"date":155,"description":156,"extension":157,"head":158,"layout":161,"meta":162,"navigation":163,"path":164,"seo":165,"stem":166,"__hash__":167},"pages\u002Farticles\u002F23.plot-lmodea.md","Extract and Plot LModeA Output",{"name":7,"avatarUrl":8,"link":9},"Likun Cai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F103620968?v=4","https:\u002F\u002Fgithub.com\u002FAlchemist-Aloha",{"type":11,"value":12,"toc":151},"minimark",[13,17,21,24,29,122,133,136,147],[14,15,5],"h1",{"id":16},"extract-and-plot-lmodea-output",[18,19,20],"p",{},"PlotLModeA is a Python package for turning LModeA 3.0 output into data that is easier to inspect and publish. Its extractor reads the local-mode analysis table, the normal-to-local decomposition matrix, and normal-mode properties, then writes three CSV files. Its plotter normalizes the contributions for each normal mode and renders a stacked percentage chart.",[18,22,23],{},"Optional TOML rules can combine rows into chemically meaningful groups. Rules match the number of atoms involved in a local coordinate and selected atom-symbol tuples. The first matching group owns a row, and the command writes a companion text report listing exactly which local modes were assigned to every group.",[25,26,28],"h2",{"id":27},"typical-workflow","Typical workflow",[30,31,36],"pre",{"className":32,"code":33,"language":34,"meta":35,"style":35},"language-bash shiki shiki-themes github-light github-dark","uv sync\ncd example\nuv run --project .. lmodea-extract -i example.out\nuv run --project .. lmodea-plot \\\n  --group-toml example.toml \\\n  --output example_grouped.png\n","bash","",[37,38,39,52,62,85,102,113],"code",{"__ignoreMap":35},[40,41,44,48],"span",{"class":42,"line":43},"line",1,[40,45,47],{"class":46},"sScJk","uv",[40,49,51],{"class":50},"sZZnC"," sync\n",[40,53,55,59],{"class":42,"line":54},2,[40,56,58],{"class":57},"sj4cs","cd",[40,60,61],{"class":50}," example\n",[40,63,65,67,70,73,76,79,82],{"class":42,"line":64},3,[40,66,47],{"class":46},[40,68,69],{"class":50}," run",[40,71,72],{"class":57}," --project",[40,74,75],{"class":50}," ..",[40,77,78],{"class":50}," lmodea-extract",[40,80,81],{"class":57}," -i",[40,83,84],{"class":50}," example.out\n",[40,86,88,90,92,94,96,99],{"class":42,"line":87},4,[40,89,47],{"class":46},[40,91,69],{"class":50},[40,93,72],{"class":57},[40,95,75],{"class":50},[40,97,98],{"class":50}," lmodea-plot",[40,100,101],{"class":57}," \\\n",[40,103,105,108,111],{"class":42,"line":104},5,[40,106,107],{"class":57},"  --group-toml",[40,109,110],{"class":50}," example.toml",[40,112,101],{"class":57},[40,114,116,119],{"class":42,"line":115},6,[40,117,118],{"class":57},"  --output",[40,120,121],{"class":50}," example_grouped.png\n",[18,123,124,125,128,129,132],{},"Running from the dataset directory keeps the default CSV paths simple. From the project root, every input and output path can instead be supplied explicitly. ",[37,126,127],{},"--mode-list"," selects exact normal modes, while ",[37,130,131],{},"--top-n"," limits the displayed local-mode rows.",[18,134,135],{},"The separate group report is an important detail: a compact figure remains traceable to the individual coordinates that produced it.",[18,137,138,139,146],{},"Visit the ",[140,141,145],"a",{"href":142,"rel":143},"https:\u002F\u002Fgithub.com\u002FAlchemist-Aloha\u002FPlotLModeA",[144],"nofollow","PlotLModeA repository"," for the CLI reference and TOML format.",[148,149,150],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":35,"searchDepth":54,"depth":54,"links":152},[153],{"id":27,"depth":54,"text":28},"\u002Farticles\u002Fspectroscopy-toolkit-cover.webp","2026-08-12T00:23:00.000Z","Turn LModeA 3.0 text output into CSV datasets, grouped local-mode contributions, stacked plots, and an auditable group report.","md",{"title":159},{"PlotLModeA":160},"From Local-Mode Output to Readable Vibrational Contributions","page",{},true,"\u002Farticles\u002Fplot-lmodea",{"title":5,"description":156},"articles\u002F23.plot-lmodea","QM2omTd4SXKivdp53DynTLQtDRlWG_2bNfK0Mp4LVA4",1786980373681]