def read_network_file(self, path_to_network_file):
        """
        Parameters
        -----------
        path_to_network_file : str
          Expects a network file with columns "pw0" and "pw1." A "features"
          column that specifies the features where the (pw0, pw1) edge is
          present will assign a weight to the edge, though it is not required
          (edge will have weight 1 if no "features" column exists).
              "features" format: space-separated feature numbers,
              e.g. 0.0 1.0 2.0
        """
        network_df = pd.read_table(path_to_network_file)
        network_edges = {}
        for _, row in network_df.iterrows():
            vertex0_id = self.add_pathway(row["pw0"])
            vertex1_id = self.add_pathway(row["pw1"])
            edge_id = self.edge_tuple(vertex0_id, vertex1_id)
            if "features" in row:
                network_edges[edge_id] = \
                  [int(float(f)) for f in row["features"].split(" ")]
            else:
                network_edges[edge_id] = []
        self._augment_network(network_edges)
Parameters
        -----------
        path_to_network_file : str
          Expects a network file with columns "pw0" and "pw1." A "features"
          column that specifies the features where the (pw0, pw1) edge is
          present will assign a weight to the edge, though it is not required
          (edge will have weight 1 if no "features" column exists).
              "features" format: space-separated feature numbers,
              e.g. 0.0 1.0 2.0