save_dedispersed_data(
original_file_path,
summed_data,
dm_range,
tsamp,
verbose=True,
)
Save the dedispersed and summed data to an HDF5
Args:
original_file_path (str): Path to the original input HDF5 file
summed_data (torch.Tensor): The dedispersed data summed over frequency
dm_range (torch.Tensor): Dispersion measure values corresponding to the data
tsamp (float): Time sampling resolution in seconds
verbose (bool): Whether to print status messages
Source code in pytorch_dedispersion/dedisperse_candidates_large_hdf.py
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 | def save_dedispersed_data(
original_file_path: str,
summed_data: torch.Tensor,
dm_range: torch.Tensor,
tsamp: float,
verbose: bool = True,
) -> None:
"""
Save the dedispersed and summed data to an HDF5
Args:
original_file_path (str): Path to the original input HDF5 file
summed_data (torch.Tensor): The dedispersed data summed over frequency
dm_range (torch.Tensor): Dispersion measure values corresponding to the data
tsamp (float): Time sampling resolution in seconds
verbose (bool): Whether to print status messages
"""
# Extract base name from original file
base_name = os.path.splitext(os.path.basename(original_file_path))[0]
output_filename = f"dedispersed_{base_name}.h5"
# Ensure no existing file conflicts
if os.path.exists(output_filename):
os.remove(output_filename)
# Convert to CPU before saving
summed_data_cpu = summed_data.cpu().numpy()
dm_range_cpu = dm_range.cpu().numpy()
with h5py.File(output_filename, 'w') as hf:
hf.create_dataset(
"summed_data",
data=summed_data_cpu,
compression="gzip",
compression_opts=9
)
hf.create_dataset(
"dm_values",
data=dm_range_cpu,
compression="gzip",
compression_opts=9
)
# Store metadata
hf.attrs["tsamp"] = tsamp
hf.attrs["nDM"] = summed_data.shape[0]
hf.attrs["nTime"] = summed_data.shape[1]
if verbose:
print(f"Dedispersed data saved to {output_filename}")
|