docstr: Generic down convolution for partial dense data
  
  Arguments:
      x [N, C] -- features
      pos [N, 3] -- positions
      x_neighbour [N, n_neighbours, C] -- features of the neighbours of each point in x
      pos_centered_neighbour [N, n_neighbours, 3]  -- position of the neighbours of x_i centred on x_i
      idx_neighbour [N, n_neighbours] -- indices of the neighbours of each point in pos
      idx_sampler [n]  -- points to keep for the output
  
  Raises:
      NotImplementedError: [description]
docstr_tok: ["Generic","down","convolution","for","partial","dense","data","Arguments",":","x","[","N",",","C","]","--","features","pos","[","N",",","3","]","--","positions","x_neighbour","[","N",",","n_neighbours",",","C","]","--","features","of","the","neighbours","of","each","point","in","x","pos_centered_neighbour","[","N",",","n_neighbours",",","3","]","--","position","of","the","neighbours","of","x_i","centred","on","x_i","idx_neighbour","[","N",",","n_neighbours","]","--","indices","of","the","neighbours","of","each","point","in","pos","idx_sampler","[","n","]","--","points","to","keep","for","the","output","Raises",":","NotImplementedError",":","[","description","]"]
code: def conv(
      self,
      x,
      pos,
      x_neighbour,
      pos_centered_neighbour,
      idx_neighbour,
      idx_sampler,
  ):
      """Generic down convolution for partial dense data
  
      Arguments:
          x [N, C] -- features
          pos [N, 3] -- positions
          x_neighbour [N, n_neighbours, C] -- features of the neighbours of each point in x
          pos_centered_neighbour [N, n_neighbours, 3]  -- position of the neighbours of x_i centred on x_i
          idx_neighbour [N, n_neighbours] -- indices of the neighbours of each point in pos
          idx_sampler [n]  -- points to keep for the output
  
      Raises:
          NotImplementedError: [description]
      """
      raise NotImplementedError
  
imports: from typing import *
  import torch
  from torch.nn import Linear, ReLU, LeakyReLU, BatchNorm1d, Dropout
  from torch_geometric.nn import knn_interpolate, fps, radius, global_max_pool, global_mean_pool, knn
  from torch_geometric.data import Batch
  from torch_points3d.core.spatial_ops import *
  from .base_conv import BaseConvolution
  from torch_points3d.core.common_modules.base_modules import BaseModule
  from torch_points3d.core.common_modules import MLP
label_desc: Use image node_id 2 for calling the BasePartialDenseConvolutionDown obj's underlying member method code with example usage: obj.conv(x, pos, x_neighbour, pos_centered_neighbour, idx_neighbour, idx_sampler) without return types