Crate gaia_access

Crate gaia_access 

Source
Expand description

A simple, type-safe crate to access data from the Gaia ESA Archive, which contains data on hundreds of thousands of stars.

§Usage

To keep the code that needs to be compiled at a manageable amount, every data table is hidden behind a feature flag. They follow the naming convention <schema>_<table>. See this project’s Cargo.toml for a list of all features.

In your Cargo.toml, you need to enable the tables you want to access, e.g.:

[dependencies]
gaia_access = { version = "0.1.0", features = ["gaiadr3_gaia_source"] }

There are cumulative feature flags available for schemas. If you want to use all or most of the gaiadr3 tables for example, you could depend on this crate via:

[dependencies]
gaia_access = { version = "0.1.0", features = ["gaiadr3"] }

The data query in your code is created via a builder pattern. The returned object contains a data Vec, which for all table rows contains a HashMap from column to value. The type of that value is a union of string, float and null. Knowing what type is expected for a column, it can be extracted.

§Example

use gaia_access::{
    condition::GaiaCondition,
    data::gaiadr3::{
        gaia_source::{gaia_source, Col},
        gaiadr3,
    },
    query::GaiaQueryBuilder,
    result::{get_float, get_string, GaiaCellData, GaiaResult},
};

// Get the designation and temperature of the first three stars that have a visible magnitude brighter than 5.
let magnitude_threshold = 5.0;
let query_result = GaiaQueryBuilder::new(gaiadr3, gaia_source)
        .top(3)
        .select(vec![
            Col::designation,
            Col::teff_gspphot,
        ])
        .where_clause(GaiaCondition::LessThan(
            Col::phot_g_mean_mag,
            magnitude_threshold,
        ))
        .do_query()
        .unwrap();

// From the first entry of the returned data, get the temperature value.
let temperature: &GaiaCellData = query_result
    .data[0]
    .get(&Col::teff_gspphot)
    .unwrap();

// Convert the data to a type that can be used by the rest of rust. There is no guarantee that the data exists, hence the Option return type.
let temperature: Option<f64> = get_float(temperature);

Modules§

condition
Contains the definition of the GaiaCondition enum that allows filtering query results.
data
This module contains all the known schemas and tables in the Gaia database.
error
Define the error type for the Gaia API.
query
This module implements the builder for Gaia queries.
result
This module contains the GaiaResult and GaiaCellData structs, which are used to store the results of a database query.