The Bsoft command line

The prototype command line for a Bsoft program is:

program [options] files

Typing only the program name produces usage information, describing the intent of the program and the options that can be used. Each option starts with a hyphen followed by a tag of one to several characters. The user can use any truncated version of a tag as long as it is unique. For options taking one or more values, the comma-separated list of values must be separated from the tag by a space:

-<tag> <val1>,<val2>,...

Unix command line

Bsoft programs are designed to conform to Unix-style command lines, starting with the program name, followed by any number of options to set parameters, and ending with data file names, e.g., to truncate the data in an image between the values 0 and 100 and with verbose output:

bimg -verbose 7 -truncate 0,100 input.img output.img

Option tags are words aiming at describing the action or parameter to be set. The user can truncate these tags as long as they remain unique within the context of a program. E.g., "-v 7" will set the verbosity level to 7 in most programs, as long as no other tag for those programs begin with a "v". There must be a space between the option tag and the value.

Data file recognition

Data file formats are recognized by the file extension following the last period (".") in the file name. A file can be read using a particular format by specifying this format's extension after a colon (":"), e.g.:

bimg -verbose 7 file.img:mrc file.img:tif

Scripts

Brun: Command line construction aid

Brun is a Tcl/Tk script which presents the options and data I/O of a program in a graphical user interface for ease of command line construction. Here is a quick example to show the header parameters in an image file:

On MacOSX there is a little wrapper script that needs to be run called "brunX".

Bshow: Image display and manipulation

Bshow is a Tcl/Tk script tightly interfaced with the Bsoft library to be able to display images and do many interactive processing tasks. The main documentation is here.

Other scripts

Many processing tasks can be broken up into subtasks and executed on different processors or on one processor at different times to avoid exceeding memory limitations.