The command line: python -m exudyn
Some things are wanted from a shell rather than from a script: what did I actually install?, show me that sensor file, is this installation working at all?. The installed package answers them directly:
python -m exudyn <command> [options]
There are five commands. Each one parses its own options, so python -m exudyn <command> --help
is the authoritative list — this page describes what the commands are for, not every flag they
take.
command |
what it does |
|---|---|
|
live view of a results file while it is being written, see The results monitor |
|
one static plot of sensor or solution files, then exit |
|
version, location and environment of this installation |
|
run a built-in demo model |
|
browse the settings, or the key bindings, in a dialog |
python -m exudyn --version prints the version string alone, which is convenient in scripts.
info — what to put in a bug report
python -m exudyn info
prints the Exudyn version and the build it comes from, the path of the installed package, which
compiled module is loaded (EXUDYN_MODULE), the output directory, the Python version and platform,
and which of numpy, scipy, matplotlib, networkx, NGsolve and pytest are installed.
That block answers most of the questions a bug report otherwise needs a conversation about, so paste it into an issue rather than describing the installation in prose.
plot — a figure without writing a script
python -m exudyn plot solution/sensorPosition.txt
python -m exudyn plot s0.txt s1.txt --columns 0,1 --save position.png
Without --columns, every column except time is drawn over time. --save writes the figure
(.png, .pdf, .svg) instead of, or in addition to, showing it; a run that only saves needs no
window and works over SSH.
demo — does this installation work?
python -m exudyn demo #a simple model with the renderer
python -m exudyn demo 2
The two demos of exudyn.demos. If these run, the compiled module, numpy, matplotlib and the
renderer are in order — which is the first thing to establish when something else does not work.
dialogs — look a setting up before writing the model
python -m exudyn dialogs vis #the visualization settings
python -m exudyn dialogs sim #the simulation settings
python -m exudyn dialogs help #the keyboard and mouse commands of the renderer
The settings dialog used to be reachable only by pressing V in the render window, which is no
help to somebody who has not written the model yet. It is the same dialog: the tree of every
setting with its type and its description, CTRL-F to find one by name, and copy line to take
the Python statement that sets it. vis and sim are the short forms of visualizationSettings
and simulationSettings.
The structures it shows are fresh ones, so what you see are the defaults a model starts from — nothing here is attached to a renderer, and closing the dialog changes no file. What the browsing is for is printed when you close it: the settings you changed, as the lines that set them, ready to paste into a script.
monitor — the results monitor
python -m exudyn monitor --last
attaches to the most recently written results file. The monitor has a page of its own: The results monitor.
Why this is not simply exudyn ...
A console script would put the name exudyn on the PATH of every environment the package is
installed into. That is a promise about a name, and the set of commands is young, so the
installation deliberately makes no such promise yet: python -m exudyn costs a few characters more
and can change without breaking anybody’s shell.
The commands live in a plain dictionary inside exudyn/__main__.py, and each one imports what it
needs only when it is called — an unused command costs nothing at startup, and the table is the
place where a plugin can add its own command later.