anypytools.abcutils

Created on Fri Oct 19 21:14:59 2012 @author: Morten

class anypytools.abcutils.AnyPyProcess(num_processes=4, anybodycon_path=None, timeout=3600, silent=False, ignore_errors=None, warnings_to_include=None, fatal_warnings=False, return_task_info=None, keep_logfiles=False, logfile_prefix=None, python_env=None, debug_mode=0, use_gui=False, priority=16384, interactive_mode=False, **kwargs)[source]

Class for configuring batch process jobs of AnyBody models.

This is the main interface to control the AnyBody console application from python. The class stores all the configuration about how AnyBody is run. It has one important method start_macro which launches the AnyBody with a given anyscript macro.

Parameters
  • num_processes (int, optional) – Number of anybody models to start in parallel. This defaults to the number of logical CPU cores in the computer.

  • anybodycon_path (str, optional) – Overwrite the default anybodycon.exe file to use in batch processing. Defaults to what is found in the windows registry.

  • timeout (int, optional) – Maximum time (i seconds) a model can run until it is terminated. Defaults to 3600 sec (1 hour).

  • silent (bool, optional) – Set to True to suppress any output such as progress bar and error messages. (Defaults to False).

  • ignore_errors (list of str, optional) – List of AnyBody Errors substrings to ignore when running the models. (Defaults to None)

  • warnings_to_include (list of str, optional) – List of strings that are matched to warnings in the model output. If a warning with that string is found the warning is returned in the output. (Defaults to None)

  • fatal_warnings (bool, optional) – Treat warnings as errors. This only triggers for specific warnings given by warnings_to_include argument.

  • keep_logfiles (bool, optional) – If True logfile will never be removed. Even if a simulations successeds without error. (Defautls to False)

  • logfile_prefix (str, optional) – String which will be prefixed to the generated log files. This can be used to assign a more meaningfull name to a batch of logfiles. (Defaults to None)

  • python_env (pathlike, optional) – Path to a python environment/installation that the AnyBody Modeling System should use for Python Hooks. This will added the PYTHONHOME environment variable and prepended to the PATH before starting the AnyBody Console application. (Defaults to None, which will use the default Python installation on the computer.)

  • debug_mode (int, optional) – Sets the debug mode flag for the AnyBodyConsole appplication (e.g. the /deb <number> flag)

  • use_gui (bool, optional) – Swictch to use the GUI instead of the console version of AMS. This works by replacing the ‘anybodycon’ part of the executable with ‘anybody’ of the anybodycon_path arguments. I.e. “…/anybdoycon.exe” becomes “…/anybody.exe”

  • interactive_mode (bool, optional) – If set to True, AnyBody will be started in iteractive mode, and will not shutdown autmaticaly after running the macro. This automatically enables the use_gui argument (Defaults to False)

  • priority (int, optional) – The priority of the subprocesses. This can be on of the following: anypytools.IDLE_PRIORITY_CLASS, anypytools.BELOW_NORMAL_PRIORITY_CLASS, anypytools.NORMAL_PRIORITY_CLASS, anypytools.HIGH_PRIORITY_CLASS Default is BELOW_NORMAL_PRIORITY_CLASS.

Returns

An instance of the AnyPyProcess object for running batch processing, parameter studies and pertubation jobs.

Return type

AnyPyProcess

Example

The following example shows how to instantiate a AnyPyProcess object.

>>> app = AnyPyProcess(num_processes=8)

The app object has methods for launching macros, saving results etc.

>>> macro = ['load "MyModel.any"', 'operation Main.MyStudy.Kinematics', 'run']
>>> app.start_macro(macro)
cleanup_logfiles(tasklist)[source]
load_results(filename)[source]

Load previously saved results.

Besides reloading results the function can be used to continue a partial finished processing process.

Parameters

filename (str) – filename of the file where processing was stored.

Returns

A list with the output from each macro executed. This maybe empty the macros did not output any data.

Return type

list

Examples

Results are easily reloaded:

>>> app = AnyPyProcess()
>>> results = app.load_results('saved_results.db')

Continue processing unfinished batches:

>>> app.load_results('unfinished_results.db')
>>> results = app.start_macro() # rerun unfinished
save_results(filename, append=False)[source]

