Giter VIP home page Giter VIP logo

sympy-paper's Introduction

SymPy Paper

This is the source repository for the paper:

SymPy: symbolic computing in python

This paper has been published in PeerJ Computer Science and can be found at https://peerj.com/articles/cs-103/.

To cite this paper, please use

Meurer A, Smith CP, Paprocki M, Čertík O, Kirpichev SB, Rocklin M, Kumar A, Ivanov S, Moore JK, Singh S, Rathnayake T, Vig S, Granger BE, Muller RP, Bonazzi F, Gupta H, Vats S, Johansson F, Pedregosa F, Curry MJ, Terrel AR, Roučka Š, Saboo A, Fernando I, Kulal S, Cimrman R, Scopatz A. (2017) SymPy: symbolic computing in Python. PeerJ Computer Science 3:e103 https://doi.org/10.7717/peerj-cs.103

Here is the BibTeX entry.

@article{10.7717/peerj-cs.103,
 title = {SymPy: symbolic computing in Python},
 author = {Meurer, Aaron and Smith, Christopher P. and Paprocki, Mateusz and \v{C}ert\'{i}k, Ond\v{r}ej and Kirpichev, Sergey B. and Rocklin, Matthew and Kumar, AMiT and Ivanov, Sergiu and Moore, Jason K. and Singh, Sartaj and Rathnayake, Thilina and Vig, Sean and Granger, Brian E. and Muller, Richard P. and Bonazzi, Francesco and Gupta, Harsh and Vats, Shivam and Johansson, Fredrik and Pedregosa, Fabian and Curry, Matthew J. and Terrel, Andy R. and Rou\v{c}ka, \v{S}t\v{e}p\'{a}n and Saboo, Ashutosh and Fernando, Isuru and Kulal, Sumith and Cimrman, Robert and Scopatz, Anthony},
 year = 2017,
 month = jan,
 keywords = {Python, Computer algebra system, Symbolics},
 abstract = {
            SymPy is an open source computer algebra system written in pure Python. It is built with a focus on extensibility and ease of use, through both interactive and programmatic applications. These characteristics have led SymPy to become a popular symbolic library for the scientific Python ecosystem. This paper presents the architecture of SymPy, a description of its features, and a discussion of select submodules. The supplementary material provide additional examples and further outline details of the architecture and features of SymPy.
         },
 volume = 3,
 pages = {e103},
 journal = {PeerJ Computer Science},
 issn = {2376-5992},
 url = {https://doi.org/10.7717/peerj-cs.103},
 doi = {10.7717/peerj-cs.103}
}

You may also download other citation formats at the above URL.

This repository contains or links to all of the information needed to reproduce the results in the paper.

The latest rendered version of the PDF can be viewed via the Travis build:

Build Status

Latest pdf: paper-master.pdf

Preprint

A preprint of this paper has been submitted to PeerJ.

Contributing

Join our chat room to discuss contributions:

Join the chat at https://gitter.im/sympy/sympy-paper

License

CCBY

license

The contents of this repository are dual licensed under the Creative Commons Attribution 4.0 International License and the MIT License. See the LICENSE file for details.

LaTeX Build Instructions

Install a full LaTeX suite on your preferred operating system. To build the PDF type

make

in the source directory. This will produce paper.pdf, the main paper, and supplement.pdf, the supplementary material.

Alternatively, you can use docker, see the instructions in our Dockerfile.

You can test all the examples in the paper with

make test

This requires that SymPy 1.0 (exactly) is installed.

Authorship Criteria

We follow the ICMJE criteria for authorship:

  1. Substantial contributions to the conception or design of the work; or the acquisition, analysis, or interpretation of data for the work; AND

  2. Drafting the work or revising it critically for important intellectual content; AND

  3. Final approval of the version to be published; AND

  4. Agreement to be accountable for all aspects of the work in ensuring that questions related to the accuracy or integrity of any part of the work are appropriately investigated and resolved.

Anyone who satisfies and is willing to accept these responsibilities and commitments is welcome to be an author on this publication.

sympy-paper's People

Contributors

aktech avatar ashutoshsaboo avatar asmeurer avatar aterrel avatar certik avatar ellisonbg avatar fabianp avatar flacjacket avatar fredrik-johansson avatar gitter-badger avatar hargup avatar isuruf avatar leosartaj avatar mattcurry avatar mattpap avatar moorepants avatar mrocklin avatar rc avatar rouckas avatar scolobb avatar scopatz avatar shivamvats avatar skirpichev avatar smichr avatar sumith1896 avatar thilinarmtb avatar upabjojr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sympy-paper's Issues

Use multiple LaTeX files

If we use a single LaTeX file, merge issues could easily occur.

I suggest to create a single file for every subsection of the paper.

Research examples section

After skimming through the scikit-image paper (https://peerj.com/articles/453/) again I really liked the "Usage Examples" section that shows how the software is used in research, education, and industry. This is a very important thing to tell a story about. It's one thing to show that we have this software and these are the features, but being able to show how the software is powering these three topics will make the paper very strong. I would like to advocate that we restructure things some to make this a prominent part of the sympy paper.

Algorithms

What algorithms should we go into, and in what detail? Note that there are actually a lot of nontrivial algorithms in SymPy due to the polys (http://docs.sympy.org/latest/modules/polys/literature.html) (and a ton more if we include what's in mpmath). My thinking is that we shouldn't spend too much time describing algorithms that are already described in the literature. If there are things in SymPy that aren't based on an algorithm from the literature, we should describe that in more detail, at least if it's significant.

Some issues with code example coloring

The code examples that use verbatim currently aren't colored. If we use minted, as is already done in the physics section, they are colored. There are some issues, though.

  • Single quotes are rendered as instead of '. This not only looks bad, but it makes it so that you can't copy and paste any code that has them. Double quotes appear to render correctly.

  • The colors aren't very good. In particular, the output is formatted in gray. It should be formatted in black. Based on http://pygments.org/demo, none of the built in pygments styles do this, so we'll probably have to create a custom one. IMO the default colors are also way too colorful, putting a different color on every possible symbol and making things appear way too colorful and distracting.

  • I'm sceptical whether the journal would be able to build the paper with minted correctly, and especially with minted and a custom pygments style (I'm a little unclear how to even do this. I see how to create a custom style, but is the only way to use it to literally require it to be installed first? Can we install a style by adding some directly to PYTHONPATH when building?).

    I think a better solution would be to generate the examples with pygments using its ability to output to tex (like pygmentize -f latex source.py). This way we would have pure tex to send to the journal, and the complexities of coloring the code would be up to us.

    As a side effect, all the examples would be in separate py files, which would make them more difficult to maintain, but also easier to doctest.

  • It's a minor issue, but if you switch all the code examples from verbatim to minted the document takes much longer to build (over a minute for make to run).

Any other suggestions? Does anyone know how to fix the quote issue?

Another option would be to not syntax highlight at all, which I'm actually fine with.

Author metadata out of hand

It takes up at least half a page worth of text. This should be shortened to simply the corresponding author.

Trimming

I plan to do some trimming, and offloading of material to supplementary sections. Help is appreciated, but let me know if you plan to, so we don't end up in merge conflict hell.

A couple of guidelines I'll be following:

  • The paper is not documentation. Many parts of the paper currently read like documentation. These parts should be moved to the supplemental or cut.
  • The paper contains a lot of descriptions of tertiary things, which could be offloaded to a citation. It's OK to refer to things with an assumption that people will know about them, with a citation for if they don't.

Features to discuss in-depth

SymPy has a ton of features. Here are some suggestions on which ones we should discuss in depth. This already feels like a lot, so we may need to cut some of it as well.

  • Basic operations (the core)
  • Calculus (differentiation, integration, limits). Integration and limits in particular have nontrivial algorithms behind them.
  • Solvers (regular equations, maybe also mention other types of solvers like ODEs/recurrence/Diophantine)
  • Matrices (worth including to stress that they are symbolic)
  • Assumptions system (could also be part of the core)
  • Logic (could also be part of the assumptions section)
  • Physics module (some sampling, to show that it is there)
  • Printing (results will be printed anyway, so it's worth mentioning it)

This doesn't include discrete math, concrete math, plotting, geometry, statistics, polys, combinatorics/group theory, code generation, lie algebras, cryptography, category theory, special functions, sets, matrix expressions, series, or vectors.

Feel free to disagree with me on what should/shouldn't be discussed in-depth.

Ondřej's name renders as ONDřEJ ČERTÍK

This might just be a bug with the SIAM template, which converts the author names to uppercase. If you use On\v{r}ej it gives ONDŘEJ correctly. But right now it's using the Unicode characters and the Ř is kept lowercase.

@certik

Newline after every dot

What about adding a Travis test to check that every dot ending a period is followed by a new-line?

It would make it easier to see differences in PR.

Keywords

We need at least three keywords to submit the article. We also need AMS subject classifications.

No mention of sympy.stats

We shall mention sympy.stats and refer to the papers by @mrocklin

It is a really interesting module, it would be a shame to skip it completely.

Fix the upload script

I had to disable pdf upload in #86, as it was not robust. To make it robust, we should:

  • enable set -e, i.e. fail on any error in the upload script
  • disable notifications for now (I think they already are), since they don't work
  • figure out a robust way to do git push. Perhaps it could work to pull first and then push. It depends if the failure is caused by some other Travis test pushing in changes after we pulled but before we pushed. Or if the failure is caused by something else, we need to investigate and fix it, perhaps try a few times, etc.

SICOMP rejected the paper

SICOMP has rejected the paper as out of scope. Here are other possible journals we can submit to. My preference is PeerJ, but I'd love to hear other's opinions as well.

Examples of use in industry, research, and education

I'm working on finding one example each of how SymPy is used in industry, research, and education to highlight in the paper. This is inspired by similar sections in the sckikit-image paper. This issue will be used to track the search effort and decide on which topics to highlight. For the research example, this would ideally highlight some published work that used SymPy to help get a result. For industry, hopefully we can find someone that would like to share what they did. And for education this could be backed by a paper, blog post, or something citable, or we can find someone that wants to tell us about an unpublished use case.

I'm currently looking through these sources of citations and building a Zotero collection with comments and tags to sort through the information:

Checklist of searching:

Flow and importance

Each section and subsection should include a sentence or two (preferably at the top) describing why anyone would care about the upcoming section. Right now, most of these sections start out with a SymPy supports X feature. A concise statement on what such features are and how they effect other features and use cases would be tremendously helpful.

Get unicode in verbatim working

+\begin{verbatim}
+>>> pprint(Integral(sqrt(phi0 + 1), phi0))
+
+⎮   ________
+⎮ ╲╱ φ₀ + 1  d(φ₀)
+
+\end{verbatim}

latex will fail with:

! Package inputenc Error: Unicode char ⌠ (U+2320)
(inputenc)                not set up for use with LaTeX.

See the inputenc package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.64 \end{verbatim}

Paper outline (please add your opinion)

Based on a call with @scopatz and @moorepants, I have created a wiki page of the outline of the paper, with page counts for each section. This should hopefully allow us to resolve #55.

Everyone: please go to https://github.com/sympy/sympy-paper/wiki/outline and add how many pages you think each section should be in the final paper (or add sections, if you think they are missing). The total page count should add up to no more than 18. This doesn't include any content from the supplement, which can be as long as we like.

I have the outline for the current paper as it stands at the bottom for reference (with assumption that the intro will be a page and the conclusion will be half a page).

Please do this by Monday, May 9. I am also creating some milestones in the issue tracker so that we are all on the same page with respect to deadlines.

Some Issue in locally building the paper (that we have created till now)

Hi,

I just updated my master, with sympy-paper's newly pushed commits. When I try to create the latex pdf, the following error log shows up-:

ashutoshsaboo@ASHUTOSH-PC:~/sympy-paper$ pdflatex paper.tex 
This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2015/dev/Debian) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(./paper.tex
LaTeX2e <2014/05/01>
Babel <3.9l> and hyphenation patterns for 2 languages loaded.
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo))

! LaTeX Error: File `authblk.sty' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)

Enter file name: 
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty))
(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty)
(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty)
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty)
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty)
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def)
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg)
(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty))

Package hyperref Message: Driver (autodetected): hpdftex.

(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty))
(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty)
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg)
(/usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def)))
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty
For additional information on amsmath, use the `?' option.
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty))
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty)
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty))
(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty
(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty))

