class_docstr: allow to compose different filters using the boolean operation
  
  Parameters
  ----------
  list_filter: list
      list of different filter functions we want to apply
  boolean_operation: function, optional
      boolean function to compose the filter (take a pair and return a boolean)
class_docstr_tok: ["allow","to","compose","different","filters","using","the","boolean","operation","Parameters","--","--","--","--","--","list_filter",":","list","list","of","different","filter","functions","we","want","to","apply","boolean_operation",":","function",",","optional","boolean","function","to","compose","the","filter","(","take","a","pair","and","return","a","boolean",")"]
code: def __call__(self, data):
      assert len(self.list_filter) > 0
      res = self.list_filter[0](data)
      for filter_fn in self.list_filter:
          res = self.boolean_operation(res, filter_fn(data))
      return res
  
file_path: torch-points3d/torch_points3d/core/data_transform/filters.py
imports: import numpy
  import torch
  import random
  from torch_points3d.core.data_transform.features import PCACompute, compute_planarity
label_desc: Use image node_id 2 for calling the FCompose obj's underlying member method code with example usage: obj.__call__(data) and returns: res