Skip to content

pytorch_dedispersion.dedisperse_candidates_large_hdf

save_dedispersed_data

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}")