! LaTeX Error: File `minted.sty' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)

Enter file name: 
(/usr/share/texlive/texmf-dist/tex/latex/siunitx/siunitx.sty
(/usr/share/texlive/texmf-dist/tex/latex/l3kernel/expl3.sty
(/usr/share/texlive/texmf-dist/tex/latex/l3kernel/expl3-code.tex
(/usr/share/texlive/texmf-dist/tex/latex/etex-pkg/etex.sty))
(/usr/share/texlive/texmf-dist/tex/latex/l3kernel/l3unicode-data.def)
(/usr/share/texlive/texmf-dist/tex/latex/l3kernel/l3pdfmode.def))
(/usr/share/texlive/texmf-dist/tex/latex/l3packages/xparse/xparse.sty)
(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty)
(/usr/share/texlive/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty)
(/usr/share/texlive/texmf-dist/tex/latex/beamer/translator/translator.sty
(/usr/share/texlive/texmf-dist/tex/latex/beamer/translator/translator-language-
mappings.tex))) (/usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty)


! LaTeX Error: File `cprotect.sty' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)

Enter file name: 
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty))
(/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty)

! LaTeX Error: File `authors.tex' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: tex)

Enter file name: 
(./paper.aux) (/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty))
(./paper.out) (./paper.out)
(/usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty)
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg))
(/usr/share/texlive/texmf-dist/tex/latex/caption/ltcaption.sty)
(/usr/share/texlive/texmf-dist/tex/latex/beamer/translator/dicts/translator-bas
ic-dictionary/translator-basic-dictionary-English.dict)
(/usr/share/texlive/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg)
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd)
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd)

LaTeX Warning: No \author given.

(./introduction.tex) (./architecture.tex [1{/var/lib/texmf/fonts/map/pdftex/upd
map/pdftex.map}]
Overfull \hbox (72.77695pt too wide) in paragraph at lines 56--64
[]\OT1/cmr/m/n/10 Every SymPy ex-pres-sion sat-is-fies a key in-vari-ant, namel
y, []\OT1/cmtt/m/n/10 expr.func(*expr.args) == expr\OT1/cmr/m/n/10 .
[2] [3]
Overfull \hbox (61.97145pt too wide) in paragraph at lines 204--213
\OT1/cmr/m/n/10 sump-tions de-fined, can be rewrit-ten in terms of fac-to-rial 
with []\OT1/cmtt/m/n/10 gamma(x).rewrite(factorial)\OT1/cmr/m/n/10 ,
[4]
Overfull \hbox (17.24684pt too wide) in paragraph at lines 245--245
[]            \OT1/cmtt/m/n/10 return self.func(self.args[0])*polygamma(0, self
.args[0])[] 
) (./algorithms.tex [5]

LaTeX Warning: Citation `goldberg1991every' on page 6 undefined on input line 5
4.


