GSoC 2016 Application Bhautik Mavani: SymPy Live and SymPy Gamma (on Google App Engine) - wrat/sympy GitHub Wiki
**Name:**Bhautik Mavani
University: Dhirubhai Ambani Institute of Information & Communication Technology, Gandhinagar
Email: [email protected]
Github: mvnnn
Blog : GSOC'16
Time-zone: UTC + 5:30
##Personal Background I am a 3rd year undergraduate pursuing B.Tech. in Computer Science and Engineering at Dhirubhai Ambani Institute of Information & Communication Technology, India. I like to develop scalable website and web application.
I use Linux mint 17.3 "Rosa" as my primary work machine and Atom as my primary text editor because it's very promising new editor and provide a lot of new functionality.Sometimes I also use Sublime Text 3. I am very much familiar with Git and Github.
I have 3-year programming experience in web developing and 2-year programming experience in python. I have done 3-month internship as a web developer and 1-month internship as a game developer. I had developed more then 6 web app and two website using HTML,CSS,javascript(es5 and es6),AngularJS,Jquery,BackboneJS,React,Bootstrap,materialize,material-UI in Front-end and Django,NodeJS in Back-end using database MongoDB and Mysql. I am doing programming using python and java.I feel very comfortable with numpy,pandas and Cython.I am very much familiar with Google App Engine.
I was introduced to Sympy in mid-January 2016,Since then I have been consistently contributing and learning from the great community.Here is a list of all the merged,unmerged and rejected pull requests in chronological order.
-
(Merged) PR #10615 : I see that
eulerline
property is missing in Triangle so i add that in Triangle. -
(Merged) PR#10543 : I add
_eval_is_finite
inzeta
. -
(Open) PR #10611 : I fix
TypeError
when match result is None inmanualintegrate
. -
(Merged) PR #10581 : I was working with Christopher Smith and fix this issue and closed PR #10569. we added TypeError in Boolean addition and multiplication.
-
(Merged) PR #10664 : I fix
printing
mistake inpoly
. -
(Open) PR #10687 : In this PR i was working with Christopher Smith see PR #10644.
-
(Merged) PR #10461 : That's more complicated issue.my PR is merged in PR #10629.
-
(Open) PR #10624 : I added
ValueError
inEuler
for negative numbers. -
(Merged) PR #10635 : I Solve boolean
Eq
evaluate problem. -
(Merged) PR #10574 : I was working with Christopher Smith and fix this issue and closed PR #10528.
-
(Closed) PR #10604 : I fixes assumptions bug in ask but I doing this in wrong section.
-
(Open) PR #10525 : I modify equalLengths function.
-
(Merged) PR #10659 : I fix Boolean rowsList or colsList output issue in
matrix
.
I like to solve web related issue.Here is a list of all the merged,unmerged and rejected pull requests in chronological order.
-
(Open) PR #19 : I read
releases.txt
file from Sympy server and add all version insphinxsidebarwrapper
. i also addpopup
menu for all version. -
(Open) PR #18 : I add
latest
docs link on all old version's header.
A website is the main face of the project which is the knowledge base where people understand about the project, learn and see the resources and consider a chance to join the community of growing developers and contribute back to the project. It helps reach a wider audience and a well designed website always attracts more users thus increasing the users and the chance of providing feedback and patches to the project. SymPy already has a SymPy Gamma which is a little closer to WolframAlpha. My aim is to implement a WolframAlpha's functionality into Sympy Gamma and SymPy Live. Most important is to add natural language queries parsing for SymPy Gamma and improve parsing for SymPy Gamma.I will add some functionality for user using ipywidgets. User can change variable value and we need to plot according to value change. we need to improve lot of functionality in Sympy Live.
I would like to build scalable website and web application. I am very much familiar with natural language processing. I have been working on NLTK from last one year. I have done Data Analysis and Statistics course on coursera.
#Implementation details ##SymPy Gamma :
-
I will implement natural language queries support using spaCy NLP.
-
Sympy gamma can parse some type of inputs(eg. ‘Sin[x]^2’ into ‘sin(x)2’, ‘x + sin x’ into ‘x + sin(x)’). But it can’t parse some type of inputs (eg.sinx → expected output is sin(x)). I type "sin(x(x + 1)", it automatically guesses that I meant "sin(x(x + 1)). I will improve this parsing using regular expression syntax tree. In this case first i find a list of precedence levels after this i find list of operators whether it's left, right or non-associative.
-
Wolframalpha have symbol keyboard so that user can make expression easily using keyboard. That’s very useful especially for mobile. I will add all symbol(" ∫ " = integrate, " ∑ " = sum, etc). Users can input those symbols using keyboard and i will parse those symbol to SymPy code. I will do that using mathquill to get the LaTeX code curresponding to user input from keyboard and then I will use Latex2SymPy to convert Latex code to simple expression. If user clicked on “ ∫ ” button then mathquill generate this output “\int” and then I use Latex2Sympy and we get “integrate” as a output.
-
i will add “Autocompletion” (for words like {Integrate, limit,etc} , for brackets) . When user input words i will show you drop down same way as google search doing. I will show only Sympy function name (eg, Limit,integration,etc). I will show you bracket close autocompletion. When user open bracket in their input then i will show close bracket.In this case we need to consider some assumption using regular expression.(eg. If user input “(lim” → in that case we can’t show like this “(lim)” ). We provide checkbox for user to select and they want to use autocomplition or not.
-
I will add some functionality for user.User can change variable value.etc and we need to plot according to value change.(TODO)
-
I will add some shortcut for Math Symbol use in Sympy. I will consider “s” key and other key is correlated with this key.(eg. s+i = integration, s+l = Limit, etc).
-
if user click on this button then we display small conversion windows and user can discuss their doubts easily.if user have logged in then we can reply their answer to their email address.
-
improve website design using Bootstrap or Materializecss. Website design is very important. Wolfram Alpha website design is much better then Sympy gamma.
##Sympy Live :
-
SymPy Live has bugs with pickling.i would like to use pickle with panda. panda really helps to speed up when we have big data.
-
I will add file upload option.so user can upload file and he don't need to type this file code.
-
I will add custom option menu. I add theme change option, Tab space option.etc
-
shortcut (made by user).User can make their own shortcut for Math Symbol using command.
##Timeline:
- 22 Apr - 22 May: Community Bonding Period.
- 23 May - 29 May:
- 30 May - 5 June:
- 6 June - 12 June:
- 13 June - 19 June:
- 20 June - 26 June: Mid term evaluation
- 27 June - 3 July:
- 4 July - 10 July:
- 11 July - 17 July:
- 18 July - 24 July:
- 25 July - 31 July:
- 1 August - 7 August:
- 8 August - 14 August:
- 15 August - 23 August: Final week. Document the code properly after duly cleaning the code.
##References