fireworks.utilities package¶
Subpackages¶
Submodules¶
fireworks.utilities.dagflow module¶
A utility to validate and visualize workflows
-
class
fireworks.utilities.dagflow.
DAGFlow
(steps, links=None, nlinks=None, name=None)¶ Bases:
igraph.Graph
The purpose of this class is to help construction, validation and visualization of workflows.
-
__init__
(steps, links=None, nlinks=None, name=None)¶ __init__(n=0, edges=None, directed=False, graph_attrs=None, vertex_attrs=None, edge_attrs=None)
Constructs a graph from scratch.
- @keyword n: the number of vertices. Can be omitted, the default is
zero. Note that if the edge list contains vertices with indexes larger than or equal to M{m}, then the number of vertices will be adjusted accordingly.
- @keyword edges: the edge list where every list item is a pair of
integers. If any of the integers is larger than M{n-1}, the number of vertices is adjusted accordingly. C{None} means no edges.
@keyword directed: whether the graph should be directed @keyword graph_attrs: the attributes of the graph as a dictionary. @keyword vertex_attrs: the attributes of the vertices as a dictionary.
Every dictionary value must be an iterable with exactly M{n} items.
- @keyword edge_attrs: the attributes of the edges as a dictionary. Every
dictionary value must be an iterable with exactly M{m} items where M{m} is the number of edges.
-
add_step_labels
()¶ Labels the workflow steps (i.e. graph vertices)
-
check_dataflow
()¶ Checks whether all inputs and outputs match
-
delete_ctrlflow_links
()¶ Deletes graph edges corresponding to control flow links
-
delete_dataflow_links
()¶ Deletes graph edges corresponding to data flow links
-
classmethod
from_fireworks
(fireworkflow)¶ Converts a fireworks workflow object into a new DAGFlow object
-
to_dict
()¶ Returns a dictionary that can be passed to the constructor
-
to_dot
(filename='wf.dot', view='combined')¶ Writes the workflow into a file in DOT format
-
validate
()¶ Validate the workflow
-
fireworks.utilities.dict_mods module¶
-
fireworks.utilities.dict_mods.
apply_mod
(modification, obj)¶ Note that modify makes actual in-place modifications. It does not return a copy.
- Parameters
modification – Modification must be {action_keyword : settings}, where action_keyword is a supported DictMod
obj – A dict to be modified
-
fireworks.utilities.dict_mods.
arrow_to_dot
(input_dict)¶ Converts arrows (‘->’) in dict keys to dots ‘.’ recursively. Allows for storing MongoDB neseted document queries in MongoDB.
- Parameters
input_dict (dict) –
- Returns
dict
-
fireworks.utilities.dict_mods.
get_nested_dict
(input_dict, key)¶
fireworks.utilities.filepad module¶
-
class
fireworks.utilities.filepad.
FilePad
(host='localhost', port=27017, database='fireworks', username=None, password=None, ssl=False, ssl_ca_certs=None, ssl_certfile=None, ssl_keyfile=None, ssl_pem_passphrase=None, authsource=None, uri_mode=False, mongoclient_kwargs=None, filepad_coll_name='filepad', gridfs_coll_name='filepad_gfs', logdir=None, strm_lvl=None, text_mode=False)¶ Bases:
monty.json.MSONable
-
__init__
(host='localhost', port=27017, database='fireworks', username=None, password=None, ssl=False, ssl_ca_certs=None, ssl_certfile=None, ssl_keyfile=None, ssl_pem_passphrase=None, authsource=None, uri_mode=False, mongoclient_kwargs=None, filepad_coll_name='filepad', gridfs_coll_name='filepad_gfs', logdir=None, strm_lvl=None, text_mode=False)¶ - Parameters
host (str) – hostname
port (int) – port number
database (str) – database name
username (str) –
password (str) –
ssl (bool) – use TLS/SSL for mongodb connection
ssl_ca_certs (str) – path to the CA certificate to be used for mongodb connection
ssl_certfile (str) – path to the client certificate to be used for mongodb connection
ssl_keyfile (str) – path to the client private key
ssl_pem_passphrase (str) – passphrase for the client private key
authsource (str) – authSource parameter for MongoDB authentication; defaults to “name” (i.e., db name) if not set
uri_mode (bool) – if set True, all Mongo connection parameters occur through a MongoDB URI string (set as the host).
mongoclient_kwargs (dict) – A list of any other custom keyword arguments to be passed into the MongoClient connection (non-URI mode only)
filepad_coll_name (str) – filepad collection name
gridfs_coll_name (str) – gridfs collection name
logdir (str) – path to the log directory
strm_lvl (str) – the logger stream level
text_mode (bool) – whether to use text_mode for file read/write (instead of binary). Might be useful if working only with text files between Windows and Unix systems
-
add_file
(path, identifier=None, compress=True, metadata=None)¶ Insert the file specified by the path into gridfs. The gridfs id and identifier are returned. Note: identifier must be unique, i.e, no insertion if the identifier already exists in the db.
- Parameters
- Returns
the id returned by gridfs, identifier
- Return type
-
classmethod
auto_load
()¶ Returns FilePad object
-
build_indexes
(indexes=None, background=True)¶ Build the indexes.
-
count
(filter=None, **kwargs)¶ Get the number of documents in filepad.
-
delete_file
(identifier)¶ Delete the document with the matching identifier. The contents in the gridfs as well as the associated document in the filepad are deleted.
- Parameters
identifier (str) – the file identifier
-
classmethod
from_db_file
(db_file, admin=True)¶ - Parameters
db_file (str) – path to the filepad cred file
- Returns
FilePad object
-
get_file
(identifier)¶ Get file by identifier
-
get_file_by_id
(gfs_id)¶
-
get_file_by_query
(query, sort_key=None, sort_direction=- 1)¶
-
reset
()¶ Reset filepad and the gridfs collections
-
update_file
(identifier, path, compress=True)¶ Update the filecontents in the gridfs, update the gfs_id in the document and retain the rest.
-
update_file_by_id
(gfs_id, path, compress=True)¶ Update the file in the gridfs with the given id and retain the rest of the document.
-
fireworks.utilities.fw_serializers module¶
-
fireworks.utilities.fw_serializers.
DATETIME_HANDLER
(obj)¶
-
class
fireworks.utilities.fw_serializers.
FWSerializable
¶ Bases:
object
To create a serializable object within FireWorks, you should subclass this class and implement the to_dict() and from_dict() methods.
If you want the load_object() implicit de-serialization to work, you must also:
Use the @serialize_fw decorator on to_dict()
Override the _fw_name parameter with a unique key.
See documentation of load_object() for more details.
The use of @classmethod for from_dict allows you to define a superclass that implements the to_dict() and from_dict() for all its subclasses.
For an example of serialization, see the class QueueAdapterBase.
-
as_dict
()¶
-
abstract classmethod
from_dict
(m_dict)¶
-
classmethod
from_file
(filename, f_format=None)¶ Load a serialization of this object from a file.
-
classmethod
from_format
(f_str, f_format='json')¶ convert from a String representation to its Object.
-
property
fw_name
¶
-
to_db_dict
()¶
-
abstract
to_dict
()¶
-
to_file
(filename, f_format=None, **kwargs)¶ Write a serialization of this object to a file.
-
fireworks.utilities.fw_serializers.
get_default_serialization
(cls)¶
-
fireworks.utilities.fw_serializers.
load_object
(obj_dict)¶ Creates an instantiation of a class based on a dictionary representation. We implicitly determine the Class through introspection along with information in the dictionary.
We search for a class with the _fw_name property equal to obj_dict[‘_fw_name’] If the @module key is set, that module is checked first for a matching class to improve speed of lookup. Afterwards, the modules in the USER_PACKAGES global parameter are checked.
Refactoring class names, module names, etc. will not break object loading as long as:
the _fw_name property is maintained the same AND
the refactored module is kept within USER_PACKAGES
You can get around these limitations if you really want: i) If you want to change the fw_name of an object you can set the FW_NAME_UPDATES key ii) If you want to put a refactored module in a new place add an entry to USER_PACKAGES
- Parameters
obj_dict (dict) – the dict representation of the class
-
fireworks.utilities.fw_serializers.
load_object_from_file
(filename, f_format=None)¶ Implicitly load an object from a file. just a friendly wrapper to load_object()
-
fireworks.utilities.fw_serializers.
reconstitute_dates
(obj_dict)¶
-
fireworks.utilities.fw_serializers.
recursive_deserialize
(func)¶ a decorator to add FW serializations keys see documentation of FWSerializable for more details
-
fireworks.utilities.fw_serializers.
recursive_dict
(obj, preserve_unicode=True)¶
-
fireworks.utilities.fw_serializers.
recursive_serialize
(func)¶ a decorator to add FW serializations keys see documentation of FWSerializable for more details
-
fireworks.utilities.fw_serializers.
serialize_fw
(func)¶ a decorator to add FW serializations keys see documentation of FWSerializable for more details
fireworks.utilities.fw_utilities module¶
-
class
fireworks.utilities.fw_utilities.
DataServer
(address=None, authkey=None, serializer='pickle', ctx=None)¶ Bases:
multiprocessing.managers.BaseManager
Provide a server that can host shared objects between multiprocessing Processes (that normally can’t share data). For example, a common LaunchPad is shared between processes and pinging launches is coordinated to limit DB hits.
-
class
fireworks.utilities.fw_utilities.
NestedClassGetter
¶ Bases:
object
Used to help pickle inner classes, e.g. see Workflow.Links When called with the containing class as the first argument, and the name of the nested class as the second argument, returns an instance of the nested class.
-
fireworks.utilities.fw_utilities.
create_datestamp_dir
(root_dir, l_logger, prefix='block_')¶ Internal method to create a new block or launcher directory. The dir name is based on the time and the FW_BLOCK_FORMAT
- Parameters
root_dir – directory to create the new dir in
l_logger – the logger to use
prefix – the prefix for the new dir, default=”block_”
-
fireworks.utilities.fw_utilities.
explicit_serialize
(o)¶
-
fireworks.utilities.fw_utilities.
get_fw_logger
(name, l_dir=None, file_levels=('DEBUG', 'ERROR'), stream_level='DEBUG', formatter=<logging.Formatter object>, clear_logs=False)¶ Convenience method to return a logger.
- Parameters
name – name of the logger that sets the groups, e.g. ‘group1.set2’
l_dir – the directory to put the log file
file_levels – iterable describing level(s) to log to file(s). default: (‘DEBUG’, ‘ERROR’)
stream_level – level to log to standard output. default: ‘DEBUG’
formatter – logging format. default: FW_LOGGING_FORMATTER
clear_logs – whether to clear the logger with the same name
-
fireworks.utilities.fw_utilities.
get_my_host
()¶
-
fireworks.utilities.fw_utilities.
get_my_ip
()¶
-
fireworks.utilities.fw_utilities.
get_slug
(m_str)¶
-
fireworks.utilities.fw_utilities.
log_exception
(m_logger, msgs)¶ A shortcut wrapper around log_fancy for exceptions
- Parameters
m_logger (logger) – The logger object
msgs ([str]) – String or iterable of Strings, will be joined by newlines
-
fireworks.utilities.fw_utilities.
log_fancy
(m_logger, msgs, log_lvl='info', add_traceback=False)¶ A wrapper around the logger messages useful for multi-line logs. Helps to group log messages by adding a fancy border around it, which enhances readability of log lines meant to be read as a unit.
-
fireworks.utilities.fw_utilities.
log_multi
(m_logger, msg, log_lvl='info')¶
-
fireworks.utilities.fw_utilities.
plot_wf
(wf, depth_factor=1.0, breadth_factor=2.0, labels_on=True, numerical_label=False, text_loc_factor=1.0, save_as=None, style='rD--', markersize=10, markerfacecolor='blue', fontsize=12)¶ Generate a visual representation of the workflow. Useful for checking whether the firework connections are in order before launching the workflow.
- Parameters
wf (Workflow) – workflow object.
depth_factor (float) – adjust this to stretch the plot in y direction.
breadth_factor (float) – adjust this to stretch the plot in x direction.
labels_on (bool) – whether to label the nodes or not. The default is to lable the nodes using the firework names.
numerical_label (bool) – set this to label the nodes using the firework ids.
text_loc_factor (float) – adjust the label location.
save_as (str) – save the figure to the given name.
style (str) – marker style.
markersize (int) – marker size.
markerfacecolor (str) – marker face color.
fontsize (int) – font size for the node label.
-
fireworks.utilities.fw_utilities.
redirect_local
()¶ temporarily redirect stdout or stderr to fws.error and fws.out
fireworks.utilities.update_collection module¶
-
fireworks.utilities.update_collection.
update_launchpad_data
(lp, replacements, **kwargs)¶ If you want to update a text string in your entire FireWorks database with a replacement, use this method. For example, you might want to update a directory name preamble like “/scratch/user1” to “/project/user2”. The algorithm does a text replacement over the entire BSON document. The original collection is backed up within the database with extension “_xiv_{Date}”.
- Parameters
(LaunchPad) (lp) – a FireWorks LaunchPad object
(dict) (replacements) – e.g. {“old_path1”: “new_path1”, “scratch/”:”project/”}
kwargs – Additional arguments accepted by the update_path_in_collection method
-
fireworks.utilities.update_collection.
update_path_in_collection
(db, collection_name, replacements, query=None, dry_run=False, force_clear=False)¶ updates the text specified in replacements for the documents in a MongoDB collection. This can be used to mass-update an outdated value (e.g., a directory path or tag) in that collection. The algorithm does a text replacement over the entire BSON document. The original collection is backed up within the database with extension “_xiv_{Date}”.
- Parameters
db (Database) – MongoDB db object
collection_name (str) – name of a MongoDB collection to update
replacements (dict) – e.g. {“old_path1”: “new_path1”, “scratch/”:”project/”}
query (dict) – criteria for query, default None if you want all documents to be updated
dry_run (bool) – if True, only a new collection with new paths is created and original “collection” is not replaced
force_clear (bool) – careful! If True, the collection “{}_temp_refactor”.format(collection) is removed!
- Returns
None, but if dry_run==False it replaces the collection with the updated one