LaTeX Warning: Citation `Sofroniou2005precise' on page 6 undefined on input lin
e 60.


LaTeX Warning: Citation `Fateman1992' on page 6 undefined on input line 64.


LaTeX Warning: Citation `van2011numpy' on page 6 undefined on input line 76.

[6]

LaTeX Warning: Citation `GMPY' on page 7 undefined on input line 118.


LaTeX Warning: Citation `takahasi1974double' on page 7 undefined on input line 
132.


LaTeX Warning: Citation `bailey2005comparison' on page 7 undefined on input lin
e 132.


LaTeX Warning: Citation `BenderOrszag1999' on page 7 undefined on input line 13
9.


Overfull \hbox (0.2613pt too wide) detected at line 172
\OML/cmm/m/it/10 K[]\OT1/cmr/m/n/10 (\OML/cmm/m/it/10 z\OT1/cmr/m/n/10 ) = [] [
]
[7]

LaTeX Warning: Citation `Toth2007' on page 8 undefined on input line 188.


LaTeX Warning: Citation `Ferguson1999' on page 8 undefined on input line 222.

[8]

LaTeX Warning: Citation `Gruntz1996limits' on page 9 undefined on input line 24
4.


Overfull \hbox (27.74675pt too wide) in paragraph at lines 253--253
[]\OT1/cmtt/m/n/10 In [2]: limit((2*E**((1-cos(x))/sin(x))-1)**(sinh(x)/atan(x)
**2), x, 0)[] 

