Customizing the polymake shell
Here we won't speak about really mighty features like defining own rules or object types; they are described elsewhere. Instead we'll start with tiny, easy to use tools of fine-tuning.
Custom variables
You can tune many aspects of polymake behavior by changing values of numerous variables which are dedicated for keeping user-visible settings. These variables can be grouped by their purpose into the following categories:
General appearance steering, like verbosity levels for various kinds of events, shell input history size or editor, as well as global lookup paths for extensions and user scripts. These variables are defined in the packages
Polymake::User
andPolymake::User::Verbose
.
Customizing visualization tasks, for example, adjusting font sizes, styles or colors. The allowed values are in general highly specific to the graphic processors, however, for colors you can everywhere use symbolic names recognized on your system. Such variables usually have some decent default values defined in the rule files.
Configurable locations and options for running third-party software. Usually they are set automatically by an automatic configuration routine executed during the first use of the corresponding rule file. Sometimes the automatics can fail because of, for example, a non-standard installation, then you have the possibility to aid it with manual input.
Variables with non-default and automatically configured values are persisted in your personal settings file ~/.polymake/settings
. It's not recommended to edit this file manually, because corrupting it might make polymake unable to start altogether. Instead, please use appropriate polymake shell commands:
-
set_custom $name=value;
-
set_custom @name=(value, ...);
-
set_custom %name=(key => value, ...);
-
set_custom $name{key}=value;
set a new persistent value of a scalar, an array, a hash map, or a single value therein
-
reset_custom $name;
-
reset_custom @name;
-
reset_custom %name;
-
reset_custom $name{key};
restore the default value
-
local $name=value;
etc. change the value temporarily for the duration of the current shell input evaluation
-
reconfigure "rulefile";
re-run the configuration routine in the specified rulefile where you'll be able to revise and edit calculated values
An overview of all available custom variables can be obtained by executing help "custom";
or using TAB completion for set_custom
command.
Configuring applications
There are two custom variables related to applications. The list @start_applications
contains names of all applications to be loaded at the very beginning of the interactive session (although the process of loading applications is totally transparent to you, having loaded your favorites in advance avoids annoying delays during the session). The variable $default_application
names the application to be made current at the beginning of the session. Until you change this, it will be polytope
for its undisputed merits as the oldest and most prominent application in polymake.
Preferences
Preferences are lists of choice of different tools capable of performing the same task. When polymake can't make a choice based on objective criteria, it consults the preference lists and takes the tool listed as first. For example, there are several ways to visualize a 3-d polytope: jreality, threejs, povray, etc. Another example is the convex hull computation for which up to five different algorithms (depending on the coordinate type) come into consideration. The sensible choice between them can't be made based on some quantitative estimates; instead, your intuition and, sometimes, personal taste must take over the leadership.
Preference lists are persisted in your personal settings file ~/.polymake/settings
alongside with the custom variables. They can be manipulated using the following polymake shell commands:
-
prefer "label";
Declare some tool to be the preferred one for any tasks it may perform. For example, saying
prefer "jreality";
instructs polymake to call jReality to display any kind of 2-d, 3-d, and 4-d drawings related to polytopes, as well as graphs visualized with spring embedding model. You can specify your wishes more precisely, though: sayingprefer "graphviz.graph";
makes theneato
program from the graphviz package the default tool for visualizing graphs, letting jReality be responsible for all the rest.-
prefer "*.task label1, label2 ...";
Establish a specific order of preferred tools for special task. For example, a command
prefer "*.convex_hull cdd, lrs, beneath_beyond";
directs polymake to always try the cdd convex hull computation first; if it fails, the lrs algorithm will be applied; if both fail, then beneath_beyond, and as the last resort anything else without specific order.-
reset_preference "label";
Restore the preference lists containing the specified label to the pristine state, as it appears in the rule files. It accepts a tool name or a wildcard expression as its argument and restores the effect of any matching
prefer
command encountered in the rule files. The most radical formreset_preference "*";
forgets any preferences you've ever changed and restores the “factory settings”.-
prefer_now "labels";
Does the same as
prefer
, but restores the previous setting as soon as the current input is completely evaluated. No persistent changes are made. This command can be seen as thelocal
modification ofprefer
(standard perl does not allow to applylocal
to anything but variable assignments).-
show_preferences;
Display all active preference lists in the current application. If you want to find out all tools involved into the preference mechanics, including inactive ones, use the TAB completion in
prefer
command or browse the help system starting at the topic '/preferences' .
Remark: the location of the personal setting file can be changed from its default value ~/.polymake
by setting an environment variable POLYMAKE_USER_DIR=/other/location
, or overridden temporarily just for one session with a command-line option --config-path
.