To use GNURadio as a data analysis platform, I’ve been developing a few
tools which I think will be useful for the general community. These are
primarily Python/command line tools intended to manipulate prerecorded
files. I’m airing them out here for some feedback to ensure I’m not
duplicating work and get helpful suggestions. I’ll make this a feature
request on GR.org if people have sufficient interest.
Header Generation:
A user may record raw RF samples to disk but have metadata collected
(frequency, sample rate, time of recording, etc) in a notebook, text
file, etc. There should be a way to generate headers to add metadata
after the fact. To this end, I’ve developed gr_mkheader which generates
detached headers given some command line inputs. This task could be
extended to manipulating existing headers.
Data File Types:
Currently, either one must know a-priori the file type of raw data, or
interpret three variables (Complex,item size, and type) if headers are
available. It is proposed these types be rolled up into a more succinct
format, such as is used in UHD [1]. These file types should also be
interpreted by gr_read_file_metadata. For example,
(Complex=true,itemsize=4,type=short) should be displayed as interleaved
shorts (sc16). There should be a table in the documentation describing
all (or common) combinations for easy reference.
File Truncation with Headers:
For long records, it is often desirable to look at a subset of the data.
While there are certainly ways to do this in GRC/Python, to my knowledge
there is no header support for this. Additionally, a different GRC
flowgraph is required for every data type. The desired program would
read a file with recorded samples and metadata and generate the subset
with proper headers. It would also take a output type and perform file
conversion. As a special case, this program can convert between file
types by asking for the entire data set instead of a strict subset. I’m
in the process of developing a program to do this.
Do the file conversion routines currently support metadata? E.g. do
they update the data type/item size tag? My understanding is that
detached headers must start immediately in the file. If we use a
head/skip N block on a stream with metadata information, will the new
headers be interpolated based on the closest header to the desired
sample subset?
[1]