Package amsmath Warning: Foreign command \over;
(amsmath)                \frac or \genfrac should be used instead
(amsmath)                 on input line 259.


Overfull \hbox (31.31221pt too wide) in paragraph at lines 279--285
[]\OT1/cmr/m/n/10 Strategy: mrv set: the set of most rapidly vary-ing subex-pre
s-sions $\OMS/cmsy/m/n/10 f\OML/cmm/m/it/10 e[]; e[]; e[]\OMS/cmsy/m/n/10 g$\OT
1/cmr/m/n/10 ,
[9]

LaTeX Warning: Citation `Gruntz1996limits' on page 10 undefined on input line 3
00.

) (./features.tex

LaTeX Warning: Reference `features-table' on page 10 undefined on input line 5.



Underfull \hbox (badness 1107) in paragraph at lines 15--18
[]|\OT1/cmr/m/n/10 Summations, prod-ucts, bi-no-mial co-ef-fi-cients, prime

LaTeX Warning: Citation `petkovvsek1996bak' on page 10 undefined on input line 
20.


LaTeX Warning: Citation `Hunter:2007' on page 10 undefined on input line 21.


LaTeX Warning: Citation `adams1994introduction' on page 10 undefined on input l
ine 32.


LaTeX Warning: Citation `Nijenhuis1978combinatorial' on page 10 undefined on in
put line 46.


