code: def orient_undirected_graph(self, data, graph, **kwargs):
          
          # Building setup w/ arguments.
          self.arguments['{CITEST}'] = self.dir_CI_test[self.CI_test]
          self.arguments['{METHOD_INDEP}'] = self.dir_method_indep[self.method_indep]
          self.arguments['{DIRECTED}'] = 'TRUE'
          self.arguments['{ALPHA}'] = str(self.alpha)
          self.arguments['{NJOBS}'] = str(self.nb_jobs)
          self.arguments['{VERBOSE}'] = str(self.verbose).upper()
  
          fe = DataFrame(nx.adj_matrix(graph, weight=None).todense())
          fg = DataFrame(1 - fe.values)
  
          results = self._run_pc(data, fixedEdges=fe, fixedGaps=fg, verbose=self.verbose)
  
          return nx.relabel_nodes(nx.DiGraph(results),
                                  {idx: i for idx, i in enumerate(data.columns)})
docs: Run PC on an undirected graph.
  
          Args:
              data (pandas.DataFrame): DataFrame containing the data
              graph (networkx.Graph): Skeleton of the graph to orient
  
          Returns:
              networkx.DiGraph: Solution given by PC on the given skeleton.