<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def process_pybel_neighborhood(gene_names, network_file=None, network_type='belscript', **kwargs):
 """Return PybelProcessor around neighborhood of given genes in a network. This function processes the given network file and filters the returned Statements to ones that contain genes in the given list. Parameters network_file : Optional[str] Path to the network file to process. If not given, by default, the BEL Large Corpus is used. network_type : Optional[str] This function allows processing both BEL Script files and JSON files. This argument controls which type is assumed to be processed, and the value can be either 'belscript' or 'json'. Default: bel_script Returns ------- bp : PybelProcessor A PybelProcessor object which contains INDRA Statements in bp.statements. """

    if network_file is None:
        # Use large corpus as base network
        network_file = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                                    os.path.pardir, os.path.pardir,
                                    os.path.pardir, 'data', 'large_corpus.bel')
    if network_type == 'belscript':
        bp = process_belscript(network_file, **kwargs)
    elif network_type == 'json':
        bp = process_json_file(network_file)

    filtered_stmts = []
    for stmt in bp.statements:
        found = False
        for agent in stmt.agent_list():
            if agent is not None:
                if agent.name in gene_names:
                    found = True
        if found:
            filtered_stmts.append(stmt)

    bp.statements = filtered_stmts

    return bp