@@ -2071,7 +2071,8 @@ def describe_list_indices(full_list):
20712071 return unique_elements , element_indices
20722072
20732073
2074- def _infer_sig_len (file_name , fmt , n_sig , dir_name , pn_dir = None ):
2074+ def _infer_sig_len (file_name , fmt , tsamps_per_frame , byte_offset ,
2075+ dir_name , pn_dir = None ):
20752076 """
20762077 Infer the length of a signal from a dat file.
20772078
@@ -2081,8 +2082,10 @@ def _infer_sig_len(file_name, fmt, n_sig, dir_name, pn_dir=None):
20812082 Name of the dat file.
20822083 fmt : str
20832084 WFDB fmt of the dat file.
2084- n_sig : int
2085- Number of signals contained in the dat file.
2085+ tsamps_per_frame : int
2086+ Total number of samples per frame contained in the dat file.
2087+ byte_offset : int or None
2088+ The byte offset of the dat file. None is equivalent to zero.
20862089 dir_name : str
20872090 The full directory where the dat file(s) are located, if the dat
20882091 file(s) are local.
@@ -2093,11 +2096,11 @@ def _infer_sig_len(file_name, fmt, n_sig, dir_name, pn_dir=None):
20932096 Returns
20942097 -------
20952098 sig_len : int
2096- The length of the signal.
2099+ The length of the signal file in frames .
20972100
20982101 Notes
20992102 -----
2100- sig_len * n_sig * bytes_per_sample == file_size
2103+ sig_len * tsamps_per_frame * bytes_per_sample == file_size
21012104
21022105 """
21032106 if pn_dir is None :
@@ -2106,7 +2109,10 @@ def _infer_sig_len(file_name, fmt, n_sig, dir_name, pn_dir=None):
21062109 file_size = download ._remote_file_size (file_name = file_name ,
21072110 pn_dir = pn_dir )
21082111
2109- sig_len = int (file_size / (BYTES_PER_SAMPLE [fmt ] * n_sig ))
2112+ if byte_offset is None :
2113+ byte_offset = 0
2114+ data_size = file_size - byte_offset
2115+ sig_len = int (data_size / (BYTES_PER_SAMPLE [fmt ] * tsamps_per_frame ))
21102116
21112117 return sig_len
21122118
0 commit comments