#pulsar #archive #database

argos-arpa

A pulsar data archive for the ARGOS project (https://argos-telescope.eu/)

5 releases

Uses new Rust 2024

new 0.3.4 Nov 3, 2025
0.3.3 Oct 15, 2025
0.3.2 Sep 12, 2025
0.3.1 Sep 2, 2025
0.3.0 Sep 2, 2025

#78 in Science

Download history 101/week @ 2025-08-27 125/week @ 2025-09-03 165/week @ 2025-09-10 8/week @ 2025-09-17 8/week @ 2025-09-24 8/week @ 2025-10-01 158/week @ 2025-10-15 6/week @ 2025-10-22

173 downloads per month

MIT license

125KB
2.5K SLoC

logo

arpa - a package for pulsar science in ARGOS

GitHub license Crates.io Version GitHub docs

This is still under development.

Keeps track of TOAs and related things. This is mostly based off of TOASTER by Patrick Lazarus.

Most informations are split into data and metadata, e.g. toa and toa_meta. Parfiles and raw files are kept as files somewhere, and so only metadata is put in the DB.

Setup

Add the library as such:

cargo add argos-arpa

Alternatively, fork either this repo or the GUI.

To get started, you need to have a folder of sql files creating the tables you reference in the rust code, and a config .toml file. Both of their paths need to be given to Archivist's constructor.

SQL

This crate uses PostgreSQL, which means that you need to have such a DB to connect to if you want to use arpa. For testing on MacOS, there is e.g. https://postgresapp.com.

Usage

Running the pipeline

There is a Pipeline struct that you'll want to use. It is expected to change internally, but the interface should remain very similar.

First, you create a PipelineSettings object, e.g.:

let settings = PipelineSettings::from_file("pipeline.toml")
.unwrap_or_else(|_| PipelineSettings::default());

Then you create a Pipeline object with your input data and settings, and call run with an Archivist and a status callback function.

let mut pipeline = Pipeline::setup(
    raw_file, 
    template,
    ephemeride, 
    settings,
);
pipeline.run(
    &mut archivist, 
    |status: Status| log::info!("{status}"),
).await?;

Debugging

arpa makes frequent use of the log crate, and so it is suggested to use env_logger or similar to debug. sqlx does so too, so be vary of the sheer amount of debug level logs you may face (e.g. one per query) if you're not selectively setting the level.

New tables

If you fork this and want to add more tables, the derive macro might come in handy. The only necessities is that

  1. the struct contains a field id: i32; and
  2. you add a new entry in the Table enum.

In the future, support will be added for custom tables without forking.

GUI

There is a GUI application being developed for internal use, publicly available at https://github.com/SGullin/arpa-gui.

License

argos-arpa is distributed under the terms of the MIT License.

The ARGOS logo belongs to the ARGOS Consortium.

Dependencies

~37–52MB
~818K SLoC