Sage

Mathematical tools, physics simulators, CAD, CNC, etc.
Post Reply
Message
Author
emil
Posts: 633
Joined: Tue 10 Nov 2009, 08:36
Location: Austria
Contact:

Sage

#1 Post by emil »

Image
Sage is a very comprehensive mathematical package. It can run from commandline, in a browser based interface (notebook) or also as a multi user server over the web.

Image
Sage browser based notebook (note the typesetting)

Sage has a very ambitious goal:

Create a viable alternative to the MA's

The MA's are Mathematica, Maple, Matlab and Magma - so this is quite an undertaking!

The philosophy of Sage is "to build the car" and not to reinvent the wheel, so it is build from many - over 100 - existing open source packages. Amongst those are some really high profile packages like Maxima and R. Everything is tied together in a a common build environment, and glued together by a python (numpy, scipy, matplotlib and lots of native sage code) layer which provides a unified interface to all the packages.

Image
Don't reinvent the wheel. (Image created by Martin Albrecht.)


In that respect, Sage is its own meta distribution, because it ships with most of its dependencies and a complete development environment (including mercurial version control - warning: compilers in puppy devx.sfs are still required dependencies, as well as fortran compiler installed). Although the big size of the package - sources are currently around 380 MB - I think Sage is the most interesting open source math project, due to the following reasons:

  • Comprehensive capabilities, lots of mature projects "under the hood"
    Notebook web interface
    You can use sage from servers running on the web
    Dependencies included
    Good community and project managment
    Good documentation, Tutorials
    Active support lists and forums
    Runs on wide variaty of hardware, from desktop to supercomputer
    Multiuser server mode
    It has a vision
    it makes development and results free and transparent in a true scientific spirit
    this is opposed to closed source witchcraft results


I have built sage sfs packages earlier, but I stopped it. The reasons are that the release cycle of sage is rather fast, and with the multitude of different puppy branches (Ubuntu, T2, Slackware) it is impossible to maintain a "one fits all" build.

Instead I have made a series of puppy derivatives (Sage Live CD) on a Lucid 5.11 base (actually shinobars excellent Quickset edition). This might not be bleeding edge, but it provides me a stable base to build on. This Live CD has been the official Live CD for the sage project since spring 2010.

Image
Latest Sage Live CD derivative: Lite version with preconfigured multiuser server

For all other puppies I recommend to build sage from source (on a physical disk like /mnt/home) - despite the size it is one of the easiest systems to build I came across. This gives the additional bonus that sage libraries like linear algebra are built optimized for your processor. Once you have it working it is always possible to upgrade sage from inside to the latest version.

My current developement interests and activities are:
  • Making Sage Live CD images
    "Sage on Windows"
    Making small versions of Sage - "Sage Lite" - just application, no developement.
    Building small sage virtual machines on a puppy base (e.g. to use it on windows machines)
    Building preconfigured server versions - this involves multiuser and network stuff in puppy.


LINKS:
Sage homepage http://www.sagemath.org
Puppy derivatives: Thread on murga-linux about Sage Live CD and Sage Live CD Project Homepage
Question and answer forum: http://www.ask.sagemath.org
Last edited by emil on Mon 21 Nov 2011, 10:37, edited 5 times in total.

emil
Posts: 633
Joined: Tue 10 Nov 2009, 08:36
Location: Austria
Contact:

sage with reduced size

#2 Post by emil »

I built a stripped down sage binary version (-60% size vs original binaries):

Download sl-511-46-a1.sfs (218 MB):
dependencies: gfortran and tcltk and Java RE (for 3d plotting)

Right now the sfs was tested on Puppy 5.11. Sadly it won't work in the new Puppy 5.2, I am not sure why.

I have also built a Pupplet iso: sl-511-46-a1.iso 400 MB (includes Java for 3D plotting).

---------
I like Sage, but it always bogged me that it is so big. I settled with the fact that it is a Python program, and every larger python project seems to have this bloated feeling. And, every sage is a complete developer version - with the complete sources. The functionality is deeply dependend to have the python code available, because it needs the source for traceback (the error messages you get when you type wrong commands) and also "doctests" - the self testing capabilities of the package.

The current sage 4.6.1 had over 1.9 GB unpacked. After inspecting the code I noticed, that huge parts of the code where there in 2 or even 3 different directory trees. I learned that this is the way it is built, it would be possible to avoid this but this would mean a rewrite of the sage build scripts - a task nobody seems to be very keen of. Beside that, the ability that every sage ships with immediate developement ability is seen as a core feature of the package. I disagree here, I think a smaller "User-Binary" and an additional DEV package is the better approach.

Compiling sage is pretty straightforward in any puppy (gfortran is needed and Tcltk recommended for some functionality). So this are my steps for building and stripping.

Just to add: R-plotting works in this package, I installed Rcmdr from within without problems.

Code: Select all

sage -sh
R
install.packages("Rcmdr", dependencies=TRUE)
library(Rcmdr)
Having built with export SAGE_MATPLOTLIB_GUI="yes" also allows standard use of python packages, so

Code: Select all

sage -sh
python
from pylab import *
plot([1,2,3],[1,0,2])
show()
produces the plot.

Java is needed for 3D plotting (included in the iso)

Post Reply