|
Size: 6284
Comment:
|
Size: 11336
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 1: | Line 1: |
| = Ideas to Implement in SAGE = Some of these are great. Some are probably bad and should not be implemented. Some are easy, and some are very difficult. * todo: Jones database -- added Richards (?) as co-author in documentation, etc. * todo: dvipng -- better error about dependency -- don't build if already have. |
= Ideas of things to Implement in SAGE = * ([:TomBoothby:Tom Boothby]) NotebookWiki: A wiki version of the notebook that could be a robust, distrubuted development enviroment and version control system. Tom's end goal: move all development of SAGE into a wiki-like notebook interface, and make the system such that it could be easily used for any project in Python (and other languages?). * checksums on downloaded files * {{{>> It has a file for every single SAGE package that was ever >> successfully installed. >> Adding an upgrade.a.b.c.d file to that directory would be easy, but >> potentially >> confusing since it has a different meaning than those files. > > Hmmm...to clarify, I have upgraded, successively, beginning with > sage-1.2.3.1 to my current sage-1.3.5.3. There are no "duplicate" > packages (same name, different version) in spkg/installed. Does that > mean that between 1.2.3.1 and 1.3.5.3, there were no package upgrades? > I think I'm wrong -- it used to be that installed kept everything. Now it doesn't. Sorry for the confusion. I'll probably make an spkg/installed/previous directory where the old ones get put.}}} done * Finite fields. Fix it so this isn't needed: {{{sage: from sage.rings.finite_field import FiniteField_ext_pari sage: k = FiniteField_ext_pari(9,modulus=x^2+x+2) sage: (k.0).charpoly() x^2 + x + 2}}} * Make it so 2d scenes described by SAGE's ploting functions, e.g., line, polygon, point, etc., can be rendered using tachyon somehow. I.e., all the objects would have 3d analogues and lie in a plane. * "Port" Helena Verrill's http://www.math.lsu.edu/~verrill/fundomain/ to SAGE. It's currently written in Java and also MAGMA. It will be incredibly pretty if built on top of SAGE/matplotlib's plotting functionality, and SAGE's tachyon ray tracer (!). (In progress at the MSRI workshop 06 coding sprints...) * Make it so all matrices can be coerced to MAGMA matrices (this is pretty good now). Add a flag to the matrix.py file, so echelon forms can be done by MAGMA by default instead of SAGE. This will speed some things up for applications that build on SAGE's linear algebra, so that these apps can be built. These apps will provide good benchmarking coding, etc., to make developing good linear algebra in SAGE easier. * (Didier Deshommes:) I would love to see an option where while re-building 1 or more modules with sage -br, you can also verify that your modifications still pass unit tests for pyx, pyxe and py files. Currently I have a hack in my setup.py ( and a patch here: http://sage.math.washington.edu/home/dfdeshom/sage/devel/sage/setup-hack.patch.txt ) that makes this possible for pyx files (and therefore for pyxe files?), but this seems more complicated for native .py files. Does anyone know how to hijack the build_py process to run doctests on modified .py files? * See the more structured project list (somebody should move that list here): . http://modular.math.washington.edu/sage/projects/ * todo: . Jones database -- added Richards (?) as co-author in documentation, etc. * todo: . dvipng -- better error about dependency . -- don't build if already have. |
| Line 14: | Line 62: |
| all installed optional packages to the latest versions. This would, in fact, be very easy to write with just a little Python code using the install_package and optional_packages() functions. |
. all installed optional packages to the latest versions. This would, in fact, be very easy to write with just a little Python code using the install_package and optional_packages() functions. |
| Line 20: | Line 66: |
* It would be nice to be able to do this. Need to implement more general division algorithm?? iterated poly rings: {{{#!python # Worksheet '_scratch_' (2006-07-28 at 12:14) R.<x> = PolynomialRing(QQ) S.<y> = PolynomialRing(R) T.<z> = S.quotient(y^3-3) z*z*z Traceback (most recent call last): TypeError: unable to find a common parent for 1 (parent: Fraction Field of Univariate Polynomial Ring in x over Rational Field) and 1 (parent: Univariate Polynomial Ring in y over Univariate Polynomial Ring in x over Rati... }}} |
|
| Line 30: | Line 90: |
| * {{{e^(I*pi)}}} is perhaps lame. | * {{{e^(I*pi)}}} is perhaps lame. |
| Line 33: | Line 93: |
| Line 40: | Line 101: |
| Line 42: | Line 102: |
| of MPFR well. {{{ |
. of MPFR well. {{{#!python |
| Line 54: | Line 115: |
* (reported by Justin Walker -- 2006-06-07) |
* (reported by Justin Walker -- 2006-06-07) |
| Line 61: | Line 121: |
| Line 65: | Line 124: |
| there is no knowledge of any user's home directory in the | there is no knowledge of any user's home directory in the |
| Line 67: | Line 126: |
| the root user's /root directory. | the root user's /root directory. |
| Line 70: | Line 128: |
| Line 73: | Line 130: |
This is a tricky problem, because some small part of the install process requires starting SAGE, but starting SAGE requires having some startup files in $HOME. But this is definitely a bug, and |
This is a tricky problem, because some small part of the install process requires starting SAGE, but starting SAGE requires having some startup files in $HOME. But this is definitely a bug, and |
| Line 78: | Line 134: |
| Line 83: | Line 138: |
| Line 87: | Line 141: |
That seems like a very reasonable idea. |
That seems like a very reasonable idea. |
| Line 92: | Line 144: |
| Line 96: | Line 147: |
* Paisa Seeluangsawat: > There are typos in the docs. They tend to get functions' > optional arguments mixed up. For an example, compare > > > http://modular.math.washington.edu/sage/doc/html/ref/module-sage.rings.multi-polynomial-ring.html > > MPolynomialRing(base_ring, [n=False], [names=degrevlex], > [order=None], [macaulay2=1]) > > with > > $SAGE_ROOT/local/lib/python2.4/site-packages/sage/rings/ > > def MPolynomialRing(base_ring, n=1, names=None, > order='degrevlex', macaulay2=False): }}} That's really weird. Many thanks for pointing out the problem. That documentation is generated from the source code, so I'll investigate the script that does the generation. Again, thanks for the bug report. |
|
| Line 121: | Line 148: |
| change the rgbcolor without recomputing all the points! * 2006-05-21: Error when doing "sage -i " with abs path; Workaround: Just go to the correct directory and type "sage -i gap_packages-4.4.7_2.spkg" to test it out. |
. change the rgbcolor without recomputing all the points! * 2006-05-21: Error when doing "sage -i " with abs path; Workaround: Just go to the correct directory and type "sage -i gap_packages-4.4.7_2.spkg" to test it out. |
| Line 130: | Line 153: |
| The error message for "sage -bf" sucks. |
. The error message for "sage -bf" sucks. |
| Line 133: | Line 156: |
| tracebacks include path of place where file was built?? this is hard coded? how to fix??? Maybe just do a substituion when doing the display of docs in sage/server/support.py |
. tracebacks include path of place where file was built?? this is hard coded? how to fix??? Maybe just do a substituion when doing the display of docs in sage/server/support.py |
| Line 140: | Line 161: |
| after running "make test". Very annoying. | . after running "make test". Very annoying. |
| Line 143: | Line 164: |
| by rational reconstruction; this should be "easy" to fix by doing something much better (e.g., using GMP). Good example: {{{ |
. by rational reconstruction; this should be "easy" to fix by doing something much better (e.g., using GMP). Good example: {{{#!python |
| Line 150: | Line 170: |
* 2006-04: Should get better error message and caching, etc: {{{ |
* 2006-04: Should get better error message and caching, etc: {{{#!python |
| Line 165: | Line 184: |
| Line 167: | Line 185: |
| {{{ | {{{#!python |
| Line 169: | Line 188: |
| Line 187: | Line 205: |
* (["MartinAlbrecht"]) Reference Manual -> Wiki -> Refernce Manual conversion to allow contribution to the docs via the Wiki interface. * (["MartinAlbrecht"]) Adding a "Open a notebook with these examples" button could be added to every Wiki page automatically if it has code blocks marked as #!sage (which would inherit from #!python). So viewers can play with/test examples directly. * (["DavidHarvey"]) There are some good ideas about matrix multiplication in these two articles: http://crpit.com/confpapers/CRPITV26ElGindy.pdf#search=%22strassen%20without%20padding%22 (actually I know one of the guys who wrote this), and http://www.cs.duke.edu/~alvy/papers/sc98/index.htm. In particular they discuss strategies for (a) dealing with odd number of rows/columns, and (b) cache efficient ordering of the multiplication. * (["DavidHarvey"]) Arrrggghhh. Matplotlib is painfully slow. There are some pointers at http://matplotlib.sourceforge.net/faq.html#SLOW to follow up about this. They talk about 30x performance improvements based on configuration alone. * (KiranKedlaya) Computing the m-th power of a power series over a Q-algebra should return the expected result when m is rational. Right now it coerces m to an integer first. * (RonanPaixao) Sage should have support for Dirac's delta function and Heaviside's step functions. The step function is one defined as $step(x)=\begin{cases}0 &\text{if}& x<0 \cr 1 & \text{if}& x>0\end{cases}$ In Matlab the function is called heaviside() Dirac's delta function (sometimes called impulse function) is defined as $delta(x)=\begin{cases}\infty & \text{if}& x=0 \cr 0 & \text{if}& x\neq 0\end{cases}$ Some interesting properties of those functions are: $\int_{-\infty}^{+\infty}\delta(x)dx=1$ $\int \delta(x)dx = step(x)$ $\int_{-\infty}^{+\infty} f(x)*\delta(x-k) dx = f(k)$ $\int_{-\infty}^{+\infty} f(x)*step(x-a) dx = \int_{a}^{+\infty} f(x) dx $ A function can be transformed from continuous time to discrete time (sampling) with Dirac's comb, which is the sum of equally-spaced impulse functions. A similar function is Kronecker's delta function: $delta(x)=\begin{cases}1 & \text{if}& x=0 \cr 0 & \text{if}& x\neq 0\end{cases}$ References: http://en.wikipedia.org/wiki/Dirac_delta_function http://en.wikipedia.org/wiki/Dirac_comb http://en.wikipedia.org/wiki/Sampling_(signal_processing) http://en.wikipedia.org/wiki/Kronecker_delta |
Ideas of things to Implement in SAGE
([:TomBoothby:Tom Boothby]) NotebookWiki: A wiki version of the notebook that could be a robust, distrubuted development enviroment and version control system. Tom's end goal: move all development of SAGE into a wiki-like notebook interface, and make the system such that it could be easily used for any project in Python (and other languages?).
- checksums on downloaded files
{{{>> It has a file for every single SAGE package that was ever
>> successfully installed. >> Adding an upgrade.a.b.c.d file to that directory would be easy, but >> potentially >> confusing since it has a different meaning than those files. > > Hmmm...to clarify, I have upgraded, successively, beginning with > sage-1.2.3.1 to my current sage-1.3.5.3. There are no "duplicate" > packages (same name, different version) in spkg/installed. Does that > mean that between 1.2.3.1 and 1.3.5.3, there were no package upgrades? >
I think I'm wrong -- it used to be that installed kept everything. Now it doesn't. Sorry for the confusion. I'll probably make an
- spkg/installed/previous
directory where the old ones get put.}}}
done * Finite fields. Fix it so this isn't needed: {{{sage: from sage.rings.finite_field import FiniteField_ext_pari sage: k = FiniteField_ext_pari(9,modulus=x^2+x+2) sage: (k.0).charpoly() x^2 + x + 2}}}
* Make it so 2d scenes described by SAGE's ploting functions, e.g., line, polygon, point, etc., can be rendered using tachyon somehow. I.e., all the objects would have 3d analogues and lie in a plane.
* "Port" Helena Verrill's http://www.math.lsu.edu/~verrill/fundomain/ to SAGE. It's currently written in Java and also MAGMA. It will be incredibly pretty if built on top of SAGE/matplotlib's plotting functionality, and SAGE's tachyon ray tracer (!). (In progress at the MSRI workshop 06 coding sprints...)
* Make it so all matrices can be coerced to MAGMA matrices (this is pretty good now). Add a flag to the matrix.py file, so echelon forms can be done by MAGMA by default instead of SAGE. This will speed some things up for applications that build on SAGE's linear algebra, so that these apps can be built. These apps will provide good benchmarking coding, etc., to make developing good linear algebra in SAGE easier.
* (Didier Deshommes:) I would love to see an option where while re-building 1 or more modules with sage -br, you can also verify that your modifications still pass unit tests for pyx, pyxe and py files.
Currently I have a hack in my setup.py ( and a patch here: http://sage.math.washington.edu/home/dfdeshom/sage/devel/sage/setup-hack.patch.txt ) that makes this possible for pyx files (and therefore for pyxe files?), but this seems more complicated for native .py files. Does anyone know how to hijack the build_py process to run doctests on modified .py files?
* See the more structured project list (somebody should move that list here):
* todo:
- Jones database -- added Richards (?) as co-author in documentation, etc.
* todo:
- dvipng -- better error about dependency
- -- don't build if already have.
* feature request: make an upgrade_packages() funtion that upgrades
- all installed optional packages to the latest versions. This would, in fact, be very easy to write with just a little Python code using the install_package and optional_packages() functions.
* todo: sage build *still* doesn't check that you have flex/bison installed. Argh! Why?
* It would be nice to be able to do this. Need to implement more general division algorithm?? iterated poly rings:
1 # Worksheet '_scratch_' (2006-07-28 at 12:14)
2 R.<x> = PolynomialRing(QQ)
3 S.<y> = PolynomialRing(R)
4 T.<z> = S.quotient(y^3-3)
5 z*z*z
6 Traceback (most recent call last):
7 TypeError: unable to find a common parent for 1 (parent: Fraction Field of Univariate Polynomial Ring in x over Rational Field) and 1 (parent: Univariate Polynomial Ring in y over Univariate Polynomial Ring in x over Rati...
* feature request: paste into notebook should resize box.
* possible change: sage_eval -- should it only take strings as input?!
* feature request: showing sourcecode of functions in pyrex files. (!!)
* feature request: add imshow functionality to plot
* in online simple sage calculator "? help" doesn't work.
* e^(I*pi) is perhaps lame.
* Macaulay2 source package:
-- it still doesn't detect the SAGE readline,
so you have to have readline installed system-wide.
apt-get install libreadline-dev
-- it depends on etags
apt-get install exuberant-ctags* question: is this good or bad? maybe I don't understand the rigor
- of MPFR well.
* (reported by Justin Walker -- 2006-06-07)
> The install worked, but a bunch of the "per-user" stuff got dropped > into his home directory, presumably as expected, but owned by root, > so he can't modify the files. I'm a little puzzled about how that happened. Was he installing SAGE as user root but with his HOME environment variable set to his home directory? If you install SAGE as root, then there is no knowledge of any user's home directory in the environment. At worst, "per-user" stuff will be copied to the root user's /root directory. Probably the user wasn't logged in as root, but used sudo: was@sha:~$ sudo echo $HOME /home/was This is a tricky problem, because some small part of the install process requires starting SAGE, but starting SAGE requires having some startup files in $HOME. But this is definitely a bug, and I'll add it to the list. (from justin) Thanks! It's easy to recover from, modulo figuring out what to change, but it would be good to fix, if possible. One possible fix is to force $HOME to a known value (/dev/null? :-}) and not set up the HOME files in this case. > Does SAGE do this automatically when it starts up and discovers that > the environment it expects (the ~/.sage stuff) is either out of date > or non-existent? That seems like a very reasonable idea. > I suppose there are some that run as root by default, but that > strikes me as wrong-headed, and unsupported :-} SAGE could print a message on any startup as root warning the user that running SAGE as root is different. I like this idea.
* It should be very easy to change properties of a graphics object, e.g.,
- change the rgbcolor without recomputing all the points!
* 2006-05-21: Error when doing "sage -i " with abs path; Workaround: Just go to the correct directory and type "sage -i gap_packages-4.4.7_2.spkg" to test it out.
* 2006-05-16:
- The error message for "sage -bf" sucks.
* 2006-05-15:
- tracebacks include path of place where file was built?? this is hard coded? how to fix??? Maybe just do a substituion when doing the display of docs in sage/server/support.py
* 2006-05-08: sajax: prompt doesn't change when change mode.
* 2006-05-02: maxout.gnuplot randomly appears in my home directory
- after running "make test". Very annoying.
* in some cases echelon forms with big entries -- totally dominated
- by rational reconstruction; this should be "easy" to fix by doing something much better (e.g., using GMP). Good example:
* 2006-04: Should get better error message and caching, etc:
1 sage: ... what is F???
2 sage: time F.tropical_basis(check = False)
3 /bin/sh: line 1: 3699 Aborted gfan_tropicalbasis 2>/dev/null
4 CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
5 Wall time: 3.03
6 _30 = []
7 sage: time F.tropical_basis()
8 CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
9 Wall time: 0.00
10 _31 = []
* This is a good example to put in the docs.
1 The toric ideal of the twisted cubic in projective 3 space:
2 sage: R.<a,b,c,d> = PolynomialRing(QQ, 4)
3 sage: I = ideal(b^2-a*c, c^2-b*d, a*d-b*c)
4 sage: F = I.groebner_fan(); F
5 Groebner fan of the ideal:
6 Ideal (c^2 - b*d, -1*b*c + a*d, b^2 - a*c) of Polynomial Ring in a, b, c, d over Rational Field
7 sage: F.reduced_groebner_bases ()
8 [[-1*c^2 + b*d, -1*b*c + a*d, -1*b^2 + a*c],
9 [c^2 - b*d, -1*b*c + a*d, -1*b^2 + a*c],
10 [c^2 - b*d, b*c - a*d, -1*b^2 + a*c, -1*b^3 + a^2*d],
11 [c^2 - b*d, b*c - a*d, b^3 - a^2*d, -1*b^2 + a*c],
12 [c^2 - b*d, b*c - a*d, b^2 - a*c],
13 [-1*c^2 + b*d, b^2 - a*c, -1*b*c + a*d],
14 [-1*c^2 + b*d, b*c - a*d, b^2 - a*c, -1*c^3 + a*d^2],
15 [c^3 - a*d^2, -1*c^2 + b*d, b*c - a*d, b^2 - a*c]]
16 sage: F.fvector()
17 (1, 8, 8)
* (["MartinAlbrecht"]) Reference Manual -> Wiki -> Refernce Manual conversion to allow contribution to the docs via the Wiki interface.
* (["MartinAlbrecht"]) Adding a "Open a notebook with these examples" button could be added to every Wiki page automatically if it has code blocks marked as #!sage (which would inherit from #!python). So viewers can play with/test examples directly.
* (["DavidHarvey"]) There are some good ideas about matrix multiplication in these two articles: http://crpit.com/confpapers/CRPITV26ElGindy.pdf#search=%22strassen%20without%20padding%22 (actually I know one of the guys who wrote this), and http://www.cs.duke.edu/~alvy/papers/sc98/index.htm. In particular they discuss strategies for (a) dealing with odd number of rows/columns, and (b) cache efficient ordering of the multiplication.
* (["DavidHarvey"]) Arrrggghhh. Matplotlib is painfully slow. There are some pointers at http://matplotlib.sourceforge.net/faq.html#SLOW to follow up about this. They talk about 30x performance improvements based on configuration alone.
* (KiranKedlaya) Computing the m-th power of a power series over a Q-algebra should return the expected result when m is rational. Right now it coerces m to an integer first.
* (RonanPaixao) Sage should have support for Dirac's delta function and Heaviside's step functions.
The step function is one defined as step(x)=\begin{cases}0 &\text{if}& x<0 \cr 1 & \text{if}& x>0\end{cases}
In Matlab the function is called heaviside()
Dirac's delta function (sometimes called impulse function) is defined as delta(x)=\begin{cases}\infty & \text{if}& x=0 \cr 0 & \text{if}& x\neq 0\end{cases}
Some interesting properties of those functions are: \int_{-\infty}^{+\infty}\delta(x)dx=1
\int \delta(x)dx = step(x)
\int_{-\infty}^{+\infty} f(x)*\delta(x-k) dx = f(k)
\int_{-\infty}^{+\infty} f(x)*step(x-a) dx = \int_{a}^{+\infty} f(x) dx
A function can be transformed from continuous time to discrete time (sampling) with Dirac's comb, which is the sum of equally-spaced impulse functions.
A similar function is Kronecker's delta function: delta(x)=\begin{cases}1 & \text{if}& x=0 \cr 0 & \text{if}& x\neq 0\end{cases}
References: http://en.wikipedia.org/wiki/Dirac_delta_function http://en.wikipedia.org/wiki/Dirac_comb http://en.wikipedia.org/wiki/Sampling_(signal_processing) http://en.wikipedia.org/wiki/Kronecker_delta