LaTeX Warning: Citation `biggs1976graph' on page 10 undefined on input line 47.



Underfull \hbox (badness 1642) in paragraph at lines 43--48
[]|\OT1/cmr/m/n/10 Implements per-mu-ta-tions, com-bi-na-tions, par-ti-tions,

Overfull \hbox (61.90755pt too wide) in alignment at lines 10--67
 [] [] 
[10] [11] (./features_basic_operations.tex [12]
Overfull \hbox (69.99886pt too wide) in paragraph at lines 96--100
\OT1/cmr/m/n/10 pres-sion through the log-i-cal con-nec-tor class, in this case
 []\OT1/cmtt/m/n/10 And(Q.positive(x), Q.positive(y))\OT1/cmr/m/n/10 . 
[13]) (./sets.tex (/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd)
[14]) (./solvers.tex [15] [16]
Underfull \hbox (badness 10000) in paragraph at lines 103--104

) (./diophantine.tex [17]
Overfull \hbox (127.49588pt too wide) in paragraph at lines 48--48
[]\OT1/cmtt/m/n/10 set([(-16*p**2 + 28*p*q + 20*q**2, 3*p**2 + 38*p*q - 25*q**2
, 4*p**2 - 24*p*q + 68*q**2)])[] 

Overfull \hbox (17.24684pt too wide) in paragraph at lines 48--48
[]\OT1/cmtt/m/n/10 >>> diophantine(9*a**2 + 16*b**2 + c**2 + 49*d**2 + 4*e**2 -
 25*f**2)[] 

Overfull \hbox (484.49277pt too wide) in paragraph at lines 48--48
[]\OT1/cmtt/m/n/10 set([(70*t1**2 + 70*t2**2 + 70*t3**2 + 70*t4**2 - 70*t5**2, 
105*t1*t5, 420*t2*t5, 60*t3*t5, 210*t4*t5, 42*t1**2 + 42*t2**2 + 42*t3**2 + 42*
t4**2 + 42*t5**2)])[] 
) (./features_matrices.tex [18] [19]) (./features_logic.tex
(/usr/share/texlive/texmf-dist/tex/latex/base/omlcmr.fd) [20]

LaTeX Warning: Citation `moskewicz2008method' on page 21 undefined on input lin
e 73.

