<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def supervise(project, workspace, namespace, workflow, sample_sets, recovery_file):
 """ Supervise submission of jobs from a Firehose-style workflow of workflows"""

    # Get arguments

    logging.info("Initializing FireCloud Supervisor...")
    logging.info("Saving recovery checkpoints to " + recovery_file)

    # Parse workflow description
    # these three objects must be saved in order to recover the supervisor

    args = {
        'project'  : project,
        'workspace': workspace,
        'namespace': namespace,
        'workflow' : workflow,
        'sample_sets': sample_sets
    }

    monitor_data, dependencies = init_supervisor_data(workflow, sample_sets)
    recovery_data = {
        'args' : args,
        'monitor_data' : monitor_data,
        'dependencies' : dependencies
    }

    # Monitor loop. Keep going until all nodes have been evaluated
    supervise_until_complete(monitor_data, dependencies, args, recovery_file)