code: def test_suite_different_properties_per_check(coco_visiondata_train):
      props = [
          {
              "name": "texture",
              "method": texture_level,
              "output_type": "numerical",
          }
      ]
      check1 = ImagePropertyOutliers(image_properties=props)
      check2 = ImagePropertyOutliers()
      suite = Suite("prop_suite", check1, check2)
      result = suite.run(coco_visiondata_train)
      assert_that(
          list(result.results[0].value.keys()),
          contains_exactly("texture"),
      )
      assert_that(
          sorted(result.results[1].value.keys()),
          equal_to(sorted(x["name"] for x in default_image_properties)),
      )
  
imports: from hamcrest import assert_that, calling, close_to, contains_exactly, equal_to, is_, raises
  from deepchecks.core.errors import DeepchecksValueError
  from deepchecks.vision import Suite
  from deepchecks.vision.checks import ImagePropertyOutliers
  from deepchecks.vision.utils.image_properties import calc_default_image_properties, default_image_properties, texture_level
  from deepchecks.vision.utils.label_prediction_properties import DEFAULT_CLASSIFICATION_LABEL_PROPERTIES, DEFAULT_CLASSIFICATION_PREDICTION_PROPERTIES, DEFAULT_OBJECT_DETECTION_LABEL_PROPERTIES, DEFAULT_OBJECT_DETECTION_PREDICTION_PROPERTIES, DEFAULT_SEMANTIC_SEGMENTATION_LABEL_PROPERTIES, DEFAULT_SEMANTIC_SEGMENTATION_PREDICTION_PROPERTIES
  from deepchecks.vision.utils.vision_properties import calc_vision_properties, validate_properties
label_desc: Use image node_id 14 for calling a global function with example usage: test_suite_different_properties_per_check(coco_visiondata_train) without return types