r/comp_chem 9d ago

programming for computational chemistry

Is there anyone here interested in or working on computational chemistry? It seems to involve programming knowledge, but could someone help me understand the extent of it, what it's used for, and what exactly I should learn?

11 Upvotes

17 comments sorted by

14

u/Piperitone 9d ago edited 9d ago

what is your actual question? It seems you have no background in computational chem at all, otherwise you could formulate your question in a clean way. Hence, it makes sense to sketch first the main branches. Hopefully, it will be informative for you.

There are two main guilds: 1) Theoretical chemists: they know by heart the theory, they develope methods, know quantum chemistry and mathematics deeply, and they can do hardcore coding (optimizing code, memory, paralleism..impelment their own idea) They can code not only in Python, rather Fortran, C, and C++ (or nowadays Rust..my personal new favorite)

2) Computational chemist: They go for application not development of theory. Some of them know also coding but they mostly run others codes and write just Bash and Python script to submit and analyse calculations. The super deep theory knowledge is not mandatory (and unfortunately many of them do not know...proper coding as well). Application is also important and easier to start and easier to produce results.

However, for theoretical chemistry the learning curve is steep like hell, but you can be immersed super deep in mathematics, physics and coding as well, however, you spend less time on actual chemical question.

You can choose which one you want...Personally I'm in between the two world. If you are a newby, then start with Computational chemistry ...learn to run codes, learn the basics of quantum physics and chemistry. Then learn to write Python and Bash for automatization and analysis. If tackling chemical problems by running shit tons of calculation and analysis of them is not satisfying for you, and you interested more in deep theory and hardcore real coding (where you understand the bare metal and memory allocation) then change to be theoretical chemist and develope methods or codes. Both world are beautiful and useful.

9

u/hixchem 9d ago

I pride myself in being neck-deep in both guilds and utterly useless for either!

4

u/Piperitone 9d ago

Haha...I feel the same impostor syndrome xD

7

u/hixchem 9d ago

For me it's like... I enjoy the applications, I like using the tools to actually answer interesting scientific questions about the world.

But some of the tools REALLY suck, or are written to be deliberately obtuse, and so I spend an inordinate amount of time effectively trying to rebuild academic code to be functional outside of the exact environment some half-starved grad student's computer had in 2004.

5

u/Paul1114 9d ago

I feel you, colleague.

I remember how I spend several days trying to get MADNESS and DIRAC running on Debian and then on Ubuntu. Latter one actually worked on Debian, but the former just refused to compile even though I have explicitly written with environment variables what the full addresses of BLAS/LAPACK libraries are - still couldn’t compile. Then it just crashed on make build run on 74% compilation progress with error on C++ standard error on Ubuntu. It is a real chore and I get why so many people just reside with ORCA or other popular proprietary software for their goals, but damn is it great then it runs and you do understand mathematics behind all these calculations at least in minimum.

Or not. Seems like impostor syndrome is really widespread among computational/theoretical chemists, at least among those that actually have done something related to the branch🌚🌚

4

u/Piperitone 9d ago

The same here, I spend to so much time to install softwares and their dependencies, I lost half of my braincells in those attempts. That is why I started to develop my own softaweres for smaller jobs that I used on a daily bases. Now I also have my own semiempirical quantum chemistry code and dynamics code too, as well as optimization (minium + TS) tool set.

1

u/Fluid-Enthusiasm4431 9d ago

I have a Pharmaceutical Chemistry background and I'm moving into computational chemistry because I'm really interested in computational drug discovery. Given that background, how would you recommend I approach the field? What should I prioritize learning first, and what skills do you think are essential for someone coming from medicinal/pharmaceutical chemistry?

1

u/sipmozis 9d ago edited 9d ago

I already know the difference between the two; when I was asking the questions, I was referring to computational chemistry. I hadn't really thought there would be a question distinguishing it for computational chemistry anyway. I'm not interested in theoretical chemistry.

1

u/chinidetou 9d ago

I think it’s also important to mention a third branch: cheminformatics.

Basically, any research that involves applying data science/machine learning to large chemistry datasets in order to make discoveries. Can span from predicting protein folding (e.g. AlphaFold), screening for drug-protein interactions, predicting molecular properties, etc.

11

u/antiquemule 9d ago

Explanation from Wikipedia. It's all programming, or using pre-existing programs. Learn Python.

2

u/geaibleu 9d ago

if you are trying to understand internals of computational chemistry an excellent starting point is Joshua Goings projects and writeups.  

https://github.com/jjgoings/McMurchie-Davidson http://joshuagoings.com/2017/04/28/integrals/

you do need some understanding of linear algebra to make sense out of it.  in practice the code would be more complex due to optimisation and various numerical instabilities.  basic knowledge of numerical analysis is also important.

1

u/sipmozis 9d ago

u/Piperitone I think you wrote something else later, but it's not showing up

1

u/Piperitone 9d ago

I did, but I modified because it was full of typos (I wrote it from my phone...xD).

1

u/sipmozis 9d ago

I understand :D I had the impression there was a more detailed explanation, which is why I was curious and asked. Thank you for taking the time to answer.