OscarDB
This module provides a general database framework which, conceptually, works for all OSCAR types.
There are two main ingredients:
- the database backend is MongoDB;
- communication with the database relies on OSCAR's serialization, via the mrdi file format [D-VJL24*1].
The overall design is inspired by polymake's PolyDB.
Collections
The database is organized into collections. Within each collection the datasets are uniform.
Vertex-transitive combinatorial manifolds [TransitiveSimplicialComplexes]
The OSCAR DB provides access to Frank Lutz' collection of vertex transitive triangulations. It comprises all vertex-transitive combinatorial manifolds with up to 15 vertices in dimensions $d=2,3,9,10,11,12$. In the remaining dimensions below 12, the enumeration is complete up to 13 vertices.
See also [Lut08].
Leech pairs [LeechPairs]
The OSCAR DB provides access to the fixed-point sublattices of the Leech lattice, computed by Gerald Höhn and Geoffrey Mason. Each entry of the collection is a pair consisting of a copy of the Leech lattice and of the largest subgroup of the Conway group fixing pointwise the associated fixed-point sublattice.
See also [HM16], Table 1, and the supplementary non-published tables.
Small trees database [AlgebraicStatistics.SmallTreeModels]
The OSCAR DB provides access to all models listed in Algebraic Phylogenetics, see also Small Phylogenetic Trees for the list of contributors. The list comprises of phylogenetic models on trees with up to 5 leaves. We are currently working on updating our models in the database to contain the exact same information as the Algebraic Phylogenetics and to eventually have the website pull its data from our database.
Status
This part of OSCAR is in an experimental state; please see Adding new projects to experimental for what this means.
Contact
Please direct questions about this part of OSCAR to the following people:
- Antony Della Vecchia
- Benjamin Lorenz
You can ask questions in the OSCAR Slack.
Alternatively, you can raise an issue on github.
get_db — Function
get_db()Connect to the OscarDB and return Database instance.
The uri of the server can be set in advance by writing its String representation into ENV["OSCARDBTESTURI"]. (used to connect to the github services container for testing)
Examples
julia> db = Oscar.OscarDB.get_db();
julia> typeof(db)
Oscar.OscarDB.DatabaseThis function is part of the experimental code in Oscar. Please read here for more details.
find_one — Function
find_one(c::Collection{T}, d::Dict=Dict(); opts::Union{Nothing, Dict})Return one document from a collection c matching the criteria given by d. T can be chosen from Polymake.BigObject and Mongoc.BSON. Apply search options opts.
Examples
Here we show how to find one vertex-transitive combinatorial surface with reduced rational Betti numbers $\tilde\beta_0 = \beta_1 = \beta_2 = 0$. The dimension of the manifold is here implicitly given as the length of the vector of Betti numbers less one.
In this case we find the unique six-vertex triangulation of the real projective plane.
julia> db = Oscar.OscarDB.get_db();
julia> tsc = Oscar.OscarDB.find_one(db["TransitiveSimplicialComplexes"], Dict("data.betti_numbers" => ["0", "0", "0", "1"]));
julia> n_facets(simplicial_complex(tsc))
35This function is part of the experimental code in Oscar. Please read here for more details.
find — Function
find(c::Collection{T}, d::Dict=Dict(); opts::Union{Nothing, Dict})Returns an iterator over documents in the collection c which match the criteria given by d. Apply search options opts.
Examples
Here we show how to find all vertex-transitive 3-dimensional rational homology spheres in that database (i.e., with up to 15 vertices).
The dimension $d$ of the manifold is here implicitly given as the length of the vector of Betti numbers less one.
julia> db = Oscar.OscarDB.get_db();
julia> tscit = Oscar.OscarDB.find(db["TransitiveSimplicialComplexes"], Dict("data.betti_numbers" => ["0", "0", "0", "1"]));
julia> length([tsc for tsc in tscit])
63This function is part of the experimental code in Oscar. Please read here for more details.
length — Function
length(c::Collection, d::Dict=Dict())Count documents in a collection c matching the criteria given by d.
Examples
Same as above, but faster.
julia> db = Oscar.OscarDB.get_db();
julia> tscit = Oscar.OscarDB.find(db["TransitiveSimplicialComplexes"], Dict("data.betti_numbers" => ["0", "0", "0", "1"]));
julia> length(tscit)
63This function is part of the experimental code in Oscar. Please read here for more details.
getindex — Method
getindex(db::Database, name::AbstractString)Return a Oscar.OscarDB.Collection instance from db with the given name.
Examples
julia> Oscar.OscarDB.get_collection_names(db)
4-element Vector{String}:
"zzlattices"
"LeechPairs"
"Surfaces"
"TransitiveSimplicialComplexes"
julia> c = db["LeechPairs"];
julia> length(c)
290This function is part of the experimental code in Oscar. Please read here for more details.
get_collection_names — Function
get_collection_names(db::Database)Return a Vector{String} containing the names of all collections in the OscarDB, excluding meta collections.
Examples
julia> db = Oscar.OscarDB.get_db();
julia> Oscar.OscarDB.get_collection_names(db)
4-element Vector{String}:
"zzlattices"
"LeechPairs"
"Surfaces"
"TransitiveSimplicialComplexes"This function is part of the experimental code in Oscar. Please read here for more details.