11
$\begingroup$

Background

I am a chemistry undergrad that wants to learn Machine Learning (ML) for application in my field(Chemistry). However, I have never studied programming or anything related to code in my life. For this reason, I am building a study plan for this goal.

Can you give me any advice on this endeavor? I would appreciate any suggestions to know if I am on the correct path. Below is the study plan I made. My timeframe for completing this study plan is 1-1.5 years.

Study Plan


Cycle 1: Learning the basic concepts of Programming

Algorithm and Programming Logic with Python

Kaggle

Cycle 2: Learning how to Program in Python

Python Course for Beginners

Kaggle

CodingBat

Project Euler

Cycle 3: Learning how to use Python for Data Analysis and learning Statistics

Python Course for Machine Learning and Data Analysis

Khan Academy

Pandas, Matplotlib and NumPy

How to go from ZERO to Data Science in Just One Lesson

Cycle 4: Learning basic concepts about Machine Learning and Probability

• Course : Introduction to Machine Learning and Machine Learning Algorithms

Machine Learning Algorithms

Machine Learning with Python and Scikit-learn

Kaggle

Probabilities

Google Machine Learning Crash Course

Cycle 5: Learning Applications of Machine Learning in Chemistry

EMMSB LNCC

The Computational Toolkit

• Learn how to use RDKit or DeepChem, a collection of cheminformatics and machine learning tools for Python

Cycle 6: Learning Deep Learning Fundamentals

Deep Learning by Andrew Ng on Coursera

Kaggle

$\endgroup$
4
  • 1
    $\begingroup$ To get a good answer/advice I think it would be good if you could include info about the number of days/weeks/months that you aim to finish this learning. $\endgroup$ Apr 21, 2023 at 11:49
  • $\begingroup$ Dear Vanda, I hope to acquire this basic knowledge in at least one / one and a half years. I am not certain in what filed of computational chemistry I will stay reseaching. $\endgroup$ Apr 21, 2023 at 12:00
  • $\begingroup$ I think, deep learning really starts to work if you have a lot of data that you can use for learning. Of course, in chemistry applications one can produce and use data, but not such large amounts. $\endgroup$ Apr 23, 2023 at 7:21
  • $\begingroup$ Without having had a detailed look at your list, I think you miss something on descriptors, e.g., the smooth overlap of atomic positions (SOAP) and the atomic cluster expansion (ACE). $\endgroup$ Apr 23, 2023 at 7:24

3 Answers 3

4
$\begingroup$

Here are my comments on each of your cycles.

Cycle 1:

The course you listed called Algorithm and Programming Logic with Python looks pretty basic. I would recommend doing a course from Coursera to get the fundamentals of programming in Python.

Cycle 2:

Practice your python skills on Kaggle, CodingBat, Project Euler or any other website such as Hackerrank, Codewars.

Cycle 3 and 4:

Looks Okay

Cycle 5 and Cycle 6:

At this point you would have a decent idea of basics of python, so I would suggest that you learn by working on projects rather than just watching youtube videos and tutorials.

For example, GSOC (Google Summer of Code) is superb way of learning by doing. For inspiration here is GSOC 2023 list of projects.

Even if you are not able to enroll to GSOC, you can still work such projects on your own.

$\endgroup$
8
$\begingroup$

You state your background is chemistry, and have aspiration for Python as a programming language aiming for ML without background in computer science.

Do you have some experience in programming at all? In case you don't I suggest to visit the inflammation classes by software-carpentry for the *nix shell, version control by git, and beginners lessons for Python. Perhaps their classes pass nearby your area, too (schedule). After this, you should be able to create the first small and simple programs on you own, and identify what can be useful in addition to this "starter set", both in terms of concepts (e.g. regular expressions), as well as implementations in your language of choice (e.g., matplotlib and plotting). But don't get lost there.

Instead turn early your attention to e.g. The Journal of Chemical Education to apply the acquired skill. There is for a compact 101 by Lafuente,[1] and plenty examples of application which can serve as prompt for your training. Enter "machine learning" into the search mask of the journal (which suggests automatic completion to "Machine Learning in Chemistry", "Machine Learning for Drug Discovery", and "Machine Learning in Materials Science"). Don't automatically discharge them from your screen if - as St James' classification of spectra by ML[2] - a different language of implementation (here: MATLAB) was used, but imagine how such a capstone project could be implemented in the language(s)* you are familiar with.

A pinch of salt: you are going to meet people overly excited about machine learning and artificial intelligence as if the underlying techniques finally were applied on large scale. Some of them are statistics / chemometrics already known for long (e.g. principal component analysis in IR spectroscopy) which now indeed enjoy a renaissance for every additional field of application gained. However, in part, the field's attraction equally is due because computation became so affordable (e.g., renting infrastructure in the cloud on demand), and often tasks can be split into multiple smaller ones run in parallel instead of a pure sequential approach (multicore CPUs). Or that computer programs can assist you in generating new computer code (literally like copilot) faster, where the chatbots like ChatGPT are one level on top. Similar to a chariot, you typically don't pull it over long distances, but you should know enough about it and the horses for a safe and reliable drive.

* Depending on the task ahead, some programming languages are more suitable than others. Multiple criteria should apply for a selection.

[1] Lafuente, D.; Cohen, B.; Fiorini, G.; García, A. A.; Bringas, M.; Morzan, E.; Onna, D. A Gentle Introduction to Machine Learning for Chemists: An Undergraduate Workshop Using Python Notebooks for Visualization, Data Processing, Analysis, and Modeling. J. Chem. Educ. 2021, 98, 2892-2898, doi 10.1021/acs.jchemed.1c00142 (and author's copy).

[2] St James, A. G.; Hand, L.; Mills, T.; Song, L.; Brunt, A. S. J.; Bergstrom Mann, P. E.; Worrall, A. F.; Stewart, M. I.; Vallance, C. Exploring Machine Learning in Chemistry through the Classification of Spectra: An Undergraduate Project. J. Chem. Educ. 2023, 100, 1343-1350, doi 10.1021/acs.jchemed.2c00682 (open access / author's choice).


The answer once was given on chemistry.stackexchange on April 20th, 2023. User Martin (a moderator) suggested the move to this site.

$\endgroup$
2
$\begingroup$

Your approach to ML in Chemistry is biting off more than you can chew. First, it is not necessary for a chemist to become an expert python programmer. If you study chemistry, study chemistry 95% of the time and instead of programming in low level languages, which will greatly slow your research progress, I highly recommend learning Mathematica instead. A chemist need only prototype his or her algorithms - leave the low level programming to programmers. Also, there are professionals call chemoinformaticians that don't do anything but program chemistry programs. If your interested in that I suggest studying that in graduate school (probably in Europe). However, you specifically said that you are interested in applications of ML in Chemistry which does not require knowledge of python. You only need a chemistry program such as Marvin Suite by ChemAxon and also get competent at Mathematica. Mathematica is sufficient to do ML in chemistry. You can learn everything you need to know about ML in Chemistry in an eighty page document here: Machine Learning Methods in Chemistry Good luck!

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .