class_docstr: Adds the node degree as one hot encodings to the node features.
  
  Args:
      max_degree (int): Maximum degree.
      in_degree (bool, optional): If set to :obj:`True`, will compute the
          in-degree of nodes instead of the out-degree.
          (default: :obj:`False`)
      cat (bool, optional): Concat node degrees to node features instead
          of replacing them. (default: :obj:`True`)
class_docstr_tok: ["Adds","the","node","degree","as","one","hot","encodings","to","the","node","features",".","Args",":","max_degree","(","int",")",":","Maximum","degree",".","in_degree","(","bool",",","optional",")",":","If","set","to",":","obj",":","`","True","`",",","will","compute","the","in-degree","of","nodes","instead","of","the","out-degree",".","(","default",":",":","obj",":","`","False","`",")","cat","(","bool",",","optional",")",":","Concat","node","degrees","to","node","features","instead","of","replacing","them",".","(","default",":",":","obj",":","`","True","`",")"]
code: def __call__(self, data):
      idx, x = data.edge_index[1 if self.in_degree else 0], data.x
      deg = degree(idx, data.num_nodes, dtype=torch.long)
      deg = F.one_hot(deg, num_classes=self.max_degree + 1).to(
          torch.float
      )
  
      if x is not None and self.cat:
          x = x.view(-1, 1) if x.dim() == 1 else x
          data.x = torch.cat([x, deg.to(x.dtype)], dim=-1)
      else:
          data.x = deg
  
      return data
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  from torch_geometric.nn.conv import MessagePassing
  from torch_geometric.utils import degree, remove_self_loops, add_self_loops
label_desc: Use image node_id 2 for calling the CatDegOnehot obj's underlying member method code with example usage: obj.__call__(data) and returns: data