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
GaiaResultandGaiaCellDatastructs, which are used to store the results of a database query.