I believe Mike Hansen implemented something that does the above (using
the profiler) already. However, I don't remember if it is in Sage or
not, or where to find it.
>
> and then
>
...
> I don't know how long such lists will be typically, and perhaps it may
> be a bit weird to cite 10 papers and 20 software systems, but at the
> same time if they were used - why not. As to where stop the list of
> components, I think that "is it included in Sage distribution" is a
> reasonable compromise, i.e. Linux and gcc don't have to be cited,
> Python and Cython probably have to. This also can be made tunable
> leaving the final choice to users conscience, which is more or less
> the case for regular paper citations.
If nothing else, it would be very nice if we had an entry in the
database for each paper listed here:
http://sagemath.org/library-publications.html
showing what systems are used. For example, at would be good if
somebody wrote a webform or something for submitting papers, and part
of what it asked is for a list of systems used (and a command like you
mention above would be suggested by the form).
Then we could make it so after each entry in
http://sagemath.org/library-publications.html there would be a little
list of links for the components used, or a single link to a list of
components for that paper, or maybe just a way of showing "all papers
that use a given component". Then when Karim B. of PARI complains
"you don't cite us", we can respond with a link like:
http://sagemath.org/library-publications.html?system=pari
that shows a nicely formatted list of papers all of which cite PARI.
He can then include a link to this list in his grant proposals, etc.
Many, many components of Sage (including Pari!?) don't have a page
listing publications that used their system, so we would be providing
a useful service to them.
-- William
IIRC, someone (Mike Hansen, I believe) wrote something that would track
pexpect interfaces or something to see what software was being used. I
cannot find the command name for his function, though.
Jason
sage: from sage.misc.citation import get_systems
--Mike
I said *exactly* that in my message too, including not being able to
remember or find the function!
I just asked Mike, and he told me it's sage.misc.citation. And indeed:
sage: import sage.misc.citation
sage: sage.misc.citation.get_systems("expand(sin(2*x))")
['ginac']
sage: sage.misc.citation.get_systems("integrate(expand(sin(2*x)),x)")
['ginac', 'Maxima']
sage: sage.misc.citation.get_systems("SymmetricGroup(3).cardinality()")
['GAP']
This is clearly not just tracking pexpect interfaces, since ginac is
not pexpect.
-- William
We already have this, without the bibtex formatting of course:
sage: from sage.misc.citation import get_systems
sage: get_systems("integrate(cos(x^2), x)")
['MPFI', 'ginac', 'GMP', 'Maxima']
There are also two issues on trac about this #3317 and #1422.
I've heard similar complaints from many people, including the Singular
group where I'm currently employed. It's true that Sage can do much
better to provide information on what was used in the background during
a computation, but overall, I think the main problem with citations is
changing the perspective of the users.
For many years, this field was dominated by large, closed computer
algebra systems. Even though some were more transparent than others,
it became common place to say MMA can compute this, Magma can do that.
As pointed out in the Sage & Pari thread recently, we should give
credit to the algorithm and the implementor for a nontrivial
computation.
To improve the capabilities of Sage to provide such information, Niels
Ranosch, a student currently employed in Oberwolfach (and supervised by
Michael Brickenstein), is implementing a new citation module:
https://bitbucket.org/niels_mfo/sage-citation/
We plan to start integrating this in Sage in August. To describe the
motivation and the goals to Niels, I'd started writing this:
http://bitbucket.org/niels_mfo/sage-citation/src/e13a2151d368/citation_description.rst
This blog entry has some design details, subject to change of course:
http://sage-citation.blogspot.com/2011/07/design.html
We would appreciate any comments and suggestions on this citation
system. At this stage, it is just an experiment for us too. :)
There are also plans to make a C-library interface to such a system, so
that libraries used during a computation, for example libSingular or
Gfan, can provide the citation information directly. Unfortunately,
there is no real code for this yet, apart from a header file defining
the proposed interface.
Burcin
> On Wed, Jul 27, 2011 at 10:08 AM, Andrey Novoseltsev
> <novo...@gmail.com> wrote:
> > I have just looked over PARI citing discussion and recently I had a
> > talk with a developer of a software package X who was concerned that
> > inclusion of X into Sage will mean that people will stop giving
> > credit to X (and this developer in particular ;-)) Sometime ago
> > there were suggestions to somehow gather statistics on how many
> > times which function was called, which in practice does not seem
> > like a great idea due to performance hits and privacy issues.
> > Figuring out manually which components are used is somewhat boring
> > and actually quite hard.
> >
> > But how about this: suppose I have written a function f that does
> > what I need and I want to properly cite people and systems who made
> > it possible, but at the same time I am too busy/lazy to do much to
> > achieve it. However, I can do
> >
> > sage: uc = UsedComponents("f(75)")
>
> I believe Mike Hansen implemented something that does the above (using
> the profiler) already. However, I don't remember if it is in Sage or
> not, or where to find it.
Maybe we should export this function to the top level namespace and put
an entry in the FAQ.
sage: from sage.misc.citation import get_systems
sage: get_systems("integrate(cos(x), x)")
['ginac', 'Maxima']
> If nothing else, it would be very nice if we had an entry in the
> database for each paper listed here:
>
> http://sagemath.org/library-publications.html
>
> showing what systems are used. For example, at would be good if
> somebody wrote a webform or something for submitting papers, and part
> of what it asked is for a list of systems used (and a command like you
> mention above would be suggested by the form).
> Then we could make it so after each entry in
> http://sagemath.org/library-publications.html there would be a little
> list of links for the components used, or a single link to a list of
> components for that paper, or maybe just a way of showing "all papers
> that use a given component". Then when Karim B. of PARI complains
> "you don't cite us", we can respond with a link like:
>
> http://sagemath.org/library-publications.html?system=pari
>
> that shows a nicely formatted list of papers all of which cite PARI.
> He can then include a link to this list in his grant proposals, etc.
> Many, many components of Sage (including Pari!?) don't have a page
> listing publications that used their system, so we would be providing
> a useful service to them.
Great idea! Such statistics would also help convince package authors
that Sage provides exposure for their project as well as a separate
(mathematical) test suite, regular build tests on many platforms and
in many cases bug fixes.
Like Andrey, I heard the FUD that "inclusion of X into Sage will mean
that people will stop giving credit to X." Maybe we should be more
proactive about this issue.
How about changing the credits() function to include a list of
components of Sage with links to their web pages and an example with
the get_systems() function?
Cheers,
Burcin
Big +1
> How about changing the credits() function to include a list of
> components of Sage with links to their web pages and an example with
> the get_systems() function?
+1
>
>
> Cheers,
> Burcin
>
> --
> To post to this group, send an email to sage-...@googlegroups.com
> To unsubscribe from this group, send an email to sage-devel+...@googlegroups.com
> For more options, visit this group at http://groups.google.com/group/sage-devel
> URL: http://www.sagemath.org
>
--
William Stein
Professor of Mathematics
University of Washington
http://wstein.org
['PARI', 'mwrank', 'MPFI', 'Singular', 'FLINT', 'MPFR', 'ginac',
'GMP', 'Magma', 'NTL']
This does not include sympow (which is used for E.modular_degree()).
I also have no idea why either Singular or ginac are being used.
Since I do no symbolic algebra it is quite possible that the
appearance of ginac in this list indicates a small bug.
John
I find the two responses here very interesting. From Niles and John's
responses, it sounds like this feature could help users turn into
developers as their curiosity about the algorithms gets the better of
them and they started poking around in the internals of Sage.
Thanks,
Jason
Would it be possible to have a configuration variable to set (default
False) which if True would show that list after *every* command? (I
seem to remember that is possible to get the timing of every command,
but perhaps I'm thinking of Pari).
John
>
+1
Something like "Today's Sage session brought to you by ... "
--
Benjamin Jones