haritsahm commited on
Commit
8c5fd52
·
1 Parent(s): b260939

Update filter to sort by cc first

Browse files
Files changed (2) hide show
  1. main.py +8 -1
  2. tests/test_file_filters.py +23 -2
main.py CHANGED
@@ -67,13 +67,16 @@ def filter_files(files: List) -> List:
67
  table = np.zeros((2, 2), dtype=bool)
68
  bin_left = 0
69
  bin_right = 0
70
- for file in file_paths:
 
71
 
72
  splits = file.name.split('_')
73
 
74
  # Check if view is present
75
  if any(['cc' in part.lower() for part in splits]):
76
  table[0, :] = [True, True]
 
 
77
  if any(['mlo' in part.lower() for part in splits]):
78
  table[1, :] = [True, True]
79
 
@@ -85,6 +88,10 @@ def filter_files(files: List) -> List:
85
  table[:, 1] &= True
86
  bin_right += 1
87
 
 
 
 
 
88
  # Reset side that has not enough files
89
  if bin_left < 2:
90
  table[:, 0] &= False
 
67
  table = np.zeros((2, 2), dtype=bool)
68
  bin_left = 0
69
  bin_right = 0
70
+ cc_first = False
71
+ for idx, file in enumerate(file_paths):
72
 
73
  splits = file.name.split('_')
74
 
75
  # Check if view is present
76
  if any(['cc' in part.lower() for part in splits]):
77
  table[0, :] = [True, True]
78
+ if idx == 0:
79
+ cc_first = True
80
  if any(['mlo' in part.lower() for part in splits]):
81
  table[1, :] = [True, True]
82
 
 
88
  table[:, 1] &= True
89
  bin_right += 1
90
 
91
+ # Ensure cc_first
92
+ if not cc_first:
93
+ file_paths.reverse()
94
+
95
  # Reset side that has not enough files
96
  if bin_left < 2:
97
  table[:, 0] &= False
tests/test_file_filters.py CHANGED
@@ -23,13 +23,16 @@ def filter_files(files: List[str]):
23
  table = np.zeros((2, 2), dtype=bool)
24
  bin_left = 0
25
  bin_right = 0
26
- for file in file_paths:
 
27
 
28
  splits = file.name.split('_')
29
 
30
  # Check if view is present
31
  if any(['cc' in part.lower() for part in splits]):
32
  table[0, :] = [True, True]
 
 
33
  if any(['mlo' in part.lower() for part in splits]):
34
  table[1, :] = [True, True]
35
 
@@ -41,6 +44,10 @@ def filter_files(files: List[str]):
41
  table[:, 1] &= True
42
  bin_right += 1
43
 
 
 
 
 
44
  # Reset side that has not enough files
45
  if bin_left < 2:
46
  table[:, 0] &= False
@@ -61,7 +68,7 @@ def filter_files(files: List[str]):
61
  (['left_cc.png', 'left_cc.png'], False),
62
  (['left_mlo.png', 'right_cc.png'], False),
63
  (['no_mlo.png', 'left_cc.png'], False),
64
- (['left_cc.png', 'left_mlo.png'], True),
65
  (['right_cc.jpg', 'right_mlo.png'], True),
66
  ]
67
  )
@@ -72,3 +79,17 @@ def test_filter_files(file_paths, expectation):
72
  else:
73
  with pytest.raises(Exception) as _:
74
  _ = filter_files(file_paths)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  table = np.zeros((2, 2), dtype=bool)
24
  bin_left = 0
25
  bin_right = 0
26
+ cc_first = False
27
+ for idx, file in enumerate(file_paths):
28
 
29
  splits = file.name.split('_')
30
 
31
  # Check if view is present
32
  if any(['cc' in part.lower() for part in splits]):
33
  table[0, :] = [True, True]
34
+ if idx == 0:
35
+ cc_first = True
36
  if any(['mlo' in part.lower() for part in splits]):
37
  table[1, :] = [True, True]
38
 
 
44
  table[:, 1] &= True
45
  bin_right += 1
46
 
47
+ # Ensure cc_first
48
+ if not cc_first:
49
+ file_paths.reverse()
50
+
51
  # Reset side that has not enough files
52
  if bin_left < 2:
53
  table[:, 0] &= False
 
68
  (['left_cc.png', 'left_cc.png'], False),
69
  (['left_mlo.png', 'right_cc.png'], False),
70
  (['no_mlo.png', 'left_cc.png'], False),
71
+ (['left_mlo.png', 'left_cc.png'], True),
72
  (['right_cc.jpg', 'right_mlo.png'], True),
73
  ]
74
  )
 
79
  else:
80
  with pytest.raises(Exception) as _:
81
  _ = filter_files(file_paths)
82
+
83
+
84
+ @pytest.mark.parametrize('unordered_paths,ordered_paths',
85
+ [
86
+ (['left_mlo.png', 'left_cc.png'],
87
+ ['left_cc.png', 'left_mlo.png']),
88
+ (['right_cc.jpg', 'right_mlo.png'],
89
+ ['right_cc.jpg', 'right_mlo.png']),
90
+ ]
91
+ )
92
+ def test_sort_files(unordered_paths, ordered_paths):
93
+ filtered_paths = filter_files(unordered_paths)
94
+ filtered_paths = [str(path) for path in filtered_paths]
95
+ assert filtered_paths == ordered_paths