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
