compositional-explanations 0.0.3__tar.gz → 0.0.3.2__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 → compositional_explanations-0.0.3.2}/LICENSE +0 -0
  2. {compositional_explanations-0.0.3/src/compositional_explanations.egg-info → compositional_explanations-0.0.3.2}/PKG-INFO +1 -1
  3. {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/README.md +0 -0
  4. {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/pyproject.toml +1 -1
  5. {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations/metrics.py +9 -7
  6. {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations/optimal.py +3 -3
  7. {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations/optimal_sample_heuristic.py +2 -2
  8. {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations/optimal_sum_heuristic.py +2 -2
  9. {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2/src/compositional_explanations.egg-info}/PKG-INFO +1 -1
  10. {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations.egg-info/SOURCES.txt +4 -4
  11. {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations.egg-info/top_level.txt +1 -1
  12. {compositional_explanations-0.0.3/src/utils → compositional_explanations-0.0.3.2/src/package_utils}/constants.py +0 -0
  13. {compositional_explanations-0.0.3/src/utils → compositional_explanations-0.0.3.2/src/package_utils}/general_utils.py +0 -0
  14. {compositional_explanations-0.0.3/src/utils → compositional_explanations-0.0.3.2/src/package_utils}/mask_utils.py +2 -1
  15. {compositional_explanations-0.0.3/src/utils → compositional_explanations-0.0.3.2/src/package_utils}/optimal_utils.py +2 -2
  16. {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/setup.cfg +0 -0
  17. {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations/beam.py +0 -0
  18. {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations/formula.py +0 -0
  19. {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations/path_heuristic.py +0 -0
  20. {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations.egg-info/dependency_links.txt +0 -0
  21. {compositional_explanations-0.0.3 → compositional_explanations-0.0.3.2}/src/compositional_explanations.egg-info/requires.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: compositional_explanations
3
- Version: 0.0.3
3
+ Version: 0.0.3.2
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "compositional_explanations"
7
- version = "0.0.3"
7
+ version = "0.0.3.2"
8
8
  authors = [
9
9
  { name="Biagio La Rosa", email="bilarosa@ucsc.edu" },
10
10
  ]
@@ -7,7 +7,7 @@ import functools
7
7
 
8
8
  import torch
9
9
 
10
- from utils import mask_utils
10
+ from package_utils import mask_utils
11
11
 
12
12
 
13
13
  @functools.lru_cache(maxsize=10)
@@ -43,17 +43,19 @@ def iou(vector1, vector2):
43
43
  return score
44
44
 
45
45
 
46
+
46
47
  def compute_iou_from_masks(*, formula, masks, bitmaps):
47
- """Compute the intersection over union between two vectors.
48
+ """Compute the IoU between a formula mask and a bitmap.
48
49
  Args:
49
- vector1 (torch.Tensor): A tensor of shape (N, H, W) where N is the
50
- number of sample.
51
- vector2 (torch.Tensor): A tensor of shape (N, H, W) where N is the
52
- number of sample.
50
+ formula (str): A string representing the formula.
51
+ masks (dict): A dictionary mapping concepts to their corresponding binary masks.
52
+ bitmaps (torch.Tensor): A tensor of shape (N, H, W) where N is the number of samples.
53
53
  Returns:
54
- iou (float): The intersection over union between the two vectors.
54
+ iou (float): The intersection over union between the formula mask and the bitmap.
55
55
  """
56
56
  formula_mask = mask_utils.get_formula_mask(formula, masks)
57
+ if formula_mask.device != bitmaps.device:
58
+ formula_mask = formula_mask.to(bitmaps.device)
57
59
  intersection = torch.count_nonzero(formula_mask & bitmaps).item()
58
60
  v1_size = compute_hits(formula_mask).item()
59
61
  v2_size = compute_hits(bitmaps).item()
@@ -8,8 +8,8 @@ import torch
8
8
 
9
9
  from compositional_explanations import formula as F
10
10
  from compositional_explanations import path_heuristic
11
- from utils import optimal_utils, mask_utils
12
- from utils.constants import INDEX_OR, INDEX_AND, INDEX_NOT
11
+ from package_utils import optimal_utils, mask_utils, general_utils
12
+ from package_utils.constants import INDEX_OR, INDEX_AND, INDEX_NOT
13
13
 
14
14
 
15
15
  def update_frontier_by_ancestors(
@@ -924,7 +924,7 @@ def compute_optimal_explanations(*, masks, bitmaps, disjoint_info, length, devic
924
924
  bitmaps = bitmaps.to(device)
925
925
 
926
926
  masks_info = mask_utils.get_dataset_info(masks, cache_dir)
927
- max_size_mask = torch.numel(masks[0])
927
+ max_size_mask = torch.numel(general_utils.parse_mask_by_type(masks[0]))
928
928
 
929
929
  # Get quantities
930
930
  neuron_quantities, concept_quantities = optimal_utils.get_optimal_heuristic_info(
@@ -3,9 +3,9 @@
3
3
 
4
4
  import numpy as np
5
5
 
6
- from utils import optimal_utils
6
+ from package_utils import optimal_utils
7
7
  from compositional_explanations import formula as F
8
- from utils.constants import (
8
+ from package_utils.constants import (
9
9
  TOP_INDEX_SAMPLE,
10
10
  BOTTOM_INDEX_SAMPLE,
11
11
  BOTTOM_INDEX_SUM,
@@ -2,9 +2,9 @@
2
2
 
3
3
  import numpy as np
4
4
 
5
- from utils import optimal_utils
5
+ from package_utils import optimal_utils
6
6
  from compositional_explanations import formula as F
7
- from utils.constants import TOP_INDEX_SUM, BOTTOM_INDEX_SUM
7
+ from package_utils.constants import TOP_INDEX_SUM, BOTTOM_INDEX_SUM
8
8
 
9
9
 
10
10
  def estimate_disjoint_label_info(label, *, left_quantities, right_quantities):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: compositional_explanations
3
- Version: 0.0.3
3
+ Version: 0.0.3.2
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
@@ -13,7 +13,7 @@ src/compositional_explanations.egg-info/SOURCES.txt
13
13
  src/compositional_explanations.egg-info/dependency_links.txt
14
14
  src/compositional_explanations.egg-info/requires.txt
15
15
  src/compositional_explanations.egg-info/top_level.txt
16
- src/utils/constants.py
17
- src/utils/general_utils.py
18
- src/utils/mask_utils.py
19
- src/utils/optimal_utils.py
16
+ src/package_utils/constants.py
17
+ src/package_utils/general_utils.py
18
+ src/package_utils/mask_utils.py
19
+ src/package_utils/optimal_utils.py
@@ -1,2 +1,2 @@
1
1
  compositional_explanations
2
- utils
2
+ package_utils
@@ -4,7 +4,7 @@ import pickle
4
4
 
5
5
  import torch
6
6
 
7
- from utils import general_utils
7
+ from package_utils import general_utils
8
8
  from compositional_explanations import formula as F
9
9
 
10
10
 
@@ -24,6 +24,7 @@ def get_dataset_info(masks, info_directory):
24
24
  print("Loading dataset info from cache...")
25
25
  common_elements, unique_elements, uncoverable_elements = pickle.load(file)
26
26
  else:
27
+ print("Computing dataset info...")
27
28
  # Compute unique elements
28
29
  sum_elements = torch.zeros_like(
29
30
  general_utils.parse_mask_by_type(masks[1]), dtype=torch.int32
@@ -7,8 +7,8 @@ import torch
7
7
  import numpy as np
8
8
 
9
9
  from compositional_explanations import formula as F
10
- from utils import general_utils
11
- from utils.constants import (
10
+ from package_utils import general_utils
11
+ from package_utils.constants import (
12
12
  QUANTITIES,
13
13
  INDEX_TUPLE_MAX,
14
14
  INDEX_TUPLE_MIN,