Skip to content

BINData

Class for IQ Data RAW formats

xaratustrah@github Aug-2015

BINData

Bases: IQBase

Source code in iqtools/bindata.py
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class BINData(IQBase):
    def __init__(self, filename):
        super().__init__(filename)

        # Additional fields in this subclass
        self.date_time = time.ctime(os.path.getctime(self.filename))
        self.center = 0.0
        # each complex64 sample is 8 bytes on disk
        self.nsamples_total = os.path.getsize(filename) / 8

    def read(self, nframes=10, lframes=1024, sframes=0):
        """Read a section of the file.

        Args:
            nframes (int, optional): Number of frames to be read. Defaults to 10.
            lframes (int, optional): Length of each frame. Defaults to 1024.
            sframes (int, optional): Starting frame. Defaults to 0.
        """        
        self.read_samples(nframes * lframes, offset=sframes * lframes)

    def read_samples(self, nsamples, offset=0):
        """Read samples. Requries the first value to be the header.
        Please also check the function:
            write_signal_to_bin
        in the `tools`.

        Args:
            nsamples (int): Number of samples to read from file
            offset (int, optional): _description_. Defaults to 0.

        Raises:
            ValueError: Raises if the requested number of samples is larger than available
        """        
        if nsamples > self.nsamples_total - offset:
            raise ValueError(
                'Requested number of samples is larger than the available {} samples.'.format(self.nsamples_total))

        x = np.fromfile(self.filename, dtype=np.complex64)
        self.fs = float(np.real(x[0]))
        self.center = float(np.imag(x[0]))
        all_data = x[1:]

        self.data_array = all_data[offset:nsamples + offset]

read(nframes=10, lframes=1024, sframes=0)

Read a section of the file.

Parameters:

Name Type Description Default
nframes int

Number of frames to be read. Defaults to 10.

10
lframes int

Length of each frame. Defaults to 1024.

1024
sframes int

Starting frame. Defaults to 0.

0
Source code in iqtools/bindata.py
25
26
27
28
29
30
31
32
33
def read(self, nframes=10, lframes=1024, sframes=0):
    """Read a section of the file.

    Args:
        nframes (int, optional): Number of frames to be read. Defaults to 10.
        lframes (int, optional): Length of each frame. Defaults to 1024.
        sframes (int, optional): Starting frame. Defaults to 0.
    """        
    self.read_samples(nframes * lframes, offset=sframes * lframes)

read_samples(nsamples, offset=0)

Read samples. Requries the first value to be the header. Please also check the function: write_signal_to_bin in the tools.

Parameters:

Name Type Description Default
nsamples int

Number of samples to read from file

required
offset int

description. Defaults to 0.

0

Raises:

Type Description
ValueError

Raises if the requested number of samples is larger than available

Source code in iqtools/bindata.py
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
def read_samples(self, nsamples, offset=0):
    """Read samples. Requries the first value to be the header.
    Please also check the function:
        write_signal_to_bin
    in the `tools`.

    Args:
        nsamples (int): Number of samples to read from file
        offset (int, optional): _description_. Defaults to 0.

    Raises:
        ValueError: Raises if the requested number of samples is larger than available
    """        
    if nsamples > self.nsamples_total - offset:
        raise ValueError(
            'Requested number of samples is larger than the available {} samples.'.format(self.nsamples_total))

    x = np.fromfile(self.filename, dtype=np.complex64)
    self.fs = float(np.real(x[0]))
    self.center = float(np.imag(x[0]))
    all_data = x[1:]

    self.data_array = all_data[offset:nsamples + offset]