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/5Group Method of Data Handling: Fundamentals and Applications for Predictive Modeling and Data Analysis Rating: 0 out of 5 stars0 ratingsBioinformatics Algorithms: Techniques and Applications Rating: 0 out of 5 stars0 ratingsScientific Computing with Scala Rating: 0 out of 5 stars0 ratingsIntroduction to Molecular Modeling in Chemistry Education Rating: 0 out of 5 stars0 ratingsA Student's Guide to Python for Physical Modeling: Second Edition Rating: 0 out of 5 stars0 ratingsPython Web Penetration Testing Cookbook Rating: 0 out of 5 stars0 ratingsData Structure in Python: From Basics to Expert Proficiency Rating: 0 out of 5 stars0 ratingsMastering Python: A Comprehensive Guide to Programming Rating: 0 out of 5 stars0 ratingsThe Materials Science of Semiconductors Rating: 0 out of 5 stars0 ratingsStatistics for Machine Learning: Implement Statistical methods used in Machine Learning using Python (English Edition) Rating: 0 out of 5 stars0 ratingsDjango 1.1 Testing and Debugging Rating: 4 out of 5 stars4/5Understanding Mass Spectra: A Basic Approach Rating: 0 out of 5 stars0 ratingsLearning jqPlot Rating: 0 out of 5 stars0 ratingsIntroduction to Python Programming Rating: 0 out of 5 stars0 ratingsIntroduction to TinyML Rating: 5 out of 5 stars5/5Building Python Real-Time Applications with Storm Rating: 0 out of 5 stars0 ratingsOrganic Synthesis: Strategy and Control Rating: 0 out of 5 stars0 ratingsChemical Engineering: Advancing Sustainable Solutions Through Innovative Processes and Systems Rating: 0 out of 5 stars0 ratingsAssembly Language: From Basics to Expert Proficiency Rating: 0 out of 5 stars0 ratingsPython Apps on Visual Studio Code: Develop apps and utilize the true potential of Visual Studio Code (English Edition) Rating: 0 out of 5 stars0 ratingsPython In - Depth: Use Python Programming Features, Techniques, and Modules to Solve Everyday Problems Rating: 0 out of 5 stars0 ratingsR High Performance Programming Rating: 4 out of 5 stars4/5Learning Python with Raspberry Pi Rating: 0 out of 5 stars0 ratingsIntroduction to Python 2018 Edition Rating: 4 out of 5 stars4/5Statistical Bioinformatics: For Biomedical and Life Science Researchers Rating: 0 out of 5 stars0 ratingsMolecular Data Analysis Using R Rating: 0 out of 5 stars0 ratings
Computers For You
Elon Musk 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/5Deep Search: How to Explore the Internet More Effectively Rating: 5 out of 5 stars5/5Learning the Chess Openings 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/5Mastering ChatGPT: 21 Prompts Templates for Effortless Writing Rating: 4 out of 5 stars4/5The Innovators: How a Group of Hackers, Geniuses, and Geeks Created the Digital Revolution Rating: 4 out of 5 stars4/5CompTIA Security+ Get Certified Get Ahead: SY0-701 Study Guide Rating: 5 out of 5 stars5/5The Professional Voiceover Handbook: Voiceover training, #1 Rating: 5 out of 5 stars5/5SQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5Some Future Day: How AI Is Going to Change Everything Rating: 0 out of 5 stars0 ratingsExcel 101: A Beginner's & Intermediate's Guide for Mastering the Quintessence of Microsoft Excel (2010-2019 & 365) in no time! Rating: 0 out of 5 stars0 ratingsAn Ultimate Guide to Kali Linux for Beginners Rating: 3 out of 5 stars3/5The ChatGPT Millionaire Handbook: Make Money Online With the Power of AI Technology Rating: 4 out of 5 stars4/5The Self-Taught Computer Scientist: The Beginner's Guide to Data Structures & Algorithms Rating: 0 out of 5 stars0 ratingsStandard Deviations: Flawed Assumptions, Tortured Data, and Other Ways to Lie with Statistics Rating: 4 out of 5 stars4/5How to Create Cpn Numbers the Right way: A Step by Step Guide to Creating cpn Numbers Legally Rating: 4 out of 5 stars4/5101 Awesome Builds: Minecraft® Secrets from the World's Greatest Crafters Rating: 4 out of 5 stars4/5Alan Turing: The Enigma: The Book That Inspired the Film The Imitation Game - Updated Edition Rating: 4 out of 5 stars4/5A Brief History of Artificial Intelligence: What It Is, Where We Are, and Where We Are Going Rating: 4 out of 5 stars4/5Going Text: Mastering the Command Line Rating: 4 out of 5 stars4/5Tor and the Dark Art of Anonymity Rating: 5 out of 5 stars5/5Python Machine Learning By Example Rating: 4 out of 5 stars4/5The Hacker Crackdown: Law and Disorder on the Electronic Frontier Rating: 4 out of 5 stars4/5CompTia Security 701: Fundamentals of Security Rating: 0 out of 5 stars0 ratingsUncanny Valley: A Memoir Rating: 4 out of 5 stars4/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,