code: def __init__(self, option, model_type, dataset, modules):
      FragmentBaseModel.__init__(self, option)
      self.mode = option.loss_mode
      self.normalize_feature = option.normalize_feature
      self.loss_names = ["loss_reg", "loss"]
      (
          self.metric_loss_module,
          self.miner_module,
      ) = FragmentBaseModel.get_metric_loss_and_miner(
          getattr(option, "metric_loss", None),
          getattr(option, "miner", None),
      )
  
imports: import torch
  import torch.nn
  from torch.nn import LeakyReLU, Linear, Sequential
  from torch_geometric.nn.pool.consecutive import consecutive_cluster
  from torch_geometric.nn import voxel_grid
  from torch_geometric.data import Batch
  from torch_scatter import scatter_max, scatter_mean
  from torch_points3d.applications.sparseconv3d import SparseConv3d
  from torch_points3d.core.common_modules import FastBatchNorm1d, Seq
  from torch_points3d.core.common_modules import MLP
  from torch_points3d.models.registration.base import FragmentBaseModel
label_desc: Use image node_id 1 to create a new BaseMS_SparseConv3d object from inherited base classes: FragmentBaseModel with example: obj = BaseMS_SparseConv3d(option, model_type, dataset, modules)