diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index 749069ab..e94f387f 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.2","generation_timestamp":"2024-03-25T11:36:48","documenter_version":"1.3.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.2","generation_timestamp":"2024-03-27T11:15:00","documenter_version":"1.3.0"}} \ No newline at end of file diff --git a/dev/examples/index.html b/dev/examples/index.html index 0f9fbc7f..8f9dbdc8 100644 --- a/dev/examples/index.html +++ b/dev/examples/index.html @@ -410,4 +410,4 @@ p = @pm tropical.Polytope{Max, QuadraticExtension}(POINTS=[1 0 0; 1 1 0; 1 1 1])
more information on the @pm macro can be found

here: @pm

- + diff --git a/dev/getting_started/index.html b/dev/getting_started/index.html index f81f237f..f4dbd565 100644 --- a/dev/getting_started/index.html +++ b/dev/getting_started/index.html @@ -1,2 +1,2 @@ -Getting Started · Polymake.jl - Documentation

Getting Started

This page covers the installation of Polymake.jl and where to find help.

Installation

The installation can be done in the Julia's REPL by executing

julia> using Pkg; Pkg.add("Polymake")

This will fetch a pre-built binary of polymake. You are ready to start using Polymake.

Note: Pre-built binaries are available for the Linux and macOS platform, but the macOS binaries are considered experimental. Windows users are encouraged to try running Julia inside Window Subsystem for Linux and reporting back ;)

Note: Pre-built polymake will use a separate .polymake config directory (usually joinpath(homedir(), ".julia", "polymake_user")).

Getting Help

For basic information on the usage of Polymake.jl we refer to the other sections of this documentation.

For further details on polymake and its abilities see the Polymake User Guide.

+Getting Started · Polymake.jl - Documentation

Getting Started

This page covers the installation of Polymake.jl and where to find help.

Installation

The installation can be done in the Julia's REPL by executing

julia> using Pkg; Pkg.add("Polymake")

This will fetch a pre-built binary of polymake. You are ready to start using Polymake.

Note: Pre-built binaries are available for the Linux and macOS platform, but the macOS binaries are considered experimental. Windows users are encouraged to try running Julia inside Window Subsystem for Linux and reporting back ;)

Note: Pre-built polymake will use a separate .polymake config directory (usually joinpath(homedir(), ".julia", "polymake_user")).

Getting Help

For basic information on the usage of Polymake.jl we refer to the other sections of this documentation.

For further details on polymake and its abilities see the Polymake User Guide.

diff --git a/dev/index.html b/dev/index.html index 306d6b73..0dc1e0c1 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,2 +1,2 @@ -Polymake.jl · Polymake.jl - Documentation

Polymake.jl

Polymake.jl is a Julia package for using polymake, a software for research in polyhedral geometry from Julia. This package is developed as part of the OSCAR project.

The current version of Polymake.jl relies on polymake version 4.0 or later.

Current state of the polymake wrapper

Data structures

  • Big objects, e.g., Polytopes, can be handled in Julia.
  • Several small objects (data types) from polymake are available in Polymake.jl:
    • Integers (Polymake.Integer <: Integer)
    • Rationals (Polymake.Rational <: Real)
    • Vectors (Polymake.Vector <: AbstractVector) of Int64s, Float64s, Polymake.Integers and Polymake.Rationals
    • Matrices (Polymake.Matrix <: AbstractMatrix) of Int64s, Float64s, Polymake.Integers and Polymake.Rationals
    • Sets (Polymake.Set <: AbstractSet) of Int64s
    • Arrays (Polymake.Array <: AbstractVector, as Polymake.Arrays are one-dimensional) of Int64s and Polymake.Integers
    • some combinations thereof, e.g., Polymake.Arrays of Polymake.Sets of Int32s.

These data types can be converted to appropriate Julia types, but are also subtypes of the corresponding Julia abstract types (as indicated above), and so should be accepted by all methods that apply to the abstract types.

