Python for Chemistry: An introduction to Python algorithms, Simulations, and Programing for Chemistry (English Edition)
5/5
()
About this ebook
The objective of this book is to give a gentle introduction to Python programming with relevant algorithms, iterations, and basic simulations from a chemist’s perspective. This book outlines the fundamentals of Python coding through the built-in functions, libraries, and modules as well as with a few selected external packages for physical/materials/inorganic/analytical/organic/ nuclear chemistry in terms of numerical, symbolic, structural, and graphical data analysis using the default, Integrated Development and Learning Environment. You will also learn about the Structural Elucidation of organic molecules and inorganic complexes with specific Cheminformatics modules. In addition to this, the book covers chemical data analysis with Numpy and also includes topics such as SymPy and Matplotlib for Symbolic calculations and Plotting.
By the end of the book, you will be able to use Python as a graphical tool or a calculator for numerical and symbolic computations in the interdisciplinary areas of chemistry.
Related to Python for Chemistry
Related ebooks
NumPy Cookbook Rating: 5 out of 5 stars5/5AP Chemistry All Access Book + Online + Mobile Rating: 0 out of 5 stars0 ratingsAP Chemistry Flashcards, Fourth Edition: Up-to-Date Review and Practice Rating: 0 out of 5 stars0 ratingsFundamental Concepts in Heterogeneous Catalysis Rating: 0 out of 5 stars0 ratingsR High Performance Programming Rating: 4 out of 5 stars4/5Python GUI Development with PyQt Rating: 0 out of 5 stars0 ratingsUltimate Neural Network Programming with Python Rating: 0 out of 5 stars0 ratingsmatplotlib Plotting Cookbook Rating: 5 out of 5 stars5/5Python In - Depth: Use Python Programming Features, Techniques, and Modules to Solve Everyday Problems Rating: 0 out of 5 stars0 ratingsLearning NumPy Array Rating: 0 out of 5 stars0 ratingsPython Data Visualization Cookbook Rating: 4 out of 5 stars4/5Python Data Analysis Cookbook Rating: 4 out of 5 stars4/5Data Analysis with Python: Introducing NumPy, Pandas, Matplotlib, and Essential Elements of Python Programming (English Edition) Rating: 0 out of 5 stars0 ratingsBuilding Machine Learning Systems with Python Rating: 4 out of 5 stars4/5Profound Python Rating: 5 out of 5 stars5/5Learn Python by Coding Video Games (Beginner): Learn Python by Coding Video Games Rating: 2 out of 5 stars2/5Scientific Computing with Scala Rating: 0 out of 5 stars0 ratingsGroup Method of Data Handling: Fundamentals and Applications for Predictive Modeling and Data Analysis Rating: 0 out of 5 stars0 ratingsDeep Learning Fundamentals in Python Rating: 4 out of 5 stars4/5NumPy: Beginner's Guide - Third Edition Rating: 4 out of 5 stars4/5Elements of Chemical Thermodynamics: Second Edition Rating: 5 out of 5 stars5/5Artificial Intelligence with Python - Second Edition: Your complete guide to building intelligent apps using Python 3.x, 2nd Edition Rating: 0 out of 5 stars0 ratings
Computers For You
SQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5The ChatGPT Millionaire Handbook: Make Money Online With the Power of AI Technology Rating: 4 out of 5 stars4/5Elon Musk Rating: 4 out of 5 stars4/5CompTIA Security+ Get Certified Get Ahead: SY0-701 Study Guide Rating: 5 out of 5 stars5/5Mastering ChatGPT: 21 Prompts Templates for Effortless Writing Rating: 4 out of 5 stars4/5Deep Search: How to Explore the Internet More Effectively Rating: 5 out of 5 stars5/5The Self-Taught Computer Scientist: The Beginner's Guide to Data Structures & Algorithms Rating: 0 out of 5 stars0 ratingsTor and the Dark Art of Anonymity Rating: 5 out of 5 stars5/5Creating Online Courses with ChatGPT | A Step-by-Step Guide with Prompt Templates Rating: 4 out of 5 stars4/5Procreate for Beginners: Introduction to Procreate for Drawing and Illustrating on the iPad Rating: 5 out of 5 stars5/5The Innovators: How a Group of Hackers, Geniuses, and Geeks Created the Digital Revolution Rating: 4 out of 5 stars4/5CompTIA IT Fundamentals (ITF+) Study Guide: Exam FC0-U61 Rating: 0 out of 5 stars0 ratingsThe Musician's Ai Handbook: Enhance And Promote Your Music With Artificial Intelligence Rating: 5 out of 5 stars5/5How to Create Cpn Numbers the Right way: A Step by Step Guide to Creating cpn Numbers Legally Rating: 4 out of 5 stars4/5Computer Science I Essentials Rating: 5 out of 5 stars5/5A Guide to Electronic Dance Music Volume 1: Foundations Rating: 5 out of 5 stars5/5Slenderman: Online Obsession, Mental Illness, and the Violent Crime of Two Midwestern Girls Rating: 4 out of 5 stars4/5Technical Writing For Dummies Rating: 0 out of 5 stars0 ratingsEverybody Lies: Big Data, New Data, and What the Internet Can Tell Us About Who We Really Are Rating: 4 out of 5 stars4/5Data Analytics for Beginners: Introduction to Data Analytics Rating: 4 out of 5 stars4/5Standard Deviations: Flawed Assumptions, Tortured Data, and Other Ways to Lie with Statistics Rating: 4 out of 5 stars4/5What Video Games Have to Teach Us About Learning and Literacy. Second Edition Rating: 4 out of 5 stars4/5Learning the Chess Openings Rating: 5 out of 5 stars5/5An Ultimate Guide to Kali Linux for Beginners Rating: 3 out of 5 stars3/5All New Electronics Self-Teaching Guide Rating: 2 out of 5 stars2/5
Reviews for Python for Chemistry
1 rating0 reviews
Book preview
Python for Chemistry - Dr. M. Kanagasabapathy
CHAPTER 1
Understanding Python Functions for Chemistry
Introduction
Python is the most preferred language for scientific computing since it has not a steep learning curve. It was developed by Guido van Rossum, in 1991. It can be deployed from simple numerical computing or data analysis to complex symbolic computations along with 2D, 3D graphical representations. It can also be used for web-based applications, and it can be installed in Windows, Linux and Mac operating systems. Syntax of the Python is easily understandable. For example, the following syntax shows, addition of two numbers and the syntax used is like the plain English.
b = 2; x = 3
print(Sum of 'b' and 'x' is
, (b+x))
>>>
Sum of 'b' and 'x' is 5
Though python language has many built-in functions for scientific computations, this chapter outlines the basic Python functions for computing chemical data such as deploying dictionaries to fetch the atomic mass and atomic number of the chemical elements, estimating atomic percentage from the molecular formula, reading and writing .csv files, computation of thermodynamic, photochemical and chemical kinetics parameters. This chapter also covers the error handlers with reference to electron transfer redox reactions. Algorithm to record the rate of the reaction with timer function is also discussed. Deploying loops and operators in the estimation of various chemical parameters or for simulations are also explained with examples. By using the math module, algorithm for pH metric titrations, determination of energy of activation and spin coupling for NMR spectral data can also be discoursed.
Structure
Dictionary for atomic numbers and atomic masses
Adding elements to the dictionary
Updating elements in the dictionary
Deleting elements from the dictionary
Atomic mass percentage from molecular formula
Data module for physical and chemical constants
Molar gas constant from Boltzmann’s constant
Estimation of volume of an ideal gas
Quantum efficiency of photochemical reactions
Fetching Rf data of amino acids from .csv file
Fetching selective data for amino acids from .csv file
Converting 'amino_acids.csv' to dictionary
Estimation of rate constant with data as a list
Exporting rate constant data to .csv
Math module
Power of 10 (e)
pH metric acid-base titration
R.M.S and average velocity of ideal gas molecules
Rate constant from activation energy
Calculating sine (angle) from radians
Estimating bond length from the bond angle
Priority for arithmetical operators
Quotient and Modulo operators
Assignment operators
Comparison operators
Logical operators
Identity operators
Membership operators
cmath module
Scrutinizing user input data
Tackling of errors in user inputs
Number of electrons transferred in a redox reaction
Conditions and Loops
if … elif … else statements
Error handling with if … else loops
Nested loops
while loops
for loops
range() function
Fetching selective rows of amino_acid.csv file
timer() function
Recording concentration with time (reaction rate)
Recursion
Predicting spin–spin coupling in NMR spectra
Lambda function
Dictionary for atomic numbers and atomic masses
Dictionary is a collection of data (str, int, float formats) and is used to store data as key : values pairs within curled braces, { }. It is ordered, changeable and do not allow duplicates. Based on the key, data values can be fetched. But, in a dictionary new key : values can be added or existing key : values can be updated and can be deleted. Dictionaries can be created for any types of data sets and can be deployed for fetching the required values on program execution. This program demonstrates the creation of a data dictionary for atomic number and atomic masses of the chemical elements based on their symbols as keys.
Syntax: dictionary_name = {key
: [value1, value2]}
Following code demonstrates the creation of a dictionary for chemical elements.
# dictionary_name = {symbol
: [atomic number, atomic mass]}
atomic_number_mass = {
H
: [1, 1.007], # H
is key and [1, 1.007] are values.
He
: [2, 4.003],
Li
: [3, 6.941],
Be
: [4, 9.012],
B
: [5, 10.812],
C
: [6, 12.011],
N
: [7, 14.007],
O
: [8, 15.999],
F
: [9, 18.998],
Ne
: [10, 20.18],
Na
: [11, 22.99],
Mg
: [12, 24.305],
Al
: [13, 26.982],
Si
: [14, 28.086],
P
: [15, 30.974],
S
: [16, 32.066],
Cl
: [17, 35.453],
Ar
: [18, 39.948],
K
: [19, 39.098],
Ca
: [20, 40.078],
Sc
: [21, 44.956],
Ti
: [22, 47.867],
V
: [23, 50.942],
Cr
: [24, 51.996],
Mn
: [25, 54.938],
Fe
: [26, 55.845],
Co
: [27, 58.933],
Ni
: [28, 58.693],
Cu
: [29, 63.546],
Zn
: [30, 65.382],
Ga
: [31, 69.723],
Ge
: [32, 72.631],
As
: [33, 74.922],
Se
: [34, 78.963],
Br
: [35, 79.904],
Kr
: [36, 83.798],
Rb
: [37, 85.468],
Sr
: [38, 87.621],
Y
: [39, 88.906],
Zr
: [40, 91.224],
Nb
: [41, 92.906],
Mo
: [42, 95.962],
Tc
: [43, 98],
Ru
: [44, 101.072],
Rh
: [45, 102.906],
Pd
: [46, 106.421],
Ag
: [47, 107.868],
Cd
: [48, 112.412],
In
: [49, 114.818],
Sn
: [50, 118.711],
Sb
: [51, 121.76],
Te
: [52, 127.603],
I
: [53, 126.904],
Xe
: [54, 131.294],
Cs
: [55, 132.905],
Ba
: [56, 137.328],
La
: [57, 138.905],
Ce
: [58, 140.116],
Pr
: [59, 140.908],
Nd
: [60, 144.242],
Pm
: [61, 145],
Sm
: [62, 150.362],
Eu
: [63, 151.964],
Gd
: [64, 157.253],
Tb
: [65, 158.925],
Dy
: [66, 162.5],
Ho
: [67, 164.93],
Er
: [68, 167.259],
Tm
: [69, 168.934],
Yb
: [70, 173.055],
Lu
: [71, 174.967],
Hf
: [72, 178.492],
Ta
: [73, 180.948],
W
: [74, 183.841],
Re
: [75, 186.207],
Os
: [76, 190.233],
Ir
: [77, 192.217],
Pt
: [78, 195.085],
Au
: [79, 196.967],
Hg
: [80, 200.592],
Tl
: [81, 204.383],
Pb
: [82, 207.21],
Bi
: [83, 208.98],
Po
: [84, 209],
At
: [85, 210],
Rn
: [86, 222],
Fr
: [87, 223],
Ra
: [88, 226],
Ac
: [89, 227],
Th
: [90, 232.038],
Pa
: [91, 231.036],
U
: [92, 238.029],
Np
: [93, 237],
Pu
: [94, 244],
Am
: [95, 243],
Cm
: [96, 247],
Bk
: [97, 247],
Cf
: [98, 251],
Es
: [99, 252],
Fm
: [100, 257],
Md
: [101, 258],
No
: [102, 259],
Lr
: [103, 266],
Rf
: [104, 267],
Db
: [105, 268],
Sg
: [106, 269],
Bh
: [107, 270],
Hs
: [108, 277],
Mt
: [109, 278],
Ds
: [110, 281],
Rg
: [111, 282],
Cn
: [112, 285],
Nh
: [113, 286],
Fl
: [114, 289],
Mc
: [115, 290],
Lv
: [116, 293],
Ts
: [117, 294],
Og
: [118, 294]
}
x = input (Enter symbol:
) #user input for symbol (key)
print(Atomic number for
, x, is:
)
print(atomic_number_mass.get(x)[0]) #index[0] atomic number
print(Atomic mass for
, x, is:
)
print(atomic_number_mass.get(x)[1]) #index[1] atomic mass
>>>
Enter symbol: F
Atomic number for F is:
9
Atomic mass for F is:
18.998
From the user input for the given key value (as ‘x’ for symbol of elements), respective atomic number as well as atomic mass can be fetched. It must be noted that the index values for this dictionary, (atomic_number_mass) is having only two values [0] for the first item of the list, which is atomic number and [1] for the second item of the list, which is atomic mass. Such dictionaries are used to create modules of data sets of various chemical parameters. It must be noted that if any duplicate key is added, it will be removed.
Adding elements to the dictionary
New data can be added, and existing data can be updated or deleted in the dictionary via key : values.
Adding new elements (keys) into the existing dictionary.
atomic_number_mass = {
H
: [1, 1.007],
He
: [2, 4.003],
Li
: [3, 6.941],
Be
: [4, 9.012],
B
: [5, 10.812],
C
: [6, 12.011],
N
: [7, 14.007] # intentionally limited to N
}
print(len(atomic_number_mass)) # len function to know the number of elements
atomic_number_mass[O
] = [8, 15.999] # new key : values
print(atomic_number_mass) # display new dictionary
print(len(atomic_number_mass))
>>>
7
{'H': [1, 1.007], 'He': [2, 4.003], 'Li': [3, 6.941], 'Be': [4, 9.012], 'B': [5, 10.812], 'C': [6, 12.011], 'N': [7, 14.007], 'O': [8, 15.999]}
8
Updating elements in the dictionary
Modifying the keys and their values in the existing keys of the dictionary and their values is depicted as following:
atomic_number_mass = {
H
: [1, 1.007],
He
: [2, 4.003],
Li
: [3, 6.941],
Be
: [4, 9.012],
B
: [5, 10.812],
C
: [6, 12.011],
N
: [7, 14.007] # intentionally limited to N
}
atomic_number_mass[C
] = [6, 13.013] # updating the key C
values.
print(atomic_number_mass)
>>>
{‘H’: [1, 1.007], ‘He’: [2, 4.003], ‘Li’: [3, 6.941], ‘Be’: [4, 9.012], ‘B’: [5, 10.812], ‘C’: [6, 13.013], ‘N’: [7, 14.007]}
Deleting elements from the dictionary
With del name_of_dictionary[key
] the given key and its values can be deleted.
atomic_number_mass = {
H
: [1, 1.007],
He
: [2, 4.003],
Li
: [3, 6.941],
Be
: [4, 9.012],
B
: [5, 10.812],
C
: [6, 12.011],
N
: [7, 14.007] # intentionally limited to 'N'
}
del atomic_number_mass[N
] # removes 'N' and its values
print(atomic_number_mass)
>>>
{'H': [1, 1.007], 'He': [2, 4.003], 'Li': [3, 6.941], 'Be': [4, 9.012], 'B': [5, 10.812], 'C': [6, 12.011]}
Deleting a key can also be executed by pop command as: atomic_number_mass.pop (N
) also gives the same output. Using the keyword, del the dictionary can be deleted.
del atomic_number_mass # This deletes the dictionary
Atomic mass percentage from molecular formula
From a dictionary, key: value data sets of string, float, integer, Boolean for various chemical parameters can be fetched for real-time calculations. Hence the designed dictionary can be deployed for real-time applications.
Based on the dictionary in program # 1, it is possible to calculate various basic data such as molar mass or number of moles of compounds.
This program demonstrates the calculation of molar mass and atomic mass percentage of individual elements of the given compound based on the molecular formula as user input.
# Creating a dictionary for each element with atomic numbers and atomic masses.
# With RegEx module, segregating atoms and their counts for the given compound.
# Splitting of atoms as string from the user input of molecular formula via Uppercase.
# Counting of individual atoms followed by multiplication with its atomic mass fetched from dictionary.
# Interconversion of float and string followed by summation of the individual atomic masses.
# Loop to calculate atomic mass and atomic mass % of atoms.
loop_value = 0 # for infinite loop
while loop_value == 0: # indentation for loop
atomic_number_mass = { # dictionary
H
: [1, 1.007],
He
: [2, 4.003],
Li
: [3, 6.941],
Be
: [4, 9.012],
B
: [5, 10.812],
C
: [6, 12.011],
N
: [7, 1.007],
# Dictionary of elements with atomic number and the relevant atomic mass:
O
: [8, 15.999],
F
: [9, 18.998],
Ne
: [10, 20.18],
Na
: [11, 22.99],
Mg
: [12, 24.305],
Al
: [13, 26.982],
Si
: [14, 28.086],
P
: [15, 30.974],
S
: [16, 32.066],
Cl
: [17, 35.453],
Ar
: [18, 39.948],
K
: [19, 39.098],
Ca
: [20, 40.078],
Sc
: [21, 44.956],
Ti
: [22, 47.867],
V
: [23, 50.942],
Cr
: [24, 51.996],
Mn
: [25, 54.938],
Fe
: [26, 55.845],
Co
: [27, 58.933],
Ni
: [28, 58.693],
Cu
: [29, 63.546],
Zn
: [30, 65.382],
Ga
: [31, 69.723],
Ge
: [32, 72.631],
As
: [33, 74.922],
Se
: [34, 78.963],
Br
: [35, 79.904],
Kr
: [36, 83.798],
Rb
: [37, 85.468],
Sr
: [38, 87.621],
Y
: [39, 88.906],
Zr
: [40, 91.224],
Nb
: [41, 92.906],
Mo
: [42, 95.962],
Tc
: [43, 98],
Ru
: [44, 101.072],
Rh
: [45, 102.906],
Pd
: [46, 106.421],
Ag
: [47, 107.868],
Cd
: [48, 112.412],
In
: [49, 114.818],
Sn
: [50, 118.711],
Sb
: [51, 121.76],
Te
: [52, 127.603],
I
: [53, 126.904],
Xe
: [54, 131.294],
Cs
: [55, 132.905],
Ba
: [56, 137.328],
La
: [57, 138.905],
Ce
: [58, 140.116],
Pr
: [59, 140.908],
Nd
: [60, 144.242],
Pm
: [61, 145],
Sm
: [62, 150.362],
Eu
: [63, 151.964],
Gd
: [64, 157.253],
Tb
: [65, 158.925],
Dy
: [66, 162.5],
Ho
: [67, 164.93],
Er
: [68, 167.259],
Tm
: [69, 168.934],
Yb
: [70, 173.055],
Lu
: [71, 174.967],
Hf
: [72, 178.492],
Ta
: [73, 180.948],
W
: [74, 183.841],
Re
: [75, 186.207],
Os
: [76, 190.233],
Ir
: [77, 192.217],
Pt
: [78, 195.085],
Au
: [79, 196.967],
Hg
: [80,