Skip to content
Package for sampling real algebraic varieties.
Python TeX
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



Copyright (C) 2019 Parker Edwards

External requirements

  1. Bertini
  2. Libspatialindex (A requirement of the Python package Rtree)
  3. An mpiexec executable, like the one you can compile from source here


Python package for sampling real algebraic varieties from their polynomial systems. See the article for theoretical details. It has been tested on Linux.

The package installs two command line scripts:

  1. tdasampling - Entry point to the main sampling algorithm.
  2. sampling-setup - Script for setting up a directory for sampling computation from just a list of polynomials in the system.

See the included tutorial for detailed information about all the different options.

Version 1.1.4

Basic usage for tdasampling

$ tdasampling [options] bounds density number_of_functions_in_system execution_directory
  • Bounds is a list of a form like -1.0,1.0,-1.0,1.0, which indicates the region in which to sample the polynomial system is box [-1.0,1.0] x [-1.0,1.0] in Euclidean space
  • execution_directory is a directory containing, at minimum:
  • A minimizer directory which contains parameter homotopy files for Bertini. Unless you have experience with Bertini, set these up with sampling-setup
  • (Recommended, not required) A parameters file parameters.json. See examples for format. If you include a parameters.json file and use the option flag --parameters with tdasampling, the parameters.json file should include all the information except execution_directory, which can then be omitted from the command line call.

Basic usage for sampling-setup

$ sampling-setup [options] path_to_directory_to_setup
  • The directory indicated at path_to_directory_to_setup should contain a file named polynomial_system. The general format of that file is text:
list of variable names separated by commas
polynomial 1
polynomial 2
polynomial n

For example, if we were sampling from a circle of radius 1:

x1^2 + x2^2 - 1
  • --mpiexecutable /a/path/to/mpiexec option to indicate a path to mpiexec. Unnecesssary if your mpiexec can be called as mpiexec
  • --bertini /a/path/to/bertini: a path to your bertini executable if it cannot be called as bertini
  • --processors k: the number of processes you would like to use for the bertini solving run associated with setup
  • --hosts name1,name2,...,namek: list of ssh names for nodes to use for the bertini computation. By default, the bertini run will run only on your local machine


tdasampling is licensed under an MIT license.

You can’t perform that action at this time.