<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def expand_by_edge_filter(source, target, edge_predicates: EdgePredicates):
 """Expand a target graph by edges in the source matching the given predicates. :param pybel.BELGraph source: A BEL graph :param pybel.BELGraph target: A BEL graph :param edge_predicates: An edge predicate or list of edge predicates :return: A BEL sub-graph induced over the edges passing the given filters :rtype: pybel.BELGraph """

    target.add_edges_from(
        (u, v, k, source[u][v][k])
        for u, v, k in filter_edges(source, edge_predicates=edge_predicates)
    )

    update_node_helper(source, target)
    update_metadata(source, target)