'Initialize dependencies and calculate first round of flows.
Returns:
set of artifact names with no dependencies that should be collected first.
Raises:
RuntimeError: On bad artifact configuration parameters.'

def GetFirstFlowsForCollection(self):

    kb_base_set = set(config.CONFIG['Artifacts.knowledge_base'])
    kb_add = set(config.CONFIG['Artifacts.knowledge_base_additions'])
    kb_skip = set(config.CONFIG['Artifacts.knowledge_base_skip'])
    if self.args.lightweight:
        kb_skip.update(config.CONFIG['Artifacts.knowledge_base_heavyweight'])
    kb_set = (kb_base_set.union(kb_add) - kb_skip)
    for artifact_name in kb_set:
        artifact_registry.REGISTRY.GetArtifact(artifact_name)
    no_deps_names = artifact_registry.REGISTRY.GetArtifactNames(os_name=self.state.knowledge_base.os, name_list=kb_set, exclude_dependents=True)
    (name_deps, self.state.all_deps) = artifact_registry.REGISTRY.SearchDependencies(self.state.knowledge_base.os, kb_set)
    name_deps = name_deps.intersection(kb_set)
    self.state.awaiting_deps_artifacts = list((name_deps - no_deps_names))
    return no_deps_names
