@@ -40,7 +40,6 @@ def quicksort_n_tupel(arr: np.recarray) -> np.recarray:
4040 -------
4141 A list of n_tupel instances, sorted by the corr attribute.
4242 """
43- # inline sorting
4443 arr .sort (order = "corr" )
4544 return arr
4645
@@ -53,6 +52,16 @@ def quicksort_n_tupel(arr: np.recarray) -> np.recarray:
5352)
5453
5554
55+ def _resolve_frame_base (file_base : str , frame_num : int , suffix : str = "" ) -> Path :
56+ if frame_num > 0 :
57+ if "%" in file_base :
58+ return Path (file_base % frame_num + suffix )
59+ if file_base .endswith (("." , "_" , "-" , "/" )):
60+ return Path (f"{ file_base } { frame_num :04d} { suffix } " )
61+ return Path (f"{ file_base } .{ frame_num :04d} { suffix } " )
62+ return Path (f"{ file_base } { suffix } " )
63+
64+
5665# def __eq__(self, other):
5766# return self.nr == other.nr and np.all(self.p == other.p)
5867
@@ -165,17 +174,7 @@ def num_targs(self):
165174def read_targets (file_base : str , frame_num : int ) -> List [Target ]:
166175 """Read targets from a file."""
167176 buffer = []
168-
169- # # if file_base has an extension, remove it
170- # file_base = file_base.split(".")[0]
171-
172- if frame_num > 0 :
173- # filename = f"{file_base}{frame_num:04d}_targets"
174- fname = file_base % frame_num + "_targets"
175- else :
176- fname = f"{ file_base } _targets"
177-
178- filename = Path (fname )
177+ filename = _resolve_frame_base (file_base , frame_num , "_targets" )
179178 print (f" filename: { filename } " )
180179
181180 try :
@@ -214,17 +213,7 @@ def write_targets(
214213) -> bool :
215214 """Write targets to a file."""
216215 success = False
217-
218- # fix old-type names, that are like cam1.# or just cam1.
219- if "#" in file_base :
220- file_base = file_base .replace ("#" , "%05d" )
221- if "%" not in file_base :
222- file_base = file_base + "%05d"
223-
224- if frame_num == 0 :
225- frame_num = 123456789
226-
227- file_name = file_base % frame_num + "_targets"
216+ file_name = _resolve_frame_base (file_base , frame_num , "_targets" )
228217
229218 try :
230219 # Convert targets to a 2D numpy array
@@ -341,19 +330,16 @@ def read(
341330 frame_num : int ,
342331 ) -> bool :
343332 """Read a frame from the disk."""
344- required_files = [Path ( f" { corres_file_base } . { frame_num } " )]
333+ required_files = [_resolve_frame_base ( corres_file_base , frame_num )]
345334
346335 if linkage_file_base != "" :
347- required_files .append (Path ( f" { linkage_file_base } . { frame_num } " ))
336+ required_files .append (_resolve_frame_base ( linkage_file_base , frame_num ))
348337
349338 if prio_file_base != "" :
350- required_files .append (Path ( f" { prio_file_base } . { frame_num } " ))
339+ required_files .append (_resolve_frame_base ( prio_file_base , frame_num ))
351340
352341 for file_base in target_file_base :
353- if frame_num > 0 :
354- required_files .append (Path (file_base % frame_num + "_targets" ))
355- else :
356- required_files .append (Path (f"{ file_base } _targets" ))
342+ required_files .append (_resolve_frame_base (file_base , frame_num , "_targets" ))
357343
358344 for path in required_files :
359345 if not path .exists ():
0 commit comments