Skip to content

GRData

Class for IQ Data GNU Radio simple binary format reader

xaratustrah@github Aug-2018 June 2024

GRData

Bases: IQBase

Source code in iqtools/grdata.py
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
class GRData(IQBase):
    def __init__(self, filename, fs, center=0, date_time=""):
        super().__init__(filename)
        # Additional fields in this subclass
        self.date_time = date_time
        self.center = center
        self.fs = fs
        # 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.

        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.data_array = x[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/grdata.py
27
28
29
30
31
32
33
34
35
36
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.

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/grdata.py
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
def read_samples(self, nsamples, offset=0):
    """Read samples.

    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.data_array = x[offset:nsamples + offset]