4
$\begingroup$

I am pharmacy student and would like to work in the field of drug design. We learn to work with the programs but thats not enough for me. I want to learn the theoretical principles of computational chemistry and develop software themselves, or at least parts of it.

However, I have a few questions:

Where do I start with the chemistry part?

  • solving the Schrödinger equation
  • Hartree–Fock method
  • Density functional theory

Which mathematical principles do I need?

Are there comprehensive literature for beginners and what would you recommend? A good book would certainly be the best start.

I need a good starting point, especially in terms of mathematics and hope you can help me.

$\endgroup$
2
  • $\begingroup$ Statistical mechanics, partial differential equations $\endgroup$
    – rch
    Commented Jun 14, 2014 at 21:00
  • 3
    $\begingroup$ I don't want to be an ass, but "computational chemistry" in drug design is at least as much chemoinformatics as quantum chemistry. Actually, I hardly saw any quantum chemistry in this field: statistical and force-field based methods are the dominant. $\endgroup$
    – Greg
    Commented Jun 19, 2014 at 19:07

2 Answers 2

11
$\begingroup$

Computational chemistry is a synthesis of many different subjects, each of which is very complex on its own. So, if you really want to learn the theoretical basis, you should be prepared to put in a lot of time and effort. I don't want to discourage you, I just want you to have realistic expectations.

The fundamentals of computational chemistry are physical chemistry and computer science. The fundamentals of those are math, physics, and logic. So, depending on what your background is, you might have to start with math and physics.

Math:

  • Calculus
  • Vector Calculus
  • Differential Equations
  • Statistics

Physics:

  • Classical Dynamics
  • Classical Electrodynamics

Once you have taken those courses (if you haven't already) you can start with physical chemistry. You could conceivably teach yourself those subjects, but it would be very difficult - a free online course would be a good option if you can't take a university course. I believe Khan academy covers all of these subjects.

Physical Chemistry

  • Statistical Mechanics
  • Quantum Mechanics

I always liked Atkin's physical chemistry book (although I don't know if the newer editions are still good). McQuarrie's quantum chemistry and statistical mechanics are very good as well and are classics in the field.

You asked:

Where do I start with the chemistry part?

  • solving the Schrödinger equation
  • Hartree–Fock method
  • Density functional theory

Quantum mechanics in physical chemistry will cover solutions to Schrodinger's equation for all of the cases where a closed-form solution exists. This will give you an understanding of the basic principles, so you should start with that. To solve "real" systems, you need more advanced approximation techniques, and Hartree-Fock and DFT will get you started. That is a good order to study them in, as well.

For computer science, a lot depends on which software you will be using or what languages you want to use. Most of the core, highly optimized algorithms are written in fortran or C. Some go as far as assembly for the most important parts. Most of the software I have seen (non-core) is written in fortran or C++. My experience is a little out of date (I last worked in the field about 7 years ago) so that may no longer be true. At any rate, you will need at least a basic programming course in the language you want to use (C would be good to start with, since you will really learn the fundamentals). I would also take some object-oriented courses, so courses involving more advanced C++ and java would be good as well.

Key concepts (beyond programming and architecture) that you will need are:

  • Stochastic methods (Monte Carlo)
  • Linear Algebra
  • Numerical integration

With all of the above, you will have a good set of base skills and knowledge on which you can build.

You asked:

Are there comprehensive literature for beginners and what would you recommend? A good book would certainly be the best start.

I am only familiar with one book that might be suitable for beginners in computational chemistry, so perhaps others can give better suggestions. The one I used was Molecular Modelling by Leach. It gives a good overview of common techniques, but doesn't go too in-depth. However, it was last updated in 2001 - so it may be out of date. The state of the art moves pretty quickly in terms of detailed application, although the fundamentals tend to stay pretty consistent over time. Another classic text which covers the basics in some depth is Allen & Tildesley's Computer Simulation of Liquids.

Both of these books focus more on the modeling aspects of molecules as opposed to chemical reactions, so if you are more interested in simulating reactions as opposed to statistical mechanics or protein-ligand interactions, you would need different books.

$\endgroup$
4
$\begingroup$

Disclaimer: I don't have significant experience in the field, but I did touch it a little.

I want to learn the theoretical principles of computational chemistry and develop software themselves, or at least parts of it.

The idea is noble, but extremely naive.

would like to work in the field of drug design.

Lucky for you, you don't actually need any advanced math staff to work in this specific field. Sure, it may be handy, but not necessary. Most drug-related simulations may be performed using molecular mechanics/molecular dynamics approach, that is quasi-classical in nature.

general programming notes

the most common language in scientific community is, unfortunately, fortran. It is a very old language with huge amount of inherent problems. I advice to learn programming in some more sane language first and then move to fortran/c/c++. Freely available SICP (structure and interpretation of computer programs) based on scheme is a good choice. Sure, it uses quite esoteric scheme, but it does discourage bad habits.

minimal list, in order

  • classical newtonian physics (forces, acceleration, speed - all in vector form, their relations and electrostatic interactions)
  • theory of programming: big-O notation, algorithmics, space-sorting, indexes in space etc. Specifically, MM/MD needs a way to estimate total forces in many-body system with electrostatic interaction where thousands and millions of bodies may be present. This requires effective algorithm to discard small interactions, which in turn requires effective algorithm producing list of close pairs.
  • optional: genetic algorithms.
  • optional: machine learning.

after learning that, it is time to start to read actual articles/reviews. Areas of interests are QSAR (relies on machine learning) and docking (relies on MM/MD approach to 'fit' molecule to receptor.)

  • in case you still have resolve to code something, it is time to actually code. take some existing package and tune it.
  • in case you want to work with huge systems or hi-performance computing, learn
    • theory of parallel programming: threading libraries, synchronisation primitives
    • common parallelization technologies: mpi, openmp.
    • GPGPU : OpenCL or Cuda

maximal list, in order. Overkill for drug design. In addition for minimal list

  • linear algebra.
  • analytical geometry
  • advanced calculus (multidimensional integrals, partial derivatives and related stuff)
  • differential equations
  • function approximation using linear combination of other functions
  • quantum mechanics, nonrelativistic case.
  • any general quantum chemistry book - qualitative theory of bonding, hartree-fock equations, black magic of MP2 and DFT

up to this point the topics are useful for any chemical student. Specialized staff follows.

  • general programming
    • algorithmics
    • big-O notation
    • numerical errors, estimating them.
    • IEEE floating-point format, use and limitations
  • numerical methods, specifically
    • fast fourier transform
    • multidimensional integration
    • iterative diagonalization methods

at this point it becomes possible to code something simple. In case hi-performance computing is of interest (it is a separate area, that is not chemistry related per se)

  • parallel programming,
    • see minimal list
    • distributed storage and processing
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.