Molecular Calculator – Kalzium
Name Kashyap R Puranik
Nick kashthealien / kashyap on IRC channels and forums
Email: kashthealien (at) gmail (dot) com
Project: Molecular calculator for Kalzium
Kalzium is a periodic table of elements software, which has a database of all elements. It is a widely used education tool. It has tools like the 3-D molecule viewer, plotting widget, equation balancer, molecular mass calculator, etc. I plan to add the molecular calculator widget, the completion of which will make Kalzium a complete learning tool. Data which is currently present in the libscience module is used in the detailed info dialog. However, some of the data is not being used. This can find place in the molecular calculator widget.
The molecular calculator widget is a dialog box, like the plot widget and the detailed-Info-widget (already present.) It has multiple tabs for different types of calculations. Each tab has a particular calculation feature. The widget is easily expandable because, adding a new feature would be the same as adding a new tab to the widget. This is the user-interface part of it. The calculation part includes parsers; molecular formula parser is already there. More parsers for different input methods like the history parser will be created. The calculator module will use the data returned from the parsers and make the calculations. In addition to this dialog widget, I plan to create a plasmoid widget implementing the same features. The independent molecular calculator – plasmoid widget will come in handy for students who need to do calculations frequently and don’t need to view the other data involved.
The molecular calculator widget will be able to calculate a lot of chemical information which includes the following.
* Molecular masses (Already present, will be included in the molecular calculator Widget.), molar masses.
* The reverse of the molecular mass calculator, the molecule predictor, which may take an optional input as a possible element being present.
* Equivalent masses, Percentage composition.
* Basic Stoichiometric analysis to determine molecular formulae / empirical formulae.
(User will enter the data for a particular process and the results will be obtained.)
(Here basic stoichiometric analysis methods will be used.)
* Mass percentages, mole percentages, Molarity, normality, molality, etc for solutions.
* Densities of vapours/gases of elements at different temperatures and pressures.
* Equation solver widget (Already present, will be included in the molecular calculator widget.)
* Electro-chemical equation – energy analyser. (Analyses the energies involved in an electro chemical equation.)
* Nuclear calculations (Decay rates based on half-life, alpha emissions etc. data is already in Kalzium)
* A basic scientific calculator will be an additional tab.
NOTE: No extra data will be needed for any of the above features. All the data needed is already present in the element.xml, isotope.xml files. The parser for these xml files is also available in the element parser and the isotope parser.
* The above molecular widget is similar to the plotting widget and the detailed info dialog widgets. It can be spawned from Kalzium. In addition to this I plan to create a Molecular calculator – plasmoid widget which works independent of the Kalzium main program. The libraries required (parsers) can be translated to python and used.
* As I have mentioned above, I also plan to merge the molecular mass calculator and the equation balancer into the molecular calculator module. Right now they are two independent features in Kalzium. I also plan to add a list of commonly used organic compounds and their abbreviations which can be used in the molecular mass calculator. The user can enter an abbreviation instead of the entire name of the compound. An extra XML file and a parser will be needed for the above, which will be created and added to the libscience module. I plan to add the prediction mode, where possible products are predicted from amongst a list of commonly occurring compounds / chemicals. This will be used even in the equation balancer widget.
* I plan to add a history option which remembers the different calculations/computations that have been made for future reference / predictions. All calculations will be appended to an XML file in a fixed format on every calculation. The molecular calculator will predict compounds from the files.
* If time permits, I plan to implement the teacher mode, where Kalzium teaches a student how exactly a particular calculation is done.
* Also calculator for problems involving chemical-equilibrium will be implemented. Eg. Solubility, Acid base reactions etc.
The data for the above is not currently present in Kalzium.
Stage 0: (Before May 5th)
Getting familiar with the parsers used in Kalzium.
Learning more about the ChemicalDataObject.
Stage 1: (Before May 5th)
Learning plasma and plasmoid widgets. Making sample plasmoid widgets and testing them.
Learning advanced Qt. I know the basics of Qt and how most of Kalzium has been written.
Stage 2: (1 week)
Creating the Basic skeleton of the Molecular Calculator widget and invoking it from Kalzium.
Stage 3: (1.5 weeks)
Completion of the different Calculators in the Molecular calculator widget.
(This involves obtaining already available data, performing simple calculations and presenting it to the user.)
**** At this stage the basic molecular calculator is done
Stage 4: (2 weeks)
Creation of the Plasmoid widget for the molecular calculator and implementing the above mentioned features.
***** At this stage the plasmoid widget for the molecular calculator is done.
Stage 5: (1.5 week)
Creation of the additional parsers required and using them (common compound names, history)
Stage 6: (1.5 weeks)
Addition of the prediction mode. The commonly used compounds will be put in the XML file.
Creating the history parser and implementation of the history feature.
Stage 7 (1.5 weeks)
Bug fixing, code cleaning and beautification of the plasmoid widget.
I will have buffer time of 2 weeks so that, I can use more time where I need.
Also I plan to start early (May 5th) before the announced date (May 26th). Since I already have a KDE SVN account, I can start adding code early. I have 3 months- May, June and July totally free so I can spend a lot of time on the project.
My name is Kashyap R Puranik. I am 18 years old. I am pursuing my undergraduate degree, that is, B.Tech in the Department of Computer Science and Engineering at Indian Institute of Technology-Madras, Chennai, India. I am currently in the second year of college. I am a native of Bangalore, India. My nick is kashthealien on the IRC. I have been playing around with Kalzium for about a year. I checked out the code of Kalzium in October and started contributing for Kalzium in December. I have contributed a few patches that fixed bugs, and I have started working on some of the ideas in the TODO file. I have added a small feature using which the plot widget can selectively plot different types of elements. Also I have contributed for the Wikipedia integration of Kalzium.
I love open source software and I have used a lot of open source software for programming, web-design and other activities. I feel its my turn to stop being a free-rider and offer my contributions to the open-source world on a larger scale. I believe GSoC is an excellent opportunity where I can do the same. I have cleared the JEE (an entrance exam) 2 years ago, where I studied a lot of chemistry. I really wanted to create a chemistry based software for calculating stuff, naming compounds based on conventions (IUPAC), etc. I did not have much knowledge of professional coding and software then. I later came across Kalzium, which does most of what I wanted. It could have been of great use to me when I was learning as a chemistry (science) student. This has brought me to Kalzium. Right now Kalzium is more of a data-base software and has data for various elements; it would be really cool to have it as a calculating tool.
Contributions to Kalzium
Bug-fix -Patch for element data viewer. A bug that plots unknown values as known. http://bugs.kde.org/show_bug.cgi?id=120150
SVN commit 899243 by Cneihaus
A bug that allows negative range of elements for plotting. Bug-fix -Patch for element dataviewer
SVN commit 899885 by Cneihaus
A bug that shows no-units instead of years. Bug-fix -Patch for element parser
SVN commit 910780 by Asimha
Feature – patch for the wikipedia integration for Kalzium.
SVN commit 936674 by Cneihaus
Feature -Patch for element dataViewer. The user can select the type of elements that he wants to add.
SVN commit 936674 by Cneihaus
Feature -Patch for settings for the detailedInfoDialog. The user can select the language of their choice for wikipedia to open in.
SVN commit 941750, 941939, 941981 by kashyappuranik
Bug-fix SVN commit for elementDataViewer. Fixes a minor bug that shows elements that don’t belong to the range.
SVN commit 941944 by kashyappuranik
BUG-fix / feature SVN commit for nuclideboard , nuclideboardView, isotopeDialog.
Fixed a few bugs and added slider for zooming in nuclideboard.
I have been involved in coding for my institute’s websites which includes the website for our cultural festival, Saarang (www.saarang.org). I have been programming in C and C++ for the past 5 years. I have been learning Qt for usage in Kalzium for the last 2 months.