MASARYK UNIVERSITY FACULTY OF INFORMATICS }w¡¢£¤¥¦§¨!"#$%&123456789@ACDEFGHIPQRS`ye| Calculation of dissociation constants using triangulation methods BACHELOR’S THESIS Jaroslav Ol’ha Brno, spring 2012 Declaration Hereby I declare, that this paper is my original authorial work, which I have worked out by my own. All sources, references and literature used or excerpted during elaboration of this work are properly cited and listed in complete reference to the due source. Advisor: RNDr. Radka Svobodov´a Vaˇrekov´a, Ph.D. ii Acknowledgement I would like to thank RNDr. Radka Svobodov´a Vaˇrekov´a, Ph.D. for coming up with an interesting thesis that turned out to be quite fun to do and for helping me understand it and get through it. I’m also grateful to my parents for giving me the opportunity to study. And to Joss Whedon for making Firefly. Also to Sim. You know who you are. iii Abstract One of the great challenges of present-day chemoinformatics research is prediction of dissociation constants (pKa) of molecules. The values of pKa are very interesting for various fields of research, particularly for the area of drug development - for instance, the value of a molecule’s pKa is one of the criteria that allow us to discard an unfit molecule from a list of potential drug molecules. However, the experimental measuring of pKa is difficult and computational methods for acquiring pKa are nontrivial. An efficient alternative is approximation of dissociation constant using the values of partial charges of atoms within a molecule. This can be done using various methods of computer science and mathematics. One such method - using Delaunay triangulation - has been designed and implemented in this thesis. Part of the thesis is an application demonstrating the effectiveness of this method, which has shown to be considerable. The method has been tested on several datasets of molecules containing phenols and/or benzoic acids, and in most cases it has been quite accurate at predicting their pKa. Its results have also been compared to the results of a method using linear regression over a similar dataset. iv Keywords Dissociation constant, Delaunay triangulation, phenol, benzoic acid, approximation. v Contents 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.1 Molecule in a computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.1.1 Graph theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.1.2 Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Atomic charges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3 Dissociation constant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3.1 Dissociation constant of phenols and benzoic acids . . . . . . . . . 5 2.3.2 Prediction of dissociation constant . . . . . . . . . . . . . . . . . . . 6 2.4 Delaunay triangulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.5 Methods of evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.1 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.1.1 Microsoft Visual Studio 2010 . . . . . . . . . . . . . . . . . . . . . . 10 3.1.2 MIConvexHull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.1.3 Excel Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2.1 Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2.2 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.3 Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.4 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.5 Programming language . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.6 Classes and methods . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3 Approximation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.1 Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.3.2 Triangulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Two dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Three dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3.3 Weighted average . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.1 Phenols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.2 Benzoic acids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.3 All molecules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.4 Comparison with linear regression . . . . . . . . . . . . . . . . . . . . . . . 22 5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 vi 6 Appendices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6.1 Contents of the attached CD . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 vii Chapter 1 Introduction The demands of pharmaceutical industry, combined with an enormous increase of available information on structures of organic molecules, have recently led to the emergence of a field of science called chemoinformatics [1] [2]. This field sets out to solve chemical problems using algorithmic approaches of computer science and methods of computational chemistry and molecular modelling [3]. One of the great challenges of chemoinformatics is prediction of dissociation constants of molecules (pKa) [4]. The values of dissociation constants are very interesting for chemical, biological and environmental research, because pKa determines important physically-chemical properties of molecules [5] [6]. There is a special emphasis on pKa in the pharmaceutical industry, particularly in drug development - the value of a molecule’s pKa is one of the criteria that allow us to eliminate unfit molecules from a selection of molecules proposed for drug research. That is why pKa is also used in the so-called ’virtual screening’ [3], which involves searching through large databases in order to find molecules viable for pharmacy. Experimental measuring of pKa is difficult and the computational methods for acquiring pKa are nontrivial [4]. Fortunately, there is an effective alternative - prediction of pKa based on partial charges of atoms within a molecule. There are several ways to perform this kind of calculation - be it by using linear regression, database methods or neural network. An approach that seems very interesting is one that would use Delaunay triangulation [7] - and the implementation of such approach is precisely what lies at the heart of this thesis. The goals of this thesis are: • Study up on topics concerning the computerization of molecules and algorithms for computing pKa. • Design and implement software tools for prediction of dissociation constants. • Test the created tools on real data of organic molecules. • Compare the accuracy of the method that uses Delaunay triangulation with a method that uses linear regression. 1 Chapter 2 Theory This thesis combines certain areas of chemistry, informatics and mathematics – this chapter sets out to explain the main principles behind all of these. The first section will focus on the interface between chemistry and informatics – namely how a molecule can be stored and processed in a computer to allow for the use of computer science in chemistry. The next two sections are dedicated to the chemistry behind the thesis – namely the atomic charges of atoms, the dissociation constant of a molecule and a few other related phenomena. It is assumed here that the reader already has a certain understanding of the most basic physical and chemical terms – such as molecule or charge (presumably not too big a leap of faith), and only those terms and principles which an average computer scientist might be unfamiliar with will be explained here. The fourth section takes on the mathematical principles used in this thesis. Of all the theoretical sections, this is probably the one with the greatest overall importance for the thesis. The main focus of this section is the description of Delaunay triangulation and the definition of a few other geometrical terms. The last section will briefly mention the statistical methods used to evaluate the results of our approximation. 2.1 Molecule in a computer In order for computer science to be used in chemistry, there must first be a way to convert chemical structures and chemical activity to a form that is comprehensible to a computer – from the ’analog’ system of the natural world to the digital system of virtual reality. This conversion will not be covered extensively here, but at least a few approaches to working with molecules on a computer should be mentioned. 2.1.1 Graph theory Since molecules are, on the most basic structural level, just groups of atoms held together by bonds that connect pairs of atoms, the graph theory seems like a perfect fit for describing molecules. We just need to treat atoms as though they were vertices and bonds as though they were edges of a graph. We can then easily store the molecule on a computer (for example using adjacency matrix or adjacency list) and perform all the 2 2. THEORY operations that we could perform with a regular graph. Of course, this does not account for the finer and more complex aspects of molecular structure, but no digitalization can ever be perfect. 2.1.2 Descriptors Another way of working with a molecule on a computer are descriptors. Descriptors are the quantifiable properties of a molecule – used precisely for the purpose of digitalizing molecules and allowing for further calculations. A molecule has many qualities that can be used as descriptors – molecular charge, molecular weight, the number of atoms... even structural motifs that can not be quantified numerically can be used as binary descriptors (for example by assigning 1 to the descriptor if the particular motif is present and 0 if it is not). Although in this thesis descriptors will only be used to allow for calculations involving a molecule’s qualities, they can also be used to identify a molecule with certain properties among a large number of molecules through a technique called ’fingerprinting’. This is nothing more than a suitable grouping of several descriptors – resulting in an array of values that gives us the relevant information about a molecule in a very simple form. Such molecules can then easily be searched through with the right search criteria. Although this may sound like a good way of storing a molecule on a computer, it is not - the main point of a fingerprint is that it only contains the values that are relevant in a given situation. Creating a fingerprint that would describe any molecule uniquely in some sort of standardized form would be complicated, inefficient and perhaps even impossible. Fingerprints are generally used as a tool for finding relevant similarities between molecules. 2.2 Atomic charges Atomic charges are very important for this thesis - exploiting their influence on the dissociation constant of a molecule is what allows us to approximate the constant in this way. Although there are other ways of approximating the dissociation constant (some of which will be mentioned later), the atomic charges are ideal for building an n-dimensional model since there are multiple atomic charges useful for approximation in each molecule. The partial atomic charges (referred to simply as ’atomic charges’ throughout the rest of this thesis) are those charges of a molecule that are caused by the distribution of electrons between bonded atoms. Normally, an atom has a neutral charge if it has an equal number of protons (positively charged particles) and electrons (negatively charged particles). The protons always remain inside an atom and can not be shared with other atoms. The electrons, however, are shared by two atoms whenever they share a bond this bond is formed by two electrons; one from each atom. Each of these atoms has a certain electronegativity, which determines how strongly it draws electrons. If one of the 3 2. THEORY atoms in a pair has a higher electronegativity than the other, it draws the other atom’s electron closer to itself. The electron then contributes to the atom’s charge, making it slightly negative (since its electrons now ’outweigh’ its protons). The other (less electronegative) atom, however, loses some portion of the electron’s negative charge, which makes it slightly positive. But the charge created in this way is always only partial - the more electronegative atom never gains the whole electron (at least not without the help of external forces). The partial charge also propagates through the molecule - the less electronegative atom that lost a portion of its electron’s charge is now positive, and therefore drawing its neighbors’ electrons more strongly than before (if it has any neigbors, of course). Although it may not seem like it, it is quite difficult to determine the partial atomic charges of atoms in a molecule. What may be a trivial task in the world of macrophysics becomes a lot more complicated in the quantum world of atoms and molecules - there is currently no way to determine the partial atomic charges directly by experiment, and they can only be acquired through the methods of quantum mechanics. 2.3 Dissociation constant In the most basic terms (which should be sufficient for the purposes of this thesis), the dissociation constant (pKa) of a molecule describes the willingness of the molecule to lose one of its hydrogen atoms in a certain environment. The constant is specific to molecules – a molecule will always have the same dissociation constant under normal conditions (which is what makes it a constant), but it is different between two different molecules. The constant determines a molecule’s acidity - a lower pKa value means that the molecule is more prone to losing a hydrogen atom and therefore more acidic. Knowing how a molecule will interact with other molecules in the environment that contain hydrogen atoms is critically important, especially when working with living organisms – and the dissociation constant allows us to quantify this interaction. It is calculated as a negative common logarithm of Ka pKa = −log10Ka, (2.1) which is, in turn, discovered by experiment. In simple (and slightly incorrect) terms, Ka represents the amount of molecules (of the same compound) that dissociate spontaneously relative to the amount of molecules that do not. In the following equation (2.2), dissociated molecules are represented as hydrogen atom H+ and the rest of the acid A− (the bond between the hydrogen and the acid has been broken), while non-dissociated molecules are HA (the bond between the acid and the hydrogen atom persists). The square brackets represent concentration (for example, [H+ ] means ’concentration of H+ ’). Ka = [H+ ].[A− ] [HA] (2.2) 4 2. THEORY 2.3.1 Dissociation constant of phenols and benzoic acids Any molecule containing a hydrogen atom has a certain pKa, but in this thesis the focus is on phenols and benzoic acids. Both phenols and benzoic acids contain a chemical structure known as benzene core. This structure consists of six carbon atoms arranged in a hexagon, each of them also bonded with a hydrogen atom. When drawing benzene, the carbon and hydrogen atoms are usually not explicitly denoted, but it is understood that they are there. Figure 2.1: A molecule of benzene, in complete form (left) and in simplified form (right). In addition to this core, phenols contain a hydroxyl group, consisting of one hydrogen and one oxygen atom – the group is bonded with the benzene core via the oxygen atom which bonds with one of the carbon atoms of the core in place of its hydrogen. Instead of the hydroxyl group, benzoic acids contain a carboxyl group – consisting of a carbon bonded with a hydroxyl group (via oxygen) and another oxygen atom (by a double bond). This group bonds with the benzene core via this carbon – which is, again, connected to one of the six benzene carbons in place of its hydrogen. Figure 2.2: Derivatives of benzene - phenol (on the left) and benzoic acid (on the right). The orange line indicates the dissociating hydrogen. 5 2. THEORY Adding various other atoms and structures to this basic structure produces various phenols and benzoic acids. Although these structures will always contain multiple hydrogen atoms, the one in the hydroxylic or carboxylic group (for phenols and benzoic acids, respectively) is the one most likely to be dissociated and therefore the one we will be most interested in. When the hydrogen atom is dissociated, the partial charges of all atoms within the molecule change. Therefore, if we calculate an atom’s partial charges in a dissociated molecule as well as in a non-dissociated one, we get two different descriptors. This principle will be used later in this thesis. It should also be mentioned that at some point we will be distinguishing between a few basic kinds of benzoic acids. Many kinds of substituents can be added to the basic structure in place of its hydrogen atoms to create various benzoic acids. We will make a distinction according to where these substituents bond with the main structure (shown in figure 2.3). If they bond with one of the carbons next to the carboxylic group, they are called ortho benzoic acids. If they bond with one of the carbon atoms that are two bonds away from the carboxylic group, they are called meta benzoic acids. And finally, if they bond with the carbon atom directly opposite the carboxylic group, they are called para benzoic acids. Figure 2.3: Three types of benzoic acids (left to right) - ortho, meta and para. X represents a substituent. 2.3.2 Prediction of dissociation constant There are quite a few ways of approximating a molecule’s dissociation constant without actually having to perform the experiments needed to determine it precisely [8]. The dissociation constant of a molecule is affected by the atomic charges of atoms within the molecule. As discussed earlier, all the atomic charges are molecular descrip- 6 2. THEORY tors that can be quantified, translated to a computer and further worked with. If there is a correlation between two properties of a molecule, we can use one of them to approximate the other. As a rule of thumb, the better the correlation, the better the approximation. The beauty of using descriptors for approximation is that we can use more of them at once. Adding good descriptors adds information and improves the approximation, but adding descriptors with weak correlation can actually decrease the accuracy of the approximation. Choosing the right descriptors is therefore one of the challenges of building a good approximation model. The partial charges on atoms are only some of the descriptors acquired through calculations of quantum mechanics. Some of the others are also correlated with the molecule’s pKa - one of the most prominent being the free energy of a molecule (used by methods utilizing the so-called ’linear free-energy relationship’ or LFER). Other descriptors derived from quantum mechanics include electrostatic potential or polarizability. There are also methods that do not use descriptors - simulations that try to calculate the dissociation constant directly, from scratch (’ab initio’ methods), again using quantum mechanics. These do not rely on correlated structural properties and are much more accurate, but also demand a lot of computational capacity. Quantum mechanics is not always required, however - some methods search through databases of molecules trying to find the most similar ones and approximate using their dissociation constants. 2.4 Delaunay triangulation In geometry, the term ’triangulation’ refers to a certain transformation of a set of vertices to a connected graph (without changing the positions of the vertices and without any of the edges crossing), in such a way that no more edges can be added without adding additional vertices or creating double edges. This creates simplices in the graph (in two dimensions these simplices are triangles, hence the name). From now on, these simplices will be referred to as ’triangulation cells’, except when discussing a two-dimensional triangulation where it is easier to simply call them ’triangles’. Let us also define the term ’triangulation border’, which will be used to refer to the hyperplane shared by two neighboring cells. Again, this term will only be used when discussing n-dimensional space; in 2D it will be called simply ’edge’. Delaunay triangulation in particular has a few unique properties that all non-Delaunay triangulations lack – for the sake of simplicity, these properties will be described in a two-dimensional space, but they are analogous in a higher dimension. Firstly, a Delaunay triangulation maximizes the angles inside the cells. This means that of all possible triangulations of a two-dimensional set of vertices, the Delaunay triangulation will have the ’least skinny’ triangles. Secondly, the circumcircle of any triangle will not contain another vertex inside. The two properties are evidently related – a ’skinny’ triangle’s circumcircle would obviously be too big to avoid other vertices. From now on, we can say that a set of connected vertices satisfies the ’Delaunay condition’ if none of its circumcir- 7 2. THEORY cles contains another vertex. There is at least one Delaunay triangulation for every set of vertices (unless the vertices form a hyperplane and cannot generate the whole space), and for most sets of vertices it is unique. There are many ways to create a Delaunay triangulation from a set of unconnected vertices. Probably the easiest one to grasp is the technique of ’flipping’ edges. Let us consider a set of four points. There are two ways this set can be triangulated – shown in the figure below. Unless the vertices form a perfect square, only one of these triangulations satisfies the Delaunay condition. The ’wrong’ triangulation can be made angularly optimal by simply ’flipping’ the diagonal edge to create the other possible triangulation. In a larger graph, if all such subsets (of four vertices forming two triangles sharing an edge) satisfy the Delaunay condition, then so does the whole graph. Any random triangulation can therefore be turned into Delaunay triangulation simply (albeit inefficiently) by ’flipping’ all non-Delaunay pairs of triangles until the whole graph meets the Delaunay condition [9]. Figure 2.4: Two possible triangulations of a set of four points - only the one on the right satisfies the Delaunay condition. 2.5 Methods of evaluation To determine the accuracy of approximations, three statistical methods will be used: Coefficient of determination R2 is defined as the square of Pearson correlation coefficient r, which is in turn defined as: r = n i=1(Xi − ¯X)(Yi − ¯Y ) n i=1(Xi − ¯X)2 n i=1(Yi − ¯Y )2 , (2.3) where ¯X and ¯Y represent the average values in datasets X and Y. R2 can reach values between (and including) 0 and 1 - with higher values suggesting a better correlation between the two datasets (so in our case the higher the better). Root-mean-square deviation (RMSD) is another method of determining the similarity of two datasets X and Y. It is exactly what the name suggests - individual deviations between sets X and Y are squared, averaged and then rooted: 8 2. THEORY RMSD = n i=1(Xi − Yi)2 n (2.4) Since a good approximation is, naturally, supposed to produce the smallest possible deviations, we will be aiming for a lower RMSD as a sign of a better approximation. The average deviation of two datasets (occasionally referred to as AD in this thesis) is the simplest of these metrics - it is simply the average of all the values’ absolute deviations from the other dataset’s value: AD = n i=1 |Xi − Yi| n . (2.5) Again, like with RMSD - smaller the deviations, better the approximation. All of these methods are designed to test similarities between two datasets - in our case, the set of pKa values approximated by our application and the set of actual pKa values. 9 Chapter 3 Application At the core of this thesis is a computer application – one that tests how successfully the Delaunay triangulation can approximate a property of a molecule using structural descriptors and helps the user decide which methods and descriptors are the most useful when applying this mathematical tool. In its current form, the application does just that – but with a few minor alterations it is possible to use it for actual approximation or plug it into a larger program. This chapter has two sections – firstly, there is a short description of each of the software tools I used to create this application. Secondly, there is a significantly longer section explaining how the actual application works – how it is used, what outputs it produces and, most importantly, how it produces the results that will be summarised in the next chapter. 3.1 Methods Rather than an in-depth analysis, this section is more of an acknowledgement of the tools that were instrumental in completing this thesis but were not created by me. 3.1.1 Microsoft Visual Studio 2010 MS Visual Studio [10] is a popular IDE for work with C#. For work on this thesis I used the Ultimate Edition of the environment – not because of its special features, but because as a student of the Faculty of informatics I have a free license for its use. 3.1.2 MIConvexHull As has already been mentioned several times in this thesis, this application uses triangulation to transform a set of molecules into a model that allows for a good approximation. This triangulation is performed by an external library – MIConvexHull [11]. This library takes a set of vertices and returns a set of cells. The molecules have to satisfy certain expected properties by implementing the library’s vertex interface – the molecules have to be converted to vertices (and will often be referred to as such in the mathematical sections of this thesis). The returned cells are C# objects representing the simplices of the triangulation – triangles in 2D, tetrahedrons in 3D and so on. Each of these objects 10 3. APPLICATION contains a list of vertices forming the cell – we can therefore think of the triangulation we receive as a ’list of lists’ (a list of cells, each containing a list of vertices). One further thing should be mentioned, though - originally, the library did not compute my triangulation at all because of a tiny flaw in the library which I had to find and fix myself in order for the triangulation to work. That means that my application is running with a slightly altered version of MIConvexHull, and if someone were to download the original version and use it with the same data, they would need to make the same adjustment again in order to make it calculate any triangulation. In the FindInitialPoints method of the ConvexHullInternal class, a variable called maximum (on line 609) was initialized with value 0.0001, which was supposed to be an arbitrary minimal value of a simplex volume (the size of a triangulation cell) - meant to be overwritten by the first ’actual’ value that would be greater. However, since the data used for this thesis contains values that are very close to each other, even the greatest simplex volumes are smaller than 0.0001. Seeing as the Double type does actually have an infinitesimal number (Double.MinValue), I used that instead. 3.1.3 Excel Library MS Visual Studio 2010 does have a built-in library for reading and writing .xls files. However, this library can only be used on a machine with Microsoft Office already installed. In order to make the application more portable (and because I do not own MS Office), an external library was required. I chose ExcelLibrary because it is open source and fairly easy to use [12]. 3.2 Implementation From the user’s viewpoint, the application looks quite limiting - it was, indeed, not designed for a wide use. It has no user interface and is launched from the command prompt, with the option of adding launch parameters to change the methods used by the application. The main purpose of the application was to provide the needed results for demonstration and evaluation of Delaunay triangulation as a method for prediction of dissociation constants of molecules, with little regard paid to its further use or user friendliness. The application may be ugly and unfriendly; its source code, however, is not. The possibility that the method may prove useful in the future has been accounted for and rules like basic decomposition and frequent use of comments have not been neglected in case the classes and methods were to be used again in another application. 3.2.1 Functionality To test out the application’s approximation methods, we have a dataset of molecules with known atomic charges and known pKa. The application uses the obvious way to 11 3. APPLICATION test the approximation - it selects a molecule, builds a model using all the remaining molecules and then tries to approximate this molecule using the model (pretending it does not know the molecule’s actual pKa value). After this process has been repeated with every molecule in the dataset, statistical methods are applied to determine how accurate the approximations were. 3.2.2 Input The molecules with known pKa are loaded from several .xls and .csv files that were provided to test the application. Each of these files contains over a hundred phenols or benzoic acids - their names, pKa values and charges on their main atoms (atoms of their basic structure). The application searches for these files in its current directory. 3.2.3 Output The output of the application is twofold. Firstly, statistical results of the approximation are printed to the command prompt from which the application was launched – namely the root-mean-square deviation (RMSD), the coefficient of determination (R2 ), and the average deviation. Secondly, an .xls file is created, containing three columns for each approximated molecule – its name, its real pKa value, and the approximated pKa value. The file is named according to the method used for the approximation, so as to avoid overwriting the results if another method is used afterwards. 3.2.4 Execution The application is launched from the command prompt, with launch parameters determining what method will be used to approximate, and what molecules will be approximated. The possible launch parameters are listed in the next section, and also in the ’readme’ file enclosed with the application. By default, when no parameters are entered, the approximation is performed on all molecules using two-dimensional triangulation (with hydrogen and oxygen charges as descriptors) and weighted average. 3.2.5 Programming language As mentioned in the previous section of this chapter, I chose C# to create the application part of the thesis. C# is a programming language developed by Microsoft, very similar to the more popular Java from Oracle Corporation. This language allowed for easy work with the MIConvexHull library (which is also written in C#), and it is also a personal preference of mine. It has several unique features, which have gone largely unused by me. 12 3. APPLICATION 3.2.6 Classes and methods Aside from the external tools mentioned in the previous section (ExcelLibrary and MIConvexHull), the application contains several original classes. This will be a brief summary of these classes and their methods. Directing the whole lifetime of the application is, naturally, the Main method in class Program. The application’s lifetime is as follows: Program parses launch parameters from the command line and sets its variables to appropriate values. It then asks ReaderXLS and ReaderCSV classes to parse the input files and return the dataset in form of a list of instances of Molecule class. Once Program class has these molecules, it goes into a cycle wherein it always takes one molecule from the dataset and tries to approximate it with the others - using methods from class Approximate. Once it has the approximations, it uses methods from Calculator class to calculate statistical properties of the whole approximation (R2 , RMSD and average deviation) - these values are printed to the console. Finally, the approximations are written to an .xls file using class Writer. Approximation is the most important class - as the name suggests, all the logic behind the approximation (with or without triangulation) is here. The only methods called from the outside are ApproximateWithTriangulation and ApproximateWithoutTriangulation. These methods take a molecule and a list of other molecules and return an approximation of the single molecule’s pKa based on the molecules from the list. The fact that they only approximate one molecule at a time allows this class to be exported to another application, one that may wish to approximate a (truly) unknown pKa using known values. ApproximateWithTriangulation method requires the input molecules in form of instances of Molecule class, then transforms them to instances of Vertex class to pass them on to MIConvexHull library. Vertex implements the library’s IVertex interface, but also contains a method that allows a vertex to compute its distance to another vertex (needed for weighted average). All the other methods in Approximation serve only to aid the two approximation methods; they are mainly mathematical and geometrical operations and their names are almost always self-explanatory (for example FindNormalVector or WeightedAverage). 3.3 Approximation The approximation performed by this application basically consists of three steps. First, the choice of structural properties that will be used to build a model (described in the first part of this section). Then, the assembly of a model using these properties and location of the right molecules for the approximation in this model (shown in the second part). And finally, the actual approximation using the molecules we found (described in the third part of the section). 13 3. APPLICATION 3.3.1 Descriptors In the theoretical part of this thesis, I established that the choice of descriptors is critical for a good model of approximation. The application therefore allows the user to choose from several descriptors in order to see their effectiveness in approximating the dissociation constant. The number of descriptors used to build a model determines its dimension – two descriptors will make the model two-dimensional and three descriptors will make it three-dimensional. Therefore the user is not required to input the dimension of the model. Although there are many descriptors we could theoretically use, our focus will be on five of them: • Partial charge on hydrogen atom of the hydroxyl group. • Partial charge on oxygen atom of the hydroxyl group. • Partial charge on dissociated oxygen atom (this is the same oxygen atom, in a dissociated molecule). • Partial charge on the nearest carbon atom (the one that is bonded with the hydroxyl or carboxyl group). • Partial charge on the other oxygen atom from the carboxylic group (the one that is not bonded with hydrogen) - this is only applicable to benzoic acids. By default, only hydrogen and oxygen atoms are used for the approximation. If the user wishes to add a third descriptor to make the model three-dimensional, they can do so by adding parameter -c to add the charge of the nearest carbon atom among the descriptors, parameter -o to add the charge of the dissociated oxygen, or parameter -o2 to add the charge of the other oxygen (this will only approximate benzoic acids since phenols do not have this atom). 3.3.2 Triangulation In chapter 2, we have discussed what Delaunay triangulation is and how it can be achieved. Earlier in this chapter, it was described how the external triangulation library is interacted with. Now that we have an optimal triangulation of vertices with known pKa, it is time to approximate the remaining vertex. Our best bet would be to place the unknown vertex in the triangulation, find out which cell it lies in, and average the cell’s vertices. But how do we determine which cell the unknown vertex lies in? Remember – the only information we have are the coordinates of each vertex of every triangulation cell, and the coordinates of the tested vertex. 14 3. APPLICATION Two dimensions As one might expect, geometry has the answer. For the sake of simplicity, let us consider a two-dimensional model at first and then move on to a solution for three dimensions. Probably the easiest way to find if a vertex lies inside a triangle formed by three other vertices is to check the position of the tested point relative to each edge of the triangle. Supposing the edges are AB, BC and CA (that is, they are directed and they form a cycle), a point that would lie within the triangle would have to be either to the right (if points A, B and C are ordered clockwise) or to the left (if they are ordered counter-clockwise) of all three edges (figure 3.1). Figure 3.1: A triangle, its vertices ordered clockwise. Any point that lies within the triangle must be to the right of each edge. Determining where a point lies relative to a straight line defined by two other points is nothing more than a matter of calculating a simple determinant   1 px py 1 qx qy 1 rx ry   where p and q are two different points from the line (in our case two vertices of a triangle) and r is the point to be determined. If the result is a positive number, the point lies to the left of the line; analogically, a negative result indicates a position to the right of the line, and a result of 0 means that the point lies directly on the line. Unfortunately, this means that to find the triangle a point lies in, we have to check every edge of every triangle in our triangulation until we find the one that satisfies our criterium. A minor improvement can be made by disregarding all triangles that lie completely to the right, to the left, above or below the tested point (that is, all three of their vertices have a lower/higher x or y coordinate). This means that we do not need to compute the determinant for the vast majority of triangles, but we still need to check every vertex of every triangle to see if we can discard them this way. 15 3. APPLICATION Three dimensions In 3D, ’left’ and ’right’ lose meaning for us, and we need a better way to determine whether a point lies to the correct side of the triangulation border. For this, we can use the normal vector of the border. In three dimensions, the triangulation cells are tetrahedrons and triangulation borders are triangles. The normal vector of a plane is a vector that is perpendicular to it, and it is calculated as the cross product of two vectors generating the plane. Once we have the vector, we can create a line that is perpendicular to the border plane and runs through our tested vertex, and test the vertex against the intersection of the line and the border plane. Since the line connecting the tested vertex and the intersection has the direction of the normal vector, we can reach the tested vertex from the intersection either by going ’along’ the vector (multiplying it by a positive parameter) or ’against’ the vector (multiplying it by a negative parameter). The signum of the parameter therefore shows us which side (positive or negative) the vertex lies on - as shown in figure 3.2. Figure 3.2: The cross product of two vectors, in our case two edges of a triangle. By multiplying the vector by a positive number, we reach points lying ’along’ the vector (in this picture ’above’ the triangle), and vice versa. But how do we determine whether it is the correct side of the border, if we can call neither of these sides ’left’ or ’right’? Well, we still have the fourth vertex to help us out - that is, of course, the vertex that is part of the tetrahedron, but not part of the triangulation border we are testing against. If we perform the same procedure with this vertex as we did with the unknown vertex – that is, we create a line that is perpendicular to the triangulation border and runs through the fourth vertex, and test the vertex against the intersection of the line and the border – we will once again get a parameter that will be either positive or negative. Now we have two parameters, one for the unknown vertex and the other for the fourth vertex of the tetrahedron. The size of these two parameters tells us how far the vertices are from the triangulation border. However, finding out whether the tested ver- 16 3. APPLICATION tex is closer to the border than the fourth vertex is of little use to us – it is, after all, possible for the tested vertex to be closer to the border than the fourth vertex (even in the same general direction), and yet still be outside the tetrahedron. The only thing of importance is the signum of each parameter. If these are the same (both parameters are positive or both are negative), we can say that they lie to the same side of the triangulation border. That means that the tested vertex is safely on the ’inner’ side of this particular border. If we perform this procedure on each border of the tetrahedron, and in each case the vertex lies to the same side of the border as the remaining (fourth) vertex, then the unknown vertex is surely inside the tetrahedron. This solution would not work in a four-dimensional space, since normal vector is undefined (and therefore can not be calculated) in four dimensions. By default, the option to triangulate is turned on. It can be turned off using launch parameter -nt. In that case the application will simply approximate using the nearest vertices in the surrounding space (three in case of a 2D model, four in case of 3D). 3.3.3 Weighted average The pKa values of the molecules that contribute to the approximation can be weighted by distance – that is, how close the charges on the molecules are to the charges on the tested molecule. We can calculate this distance exactly as we would calculate the distance of two points in space, if we think of a molecule’s charge values as the coordinates of a point: d = (x2 − x1)2 + (y2 − y1)2 + (z2 − z1)2 (3.1) where x1, y1 and z1 are the coordinates of the first vertex (or properties of the first molecule in our case), and x2, y2 and z2 are the coordinates of the second vertex (properties of the other molecule). Naturally, the closer a molecule is to our tested molecule, the more weight it should be assigned – therefore the weighting will be inversed (each pKa value will be divided by the distance rather than multiplied). The application also offers the option to use the regular average (all vertices are treated equally regardless of their distance to the tested vertex). By default, however, the approximation is performed using the weighted average (since it has consistently proven to be more accurate). This can be changed using launch parameter -nw. 17 Chapter 4 Results Finally, we need to evaluate the results yielded by the application of Delaunay triangulation to the problem of approximation of dissociation constants of molecules. This will be done mostly in form of comprehensive tables and short comments on the results. Besides the results of our triangulating method, the tables will also contain the results of a simple method without triangulation. Since the viability of the approach needs not necessarily be the same for all types of molecules, a distinction will be made between the results of approximating phenols (section 1) and the results of approximating benzoic acids (section 2) - just before these results are merged for a grand evaluation (section 3). To offer some perspective, some of these results will then be compared to the results of another model created as part of another bachelor’s thesis, which used linear regression for approximation of the same data (section 4). The results were achieved on data provided by Tom´aˇs Bouchal, who used them as part of his bachelor’s thesis [13] namely molecules from the database of NCI (National Cancer Institute) [14], pKa values obtained from PhysProp database [15] and partial charges of atoms calculated with a program called Gaussian (using method HF/6-31G* MPA) [16]. 4.1 Phenols First, the results for various phenols 4.1. The first three columns describe the method used to achieve the results. There is no ’dimension’ column - it would be redundant since the dimension of a model is always equal to the number of descriptors used. Hydrogen, oxygen and dissociated oxygen seem to be the best descriptors. Note that the results of triangulation are almost universally better than the results of the simpler, non-triangulating method and that using weighted average always improves the approximation when compared with regular average. 4.2 Benzoic acids When evaluating the results for benzoic acids, we should make a distinction between ortho benzoic acids and the rest (meta and para). For fairly complicated reasons, ortho, meta and para forms of the same benzoic acids do not have the same acidity. The ortho form of a benzoic acid will always be more acidic than its meta and para forms. Also, 18 4. RESULTS Table 4.1: Results of approximation of dissociation constant of phenol molecules. The best results are highlighted. Descriptors Weighted average Triangulation R2 RMSD AD H, O NO NO 0.9045 0.6824 0.4652 H, O YES NO 0.9117 0.6603 0.4509 H, O, C NO NO 0.9159 0.6432 0.4415 H, O, C YES NO 0.9295 0.5983 0.3998 H, O, O− NO NO 0.8651 0.8402 0.5653 H, O, O− YES NO 0.8701 0.8177 0.5347 H, O NO YES 0.9347 0.5206 0.3894 H, O YES YES 0.9394 0.4946 0.3633 H, O, C NO YES 0.9043 0.5774 0.4414 H, O, C YES YES 0.9420 0.4354 0.3222 H, O, O− NO YES 0.9362 0.4887 0.3843 H, O, O− YES YES 0.9626 0.3789 0.2784 while the dissociation constants of meta and para forms will usually be similar, the pKa of ortho form might be quite different. The results will be presented in three tables - first only for ortho benzoic acids, then only for meta and para benzoic acids 4.2 and finally for all benzoic acids together 4.3. Please note that O2 represents the second oxygen of the carboxyl group, not an oxygen molecule consisting of two atoms. You can see that the results of approximation of ortho benzoic acids are abysmal. This suggests that the acidity of ortho benzoic acids is less correlated with partial atomic charges than it is for phenols or other benzoic acids. That actually agrees with the chemistry behind this - due to the so-called ortho effect, when a substituent is in the ortho position, it interferes with the carboxyl group and affects its hydrogen atom’s willingness to dissociate - lessening the influence of the partial charges. Apparently, triangulation does not work very well with benzoic acids, since even the simple non-triangulating method (using nearest neighbors in space) gives us better results. Strangely enough, when looking for the best set of descriptors, you may notice that the best descriptors are different for each set of molecules. Still, the best ones appear to be H, O and O2 - trailing only a little in the first two result tables and dominating the third. Also note that the weighted average still keeps providing consistently better results than the regular average. 19 4. RESULTS Table 4.2: Results of approximation of benzoic acids - first for ortho benzoic acids, then for meta and para benzoic acids. The best results for each dataset are highlighted. Descriptors Weighted average Triangulation R2 RMSD AD H, O NO NO 0.7402 0.4933 0.4062 H, O YES NO 0.7620 0.4671 0.3910 H, O, C NO NO 0.6139 0.6043 0.5090 H, O, C YES NO 0.7018 0.5408 0.4438 H, O, O− NO NO 0.6886 0.5832 0.4469 H, O, O− YES NO 0.7473 0.4990 0.3921 H, O, O2 NO NO 0.7116 0.5294 0.4121 H, O, O2 YES NO 0.7219 0.5129 0.3928 H, O NO YES 04988 0.4196 0.3483 H, O YES YES 0.6599 0.3254 0.2788 H, O, C NO YES 0.3516 0.5090 0.4353 H, O, C YES YES 0.4640 0.4372 0.3640 H, O, O− NO YES 0.5132 0.3957 0.3185 H, O, O− YES YES 0.7077 0.2923 0.2444 H, O, O2 NO YES 0.4716 0.5806 0.4495 H, O, O2 YES YES 0.6613 0.3482 0.2421 Descriptors Weighted average Triangulation R2 RMSD AD H, O NO NO 0.8891 0.1826 0.1353 H, O YES NO 0.9083 0.1524 0.1107 H, O, C NO NO 0.8815 0.2055 0.1513 H, O, C YES NO 0.9113 0.1583 0.1247 H, O, O− NO NO 0.8574 0.2176 0.1630 H, O, O− YES NO 0.8650 0.2071 0.1543 H, O, O2 NO NO 0.8839 0.1849 0.1373 H, O, O2 YES NO 0.8897 0.1746 0.1287 H, O NO YES 0.7267 0.1845 0.1491 H, O YES YES 0.7373 0.1818 0.1441 H, O, C NO YES 0.6655 0.1768 0.1485 H, O, C YES YES 0.6899 0.1741 0.1392 H, O, O− NO YES 0.7088 0.1677 0.1393 H, O, O− YES YES 0.7390 0.1617 0.1286 H, O, O2 NO YES 0.8727 0.1292 0.1008 H, O, O2 YES YES 0.8477 0.1260 0.0869 20 4. RESULTS Table 4.3: Results of approximation of all benzoic acids together. The best results are highlighted. Descriptors Weighted average Triangulation R2 RMSD AD H, O NO NO 0.3912 0.7131 0.5205 H, O YES NO 0.5040 0.6350 0.4653 H, O, C NO NO 0.3875 0.7069 0.5354 H, O, C YES NO 0.4617 0.6650 0.5005 H, O, O− NO NO 0.5396 0.6175 0.4741 H, O, O− YES NO 0.5557 0.6045 0.4598 H, O, O2 NO NO 0.8128 0.4107 0.2864 H, O, O2 YES NO 0.8273 0.3897 0.2581 H, O NO YES 0.2145 0.6584 0.5267 H, O YES YES 0.3849 0.5446 0.4072 H, O, C NO YES 0.3886 0.5285 0.4412 H, O, C YES YES 0.4691 0.4816 0.3793 H, O, O− NO YES 0.1845 0.6877 0.5705 H, O, O− YES YES 0.4422 0.5335 0.4198 H, O, O2 NO YES 0.7172 0.4630 0.3135 H, O, O2 YES YES 0.8249 0.3025 0.1893 4.3 All molecules Now let us see what happens when we pool all phenols and benzoic acids together and build one big common model. Intuitively, it is hard to guess which way the results will sway. They could become more accurate, since our model will have more values to approximate from. But then again, they could also become less accurate as we will use benzoic acids to approximate phenols and phenols to approximate benzoic acids. It all seems to come down to how similar phenols and benzoic acids are in terms of dissociation constant and its relationship with partial charges. The results are presented in table 4.4. The results are quite positive - in fact, they are better than any results achieved by only approximating one type of molecules. This shows us two things: firstly, that the method’s accuracy improves considerably with larger datasets, and secondly, that phenols and benzoic acids can be used to approximate each other’s dissociation constants a phenol and a benzoic acid with similar partial charges on atoms will also have similar pKa. The best descriptors are H, O and O− , by a wide margin. The results of using the weighted average are, once again, significantly better than those of the regular average. 21 4. RESULTS Table 4.4: Results of approximation of all the molecules together. The best results are highlighted. Descriptors Weighted average Triangulation R2 RMSD AD H, O NO NO 0.9394 0.7065 0.4867 H, O YES NO 0.9461 0.6678 0.4596 H, O, C NO NO 0.9405 0.7004 0.4795 H, O, C YES NO 0.9477 0.6600 0.4401 H, O, O− NO NO 0.9301 0.7754 0.5359 H, O, O− YES NO 0.9334 0.7556 0.5105 H, O NO YES 0.9177 0.8127 0.5310 H, O YES YES 0.9671 0.5123 0.3637 H, O, C NO YES 0.8962 0.8946 0.6593 H, O, C YES YES 0.9463 0.6516 0.4310 H, O, O− NO YES 0.9488 0.6216 0.4702 H, O, O− YES YES 0.9755 0.4287 0.3219 4.4 Comparison with linear regression A benchmark set for the methods used in this thesis is linear regression. The results should be compared with the results achieved by Michal Kudera in his bachelor’s thesis [17]. This is not as straightforward a task as it may seem - there are considerable differences between the two approximations and, as a result, there are multiple ways to approach this comparison. Firstly, the method used in my application can not approximate all of the molecules in a dataset using triangulation - regardless of implementation or the dataset’s size. The method relies on taking a molecule from a dataset, building the triangulation from the rest of the molecules, and then placing the molecule inside the triangulation. But if the molecule is part of the dataset’s convex hull, then it will be outside the new triangulation and therefore will not be inside any triangle. This can be solved by approximating the remaining molecules (the ones in the convex hull) using the ’plain’ method - simply averaging the nearest neighbors in space. When we are trying to evaluate triangulation, is it better to omit the results triangulation can not give us, or to mix in another method entirely? Both are shown below. There is also another thing. The application using linear regression was run on a similar, but smaller dataset than mine. It was, in fact, a subset of my dataset. It is therefore reasonable to only use that subset when comparing the two methods (even though the subset is quite small and my approximation loses accuracy with smaller datasets). But it offers a third way to compare the results - build the model using all the molecules from my dataset, but only compare the results of the molecules from the shared sub- 22 4. RESULTS Figure 4.1: An attempt to approximate a molecule from the convex hull. set. This removes the problem of molecules from the convex hull, because now there will be other molecules on the convex hull - ones that do not need to be approximated. However, since it uses extra information that was not available to the application using linear regression, it is not completely fair. The three tables below represent the three approaches to results - omitting the molecules that are on the convex hull, approximating the molecules from the convex hull with another (less accurate) method, or using the extra values to help build the model. Note that there are no results for benzoic acids, because the small dataset used in the linear regression application only contains phenols. Table 4.5: Results gained when omitting the molecules from the convex hull. Linear regression 0.9732 Triangulation using O, H 0.9855 Triangulation using O, H, C 0.8764 Triangulation using O, H, O− 0.9733 Table 4.6: Results gained when approximating the molecules from the convex hull with another method. Linear regression 0.9732 Triangulation using O, H 0.9094 Triangulation using O, H, C 0.8106 Triangulation using O, H, O− 0.9293 It is easy to see that when we try to incorporate another method to help with the approximation, the accuracy drops sharply. But even when using all available values to build the model, the approximations of this small dataset are still less accurate with 23 4. RESULTS Table 4.7: Results gained when using a larger dataset to build the model. Linear regression 0.9732 Triangulation using O, H 0.9439 Triangulation using O, H, C 0.9499 Triangulation using O, H, O− 0.9703 triangulation than they would have been with linear regression. However, the results are definitely comparable and linear regression still has a serious limitation - it can only be used on homogenous sets of molecules (e.g. only phenols or only benzoic acids). Not only is our triangulation method capable of approximating heterogenous sets of molecules (as shown earlier in this chapter), its results can actually be improved by bringing in different types of molecules into the approximation. The fact that the results of a method that can be used on any set of molecules are comparable to a much more specialised method - even when compared over a homogenous dataset - makes triangulation a very interesting and viable option when trying to predict a molecule’s dissociation constant. 24 Chapter 5 Conclusion One of the great challenges of present-day chemoinformatics research is prediction of dissociation constants (pKa) of molecules [3]. The values of pKa are very interesting for chemical, biological and environmental research. A particular attention is paid to pKa in the pharmaceutical industry, especially in the area of drug development. The value of a molecule’s pKa is one of the criteria that allow us to discard a molecule from a list of potential drug molecules. The experimental measuring of pKa is difficult and computational methods for acquiring pKa are nontrivial. An efficient alternative is approximation of dissociation constant using the values of partial charges on atoms within a molecule. An interesting way to do this is by using Delaunay triangulation, and that was the focus of this thesis. First, I designed and implemented a software tool capable of reading charges and dissociation constants of molecules from a file and predicting pKa of other molecules. For these predictions, my application uses Delaunay triangulation and direct calculation based on pKa of the molecules with the most similar atomic charges. This tool allows various types of charges to be included in the calculation and offers its user the option to work with either weighted or regular average of the neighboring molecule’s properties. The software was then tested on several datasets of molecules - one containing phenol molecules, one containing ortho benzoic acids, one containing meta and para benzoic acids and a few combinations of the three. The results show that triangulation methods are very successful in majority of cases (R2 > 0.9). The results of these methods improve with larger datasets. H, O and O− have shown to be the best descriptors, and using weighted average is better than using regular average. Compared to methods of linear regression, triangulation gives us slightly worse results. On the other hand, methods using linear regresion can only be used on homogenous sets of molecules, which is very limiting for their application. That is why triangulation is showing to be a very promising method for predicting pKa in any given set of molecules. The software tools developed and the results gathered as part of this thesis will be used at the National Centre for Biomolecular Research. They will be used to predict pKa and their results will serve to test the effectiveness of the above-described methods for predicting pKa. 25 Chapter 6 Appendices 6.1 Contents of the attached CD The attached CD contains the application - both as a C# solution and as a compiled executable file. It also contains all the files needed to run it (testing sets of molecules and ExcelLibrary.dll) and a short Readme file describing the launch parameters available to the user. 26 Bibliography [1] A. R. Leach and V. J. Gillet. An Intorduction to Chemoinformatics. Springer, 2007. [2] B. Bunin. Chemoinformatics: theory, practice & products. New York, NY, USA, Springer, 2007. [3] J. Gasteiger and T. Engel. Chemoinformatics: A Textbook. JohnWiley & Sons, 2003. [4] A. C. Lee and G. M. Crippen. Predicting pKa. J. Chem. Inf. Model., 49, 2013–2033, 2009. [5] M. J. Citra. Estimating the pKa of phenols, carboxylic acids and alcohols from semiempirical quantum chemical methods. Chemosphere, 1, 191–206, 1999. [6] S. Jelfs, P. Ertl, and P. Selzer. Estimation of pKa for druglike compounds using semiempirical and information-based descriptors. J. Chem. Inf. Model., 47, 450–459, 2007. [7] B. Delaunay. Sur la sph`ere vide, Izvestia Akademii Nauk SSSR, Otdelenie Matematicheskikh i Estestvennykh Nauk, 7:793–800, 1934. [8] S. Geidl. V´ypoˇcty pKa na z´akladˇe atomov´ych naboj˚u [online]. Bachelor’s thesis. Masaryk university, Faculty of science, 2011. Available at: http://is.muni.cz/th/327887/prif b/. [9] J. Slov´ak. Geometrick´e algoritmy [online]. 2011 [cited on 2012-05-18]. A course at Masaryk university. Materials available at: http://www.math.muni.cz/∼slovak/ Vyuka/slidy.pdf. [10] Visual Studio Home [online]. http://www.microsoft.com/visualstudio/en-us. [11] MIConvexHull [online]. http://miconvexhull.codeplex.com/. [12] excellibrary - Excel fileformat library [online]. http://code.google.com/p/ excellibrary/. [13] T. Bouchal. Predikce pKa s vyuˇzit´ım QSPR model˚u [online]. Bachelor’s thesis. Masaryk university, Faculty of science, 2012. Available at: http://is.muni.cz/th/ 357534/prif b/. [14] NCI Open Database Compounds downloaded from http://cactus.nci.nih.gov/ on 2010-08-10. 27 6. APPENDICES [15] P. Howard and W. Meylan. Physical/chemical property database (PHYSPROP). Syracuse Research Corporation, Environmental Science Center, North Syracuse NY, 1999. [16] M. J. Frisch, G. W. Trucks, H. B. Schlegel, G. E. Scuseria, M. A. Rob, J. R. Cheeseman, J. A. Montgomery Jr., T. Vreven, K. N. Kudin, J. C. Burant, J. M. Millam, S. S. Iyengar, J. Tomasi, V. Barone, B. Mennucci, M. Cossi, G. Scalmani, N. Rega, G. A. Petersson, H. Nakatsuji, M. Hada, M. Ehara, K. Toyota, R. Fukuda, J. Hasegawa, M. Ishida, T. Nakajima, Y. Honda, O. Kitao, H. Nakai, M. Klene, X. Li, J. E. Knox, H. P. Hratchian, J. B. Cross, V. Bakken, C. Adamo, J. Jaramillo, R. Gomperts, R. E. Stratmann, O. Yazyev, A. J. Austin, R. Cammi, C. Pomelli, J. W. Ochterski, P. Y. Ayala, K. Morokuma, G. A. Voth, P. Salvador, J. J. Dannenberg, V. G. Zakrzewski, S. Dapprich, A. D. Daniels, M. C. Strain, O. Farkas, D. K. Malick, A. D. Rabuck, K. Raghavachari, J. B. Foresman, J. V. Ortiz, Q. Cui, A. G. Baboul, S. Clifford, J. Cioslowski, B. B. Stefanov, G. Liu, A. Liashenko, P. Piskorz, I. Komaromi, R. L. Martin, D. J. Fox, T. Keith, M. A. Al-Laham, C. Y. Peng, A. Nanayakkara, M. Challacombe, P. M. W. Gill, B. Johnson, W. Chen, M. W. Wong, C. Gonzalez, and J. A. Pople. Gaussian 03. Gaussian, Inc., Wallingford, CT, 2003. [17] M. Kudera. Softwarov´e n´astroje pro v´ypoˇcet disociaˇcn´ıch konstant [online]. Bachelor’s thesis. Masaryk university, Faculty of informatics, 2010. Available at: http: //is.muni.cz/th/207767/fi b/. 28