Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
3c5f082
Allow StatusLogger to look at multiple file queues.
jaycedowell Nov 25, 2024
1f5f0bd
Pull in dr_vbeam.py.
jaycedowell Nov 25, 2024
8a48c9a
Add on a couple of extra cores.
jaycedowell Nov 25, 2024
e9f8efb
Tweak the filename for raw voltage recordings.
jaycedowell Nov 25, 2024
468b715
Down select to RawRecord and BND.
jaycedowell Nov 25, 2024
3c8b2e4
Extra r.
jaycedowell Nov 25, 2024
d7153ee
Try a combined command processor.
jaycedowell Nov 25, 2024
9d6bdcc
Time fix plus better logging.
jaycedowell Nov 25, 2024
54f0091
Override these as well.
jaycedowell Nov 25, 2024
d04fadd
Fix a few things related to monitoring multiple file queues.
jaycedowell Nov 25, 2024
5ab96f9
Another place that needs an update.
jaycedowell Nov 25, 2024
cddb4e8
Typo.
jaycedowell Nov 25, 2024
fd6bc47
Ah, this is needed earlier than I thought.
jaycedowell Nov 25, 2024
322afd4
Some day...
jaycedowell Nov 25, 2024
b2aa396
This might finally be it.
jaycedowell Nov 25, 2024
561f088
Nope, there's a typo.
jaycedowell Nov 25, 2024
408bab1
Type problem here as well.
jaycedowell Nov 25, 2024
b4e06c8
Start 'server' at 1.
jaycedowell Nov 27, 2024
e95cbdd
Work on growing the bandwidth that raw_record can output.
jaycedowell Nov 27, 2024
9a0c5c5
Fix the packet burst control.
jaycedowell Nov 27, 2024
7418ccc
Need to range().
jaycedowell Nov 27, 2024
08285e4
Use integer division.
jaycedowell Nov 27, 2024
6da46ff
Use the correct integer division.
jaycedowell Nov 27, 2024
58b4f1f
We're sending too much data per pass.
jaycedowell Nov 27, 2024
b88e886
Switch to RBeam format for writing out the raw voltage beam.
jaycedowell Dec 2, 2024
9ecce05
Doc update for RBeam format and new pipeline structures.
jaycedowell Dec 2, 2024
ae4ceb3
Add a note about channel numbers and counts.
jaycedowell Dec 2, 2024
9efce39
Start with server 1 not 2.
jaycedowell Dec 2, 2024
9dcf7a9
Shape fix.
jaycedowell Dec 2, 2024
38013e1
Just 'nchan' again.
jaycedowell Dec 2, 2024
1cc945c
IBeam1 -> RBeam1 changes.
jaycedowell Dec 2, 2024
b81d910
Switch to O_DIRECT to enable higher bandwidth raw voltage beam writes.
jaycedowell Dec 2, 2024
5958178
Missed this one from the last commit.
jaycedowell Dec 2, 2024
8776c03
I missed a factor of two for the polarization count.
jaycedowell Dec 2, 2024
0d69e14
28 MHz of bandwidth is a more realistic cap.
jaycedowell Dec 2, 2024
b26b113
Change the default file permissions.
jaycedowell Dec 4, 2024
b0c88d8
Octal.
jaycedowell Dec 4, 2024
875fe9c
The combined dr_tengine.py seems to be working well enough.
jaycedowell Dec 5, 2024
6580bd4
Cleanup the docs after removeing dr_vbeam.py.
jaycedowell Dec 5, 2024
21fc937
Merge branch 'main' into reason
jaycedowell Dec 9, 2024
1b3d308
Deal with filenames that don't exist.
jaycedowell Dec 17, 2024
8e0ade7
Tie in the T-engine's raw voltage mode queue to the cancel and delete…
jaycedowell Dec 17, 2024
bed5a82
Merge branch 'main' into reason
jaycedowell Feb 11, 2025
154a496
Merge branch 'main' into reason
jaycedowell Feb 11, 2025
96aad15
Merge branch 'main' into reason
jaycedowell Feb 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ array. The software consists of two main parts: ``dr_visibilities.py`` and ``dr
manager
pbeam
vbeam
rbeam
using
modules

Expand Down
135 changes: 0 additions & 135 deletions docs/source/rbeam.rst

This file was deleted.

81 changes: 69 additions & 12 deletions docs/source/vbeam.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,38 @@ dr_tengine.py
``dr_tengine.py`` is a combination T-engine and recording pipeline for the voltage
beam mode. This pipeline captures packetized beam data from the digital system,
down selects the frequency coverage to match what is requested by the observer,
converts the data back into the time domain, and writes raw DRX files.
converts the data back into the time domain, and writes raw DRX files. This pipeline
can also save pre-T-engine data in the form of RBeam files.

Structure
---------

The pipeline is written in the Bifrost framework and has four blocks:
``CaptureOp``, ``ReChannelizerOp``, ``TEngineOp``, and ``WriterOp``.
The pipeline is written in the Bifrost framework and has six blocks:
``CaptureOp``, ``DownSelectOp``, ``RawWriterOp``, ``ReChannelizerOp``, ``TEngineOp``,
and ``WriterOp``.

