nipype.utils.draw_gantt_chart module¶
Module to draw an html gantt chart from logfile produced by
nipype.utils.profiler.log_nodes_cb()
- nipype.utils.draw_gantt_chart.calculate_resource_timeseries(events, resource)¶
Given as event dictionary, calculate the resources used as a timeseries
- Parameters:
events (dictionary) – a dictionary of event-based node dictionaries of the workflow execution statistics
resource (string) – the resource of interest to return the time-series of; e.g. ‘runtime_memory_gb’, ‘estimated_threads’, etc
- Returns:
time_series – a pandas Series object that contains timestamps as the indices and the resource amount as values
- Return type:
pandas Series
- nipype.utils.draw_gantt_chart.create_event_dict(start_time, nodes_list)¶
Function to generate a dictionary of event (start/finish) nodes from the nodes list
- Parameters:
start_time (datetime.datetime) – a datetime object of the pipeline start time
nodes_list (list) – a list of the node dictionaries that were run in the pipeline
- Returns:
events – a dictionary where the key is the timedelta from the start of the pipeline execution to the value node it accompanies
- Return type:
dictionary
- nipype.utils.draw_gantt_chart.draw_lines(start, total_duration, minute_scale, scale)¶
Function to draw the minute line markers and timestamps
- Parameters:
start (datetime.datetime obj) – start time for first minute line marker
total_duration (float) – total duration of the workflow execution (in seconds)
minute_scale (integer) – the scale, in minutes, at which to plot line markers for the gantt chart; for example, minute_scale=10 means there are lines drawn at every 10 minute interval from start to finish
scale (integer) – scale factor in pixel spacing between minute line markers
- Returns:
result – the html-formatted string for producing the minutes-based time line markers
- Return type:
string
- nipype.utils.draw_gantt_chart.draw_nodes(start, nodes_list, cores, minute_scale, space_between_minutes, colors)¶
Function to return the html-string of the node drawings for the gantt chart
- Parameters:
start (datetime.datetime obj) – start time for first node
nodes_list (list) – a list of the node dictionaries
cores (integer) – the number of cores given to the workflow via the ‘n_procs’ plugin arg
total_duration (float) – total duration of the workflow execution (in seconds)
minute_scale (integer) – the scale, in minutes, at which to plot line markers for the gantt chart; for example, minute_scale=10 means there are lines drawn at every 10 minute interval from start to finish
space_between_minutes (integer) – scale factor in pixel spacing between minute line markers
colors (list) – a list of colors to choose from when coloring the nodes in the gantt chart
- Returns:
result – the html-formatted string for producing the minutes-based time line markers
- Return type:
string
- nipype.utils.draw_gantt_chart.draw_resource_bar(start_time, finish_time, time_series, space_between_minutes, minute_scale, color, left, resource)¶
- nipype.utils.draw_gantt_chart.generate_gantt_chart(logfile, cores, minute_scale=10, space_between_minutes=50, colors=['#7070FF', '#4E4EB2', '#2D2D66', '#9B9BFF'])¶
Generates a gantt chart in html showing the workflow execution based on a callback log file. This script was intended to be used with the MultiprocPlugin. The following code shows how to set up the workflow in order to generate the log file:
- Parameters:
logfile (string) – filepath to the callback log file to plot the gantt chart of
cores (integer) – the number of cores given to the workflow via the ‘n_procs’ plugin arg
minute_scale (integer (optional); default=10) – the scale, in minutes, at which to plot line markers for the gantt chart; for example, minute_scale=10 means there are lines drawn at every 10 minute interval from start to finish
space_between_minutes (integer (optional); default=50) – scale factor in pixel spacing between minute line markers
colors (list (optional)) – a list of colors to choose from when coloring the nodes in the gantt chart
- Returns:
None – the function does not return any value but writes out an html file in the same directory as the callback log path passed in
Usage
—–
# import logging
# import logging.handlers
# from nipype.utils.profiler import log_nodes_cb
# log_filename = ‘callback.log’
# logger = logging.getLogger(‘callback’)
# logger.setLevel(logging.DEBUG)
# handler = logging.FileHandler(log_filename)
# logger.addHandler(handler)
# #create workflow
# workflow = …
# workflow.run(plugin=’MultiProc’,
# plugin_args={‘n_procs’ (8, ‘memory’:12, ‘status_callback’: log_nodes_cb}))
# generate_gantt_chart(‘callback.log’, 8)
- nipype.utils.draw_gantt_chart.log_to_dict(logfile)¶
Function to extract log node dictionaries into a list of python dictionaries and return the list as well as the final node
- Parameters:
logfile (string) – path to the json-formatted log file generated from a nipype workflow execution
- Returns:
nodes_list – a list of python dictionaries containing the runtime info for each nipype node
- Return type:
list