Differences between revisions 20 and 21
Revision 20 as of 2021-02-02 16:22:38
Size: 7274
Editor: jipilab
Comment: Added Schlegel
Revision 21 as of 2021-02-02 16:25:24
Size: 10050
Editor: jipilab
Comment: Added zonotope improvement
Deletions are marked like this. Additions are marked like this.
Line 40: Line 40:
 * #31038: Improve the zonotope construction
Line 43: Line 42:

The zonotope construction got improved

[[https://trac.sagemath.org/ticket/31038|31038]]

Before this ticket:

{{{
sage: from itertools import combinations
sage: cu = polytopes.cube()
sage: sgmt = [p.vector()-q.vector() for p,q in combinations(cu.vertices(),2)]
sage: sgmt2 = set(tuple(x) for x in sgmt)
sage: # %time polytopes.zonotope(sgmt) # killed due to memory overflow
sage: %time polytopes.zonotope(sgmt2)
CPU times: user 2.06 s, sys: 23.9 ms, total: 2.09 s
Wall time: 2.09 s
A 3-dimensional polyhedron in ZZ^3 defined as the convex hull of 96 vertices
}}}

With this ticket:

{{{
sage: from itertools import combinations
sage: cu = polytopes.cube()
sage: sgmt = [p.vector()-q.vector() for p,q in combinations(cu.vertices(),2)]
sage: sgmt2 = set(tuple(x) for x in sgmt)
sage: %time polytopes.zonotope(sgmt)
CPU times: user 138 ms, sys: 0 ns, total: 138 ms
Wall time: 138 ms
A 3-dimensional polyhedron in ZZ^3 defined as the convex hull of 96 vertices
sage: %time polytopes.zonotope(sgmt2)
CPU times: user 58 ms, sys: 0 ns, total: 58 ms
Wall time: 57.6 ms
A 3-dimensional polyhedron in ZZ^3 defined as the convex hull of 96 vertices
}}}

Sage 9.3 Release Tour

in progress (2021)

Polyhedral geometry

New features

The Schlegel diagrams are now repaired (they previously broke convexity). Now, one specifies which facet to use to do the projection:

30015:

   1 sage: fcube = polytopes.hypercube(4)
   2 sage: tfcube = fcube.face_truncation(fcube.faces(0)[0])
   3 sage: tfcube.facets()[-1]
   4 A 3-dimensional face of a Polyhedron in QQ^4 defined as the convex hull of 8 vertices
   5 sage: sp = tfcube.schlegel_projection(tfcube.facets()[-1])
   6 sage: sp.plot()  # The proper Schlegel diagram is shown

A different values of position changes the projection:

   1 sage: sp = tfcube.schlegel_projection(tfcube.facets()[4],1/2)
   2 sage: sp.plot()
   3 Graphics3d Object
   4 sage: sp = tfcube.schlegel_projection(tfcube.facets()[4],4)
   5 sage: sp.plot()
   6 Graphics3d Object

New features:

  • #30704: Upgrade to Normaliz 3.8.9 and PyNormaliz 2.13

  • #30946: Add "minimal=True" option to affine_hull_projection
  • #30954: Implement a proper equality check for polyhedron representation objects

Implementation improvements

The zonotope construction got improved

31038

Before this ticket:

sage: from itertools import combinations                                                                                                                                            
sage: cu = polytopes.cube()                                                                                                                                                         
sage: sgmt = [p.vector()-q.vector() for p,q in combinations(cu.vertices(),2)]                                                                                                       
sage: sgmt2 = set(tuple(x) for x in sgmt)                                                                                                                                           
sage: # %time polytopes.zonotope(sgmt)  # killed due to memory overflow                                                                                                                                              
sage: %time polytopes.zonotope(sgmt2)                                                                                                                                               
CPU times: user 2.06 s, sys: 23.9 ms, total: 2.09 s
Wall time: 2.09 s
A 3-dimensional polyhedron in ZZ^3 defined as the convex hull of 96 vertices

With this ticket:

sage: from itertools import combinations                                                                                                                                            
sage: cu = polytopes.cube()                                                                                                                                                         
sage: sgmt = [p.vector()-q.vector() for p,q in combinations(cu.vertices(),2)]                                                                                                       
sage: sgmt2 = set(tuple(x) for x in sgmt)                                                                                                                                           
sage: %time polytopes.zonotope(sgmt)                                                                                                                                                
CPU times: user 138 ms, sys: 0 ns, total: 138 ms
Wall time: 138 ms
A 3-dimensional polyhedron in ZZ^3 defined as the convex hull of 96 vertices
sage: %time polytopes.zonotope(sgmt2)                                                                                                                                               
CPU times: user 58 ms, sys: 0 ns, total: 58 ms
Wall time: 57.6 ms
A 3-dimensional polyhedron in ZZ^3 defined as the convex hull of 96 vertices

Improvements:

  • #30040: Improve face iterator for simple/simplicial polytopes

There are also some bug fixes and other improvements. For more details see the release notes for optimization and polyhedral geometry software interactions in Sage.

Graph theory

Algebra

Package upgrades, system packages

FLINT, Arb

GAP

Other package upgrades

Upgrade tickets, milestone 9.3

System package information for OpenSUSE

In particular, users of OpenSUSE Tumbleweed will notice the information about system packages that the Sage distribution can use.

Chapter on packages in the Sage reference manual

We have consolidated the information about packages into a single source, build/pkgs/ in the source tree, from which we generate package lists for the reference manual #29655, to which also the Sage website points. Meta-ticket #31164 tracks the task of adding user packages to build/pkgs/.

For developers and packagers: Version constraints for Python packages

For all Python packages in the Sage distribution, build/pkgs/SPKG/install-requires.txt now encodes version constraints (such as lower and upper bounds) #30719. The constraints are in the format of the install_requires key of setup.cfg or setup.py.

The files may include comments (starting with #) that explain why a particular lower bound is warranted or why we wish to include or reject certain versions. For example:

$ cat build/pkgs/sphinx/package-version.txt 
3.1.2.p0
$ cat build/pkgs/sphinx/install-requires.txt
# gentoo uses 3.2.1
sphinx >=3, <3.3

The comments may include links to Trac tickets, as in the following example:

$ cat build/pkgs/packaging/install-requires.txt
packaging >=18.0
# Trac #30975: packaging 20.5 is known to work but we have to silence "DeprecationWarning: Creating a LegacyVersion"

The currently encoded version constraints are merely a starting point. Downstream packagers and developers are invited to refine the version constraints based on their experience and tests. When a package update is made in order to pick up a critical bug fix from a newer version, then the lower bound should be adjusted.

In Sage 9.3, the new files are included only for documentation purposes and to facilitate development and packaging. An effort is underway in #30913 to use the new files to generate dependency metadata for the Sage library. There is no mechanism yet to use system Python packages; see Meta-ticket #29013 for this task.

For developers: Setting up Python packages from PyPI as Sage packages

Setting up Python packages from PyPI as Sage packages has become easier #30974.

$ ./sage -package create scikit_spatial --pypi
Downloading tarball to /Users/mkoeppe/s/sage/sage-rebasing/worktree-algebraic-2018-spring/upstream/scikit-spatial-5.0.0.tar.gz
[......................................................................]
$ ls build/pkgs/scikit_spatial/
SPKG.rst                dependencies            package-version.txt     type
checksums.ini           install-requires.txt    spkg-install.in
$ cat build/pkgs/scikit_spatial/SPKG.rst 
scikit_spatial: Spatial objects and computations based on NumPy arrays
======================================================================

Description
-----------

Spatial objects and computations based on NumPy arrays.

License
-------

BSD license

Upstream Contact
----------------

https://pypi.org/project/scikit-spatial/

Note that this new command does not check the dependencies of the Python package; this still needs to be done manually.

The above command creates a "normal" package (with tarball information in checksums.ini). To create a package as a "pip" package (which will be obtained directly from PyPI on an install), use ./sage -package create scikit_spatial --pypi --source pip instead.

Modularization and packaging of sagelib

Use of system Jupyter notebook / JupyterLab

The Sage Installation Manual now has instructions on how to run the SageMath jupyter kernel in a system jupyter notebook or JupyterLab #30476

Tickets

Availability of Sage 9.3 and installation help

Development of the Sage 9.3 series has begun.

ReleaseTours/sage-9.3 (last edited 2022-05-14 16:52:08 by mkoeppe)