* ``CaptureOp`` - This is the data capture block which is responsible for capturing
the beam packets from the digital system, ordering them in time and frequency,
and writing the organized data to a Bifrost ring.
* ``DownSelectOp`` - This takes the full voltage beam bandwidth and downselects it
to a frequency range provided by the observer.
* ``RawWriterOp`` - This reads in down selected data data and writes raw RBeam files
to disk. This block provides a way to capture pre-T-engine data.
* ``ReChannelizerOp`` - This reads in the beam data and performs an inverse FFT
followed by an FFT to change the channel width of the data to 50 kHz.
* ``TEngineOp`` - This reads in the re-channelized data, down selects the frequency
range, and performs an inverse FFT to create time domain voltage data.
* ``WriterOp`` - This reads in time domain data and writes raw DRX files to disk.

The pipeline is designed such that there is one pipeline per voltage beam. For the
expected number un-averaged beams created by the digital system this equates to 2
pipeline instances.
The pipeline is designed such that there is one pipeline per voltage beam. For the
expected number un-averaged beams created by the digital system this equates to 2
pipeline instances.

Control Commands
----------------

The ``dr_tengine.py`` pipeline supports six commands: ``ping``, ``sync``, ``record``,
``cancel``, ``delete``, and ``drx``.
The ``dr_tengine.py`` pipeline supports eight commands: ``ping``, ``sync``, ``record``,
``raw_record``, ``cancel``, ``delete``, ``drx``, and ``bnd``.

* ``ping`` - This command simply replies which is helpful to see if the pipeline
is responsive. There are no required or optional arguments. Returns a response
Expand All @@ -40,7 +46,7 @@ The ``dr_tengine.py`` pipeline supports six commands: ``ping``, ``sync``, ``reco
* ``server`` - a NTP server name or IP address to sync against.

There are no optional arguments. The command returns the sync status.
* ``record`` - This schedules a recording to take place. The required arguments to
* ``record`` - This schedules a DRX recording to take place. The required arguments to
this command are:

* ``start_mjd`` - an integer MJD value for when the recording will start,
Expand All @@ -50,7 +56,17 @@ The ``dr_tengine.py`` pipeline supports six commands: ``ping``, ``sync``, ``reco

There are no optional arguments. The command returns the name of the file that
will be written. The name will be of the format "<mjd>_<MCS sequence id>".
* ``cancel`` - This cancels a previously scheduled or active recording. The
* ``raw_record`` - This schedules a RBeam recording to take place. The required arguments to
this command are:

* ``start_mjd`` - an integer MJD value for when the recording will start,
* ``start_mpm`` - an integer number of milliseconds past midnight value on the
MJD specified in ``start_mjd`` for when the recording will start, and
* ``duration_ms`` - the number of milliseconds to record data for.

There are no optional arguments. The command returns the name of the file that
will be written. The name will be of the format "<mjd>_<MCS sequence id>".
* ``cancel`` - This cancels a previously scheduled or active DRX recording. The
required arguments to this command are:

* `queue_number` - an entry number in the recording queue to cancel.
Expand Down Expand Up @@ -80,6 +96,12 @@ The ``dr_tengine.py`` pipeline supports six commands: ``ping``, ``sync``, ``reco
There is a single optional argument of ``subslot`` which controls when the
command is implemented within the second. If not specified the default of 0
is used.
* ``bnd`` - This controls the down selection in frequency. The required arguments to
this command are:

* ``beam`` - an integer of the voltage beam number of control,
* ``central_freq`` - the central frequency of the down selection in Hz, and
* ``bw`` - the bandwidth in Hz.

Monitoring Points
-----------------
Expand Down Expand Up @@ -119,8 +141,11 @@ recorded.



Data Format
-----------
Data Formats
------------

DRX
^^^

The DRX format is a
`Mark 5C <http://www.haystack.mit.edu/tech/vlbi/mark5/mark5_memos/057.pdf>`_-based
Expand Down Expand Up @@ -198,3 +223,35 @@ DRX Numbering is as follows: DRX_ID is an unsigned 8-bit integer.
* bits 3-5 are used to represent DRX_TUNING,
* bit 6 is reserved for future use, and
* bit 7 is used to represent polarization.

RBeam
^^^^^

The RBeam format is a packetized format for storing complex frequency domain
timeseries data. The 16 B header for these packets is defined as:

.. csv-table:: Header Fields
:header: Name, Data Type, Notes

server, uint8_t, 1-based
gbe, uint8_t, not used
nchan, uint16_t, big endian
nbeam, uint8_t, always 1
nserver, uint8_t, always 1
chan0, uint16_t, big endian; first channel in packet
seq, uint64_t, big endian; 1-based

Following this header is a data section composed of little endian packed
single precision floating point values, one for each beam, channel, and
both polarizations contained in the frame. This is a 3D data structure with
axes beam x channel x polarization (X and Y).

Sequence numbers can be converted to UNIX time stamps, `t` via:

.. math::
t = seq \times \frac{8192}{196e6}.

Channel numbers (and counts) can be converted to Hz via:

.. math::
f = chan0 \times \frac{196 MHz}{8192}
Loading