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:

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