Save resently processed results.

Save results for later reloading or to continue processing unfished results at a later time.

Parameters
  • filename (str) – filename of the file where processing was stored.

  • append (bool) – If true append data to what ever is already saved. This allows for saving data in batches.

Returns

Return type

None

Examples

>>> macro = ['load "model1.any"', 'operation Main.RunApplication', 'run']
>>> app.start_macro(macro)
>>> app.save_results('saved_data.db')
save_to_hdf5(filename, batch_name=None)[source]

Save cached results to hdf5 file.

Parameters
  • filename (str) – filename where data should be stored

  • batch_name (str) – Name of the group in the HDF5 file to save the data within. If not specified the group hash value of the macro will be used.

Returns

Return type

None

start_macro(macrolist=None, folderlist=None, search_subdirs=None, logfile=None)[source]

Start a batch processing job.

Runs a list of AnyBody Macro commands in the current directory, or in the folders specified by folderlist. If search_subdirs is a regular expression the folderlist will be expanded to include all subdirectories that match the regular expression

Parameters
  • macrolist (list of macrocommands, optional) – List of anyscript macro commands. This may also be obmitted in which case the previous macros will be re-run.

  • folderlist (list of str, optional) – List of folders in which to excute the macro commands. If None the current working directory is used. This may also be a list of tuples to specify a name to appear in the output

  • search_subdirs (str, optional) – Regular expression used to extend the folderlist with all the subdirectories that match the regular expression. Defaults to None: No subdirectories are included.

  • logfile (str, optional) – If specified an explicit name will be used for the log files generated. Otherwise, random names are used for logfiles

Returns

A list with the output from each macro executed. This maybe empty the macros did not output any data.

Return type

list

Examples

>>> macro = [['load "model1.any"', 'operation Main.RunApplication', 'run'],
             ['load "model2.any"', 'operation Main.RunApplication', 'run'],
             ['load "model3.any"', 'operation Main.RunApplication', 'run']]
>>> folderlist = [('path1/', 'name1'), ('path2/', 'name2')]
>>> app.start_macro(macro, folderlist, search_subdirs = "*.main.any")
anypytools.abcutils.execute_anybodycon(macro, logfile=None, anybodycon_path=None, timeout=3600, keep_macrofile=False, env=None, priority=16384, debug_mode=0, folder=None, interactive_mode=False)[source]

Launch a single AnyBodyConsole applicaiton.

This is a low level function to start a AnyBody Console process with a given list macros.

Parameters
  • macro (list of str) – List of macros strings to pass to the AnyBody Console Application

  • logfile (file like object, optional) – An open file like object to write to pipe the output of AnyBody into. (Defaults to None, in which case it will use sys.stdout)

  • anybodycon_path (str, optional) – Path to the AnyBodyConsole application. Default to None, in which case the default installed AnyBody installation will be looked up in the Windows registry.

  • timeout (int, optional) – Timeout before the process is killed autmotically. Defaults to 3600 seconds (1 hour).

  • keep_macrofile (bool, optional) – Set to True to prevent the temporary macro file from beeing deleted. (Defaults to False)

  • env (dict) – Environment varaibles which are passed to the started AnyBody console application.

  • priority (int, optional) – The priority of the subprocesses. This can be on of the following: anypytools.IDLE_PRIORITY_CLASS, anypytools.BELOW_NORMAL_PRIORITY_CLASS, anypytools.NORMAL_PRIORITY_CLASS, anypytools.HIGH_PRIORITY_CLASS Default is BELOW_NORMAL_PRIORITY_CLASS.

  • interactive_mode (bool, optional) – If set to True, the AnyBody Console application will be started in iteractive mode, and will not shutdown autmaticaly after running the macro. (Defaults to False)

  • debug_mode (int) – The AMS debug mode to use. Defaults to 0 which is disabled. 1 correspond to crashdump enabled

  • folder (the folder in which AnyBody is executed) –

Returns

The return code from the AnyBody Console application.

Return type

int

anypytools.abcutils.task_summery(task: anypytools.abcutils._Task)str[source]
anypytools.abcutils.tasklist_summery(tasklist: List[anypytools.abcutils._Task])str[source]