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.
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 — Functionget_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 — Functionfind_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 — Functionfind(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 — Functionlength(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 — Methodgetindex(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 — Functionget_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.