[21])) (./domain_specific.tex

! LaTeX Error: Environment listing undefined.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.21 \begin{listing}

? 

! LaTeX Error: Environment minted undefined.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.22   \begin{minted}
                     {pycon}
? 

! LaTeX Error: \begin{document} ended by \end{minted}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.35   \end{minted}

? 

! Package caption Error: \caption outside float.

See the caption package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.36   \caption
               {
? 

! LaTeX Error: \begin{document} ended by \end{listing}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.48 \end{listing}

? 

LaTeX Warning: Citation `Lagrange1811' on page 22 undefined on input line 60.


LaTeX Warning: Citation `Kane1985' on page 22 undefined on input line 60.


LaTeX Warning: Citation `Peterson2014' on page 22 undefined on input line 62.

[22]) (./other_projects_that_use_sympy.tex [23]

LaTeX Warning: Reference `fig:integralsteps' on page 24 undefined on input line
 88.

<images/integral_steps.png, id=280, 439.6425pt x 578.16pt>
<use images/integral_steps.png>

Package caption Warning: The option `hypcap=true' will be ignored for this
(caption)                particular \caption on input line 92.
See the caption package documentation for explanation.


Overfull \hbox (25.00003pt too wide) in paragraph at lines 89--95
[]$[]$ 
[24] [25 <./images/integral_steps.png>]) (./comparison_with_mma.tex

LaTeX Warning: Citation `Wolfram2016' on page 26 undefined on input line 6.

[26]) (./conclusion_and_future_work.tex)
No file paper.bbl.
[27] (./paper.aux)

Package rerunfilecheck Warning: File `paper.out' has changed.
(rerunfilecheck)                Rerun to get outlines right
(rerunfilecheck)                or use package `bookmark'.


LaTeX Warning: There were undefined references.


LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.

 )pdfTeX warning (dest): name{subsection.2.4} has been referenced but does not 
exist, replaced by a fixed one

</usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr/
share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/
texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb></usr/share/texliv
e/texmf-dist/fonts/type1/public/amsfonts/cm/cmitt10.pfb></usr/share/texlive/tex
mf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/texlive/texmf-dis
t/fonts/type1/public/amsfonts/cm/cmmi5.pfb></usr/share/texlive/texmf-dist/fonts
/type1/public/amsfonts/cm/cmmi7.pfb></usr/share/texlive/texmf-dist/fonts/type1/
public/amsfonts/cm/cmmi8.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/
amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfont
s/cm/cmr12.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cm
r17.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr5.pfb>
</usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb></usr/sh
are/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb></usr/share/texl
ive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb></usr/share/texlive/texm
f-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/share/texlive/texmf-dist
/fonts/type1/public/amsfonts/cm/cmsy5.pfb></usr/share/texlive/texmf-dist/fonts/
type1/public/amsfonts/cm/cmsy7.pfb></usr/share/texlive/texmf-dist/fonts/type1/p
ublic/amsfonts/cm/cmsy8.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/a
msfonts/cm/cmti10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfont
s/cm/cmtt10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/c
mtt8.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/symbols/msb
m10.pfb>
Output written on paper.pdf (27 pages, 327111 bytes).
Transcript written on paper.log.

I don't know what file name to enter, when I don't enter anything, although it does proceed ahead, and pops with some more errors and produce the PDF. But can someone look into the error log, because there were some errors/warnings that generated in the build process? Also, about the missing files listed in the error log as well?

cc/ @scopatz @asmeurer @certik @moorepants

Background

As far as I can tell there is no background section yet. I believe that this is important to have. I think that SymPy exists within the broader context of CASs, compilers, and the scientific python ecosystem, all of which have valuable histories for this sort of paper.

Section about all of the projects that use sympy

There are a number of projects that use sympy as a library, e.g. web apps, domain specific tools, etc. I think we should highlight the best ones in the paper to show SymPy's reach and utility.

Should we make the paper computionally reproducible?

