This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== 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 <code perl> > script("tarballs"); </code> 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. <code perl> > @a = (); > $a[0] = cube(3); > $a[1] = simplex(3); > pack_tarball("simple_polytopes.tgz",@a); </code> 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> </code> If you want to get more descriptive names for your polymake files then you have to set a name for each polytope first. <code perl> > $a[0]->name = "my_cube"; > $a[1]->name = "my_simplex"; > pack_tarball("simple_polytopes.tgz",@a); </code> 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> </code> ===== Restoring the array ===== You can restore your saved array by using the function ''unpack_tarball'': <code perl> > @a=unpack_tarball("simple_polytopes.tgz"); > print $a[0]->name; my_cube </code> If you just want a specific polytope from your tarball, then you can supply its name in the command: <code perl> > @a=unpack_tarball("simple_polytopes.tgz","my_simplex.poly"); > print $a[0]->name; my_simplex </code> 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/release/3.6/tarballs.txt Last modified: 2019/11/15 22:01by 127.0.0.1