Pytopas
Bruker's TOPAS X-ray diffraction calculations parser
Install / Use
/learn @basf/PytopasREADME
pytopas
This is an early version of Bruker's TOPAS macro language parser. This macro language is used by commercial and academic TOPAS code. We have compared two canonical parsing approaches for Python, lark vs. pyparsing, and ended up with pyparsing being more convenient for debugging.
Installation
pip install .
Install package with optional dependencies with pip install -e .[lint,test,release]
Usage
Parse a TOPAS macro language node with:
echo "xdd { 42 }" | topas2json - | json2topas -
More specifically, parse TOPAS input and convert it to JSON with:
import json
from pytopas import TOPASParser
src = "a(b,c)"
tree = TOPASParser.parse(src)
print(json.dumps(tree))
Convert parser's JSON-encoded TOPAS code back into the TOPAS input format:
import json
from pytopas import TOPASParseTree
input_json = """
["topas",
["formula",
["func_call", "a",
["formula", ["p", {"n": ["parameter_name", "b"]}]],
["formula", ["p", {"n": ["parameter_name", "c"]}]]]]]
"""
serialized = json.loads(input_json)
src = TOPASParser.reconstruct(serialized)
print(src)
CLI
After installing the package, two command line utilities will be available.
usage: topas2json [-h] [--ignore-warnings] file
Parse TOPAS input and output JSON
positional arguments:
file Path to TOPAS file or '-' for stdin input
options:
-h, --help show this help message and exit
--ignore-warnings Don't print parsing warnings
usage: json2topas [-h] file
Parse JSON input and output TOPAS
positional arguments:
file Path to JSON file or '-' for stdin input
options:
-h, --help show this help message and exit
License
Author Sergey Korolev, Tilde Materials Informatics
Copyright 2023 BASF SE
BSD 3-Clause
Related Skills
ai-cmo
Collection of my Agent Skills and books.
next
A beautifully designed, floating Pomodoro timer that respects your workspace.
product-manager-skills
38PM skill for Claude Code, Codex, Cursor, and Windsurf: diagnose SaaS metrics, critique PRDs, plan roadmaps, run discovery, and coach PM career transitions.
devplan-mcp-server
3MCP server for generating development plans, project roadmaps, and task breakdowns for Claude Code. Turn project ideas into paint-by-numbers implementation plans.
