docs: def generate_ppi_network(
          ppi_graph_path: str,
          dge_list: List[Gene],
          max_adj_p: float,
          max_log2_fold_change: float,
          min_log2_fold_change: float,
          ppi_edge_min_confidence: Optional[float] = None,
          current_disease_ids_path: Optional[str] = None,
          disease_associations_path: Optional[str] = None,
  ) -> Network:
      """Generate the protein-protein interaction network.
  
      :return Network: Protein-protein interaction network with information on differential expression.
      """
      # Compilation of a protein-protein interaction (PPI) graph (HIPPIE)
      protein_interactions = parsers.parse_ppi_graph(ppi_graph_path, ppi_edge_min_confidence)
      protein_interactions = protein_interactions.simplify()
  
      if disease_associations_path is not None and current_disease_ids_path is not None:
          current_disease_ids = parsers.parse_disease_ids(current_disease_ids_path)
          disease_associations = parsers.parse_disease_associations(disease_associations_path,
                                                                    current_disease_ids)
      else:
          disease_associations = None
  
      # Build an undirected weighted graph with the remaining interactions based on Entrez gene IDs
      network = Network(
          protein_interactions,
          max_adj_p=max_adj_p,
          max_l2fc=max_log2_fold_change,
          min_l2fc=min_log2_fold_change,
      )
      network.set_up_network(dge_list, disease_associations=disease_associations)
  
      return network