2 unstable releases
new 0.2.0 | Oct 17, 2024 |
---|---|
0.1.0 | Sep 29, 2024 |
#164 in Science
361 downloads per month
49KB
937 lines
Rust VDIF
A rust crate for interacting with data encoded in the VLBI Data Interchange Format (VDIF), commonly used in radio astronomy experiments. The VDIF data format is defined in the VDIF specification, found here.
This is a minimalist crate designed to relieve the problem of dealing with VDIF data in your own applications.
Documentation is available here.
Contributing
I'd love to see contributions from the VLBI community, and if you have any suggestions or questions you can always reach out to me directly or open an issue.
Licensing
This library is licensed under either the MIT License or the Apache 2.0 License at your option.
lib.rs
:
A Rust library for interacting with data encoded in the VLBI Data Interchange Format (VDIF).
Before using this library, it is recommended you familiarize yourself with the VDIF format, if you haven't already, by reading the VDIF Version 1.1.1 specification. Put simply, VDIF defines a 'Data Frame': a datagram-like object consisting of a fixed size header and a payload of bytes.
I take some inspiration from the Python baseband library in developing this.
Getting Started
If you're working with files, you'll want to check out VDIFFileReader
, which allows
you to read VDIFFrame
s from a file like so:
fn main() {
let mut file = VDIFFileReader::open("path/to/my/vdif/file").unwrap();
// Read the first frame in the file
let frame0 = file.get_frame().unwrap();
println!("", frame0);
}
You can then read the next frame by calling get_frame
again, or skip the next
frame by calling nextframe
. If you want to read all frames from the file
(be careful with big files!), you can call get_all_frames
.
If your working with VDIF data from other sources you'll be using the more general VDIFReader
type, which allows you to wrap any type implementing std::io::Read
.
For decoding the payload, check out the encoding
module.
Dependencies
~2MB
~32K SLoC