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.Database
This 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))
35
This 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])
63
This 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)
63
This 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)
290
This 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.