Source code for sc_reconstruction.utils.run_tools

from __future__ import annotations

import numpy as np
import os
import glob


[docs] def read_csv_pandas_flexible(file_path): with open(file_path, 'r', encoding='utf-8') as f: first_line = f.readline() header = [col for col in first_line.strip().split(',') if col != ''] expected_columns = len(header) df = pd.read_csv( file_path, engine='python', on_bad_lines=lambda bad_line: bad_line[:expected_columns] + [''] * max(0, expected_columns - len(bad_line)), skipinitialspace=True ) df = df.iloc[:, :expected_columns] df.columns = header return df
[docs] def find_model_paths(base_dir): model_paths = {} for item in os.listdir(base_dir): item_path = os.path.join(base_dir, item) if os.path.isdir(item_path): ckpt_files = glob.glob(os.path.join(item_path, "**/*.ckpt"), recursive=True) if ckpt_files: model_paths[item] = ckpt_files[0] else: print(f"No .ckpt file found in {item_path}") return model_paths
[docs] def sample_list(items, fraction: float | None, rng: np.random.Generator): items = list(items) n = len(items) if fraction is None: return items if n == 0: return [] if fraction <= 0: return [] if fraction >= 1: return items k = max(1, int(n * fraction)) idx = rng.choice(n, size=k, replace=False) return [items[i] for i in sorted(idx)]