The last few papers I've written, I've taken the extra time to ensure the results and paper are computationally reproducible (i.e a single make command will "build" the paper from raw data and source code). See this paper for an example:

https://github.com/csu-hmc/perturbed-data-paper

This was a pain for my co-authors because they weren't famliar with the tools and workflow, but it should be a breeze for this set of authors. It definitely takes more time though.

Build the pdf in master automatically

This used to work, but the current link in the README is wrong:

https://www.sharelatex.com/github/repos/asmeurer/sympy-paper/builds/latest/output.pdf

and this link doesn't work (it returns an xml with the text "The specified key does not exist."):

https://www.sharelatex.com/github/repos/sympy/sympy-paper/builds/latest/output.pdf

If somebody could set this up, that would be awesome.

I can't compile the latex on my machine it requires tons of sty packages (I have an old RHEL6 system at work, and can't easily update it).

Tracking search for educational, research, and industrial use of SymPy

I and others would like to see a section in the paper that shows off how SymPy is used in education, research, and industry, much like the Sciki-Image paper. This issue here to track information wrt to finding good examples of this.

I'm currently looking through these sources of citations and building a Zotero collection with comments and tags to sort through the information:

The goal is to find at least 1 example in the three categories, preferably an example that seems to have high impact (citation count, web references, etc). I'll add more as I go. Any help is appreciated.

Benchmarking? AKS Primality Test?

In my experience the full AKS primality test shows quickly where scalability issues are for large numbers in symbolic packages.

Any interest in implementing the full AKS and benchmarking SymEngine to see where there is still some room for improvement? The only SymPy implementation of AKS I saw was without modular arithmetic and just tested when the domain jumped from ZZ to QQ on the polynomial coefficients.

Recompiling SymEngine with gcov alone might be enough to see hot spots. Also some strace to see where memory movement is actually happening under the hood at the operating system. Math in L1 is cheap, it's the requests to RAM that waste time/energy. Cache efficiency is king.

Writing assignments

Here are some writing assignments. I'm basing this on what people have volunteered to write.

Me: The architecture section.

@fredrik-johansson: The numerics section.

@certik: The limits/Gruntz algorithm section.

@aktech and @hargup: The solvers section.

@Sumith1896: The logic section.

@moorepants: The physics section.

@ashutoshsaboo: SymPy Gamma and Live (already started)

@scopatz: features table.

@Upabjojr: basic operations (in features)

@shivamvats and @leosartaj: series

Not represented from the current outline

  • Calculus
  • Matrices
  • Risch algorithm
  • Polynomials

Some people have already volunteered to write some of these sections but they already have a writing assignment above, and I don't want to put too much work on anyone. If you write your assignment and some other section, go ahead (but please "claim" it first so that we don't duplicate work).

Have your initial text in by Wednesday, April 13. Note that this is just a first draft, so don't worry about refinements or organization too much. It will probably will be easiest if each person writes their part as a separate file.

Beyond this there will be further deadlines for reviewing.

I apologize if this is a rushed schedule. The goal is to have a draft to submit by May 1.

Add Travis to build PRs

It is important that PRs don't break the build, so let's just test that the pdf still builds on Travis, without actually seeing it (for now). It's fine if it's slow (due to being in the sympy org), I don't think we have to rush with merging PRs.

\allowbreak{} in \texttt sections

I'm opening this so I don't forget it. If any of the texttt text causes overfull \hbox issues, you can add \allowbreak{} to it where it should break. I would suggest breaking after a dot, or after an operator. This won't work with \verb.

We shouldn't worry about this until the text is final, since changing the text could change what lines are too long.

Code generation

I'd like to add a section on code generation in features. Not sure where we are drawing our line on wat features to discuss and what not to discuss.

How to cite the supplement in the paper?

For example, should the section about limits (in the calculus section of the main paper) contain references to more details about the Gruntz algorithm in the supplement? Or should we rather just mention the supplement as a whole from the introduction?

Pull request reviewing assignments

Now that the writing assignments are in, we need to get them reviewed and merged. The deadline for this is Monday, April 18. By that day, all pull requests should be merged, so that we have a complete "first draft" of the paper.

