@@ -2071,7 +2071,8 @@ def describe_list_indices(full_list):
2071
2071
return unique_elements , element_indices
2072
2072
2073
2073
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 ):
2075
2076
"""
2076
2077
Infer the length of a signal from a dat file.
2077
2078
@@ -2081,8 +2082,10 @@ def _infer_sig_len(file_name, fmt, n_sig, dir_name, pn_dir=None):
2081
2082
Name of the dat file.
2082
2083
fmt : str
2083
2084
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.
2086
2089
dir_name : str
2087
2090
The full directory where the dat file(s) are located, if the dat
2088
2091
file(s) are local.
@@ -2093,11 +2096,11 @@ def _infer_sig_len(file_name, fmt, n_sig, dir_name, pn_dir=None):
2093
2096
Returns
2094
2097
-------
2095
2098
sig_len : int
2096
- The length of the signal.
2099
+ The length of the signal file in frames .
2097
2100
2098
2101
Notes
2099
2102
-----
2100
- sig_len * n_sig * bytes_per_sample == file_size
2103
+ sig_len * tsamps_per_frame * bytes_per_sample == file_size
2101
2104
2102
2105
"""
2103
2106
if pn_dir is None :
@@ -2106,7 +2109,10 @@ def _infer_sig_len(file_name, fmt, n_sig, dir_name, pn_dir=None):
2106
2109
file_size = download ._remote_file_size (file_name = file_name ,
2107
2110
pn_dir = pn_dir )
2108
2111
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 ))
2110
2116
2111
2117
return sig_len
2112
2118
0 commit comments