Note: If the returned small object has not been wrapped in Polymake.jl yet, you will not be able to access its content or in general use it from Julia, however you can always pass it back as an argument to a polymake function. Moreover you may try to convert to Julia understandable type via macro @convert_to SomeType{Template, Names} obj.

Functions

  • All user functions from polymake are available in the appropriate modules, e.g. homology function from topaz can be called as topaz.homology(...) in julia. We pull the docstrings for functions from polymake as well, so ?topaz.homology (in Julia's REPL) returns the polymake docstring. Note: the syntax presented in the docstring is a polymake syntax, not Polymake.jl one.
  • Most of the user functions from polymake are available as appname.funcname(...) in Polymake.jl. Moreover, any function from polymake C++ library can be called via macro call @pm appname.funcname{C++{template, names}}(...).
  • All big objects of polymake can be constructed either via call to constructor, i.e.
obj = appname.BigObject(args)

One can specify some templates here as well: polytope.Polytope{Float64}(...) is a valid call, but the list of supported types is rather limited. Please consider filing a bug if a valid call results in polymake error. For more advanced use see section on @pm macro.

  • Properties of big objects are accessible by bigobject.property syntax (as opposed to $bigobject->property in polymake). If there is a missing property please check if it can be accessed by appname.property(object). For example polytope.Polytope does not have DIM property in Polymake.jl sinc DIM is exposed as polytope.dim(...) function.
  • Methods are available as functions in the appropriate modules, with the first argument as the object, i.e. $bigobj->methodname(...) can be called via appname.methodname(bigobj, ...)
  • A function in Polymake.jl calling polymake may return a big or small object, and the generic return (PropertyValue) is transparently converted to one of the known data types. This conversion can be deactivated by adding keep_PropertyValue=true keyword argument to function/method call.

User Guide

Funding

The development of this Julia package is supported by the Deutsche Forschungsgemeinschaft DFG within the Collaborative Research Center TRR 195.

+Polymake.jl · Polymake.jl - Documentation

Polymake.jl

Polymake.jl is a Julia package for using polymake, a software for research in polyhedral geometry from Julia. This package is developed as part of the OSCAR project.

The current version of Polymake.jl relies on polymake version 4.0 or later.

Current state of the polymake wrapper

Data structures

  • Big objects, e.g., Polytopes, can be handled in Julia.
  • Several small objects (data types) from polymake are available in Polymake.jl:
    • Integers (Polymake.Integer <: Integer)
    • Rationals (Polymake.Rational <: Real)
    • Vectors (Polymake.Vector <: AbstractVector) of Int64s, Float64s, Polymake.Integers and Polymake.Rationals
    • Matrices (Polymake.Matrix <: AbstractMatrix) of Int64s, Float64s, Polymake.Integers and Polymake.Rationals
    • Sets (Polymake.Set <: AbstractSet) of Int64s
    • Arrays (Polymake.Array <: AbstractVector, as Polymake.Arrays are one-dimensional) of Int64s and Polymake.Integers
    • some combinations thereof, e.g., Polymake.Arrays of Polymake.Sets of Int32s.

These data types can be converted to appropriate Julia types, but are also subtypes of the corresponding Julia abstract types (as indicated above), and so should be accepted by all methods that apply to the abstract types.

Note: If the returned small object has not been wrapped in Polymake.jl yet, you will not be able to access its content or in general use it from Julia, however you can always pass it back as an argument to a polymake function. Moreover you may try to convert to Julia understandable type via macro @convert_to SomeType{Template, Names} obj.

Functions

  • All user functions from polymake are available in the appropriate modules, e.g. homology function from topaz can be called as topaz.homology(...) in julia. We pull the docstrings for functions from polymake as well, so ?topaz.homology (in Julia's REPL) returns the polymake docstring. Note: the syntax presented in the docstring is a polymake syntax, not Polymake.jl one.
  • Most of the user functions from polymake are available as appname.funcname(...) in Polymake.jl. Moreover, any function from polymake C++ library can be called via macro call @pm appname.funcname{C++{template, names}}(...).
  • All big objects of polymake can be constructed either via call to constructor, i.e.
obj = appname.BigObject(args)

One can specify some templates here as well: polytope.Polytope{Float64}(...) is a valid call, but the list of supported types is rather limited. Please consider filing a bug if a valid call results in polymake error. For more advanced use see section on @pm macro.

  • Properties of big objects are accessible by bigobject.property syntax (as opposed to $bigobject->property in polymake). If there is a missing property please check if it can be accessed by appname.property(object). For example polytope.Polytope does not have DIM property in Polymake.jl sinc DIM is exposed as polytope.dim(...) function.
  • Methods are available as functions in the appropriate modules, with the first argument as the object, i.e. $bigobj->methodname(...) can be called via appname.methodname(bigobj, ...)
  • A function in Polymake.jl calling polymake may return a big or small object, and the generic return (PropertyValue) is transparently converted to one of the known data types. This conversion can be deactivated by adding keep_PropertyValue=true keyword argument to function/method call.

User Guide

Funding

The development of this Julia package is supported by the Deutsche Forschungsgemeinschaft DFG within the Collaborative Research Center TRR 195.

diff --git a/dev/using_polymake_jl/index.html b/dev/using_polymake_jl/index.html index 9ff9fb57..f9ba866c 100644 --- a/dev/using_polymake_jl/index.html +++ b/dev/using_polymake_jl/index.html @@ -29,7 +29,7 @@ 0 1 0 -

!!! Note the expression in @pm macro is parsed syntactically, so it has to be a valid julia expression. However template parameters need not to be defined in julia, but must be valid names of polymake property types. Nested types (such as {QuadraticExtension{Rational}}) are allowed.

source

The @pm macro can be used to issue more complicated calls to polymake from julia. If You need to pass templates to BigObjects, some limited support is provided in costructors. For example one can construct polytope.Polytope{Float64}(...). However for this to work templates need to be valid julia types/object, hence it is not possible to construct a Polytope<QuadraticExtension> through such call. For this (and in general: for passing more complicated templates) one needs the @pm macro:

$obj = new BigObject<Template,Parameters>(args)

becomes

obj = @pm appname.BigObject{Template, Parameters}(args)

Examples:

tropical.Polytope{max, Polymake.Rational}(POINTS=[1 0 0; 1 1 0; 1 1 1])
+

!!! Note the expression in @pm macro is parsed syntactically, so it has to be a valid julia expression. However template parameters need not to be defined in julia, but must be valid names of polymake property types. Nested types (such as {QuadraticExtension{Rational}}) are allowed.

source

The @pm macro can be used to issue more complicated calls to polymake from julia. If You need to pass templates to BigObjects, some limited support is provided in costructors. For example one can construct polytope.Polytope{Float64}(...). However for this to work templates need to be valid julia types/object, hence it is not possible to construct a Polytope<QuadraticExtension> through such call. For this (and in general: for passing more complicated templates) one needs the @pm macro:

$obj = new BigObject<Template,Parameters>(args)

becomes

obj = @pm appname.BigObject{Template, Parameters}(args)

Examples:

tropical.Polytope{max, Polymake.Rational}(POINTS=[1 0 0; 1 1 0; 1 1 1])
 # call to constructor, note that max is a julia function, hence a valid object
 @pm tropical.Polytope{Max, QuadraticExtension}(POINTS=[1 0 0; 1 1 0; 1 1 1])
 # macro call: none of the types in templates need to exist in julia

As a rule of thumb any template passed to @pm macro needs to be translatable on syntax level to a C++ one. E.g. Matrix{Integer} works, as it translates to pm::Matrix<pm::Integer>.

Such templates can be passed to functions as well. A very useful example is the common.convert_to:

julia> c = polytope.cube(3);
@@ -115,16 +115,16 @@
 POINTS
 1 2 3
 1 5/4 3/2
-

Accessing the polyDB

Polymake.jl allows the user to access the objects stored within the polyDB via the Mongoc.jl package; this functionality can be found in another sub-module, Polymake.Polydb, which requires no additional interaction to be loaded. It offers two different ways for querying, as well as some methods for information. For demonstration purposes, there also is a Jupyter notebook in the examples/ folder.

General tools

There are three types one needs to know when working with Polymake.Polydb:

Polymake.Polydb.DatabaseType
  Database

Type for referencing a specific database (usually the polyDB)

source
Polymake.Polydb.CollectionType
  Collection{T}

Type for referencing a specific collection. T<:Union{Polymake.BigObject, Mongoc.BSON} defines the template and/or element types returned by operations applied on objects of this type.

source
Polymake.Polydb.CursorType
  Cursor{T}

Type containing the results of a query. Can be iterated, but the iterator can not be reset. For this cause, one has to query again. T<:Union{Polymake.BigObject, Mongoc.BSON} defines the element types.

source

To receive the Database object referencing to the polyDB, there is the get_db() method:

Polymake.Polydb.get_dbMethod
  get_db()

Connect to the polyDB and return Database instance.

The uri of the server can be set in advance by writing its String representation into ENV["POLYDBTESTURI"]. (used to connect to the github services container for testing)

Examples

julia> db = Polymake.Polydb.get_db();
+

Accessing the polyDB

Polymake.jl allows the user to access the objects stored within the polyDB via the Mongoc.jl package; this functionality can be found in another sub-module, Polymake.Polydb, which requires no additional interaction to be loaded. It offers two different ways for querying, as well as some methods for information. For demonstration purposes, there also is a Jupyter notebook in the examples/ folder.

General tools

There are three types one needs to know when working with Polymake.Polydb:

Polymake.Polydb.CollectionType
  Collection{T}

Type for referencing a specific collection. T<:Union{Polymake.BigObject, Mongoc.BSON} defines the template and/or element types returned by operations applied on objects of this type.

source
Polymake.Polydb.CursorType
  Cursor{T}

Type containing the results of a query. Can be iterated, but the iterator can not be reset. For this cause, one has to query again. T<:Union{Polymake.BigObject, Mongoc.BSON} defines the element types.

source

To receive the Database object referencing to the polyDB, there is the get_db() method:

Polymake.Polydb.get_dbMethod
  get_db()

Connect to the polyDB and return Database instance.

The uri of the server can be set in advance by writing its String representation into ENV["POLYDBTESTURI"]. (used to connect to the github services container for testing)

Examples

julia> db = Polymake.Polydb.get_db();
 
 julia> typeof(db)
-Polymake.Polydb.Database
source

A specific Collection object can then be obtained with the brackets operator:

Base.getindexMethod
  getindex(db::Database, name::AbstractString)

Return a Polymake.Polydb.Collection{Polymake.BigObject} instance from db with the given name. Sections and collections in the name are connected with the '.' sign.

Examples

julia> db = Polymake.Polydb.get_db();
+Polymake.Polydb.Database
source

A specific Collection object can then be obtained with the brackets operator:

Base.getindexMethod
  getindex(db::Database, name::AbstractString)

Return a Polymake.Polydb.Collection{Polymake.BigObject} instance from db with the given name. Sections and collections in the name are connected with the '.' sign.

Examples

julia> db = Polymake.Polydb.get_db();
 
 julia> collection = getindex(db, "Polytopes.Lattice.SmoothReflexive")
 Polymake.Polydb.Collection{Polymake.BigObject}: Polytopes.Lattice.SmoothReflexive
 
 julia> collection = db["Matroids.Small"]
-Polymake.Polydb.Collection{Polymake.BigObject}: Matroids.Small
source

By default, the results are parsed to Polymake.BigObjects when accessed, but one may choose to change this behaviour by adjusting the typing template of Collection or Cursor using the following method:

Polymake.Polydb.CollectionMethod
  Collection{T}(c::Collection)

Create another Collection object with a specific template parameter referencing the same collection as c. T can be chosen from Polymake.BigObject and Mongoc.BSON.

Examples

julia> db = Polymake.Polydb.get_db();
+Polymake.Polydb.Collection{Polymake.BigObject}: Matroids.Small
source

By default, the results are parsed to Polymake.BigObjects when accessed, but one may choose to change this behaviour by adjusting the typing template of Collection or Cursor using the following method:

Polymake.Polydb.CollectionMethod
  Collection{T}(c::Collection)

Create another Collection object with a specific template parameter referencing the same collection as c. T can be chosen from Polymake.BigObject and Mongoc.BSON.

Examples

julia> db = Polymake.Polydb.get_db();
 
 julia> collection = db["Polytopes.Lattice.SmoothReflexive"]
 Polymake.Polydb.Collection{Polymake.BigObject}: Polytopes.Lattice.SmoothReflexive
@@ -133,7 +133,7 @@
 Polymake.Polydb.Collection{Mongoc.BSON}: Polytopes.Lattice.SmoothReflexive
 
 julia> collection_bo = Polymake.Polydb.Collection{Polymake.BigObject}(collection_bson)
-Polymake.Polydb.Collection{Polymake.BigObject}: Polytopes.Lattice.SmoothReflexive
source

Information

Polymake.Polydb.infoFunction
  info(db::Database, level::Base.Integer=1)

Print a structured list of the sections and collections of the Polydb together with information about each of these (if existent).

Detail of the output determined by value of level:

  • 1: short description,
  • 2: description,
  • 3: description, authors, maintainers,
  • 4: full info,
  • 5: full info and list of recommended search fields.
source
  info(c::Collection, level::Base.Integer=1)

Print information about collection c (if existent).

Detail of the output determined by value of level:

  • 1: short description,
  • 2: description,
  • 3: description, authors, maintainers,
  • 4: full info,
  • 5: full info and list of recommended search fields.
source
Polymake.Polydb.get_collection_namesFunction
  get_collection_names(db::Database)

Return a Vector{String} containing the names of all collections in the Polydb, excluding meta collections.

Examples

julia> db = Polymake.Polydb.get_db();
+Polymake.Polydb.Collection{Polymake.BigObject}: Polytopes.Lattice.SmoothReflexive
source

Information

Polymake.Polydb.infoFunction
  info(db::Database, level::Base.Integer=1)

Print a structured list of the sections and collections of the Polydb together with information about each of these (if existent).

Detail of the output determined by value of level:

  • 1: short description,
  • 2: description,
  • 3: description, authors, maintainers,
  • 4: full info,
  • 5: full info and list of recommended search fields.
source
  info(c::Collection, level::Base.Integer=1)

Print information about collection c (if existent).

Detail of the output determined by value of level:

  • 1: short description,
  • 2: description,
  • 3: description, authors, maintainers,
  • 4: full info,
  • 5: full info and list of recommended search fields.
source
Polymake.Polydb.get_collection_namesFunction
  get_collection_names(db::Database)

Return a Vector{String} containing the names of all collections in the Polydb, excluding meta collections.

Examples

julia> db = Polymake.Polydb.get_db();
 
 julia> Polymake.Polydb.get_collection_names(db)
 16-element Vector{String}:
@@ -148,7 +148,7 @@
  "Tropical.Cubics"
  "Tropical.SchlaefliFan"
  "Polytopes.Lattice.Reflexive"
- "Polytopes.Combinatorial.CombinatorialTypes"
source
Polymake.Polydb.get_fieldsFunction
  get_fields(c::Collection)

Return a Vector{String} containing the names of the fields of c.

Examples

julia> db = Polymake.Polydb.get_db();
+ "Polytopes.Combinatorial.CombinatorialTypes"
source
Polymake.Polydb.get_fieldsFunction
  get_fields(c::Collection)

Return a Vector{String} containing the names of the fields of c.

Examples

julia> db = Polymake.Polydb.get_db();
 
 julia> collection = db["Matroids.Small"]
 Polymake.Polydb.Collection{Polymake.BigObject}: Matroids.Small
@@ -166,7 +166,7 @@
  "REGULAR"
  "TRANSVERSAL"
  "IDENTICALLY_SELF_DUAL"
- "BETA_INVARIANT"
source

Querying

There are two ways for querying within Polymake.jl.

Methods

Mongoc.findFunction
find(collection::Collection, bson_filter::BSON=BSON();
+ "BETA_INVARIANT"
source

Querying

There are two ways for querying within Polymake.jl.

Methods

Mongoc.findFunction
find(collection::Collection, bson_filter::BSON=BSON();
     options::Union{Nothing, BSON}=nothing) :: Cursor

Executes a query on collection and returns an iterable Cursor.

Example

function find_contract_codes(collection, criteria::Dict=Dict()) :: Vector{String}
     result = Vector{String}()
 
@@ -189,18 +189,18 @@
 julia> results = Polymake.Polydb.find(collection, query);
 
 julia> typeof(results)
-Polymake.Polydb.Cursor{Polymake.BigObject}
source
  find(c::Collection{T}, d::Pair...)

Search a collection c for documents matching the criteria given by d.

Examples

julia> db = Polymake.Polydb.get_db();
+Polymake.Polydb.Cursor{Polymake.BigObject}
source
  find(c::Collection{T}, d::Pair...)

Search a collection c for documents matching the criteria given by d.

Examples

julia> db = Polymake.Polydb.get_db();
 
 julia> collection = db["Polytopes.Lattice.SmoothReflexive"];
 
 julia> results = Polymake.Polydb.find(collection, "DIM"=>3, "N_FACETS"=>5);
 
 julia> typeof(results)
-Polymake.Polydb.Cursor{Polymake.BigObject}
source

Macros

Polymake.Polydb.@selectMacro

Polymake.Polydb.@select collectionName

This macro can be used as part of a chain for easy (i.e. human readable) querying. Generate a method asking a container for the entry with key collectionName.

See also: @filter, @map

Examples

julia> db = Polymake.Polydb.get_db();
+Polymake.Polydb.Cursor{Polymake.BigObject}
source

Macros

Polymake.Polydb.@selectMacro

Polymake.Polydb.@select collectionName

This macro can be used as part of a chain for easy (i.e. human readable) querying. Generate a method asking a container for the entry with key collectionName.

See also: @filter, @map

Examples

julia> db = Polymake.Polydb.get_db();
 
 julia> collection = db |>
        Polymake.Polydb.@select("Polytopes.Lattice.SmoothReflexive")
-Polymake.Polydb.Collection{Polymake.BigObject}: Polytopes.Lattice.SmoothReflexive
source
Polymake.Polydb.@filterMacro

Polymake.Polydb.@filter conditions...

This macro can be used as part of a chain for easy (i.e. human readable) querying. Convert conditions into the corresponding Dict and generate a method expanding its input by this Dict. Multiple conditions can be passed in the same line and/or in different lines.

See also: @select, @map

Examples

julia> db = Polymake.Polydb.get_db();
+Polymake.Polydb.Collection{Polymake.BigObject}: Polytopes.Lattice.SmoothReflexive
source
Polymake.Polydb.@filterMacro

Polymake.Polydb.@filter conditions...

This macro can be used as part of a chain for easy (i.e. human readable) querying. Convert conditions into the corresponding Dict and generate a method expanding its input by this Dict. Multiple conditions can be passed in the same line and/or in different lines.

See also: @select, @map

Examples

julia> db = Polymake.Polydb.get_db();
 
 julia> query_tuple = db |>
        Polymake.Polydb.@select("Polytopes.Lattice.SmoothReflexive") |>
@@ -225,7 +225,7 @@
         Andreas Paffenholz, paffenholz@opt.tu-darmstadt.de, TU Darmstadt
         Benjamin Lorenz, paffenholz@opt.tu-darmstadt.de, TU Berlin
         Mikkel Oebro
-    Fields: AFFINE_HULL, CONE_DIM, DIM, EHRHART_POLYNOMIAL, F_VECTOR, FACET_SIZES, FACET_WIDTHS, FACETS, H_STAR_VECTOR, LATTICE_DEGREE, LATTICE_VOLUME, LINEALITY_SPACE, N_BOUNDARY_LATTICE_POINTS, N_EDGES, N_FACETS, N_INTERIOR_LATTICE_POINTS, N_LATTICE_POINTS, N_RIDGES, N_VERTICES, REFLEXIVE, SMOOTH, SELF_DUAL, SIMPLE, TERMINAL, VERTEX_SIZES, VERTICES, VERTICES_IN_FACETS, VERY_AMPLE, ALTSHULER_DET, BALANCED, CENTROID, DIAMETER, NORMAL, N_HILBERT_BASIS, IS_PRISM, IS_PRODUCT, IS_SKEW_PRISM, IS_SIMPLEX_SUM, PRISM_BASE, PRODUCT_FACTORS, SIMPLEX_SUM_BASES, SKEW_PRISM_BASES, Dict{String,Any}("DIM" => Dict{String,Any}("$lte" => 3),"N_VERTICES" => Dict{String,Any}("$eq" => 8)))
source
Polymake.Polydb.@mapMacro

Polymake.Polydb.@map [optFields...]

This macro can be used as part of a chain for easy (i.e. human readable) querying. Generate a method running a query given a Tuple{Collection, Dict}. If optFields are given (as Strings), the results only contain the stated fields and the objects metadata.

See also: @select, @filter

Examples

julia> db = Polymake.Polydb.get_db();
+    Fields: AFFINE_HULL, CONE_DIM, DIM, EHRHART_POLYNOMIAL, F_VECTOR, FACET_SIZES, FACET_WIDTHS, FACETS, H_STAR_VECTOR, LATTICE_DEGREE, LATTICE_VOLUME, LINEALITY_SPACE, N_BOUNDARY_LATTICE_POINTS, N_EDGES, N_FACETS, N_INTERIOR_LATTICE_POINTS, N_LATTICE_POINTS, N_RIDGES, N_VERTICES, REFLEXIVE, SMOOTH, SELF_DUAL, SIMPLE, TERMINAL, VERTEX_SIZES, VERTICES, VERTICES_IN_FACETS, VERY_AMPLE, ALTSHULER_DET, BALANCED, CENTROID, DIAMETER, NORMAL, N_HILBERT_BASIS, IS_PRISM, IS_PRODUCT, IS_SKEW_PRISM, IS_SIMPLEX_SUM, PRISM_BASE, PRODUCT_FACTORS, SIMPLEX_SUM_BASES, SKEW_PRISM_BASES, Dict{String,Any}("DIM" => Dict{String,Any}("$lte" => 3),"N_VERTICES" => Dict{String,Any}("$eq" => 8)))
source
Polymake.Polydb.@mapMacro

Polymake.Polydb.@map [optFields...]

This macro can be used as part of a chain for easy (i.e. human readable) querying. Generate a method running a query given a Tuple{Collection, Dict}. If optFields are given (as Strings), the results only contain the stated fields and the objects metadata.

See also: @select, @filter

Examples

julia> db = Polymake.Polydb.get_db();
 
 julia> results = db |>
        Polymake.Polydb.@select("Polytopes.Lattice.SmoothReflexive") |>
@@ -239,4 +239,4 @@
  Polymake.BigObjectAllocated(Ptr{Nothing} @0x000000000a431470)
  Polymake.BigObjectAllocated(Ptr{Nothing} @0x000000000bcaf290)
  Polymake.BigObjectAllocated(Ptr{Nothing} @0x00000000098fb670)
- Polymake.BigObjectAllocated(Ptr{Nothing} @0x000000000a1ba460)
source
+ Polymake.BigObjectAllocated(Ptr{Nothing} @0x000000000a1ba460)source