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:

You can ask questions in the OSCAR Slack.

Alternatively, you can raise an issue on github.

get_dbFunction
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.Database
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
find_oneFunction
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))
35
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
findFunction
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])
63
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
lengthFunction
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)
63
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
getindexMethod
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)
290
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
get_collection_namesFunction
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"
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source