Skip to content

Commit f56baf8

Browse files
committed
Add tqdm to track job creation
1 parent 1e3b983 commit f56baf8

1 file changed

Lines changed: 37 additions & 26 deletions

File tree

src/simulator/diffraction_generator.py

Lines changed: 37 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -62,33 +62,44 @@ def _generate_simulation_tasks(self, n_sims_per_file, master_seed, cleanup_worke
6262
job_id_counter = 0
6363
tasks_to_run, tasks_to_skip = [], 0
6464

65-
for file_path in self.file_list:
66-
stem = Path(file_path).stem
67-
for variation_index in range(1, n_sims_per_file + 1):
68-
final_output_path = self.data_dir / f"{stem}-{variation_index}.npy"
69-
if final_output_path.exists():
70-
tasks_to_skip += 1
65+
total_planned = len(self.file_list) * int(n_sims_per_file)
66+
disable_bar = not sys.stderr.isatty()
67+
with tqdm(
68+
total=total_planned,
69+
desc="Preparing tasks",
70+
unit="task",
71+
mininterval=1.0,
72+
disable=disable_bar,
73+
) as pbar:
74+
for file_path in self.file_list:
75+
stem = Path(file_path).stem
76+
for variation_index in range(1, n_sims_per_file + 1):
77+
final_output_path = self.data_dir / f"{stem}-{variation_index}.npy"
78+
if final_output_path.exists():
79+
tasks_to_skip += 1
80+
job_id_counter += 1
81+
pbar.update(1)
82+
continue
83+
84+
worker_dir = self.worker_base_dir / f'job_{job_id_counter:09d}'
85+
params = {
86+
'job_id': job_id_counter, 'worker_dir': str(worker_dir), 'input_file': str(file_path),
87+
'output_data_dir': str(self.data_dir), 'error_dir': str(self.error_dir),
88+
'instprm_file': str(self.instprm_file), 'noise_seed': rng.integers(1e9),
89+
'strain': rng.uniform(*param_ranges['strain_range']), 'size': rng.uniform(*param_ranges['size_range']),
90+
'U': rng.uniform(*param_ranges['U_range']), 'V': rng.uniform(*param_ranges['V_range']),
91+
'W': rng.uniform(*param_ranges['W_range']), 'st': rng.uniform(*param_ranges['st_range']),
92+
'en': rng.uniform(*param_ranges['en_range']), 'Npoints': int(rng.uniform(*param_ranges['Npoints_range'])),
93+
'scaler': rng.uniform(*param_ranges['scaler_range']), 'wl': rng.uniform(*param_ranges['wl_range']),
94+
'proportional_noise_range': param_ranges['proportional_noise_range'],
95+
'constant_noise_range': param_ranges['constant_noise_range'],
96+
'cleanup_worker_dir': cleanup_worker_dirs,
97+
'output_filename': f"{stem}-{variation_index}.npy",
98+
'parse_from_comment': bool(kwargs.get('parse_from_comment', False)),
99+
}
100+
tasks_to_run.append(params)
71101
job_id_counter += 1
72-
continue
73-
74-
worker_dir = self.worker_base_dir / f'job_{job_id_counter:09d}'
75-
params = {
76-
'job_id': job_id_counter, 'worker_dir': str(worker_dir), 'input_file': str(file_path),
77-
'output_data_dir': str(self.data_dir), 'error_dir': str(self.error_dir),
78-
'instprm_file': str(self.instprm_file), 'noise_seed': rng.integers(1e9),
79-
'strain': rng.uniform(*param_ranges['strain_range']), 'size': rng.uniform(*param_ranges['size_range']),
80-
'U': rng.uniform(*param_ranges['U_range']), 'V': rng.uniform(*param_ranges['V_range']),
81-
'W': rng.uniform(*param_ranges['W_range']), 'st': rng.uniform(*param_ranges['st_range']),
82-
'en': rng.uniform(*param_ranges['en_range']), 'Npoints': int(rng.uniform(*param_ranges['Npoints_range'])),
83-
'scaler': rng.uniform(*param_ranges['scaler_range']), 'wl': rng.uniform(*param_ranges['wl_range']),
84-
'proportional_noise_range': param_ranges['proportional_noise_range'],
85-
'constant_noise_range': param_ranges['constant_noise_range'],
86-
'cleanup_worker_dir': cleanup_worker_dirs,
87-
'output_filename': f"{stem}-{variation_index}.npy",
88-
'parse_from_comment': bool(kwargs.get('parse_from_comment', False)),
89-
}
90-
tasks_to_run.append(params)
91-
job_id_counter += 1
102+
pbar.update(1)
92103

93104
if tasks_to_skip > 0: print(f"--> Found and skipped {tasks_to_skip} previously completed jobs.")
94105
for task in tasks_to_run: yield task

0 commit comments

Comments
 (0)