code: def forward(
      self, x, edge_index, edge_weight, weights, selected_idx=None
  ):
      if selected_idx is None:
          fin = []
          for w, op, op_name in zip(weights, self._ops, gnn_list):
              """if op_name == "gcn":
                  w = 1.0
              else:
                  continue"""
              if edge_weight == None:
                  fin.append(w * op(x, edge_index))
              else:
                  fin.append(
                      w * op(x, edge_index, edge_weight=edge_weight)
                  )
          return sum(fin)
          # return sum(w * op(x, edge_index) for w, op in zip(weights, self._ops))
      else:  # unchosen operations are pruned
          return self._ops[selected_idx](x, edge_index)
  
imports: import typing
  from .None import register_nas_space
  from .base import apply_fixed_architecture
  from .base import BaseSpace
  from ...model import BaseAutoModel
  from ....utils import get_logger
  from ..backend import *
  from ..utils import count_parameters, measure_latency
  import torch
  import torch.nn
  import torch.nn.functional
  from torch.nn import Module
  from .gasso_space import *
  from torch.autograd import Variable
  from collections import namedtuple
label_desc: Use image node_id 2 for calling the MixedOp obj's underlying member method code with example usage: obj.forward(x, edge_index, edge_weight, weights, selected_idx) and returns: sum, self