I am currently working on prediction of UV-vis spectra from structure of molecules. I have read multiple papers where structure descriptors were used as inputs for machine learning to find various properties. I have also come across different types of structre descriptors such as the adjacency matrix.

However, I haven't been able to find much information on how exactly these descriptors are fed into the statistical model. I want to understand how the descriptors are interpreted by the software algorithm. For example, if I have an adjacency matrix, how should I put it into a software like scikit-learn? I am looking for a beginner's level explanation of the descriptors and their interpretation by software (not just adjacency matrices, other types of descriptors too, like MOE, 3D descriptors, fingerprints etc.).

I am using machine learning to some extent, but would like to know about applying regression based methods on descriptors because I want to understand what actually is happening under the hood.

  • 1
    $\begingroup$ Are you interested in specific descriptors or just in general? Regressions need a numerical description of molecules (or local structures), and the descriptors are a way to provide these numbers to us. If you do not know which ones are useful, the first step is to actually find the ones you need and eliminate the less important ones. $\endgroup$
    – Greg
    Nov 2, 2021 at 7:51
  • 3
    $\begingroup$ The comment by @Greg «the first step is to actually find the ones you need and eliminate the less important ones» reads like a suggestion to venture out a principal component analysis (example in J. Chem. Educ., example in J. Agric. Food Chem.) and partial least square regression (example J. Agric. Food Chem.) used in chemometrics (especially IR spectroscopy); the later not yet a tag in chemistry.se. $\endgroup$
    – Buttonwood
    Nov 2, 2021 at 12:37
  • $\begingroup$ @Greg I am interested in both actually. Because I do not know which descriptors I need. Basically I need something that relays information about the the conjugation of the molecule (so adjacency matrix seemed like a good choice). I also need to know how to feed that into the regression algorithm because regressions usually don't take matrix as an input. $\endgroup$
    – S R Maiti
    Nov 5, 2021 at 11:42

1 Answer 1


One way that matrix information can be passed into a learning algorithm is by diagonalizing it and instead passing in the sorted eigenvalues. An example of this in a fairly recent paper[1] is the use of Coulomb Matrix Eigenvalues (CMEs) in a number of different regression models as a descriptor to distinguish isomers of a molecule (there are Mathematica notebooks in the SI showing how all these calculations were done). The original paper defining Coulomb Matrices[2] similarly used their eigenvalues to make an ML model for atomization energies.

In principle, there is nothing stopping you from having a matrix as a descriptor, see for example this tutorial on creating a graph convolutional network using a matrix descriptor and an adjacency matrix. As shown in this SO question, programs like scikit learn can handle matrix features. However, as was the case with the Coulomb matrix, we can often simplify a matrix feature into several scalar features, reducing the number of features we need to deal with.

  1. J. Schrier, Can One Hear the Shape of a Molecule (from its Coulomb Matrix Eigenvalues)? J. Chem. Inf. Model. 2020, 60, 8, 3804–3811 DOI
  2. Matthias Rupp, Alexandre Tkatchenko, Klaus-Robert Müller, and O. Anatole von Lilienfeld Phys. Rev. Lett. 108, 058301 DOI
  • $\begingroup$ I have heard about using eigenvalues of the adjacency matrix, but I am very afraid to use it because I feel like it would discard quite a lot of vital information. In my case, the molecules I am studying for UV/vis are conjugated, so the ML model needs information about which part of the molecule is conjugated (i.e. the core chromophore), and it needs information about the substituents too. $\endgroup$
    – S R Maiti
    Nov 5, 2021 at 22:48
  • $\begingroup$ The papers and SO question you linked are very helpful, thanks for those. Do you have any further suggestions about using a matrix as an input of a simpler regression model? I am a bit reluctant to go the full deep learning route because it tends to hide what is actually going on in the fitting. $\endgroup$
    – S R Maiti
    Nov 5, 2021 at 22:53
  • 1
    $\begingroup$ @SRMaiti In some sense, the eigen/singular values are all the information contained in a matrix, just compressed down as much as possible. I'm not really expert on different learning models, but I think something like reference [2] would work for your example. Use CMEs (or even the whole CMs with some distance metric that you decide on, like the Frobenius norm of the difference)... $\endgroup$
    – Tyberius
    Nov 6, 2021 at 2:33
  • 1
    $\begingroup$ ...then determine new UV-Vis values based on how similar they are to your training data (i.e. how "far apart" their Coulomb matrices are). An adjacency matrix could work as well, but I think it needs to be modified to give some sense of what atoms are involved in these bonds and the degree of the bonds. Coulomb matrices sort of do this by having diagonal elements proportional to the atomic charge and the off-diagonal related to the charges and distance between the atoms. $\endgroup$
    – Tyberius
    Nov 6, 2021 at 2:38

You must log in to answer this question.

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