In order to do this, everyone will be assigned a different pull request to review. Feel free to also review other pull requests as well, but each person assigned below should have the responsibility to get that PR merged by Monday (in addition to their own PR, obviously).

Here are reviewing assignments. I know some PRs are lengthier than others, so if it's too much for you in this time frame let me know.

Me: I will review #34. I also need to write an introduction to the paper.

@fredrik-johansson: please review #38

@aktech and @hargup: please review #29 and #31

@Sumith1896: please review #42.

@moorepants: please review #21 and #35

@ashutoshsaboo: please review #37

@scopatz: please review #41

@Upabjojr: please review #36

@shivamvats and @leosartaj: please review #33

Removing some content

The current paper size (in the reviews branch) is too long. The limit is 20 pages. A few references will be dropped when we move the supplement to its own document, but we also don't have the abstract yet, so actually it will get longer. Here are my suggestions for things to either drop, move to the supplement, or somehow reformat to take up less space:

  • Drop or move to the supplement Section 4.2 (numerical simplification)
  • Significantly reduce the size, if not number, of solvers examples.
  • The quantum examples may also need to be trimmed.
  • The simplify examples take up too much space. Figuring out how to remove the blank lines would help. Perhaps we can reformat the table so that the examples are in their own column. Or maybe it should just be removed.

FAQ on stackoverflow

Make sure that questions frequently asked on stackoverflow are answered in this paper.

solve([x**2 + y**2 - 16, 4*x - y**2 + 6], x, y) doesn't work in SymPy 1.0

Can somebody else check that this gives an empty list?

According to solvers.tex, this should give,

>>> solve([x**2 + y**2 - 16, 4*x - y**2 + 6], x, y)
[(-2 + sqrt(14), -sqrt(-2 + 4*sqrt(14))),
 (-2 + sqrt(14), sqrt(-2 + 4*sqrt(14))),
 (-sqrt(14) - 2, -I*sqrt(2 + 4*sqrt(14))),
 (-sqrt(14) - 2, I*sqrt(2 + 4*sqrt(14)))]

Page limit

It'd be nice to either choose a page limit or, alternatively, pick a journal and see what their limit is. If we have a page limit in place then we will have a constraint on choosing what should go in the paper. Right now, we are likely to simply keep adding things, when we probably need to remove things.

make fails with TeX capacity exceeded

Hi,

When running make (on ubuntu 15.10), I get the following error:

<snip> 
(./paper.bbl [22]
Underfull \hbox (badness 1275) in paragraph at lines 7--9
[]\OT1/cmr/m/it/8 The soft-ware en-gi-neer-ing of the wol-fram sys-tem\OT1/cmr/
m/n/8 , 2016, [][]$https : / / reference . wolfram . com /
! TeX capacity exceeded, sorry [input stack size=5000].
\@makeother #1->\catcode `#1
                            12\relax 
l.109 ...tle=Formal_power_series&oldid=714764056}}
                                                  .
!  ==> Fatal error occurred, no output PDF file produced!
Transcript written on paper.log.
Makefile:2: recipe for target 'all' failed
make: *** [all] Error 1

Increasing stack size in texmf.cnf, the error becomes:

<snip>
(./paper.bbl [22]
Underfull \hbox (badness 1275) in paragraph at lines 7--9
[]\OT1/cmr/m/it/8 The soft-ware en-gi-neer-ing of the wol-fram sys-tem\OT1/cmr/
m/n/8 , 2016, [][]$https : / / reference . wolfram . com /
! TeX capacity exceeded, sorry [parameter stack size=10000].
\@makeother #1->
                \catcode `#112\relax 
l.109 ...tle=Formal_power_series&oldid=714764056}}
                                                  .
!  ==> Fatal error occurred, no output PDF file produced!
Transcript written on paper.log.
Makefile:2: recipe for target 'all' failed
make: *** [all] Error 1

Here I don't know what parameter to increase in texmf.cnf to overcome this issue (increasing param_size was not sufficient). Any help is appreciated.

Meanwhile, disabling \bibliography{paper} I can produce a pdf file.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.