user_guide:tutorials:latest:tarballs

# Differences

This shows you the differences between two versions of the page.

 — user_guide:tutorials:latest:tarballs [2020/01/22 09:02] (current) Line 1: Line 1: + ====== Saving and Restoring an Array of Polytopes ====== + + If you want to deal with a whole family of polytopes at the same time, it will sometimes be convenient to save and restore them to a single file. polymake has a simple mechanism for this, storing your array of polytopes into a single tarball. + + The necessary functions for this are contained in the script "​tarballs"​ that you can load into your polymake session by calling + + + > script("​tarballs"​);​ + ​ + It provides the two functions ''​pack_tarball''​ and ''​unpack_tarball''​. + + ===== Storing ===== + + Here is a simple example, where we create an array @a containing a cube and a simplex and save this to a file. + + + > @a = (); + > $a[0] = cube(3); + >$a[1] = simplex(3); + > pack_tarball("​simple_polytopes.tgz",​@a);​ + ​ + This creates a file ''​simple_polytopes.tgz''​ in the current directory that is a tarred (and gzipped) archive containing two polymake files. polymake detects whether you want the archive gzipped or not from the supplied file extension (''​*.tar.gz''​ or ''​*.tgz''​). You can verify this by calling ''​tar tvfz simple_polytopes.tgz''​ from the command line: + + <​code>​ + [nightingale]:​~/​temp>​tar tvfz simple_polytopes.tgz ​ + -rw------- xxx/yyy 1468 2009-07-01 17:20 1.poly + -rw------- xxx/​yyy ​ 854 2009-07-01 17:20 2.poly + [nightingale]:​~/​temp>​ + ​ + If you want to get more descriptive names for your polymake files then you have to set a name for each polytope first. + + + > $a[0]->​name = "​my_cube";​ + >$a[1]->​name = "​my_simplex";​ + > pack_tarball("​simple_polytopes.tgz",​@a);​ + ​ + sets the names of the files in the tarball to ''​my_cube.poly''​ and ''​my_simplex.poly'':​ + + <​code>​ + [nightingale]:​~/​temp>​tar tvfz simple_polytopes.tgz ​ + -rw------- xxx/​yyy ​ 952 2009-07-01 17:21 my_cube.poly + -rw------- xxx/​yyy ​ 650 2009-07-01 17:21 my_simplex.poly + [nightingale]:​~/​temp>​ + ​ + ===== Restoring the array ===== + + You can restore your saved array by using the function ''​unpack_tarball'':​ + + + > @a=unpack_tarball("​simple_polytopes.tgz"​);​ + > print $a[0]->​name;​ + my_cube + + ​ + If you just want a specific polytope from your tarball, then you can supply its name in the command: + + + > @a=unpack_tarball("​simple_polytopes.tgz","​my_simplex.poly"​);​ + > print$a[0]->​name;​ + my_simplex + + ​ + You may supply more than one filename. However, wildcards are not supported. Note that changes in the files are not automatically stored in the archive, you have to call ''​pack_tarball''​ to update the files. + + ===== Packing archives outside polymake ===== + + You can of course apply ''​tar''​ to your favorite family of polymake files to create a tarball without using polymake. It can be read by polymake as long as the files are at the root of the archive (i.e. don't pack a whole directory tree). The archive also may not contain non-polymake files. +
• user_guide/tutorials/latest/tarballs.txt