compositional-explanations 0.0.3.3__tar.gz → 0.0.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (21) hide show
  1. {compositional_explanations-0.0.3.3/src/compositional_explanations.egg-info → compositional_explanations-0.0.4}/PKG-INFO +2 -1
  2. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/pyproject.toml +1 -1
  3. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/src/compositional_explanations/optimal.py +8 -0
  4. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/src/compositional_explanations/optimal_sample_heuristic.py +2 -2
  5. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4/src/compositional_explanations.egg-info}/PKG-INFO +2 -1
  6. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/src/package_utils/mask_utils.py +1 -2
  7. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/LICENSE +0 -0
  8. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/README.md +0 -0
  9. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/setup.cfg +0 -0
  10. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/src/compositional_explanations/beam.py +0 -0
  11. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/src/compositional_explanations/formula.py +0 -0
  12. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/src/compositional_explanations/metrics.py +0 -0
  13. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/src/compositional_explanations/optimal_sum_heuristic.py +0 -0
  14. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/src/compositional_explanations/path_heuristic.py +0 -0
  15. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/src/compositional_explanations.egg-info/SOURCES.txt +0 -0
  16. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/src/compositional_explanations.egg-info/dependency_links.txt +0 -0
  17. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/src/compositional_explanations.egg-info/requires.txt +0 -0
  18. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/src/compositional_explanations.egg-info/top_level.txt +0 -0
  19. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/src/package_utils/constants.py +0 -0
  20. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/src/package_utils/general_utils.py +0 -0
  21. {compositional_explanations-0.0.3.3 → compositional_explanations-0.0.4}/src/package_utils/optimal_utils.py +0 -0
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: compositional_explanations
3
- Version: 0.0.3.3
3
+ Version: 0.0.4
4
4
  Summary: Package to compute Compositional Explanations both in their optimal and beam format.
5
5
  Author-email: Biagio La Rosa <bilarosa@ucsc.edu>
6
6
  License: MIT
7
7
  Project-URL: Homepage, https://github.com/aiea-lab/optimal-compositional-explanations
8
8
  Project-URL: Issues, https://github.com/aiea-lab/optimal-compositional-explanations/issues
9
+ Platform: UNKNOWN
9
10
  Classifier: Programming Language :: Python :: 3
10
11
  Classifier: Operating System :: OS Independent
11
12
  Requires-Python: >=3.8
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "compositional_explanations"
7
- version = "0.0.3.3"
7
+ version = "0.0.4"
8
8
  authors = [
9
9
  { name="Biagio La Rosa", email="bilarosa@ucsc.edu" },
10
10
  ]
@@ -121,6 +121,14 @@ def apply_distributive_property(node):
121
121
  # considering the transformations since computing ((A AND NOT C) OR (B AND NOT C)) is more accurate than
122
122
  # computing ((A OR B) AND NOT C) since everythin is a pariwise estimation.
123
123
  return label
124
+ if external_op == F.Or:
125
+ # We do not rewrite (A AND B) OR C as (A OR C) AND (B OR C).
126
+ # Otherwise, it would put C on both sides of an AND.
127
+ # Our code assumes that AND removes always the unique elements,
128
+ # since it aassumes the concepts cannot be repeated.
129
+ # Therefore, it would underestimate the denominator of the IoU,
130
+ # leading to a lower upper bound.
131
+ return label
124
132
  label_left = label.left
125
133
  num_left_op = len(set(label_left.get_ops()))
126
134
  if num_left_op == 1:
@@ -368,8 +368,8 @@ def estimate_label_info(label, left_quantities, right_quantities, neuron_quantit
368
368
  # OR can't reduce the extras
369
369
  return None
370
370
 
371
- left_can_be_improved = np.where(min_left_common_intersection < neuron_common, True, False) & np.where(min_right_common_intersection > 0, True, False)
372
- right_can_be_improved = np.where(min_right_common_intersection < neuron_common, True, False) & np.where(min_left_common_intersection > 0, True, False)
371
+ left_can_be_improved = np.where(min_left_common_intersection < neuron_common, True, False) & np.where(max_right_common_intersection > 0, True, False)
372
+ right_can_be_improved = np.where(min_right_common_intersection < neuron_common, True, False) & np.where(max_left_common_intersection > 0, True, False)
373
373
  if (right_unique_intersection_sum == 0 and not left_can_be_improved.any()) or (left_unique_intersection_sum == 0 and not right_can_be_improved.any()):
374
374
  # If for a sample the min left intersection is already maximum, the right component cannot improve the score
375
375
  # Similarly, if the minimum common intersection of the right element is 0, it cannot improve the score for that sample
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: compositional_explanations
3
- Version: 0.0.3.3
3
+ Version: 0.0.4
4
4
  Summary: Package to compute Compositional Explanations both in their optimal and beam format.
5
5
  Author-email: Biagio La Rosa <bilarosa@ucsc.edu>
6
6
  License: MIT
7
7
  Project-URL: Homepage, https://github.com/aiea-lab/optimal-compositional-explanations
8
8
  Project-URL: Issues, https://github.com/aiea-lab/optimal-compositional-explanations/issues
9
+ Platform: UNKNOWN
9
10
  Classifier: Programming Language :: Python :: 3
10
11
  Classifier: Operating System :: OS Independent
11
12
  Requires-Python: >=3.8
@@ -21,10 +21,9 @@ def get_dataset_info(masks, info_directory):
21
21
  file_path = f"{info_directory}/quantities.pkl"
22
22
  if info_directory is not None and os.path.exists(file_path):
23
23
  with open(file_path, "rb") as file:
24
- print("Loading dataset info from cache...")
25
24
  common_elements, unique_elements, uncoverable_elements = pickle.load(file)
26
25
  else:
27
- print("Computing dataset info...")
26
+ print("Dataset info not found in cache. Computing it. This process may take a while.")
28
27
  # Compute unique elements
29
28
  sum_elements = torch.zeros_like(
30
29
  general_utils.parse_mask_by_type(masks[1]), dtype=torch.int32