n
Original
Research
Paper
43
Chemometrics and Intelligent Laboratory Systems, 8 (1990) 43-51 Elsevier Science Publishers B.V., Amsterdam - Printed in The Netherlands
Expert Systems with Chemical Structure Handling Capability J ZUPAN
l, L.
BUYDENS,
A. PEETERS
and D.L. MASSART
*
Farmaceutisch Instituut VUB, Laarbeeklaan 103, B-1090 Brussels (Belgium) (Received 5 September 1988; accepted 10 July 1989)
ABSTRACT
&pan, J., Buydens, L., Peeters, A. and Massart, D.L., 1990. Expert capability. Chemometrics and Intelligent Laboratory Systems, 8: 43-51.
systems
with
chemical
structure
handling
Expert systems based on expert system shell& with structure handling capability are discussed in general and a working prototype of such a system is described which is capable of handling many different types of structures (fragments) provided by the user. The system is implemented using a KES expert system shell as a mother shell and an interactive structure generator with a superstructure search program as the central feature around which the other expert systems can obtain required information about structural properties. A number of utility programs providing the communication files for the KES shell and other systems are added as welJ but, due to their heavy dependence on a particular application, these are not described in detail. To demonstrate the flexibility of such a tool, three small independent ‘expert’ systems and a complex package for simulation of r3C NMR spectra were linked by the KES shell. The three small applications consist of a system that needs knowledge of the presence or absence of defined functional groups (determination of oxidizability), a system that needs information on the presence and number of different functional groups, together with a set of parameters associated with these fragments (determination of acidity based on the strong and weak acidic and basic functional groups), and a system that needs the information about the type of compound (skeleton).
INTRODUCTION
A growing interest during the last few years in the field of expert systems that are chemistry oriented has shown that chemists in general and analytical chemists in particular have a great need for practical tools for automatic problem solving
* On leave from the Ljubljana, Yugoslavia.
0169-7439/90/$03.50
Institute
of
Chemistry
‘B.
Kidric’,
0 1990 - Elsevier Science Publishers
B.V.
at an expert level [l]. Expert systems with different design philosophies, usually based on shells or programmed in higher, general purpose or artificial intelligence (AI) languages, have been built and tested for solving specific chemistry oriented goals [2-61. The main goals of chemistry oriented expert systems can be summarized as follows: - identification of compounds; - design of compounds with desired properties; - search for reaction pathways for chemical syntheses;
44
- determination of desired working or optimal experimental conditions; - simulations of spectra of different types; - etc. It is evident that in many problems relevant to chemistry there is a relation between a compound’s structure and its properties, which means that handling chemical structures is a requirement for many chemical expert systems. It follows that chemistry oriented expert systems should be able to work efficiently with chemical structures. In most cases, structure dependent information is obtained via user-computer dialogue in which the expert system inquires about the presence or absence of structural features of the compound(s) it is supposed to deal with. Such a dialogue can be slow and tedious, and requires a knowledge of the names and structures of structural fragments, which is not necessarily the strong point of every user. Answering by selections from long lists of items displayed by the computer can cause mistakes by the choice of wrong answers, or it can cause the last option on the list - ‘not known’ or ‘optional’ - to be chosen too often. In order to answer such questions, the user must look at the structure of the compound; hence it seems logical to input a structure in the computer in the easiest way possible and let the computer do the rest of the work. Once the computer has established the presence or absence of certain structural features, this knowledge can be linked with the existing knowledge base (either relationships described by rules or frames or obtained from data tables and files) and used in the inference process needed to obtain a solution of the problem. Should it occur that structure-related answers cannot be obtained or are dubious, the computer can still prompt the user to resolve the dilemma or overrule the answer obtained automatically. The inclusion of a powerful structure handling utility in chemistry oriented expert system tools therefore seems to be crucial In the present work we describe a general scheme and a working example of such a structure handling system that operates within a commercially available expert system shell. Additionally, we try to devise a scheme that can link together different expert and/or application programs, provided that the
Chemometrics and Intelligent Laboratory Systems
shell is equipped programs.
for communication
n
with external
EXPERIMENTAL The commercially available expert system KES (release 2.4) runs on Apollo or IBM/PC hardware. The IBM/PC version was chosen here. The structure generating and the structure handling program are written in Fortran 77.
RESULTS AND DISCUSSION The deciding factor for the choice of a structural representation is the information one wants to handle: often commercial names or lists of fragments for the structure description are enough, but sometimes even a three-dimensional representation of atoms and bonds is not sufficient. Many structure-related properties are very complex and context dependent, i.e. they have to be evaluated with respect to other structural features. This implies that a compromise between a full three-dimensional representation of a molecule and its simple commercial name has to be chosen. An appropriate choice for structure representation seems to be the molecule’s topological [7] description in the form of a connectivity matrix or its simplified version, a connection table [S]. This approach offers enough flexibility to adapt to most of the requirement needed within the expert systems. There are, of course, problems related to steric effects and to other atom-to-atom distancebased information that cannot be solved by topology alone and, for such cases, a utility that recognizes topological positions where conformation effects can arise may be included. The following structure related procedures are the most commonly used in expert systems: finding all structures having the query embedded in their structures (substructure search), determination of the molecule’s skeleton by comparing the query with items in a ‘skeleton file’ (superstructure search), determination of the presence or absence of substituents of the query structure by checking
n
Original
Research
Paper
45 QUERY
the reference file of ‘substituents’ (superstructure search), generation of all possible structures from a given set of fragments or from the molecular formula (structure generator), determination of fragments that cover a complete structure without overlapping each other (decomposition of structures), finding identical, most similar (the first one in the ranked list of similar compounds), or the largest connected structure (in terms of number of rings, atoms and bonds) common to all structures in a set of structures (similarity search), determination of structural positions where steric and conformational ambiguities can arise, search for the most similar ‘shape’ of molecules or parts of them (lock-and-key search), etc. There are many more different types of structure handling routines that can be used in chemical applications and that should therefore be implemented as general purpose tools in chemically oriented expert systems. At the very bottom level of any structure handling algorithm the structures are compared atom by atom with respect to the type of atom, number of its neighbours, and types of corresponding bonds. However, the preprocessing steps, the input/output conditions, the constraints in the query or in the reference, requirements for a match or failure, etc., differ considerably from application to application. The two most frequently used structure manipulating activities, substructure and superstructure search [9] (which are often confused) are shown schematically in Fig. 1. In the substructure search a query, which is usually small compared to the reference structures, must be given with clearly specified possible continuations (marked with X on Fig. 1). The goal is to find all structures in the reference file that contain this fragment. On the other hand, in the case of the superstructure search, a large structure (compared to structures in the reference file) is given with the goal of finding all fragments or skeletons from a reference file that can be matched in the query. If, in the substructure search, the input is a complete structure, i.e. with no possible continuations given,
x
REFERENCES
;c
QUERY
REFERENCES
x
0
'0
@
x
!s ,8 0
1
4
0
ti L 0
a
b
Fig. 1. Substructure (a) and superstructure (b) search. In the first case, all structures containing the query (small compared to the structures in the reference file), while in the second case, the references that completely fit the query (relatively large compared to the reference fragments), are sought.
the result can only be an exactly identical structure, or no structure will be found. Sometimes, the required answer to such a search can be only a confirmation of the presence or absence of one or more items in the file of reference compounds while, on other occasions, besides the number and type of matches, the accompanying list of one-toone correspondences between the numbering of query and reference atoms is necessary. A structure generator is an important part of a chemical expert system. The generator of structures is a procedure that, from a given set of data (molecular formula, set of fragments, etc.) and constraints provided by the user, ‘assembles’ all topologically possible structures. Combinatorially, the problem is so computationally intensive that,
Chemometrics
46
and Intelligent
Laboratory
Systems
n
CHAIN
RING
: 6
MENU
t
CHAIN:
1 AT5.1
AT3
IMENU
J
CHAIN
e/l\3
I
/5\r/3\ a
BOND
: 3.7, 2
I 7
1 MENU
ATOM.
6 NH2
.7
0
1 MENU
I
Fig. 2. Structure editor at work in the generation of the structure of 3aminocyclohexanone. The editor must respond immediately to each command so that the chemist can view the effect and correct it when wrong. The connection table of the compound is updated accordingly, and this operation is completely transparent to the user.
with the exception of the very simplest molecules, it is not feasible to generate all possible structures [lo]. The structure generator should therefore generate a decision tree so that the structure generation proceeds only through branches on which structures are situated that are compatible with some additional chemical constraints (for example: consider only the 6- and 5-membered rings). A similar procedure to structure generation is structure fragmentation. This is needed in simulations and assignments of spectra, in the deduction of biological properties, for the preparation of inverted files [ll] of fragments, for fragmentation of the query structure before the search, etc. The fragmentation can be based either entirely on the topology, or basic chemical knowledge can be added in order to reduce the number of possible fragments to the feasible ones. When carrying out the fragmentation, again, it is very important to know the purpose for which the fragments will be used. If rule-based preselected fragments [8] are
sought, there are usually not too many problems with the implementation of appropriate fragmentation, providing the rules are not too complicated. On the other hand, if the fragmentation must meet specific requirements (log p values in QSAR, mass spectral simulation, search for reaction pathways), it is much harder to implement. In order to ‘cut’ a fragment out of a skeleton, a knowledge base should be considered in order to obtain the required answer for each bond that has to be broken. The resolution of these kinds of decisions presents a problem that is difficult enough to justify an expert system of its own [12]. Similarity searches require a definition of a ‘similarity’ or ‘distance’ measure between the structures. Because the similarity of structures is closely related to the specific problem, a general procedure to evaluate this measure is very difficult to establish [13]. In order to start, to interfere with, or to redirect any of the abovementioned structure handling
n
Original Research Paper
41
routines, the user must have at hand a tool called a ‘structure editor’. The structure editor enables the user to input, to build, to change, or otherwise to manipulate chemical structures according to his needs. The structure editor must be an interactive and graphics supported tool for the manipulation of chemical structures in a manner that is easily understandable by chemists. Fig. 2 shows an example of how structures can be edited or built using a structure editor [14]. The editor must permit the building of structures step by step, their invokation from menus or files, structural combination or decomposition, the downloading of the edited structures to files for further use, the addition of numerical information either to individual atoms (coordinates), to bonds (type, length), or to the structure as a whole (name), etc. Each individual structure handling routine should be self-contained in a program package that is accessible at the operating system level or internally from the shell. The input to the dedicated package are the structure (connection table) of the query and a list of files containing reference structures needed for the required task. The result is a list of matching reference structures with accompanying attributes. The list of results must be written in a file in a known format. After the structure handling routine outputs the results, the reference files are closed, the information seeking process that involves the structure handling in the narrowest sense is finished, and the control over the global procedure is returned to the main shell. Design of an expert handling capability
system
shell with structure
Fig. 3 shows an overall scheme of what an expert system shell with a structure handling ability should look like. The structure (or structural fragment) as a part of the expertise, can be input at the beginning or can be obtained during the search for the solution. The first case is handled by the interactive structure editor (Fig. 2) built into the system, while in the second case the structure is either retrieved from data files or built up from fragments by an appropriate utility program. If the structure is obtained during the run it can still go through the editor for checking, cor-
KNOWLEDGE SHELL EXPERT SYSTEM
STRUCTURE EDITOR
FILES WITH
CONNECTlVlTY MATRIX
STRUCTURES
STRUCTURE HANDLING ROUTINES LIST
OF
HITS
APPLICATIONS
I
I
Fig. 3. General scheme for an expert system shell capable of structure handling. The vital parts are the structure editor and dedicated routines such as sub- and superstructure search. The global shell contains a menu which transfers the calls to different expert systems (EXPl,. .,EXPi), or to the other applications (APPLl, . . . , APPLj) that involve chemical structures in one way or another.
rections and changes proposed by the user, or for download to permanent files for further use. In any case, however, the structure is stored in the form of a connectivity matrix [7] or connection table [8]. After the structure is generated, one of the dedicated structure handling utilities (chosen by the menu or by the inference engine) allocates proper structural files for the task and the query structure is treated according to the user’s needs. The results of the dedicated structure handling routines must be written in a uniform way (identical output format from all routines) so that ‘intermediate’ programs can be used to reformat the result thus satisfying the needs of individual ex-
Chemometrics
48
pert systems and/or applications. Unfortunately, different applications require input data in different formats, so that the shell must have a flexible formatter for outputting data. A very interesting and useful kind of application which needs a chemical structure as an input is the simulation of spectra (13C NMR, mass, IR, etc.) enabling the chemist to test hypothetical structures. Such applications can be completely self-contained, needing no intermediate or dedicated structure handling routine or reference file. In such cases, the global process control should be able to pass the execution of the task, immediately after the structure is input via the editor, to the appropriate application module. Once the results are returned to the appropriate application (or expert system) the solution seeking process is continued within the same system or by consulting another expert system (or application). The expert systems could need (and will therefore require) other data about the same structure or could need the same type of data for another structure. The cycles of correlating the structure (or parts of it) with certain properties are then repeated until the problem is completely solved. Example of an expert handling ability
system
shell with structure
With the scheme explained above in mind, a working model for a structure oriented expert system shell that can handle different types of applications simultaneously was built and tested. In order to show the general applicability of such an approach as the test ‘applications’ five different applications were selected: determination of the skeleton; determination of the oxidizability; determination of the acidic or basic property of a molecule; decision whether the compound is UV active; simulation of spectra. The implementation of chemistry oriented rules for the selection of experimental techniques in liquid chromatography [6] was quite successful in previous releases of KES and, to a certain (although limited) extent it can handle different externals. As a structure editor a modified version of
and Intelligent
Laboratory
Systems
n
a previously described mainframe structure editor was employed [14], adapted for the IBM/PCcompatible personal computer. The editor was modified mainly to enhance the user-tailored download of the connection table of the compound studied. This was necessary to ensure that its output can be used smoothly by the structure handling utility or can serve directly as input to the applications that require the structure in their own defined format. The structure handling utility in our case is a superstructure search that can determine the presence or absence of selected structural features in a given molecule. The input to it is a query structure and the file name (or set of file names) of file(s) on which the connectivity matrices of reference structures together with the supplemental information are stored (Fig. 4). The output consists of a list of names of the fragments found to be present in the query structure. The most simple use of a superstructure search is the confirmation of the presence or absence of a given skeleton or any other structural feature in the query structure. To accomplish this the file containing all target skeletons has to be checked and the answer(s) found must be communicated to the particular application. The only thing the user has to be careful about is the multiple appearance of the same structural feature or appearance of more than one ‘skeleton’ if the input structure is very complex or if target skeletons are small in comparison to it. This kind of application was implemented in our system as a ‘SKELETON’ option, which invokes an ‘expert system’ for determination of the skeleton of the input compound. The selection is made from a set of 27 skeletons of common pharmaceutical drug types (Table 1). For a case like carbazole where two of the above skeletons will be found (carbazole and pyrrole) the expert system must contain a rule to eliminate the smaller one. Another typical example for structure handling where the combination of the rule-based expert system and a structure generator can be shown, is solving the following problem. ‘Question: Is a [query] compound oxidizable? One would then like an answer such as: ‘yes, because the structure
m
Original Research Paper
49
has an aromatic ring and a secondary amine and it does not contain an imide group’, for instance. The programming of a substructure or superstructure search for solving general questions of this kind is too complex to be implemented, even on an mainframe, much less on a personal computer. However, using a superstructure search to determine a set of oxidizable functional groups and the exceptions, the list of which can be found in the literature, it is quite easy to handle this kind of problem. Once the structural groups are detected, the result is passed to the rule-based knowledge base where (for the particular question) two rules are relevant:
REFERENCE STRUCTURES
I I
ARE
I
INPUT
ON
TtlE FILES
rule 1: ‘if BENZENE and SECONDARY AMINE are present and IMIDE is not present then COMPOUND is OXIDIZABLE and rule 2: ‘if BENZENE and SECONDARY AMINE and IMIDE are present COMPOUND is not OXIDIZABLE’ Fig. 4. Two ways of communicating structure-related data to the particular application. If only a few data about each fragment found have to be transmitted they are added to the same line as the identification of the fragment (left). If more complex information is required the name of the file where it is stored is given and from these files a reformatting routine can compose an acceptable data input for the selected application (right).
TABLE 1 List of 27 skeletons that can be determined by the system 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Azepine Barbiturate Benzene Benzopyrrole Benzoxazoline Carbazole Diazepine Furan Hydantone Imidazole Isatine Morphinane (part) Morpholine Phenothiazine
15 16 17 18 19 20 21 22 23 24 25 26 27
Phenoxazine Piperazone Piperidine Piperidinedione Purine Pyrrole Pyrrolidine Pyrimidine Pyridine Thiazole Thiophene Tropane Xanthine
and permit the required answer to be obtained. To show this type of structure handling two small ‘expert systems’ were designed: one to predict the oxidizability of input structures and the second one to predict the acidic or basic character of the compound. Both are needed in a larger expert system for method development in high-performance liquid chromatography (HPLC) [15]. The first system was based on 16 oxidizable groups and about 20 different rules handling the combinations of groups, while the second one was developed to demonstrate handling of different files with structures. The acidic or basic character of the compound is determined from the type and number of relevant functional groups [6]. The system first selects four files containing strong acidic, strong basic, weak acidic, and weak basic functional groups, respectively. After the files are selected, the superstructure search program checks the query structure sequentially against all functional groups in the four files and gives, besides the names of groups, their number and the type of the fragment (SA, SB, WA, and WB for strong and weak acids and bases, respectively). This information is transformed into three attributes
50
(name, number and type) for each functional group present and communicated to the expert system which then, according to about 30 rules, determines whether the substance is a strong or weak acid, or base, respectively, or amphoteric, neutral, or not known. The next type of problem involves the handling of structural features that have to convey certain values or a set of values. A simple example of a search of this kind was implemented as an expert system that, besides determining the UV-active character of the input compound (UV-active or UV-inactive according to the built-in rules), displays the wavelength at which the fragment(s) found absorb(s) the UV light. The information sought is contained on the first line of each target fragment in the reference file and is carried from the input file to the output on the same line as the identification of the structural feature (Fig. 4). The internal reformatting routine can then transform it into a format acceptable for a a particular application. If more parameters, values, or textual information are needed than there is space available on the first line, then the full information can be stored in a permanent file, the name of which is then given on the first line as the only entry. The reformatting routine then brings the full information as an input file into the particular expert system (Fig. 4, right). Using this kind of communication, any amount or type of additional information can be passed to the application. As an example of a bypass of the structure handling utility programs, a r3C NMR spectral simulation program [16] was used. After the structure for which the simulation is required is edited, the simulation package has to be executed immediately without any sub- or superstructure search, or any other structure handling routine. Because the simulator is completely self-contained, it reads all necessary data from its own defined files and the only thing it needs is the file containing the structure for which the 13C NMR spectrum must be simulated, written exactly in the manner specified. The implementation of a structure editor in an expert system shell capable of handling different applications places special requirements on it. Besides the standard structure editing functions (generating and linking chains
Chemometrics and Intelligent Laboratory Systems
l
and rings; renaming, deleting and inserting atoms and bonds; zooming and image manipulation) the detail of which we shall not go into here, the structure editor must have multiple and flexible output options and output formats. Different applications have different needs: some require connection tables and others require connectivity matrices; for substructure search a fragmentation of the download structure is very desirable; some applications need coordinates of topological descriptions, etc. There are two ways to solve such ‘interface’ problems. Either the user is advised to program his own reformatting routines to meet the needs of every applications employed, or the editor provides a choice for a number, type, and format of data (text, molecular formula, connectivity matrix, fragments, coordinates, etc.). On the one hand it is very time consuming to program one’s own intermediate programs to link the applications together, while on the other hand an editor’s download capabilities cannot cover all specific needs the user may have. Hence, a reasonable compromise must be found between the two approaches. The more flexible the file formatting routine for ‘shaping’ a downloaded structure, the easier is the communication with different applications. The improvements of the formatting option of the structure editor that we have implemented in the expert system shell described were made according to the above guidelines. For each structure generated the user can download, besides the connection table (or connectivity matrix), a line of arbitrary text, molecular formula, description of all rings, number of hydrogens on each atom, two-dimensional coordinates of the molecular graph and canonical code of arbitrary atom-centered fragments (up to the second neighbour bonds). Beside the selection of any combination of these data the user can, to a certain extent, format the order and appearance of the selected data on the download file. In this way, we were easily abIe to link the systems described.
CONCLUDING
In this hancement
REMARKS
paper we have demonstrated an enof a commercially available expert sys-
n
Original
Research
Paper
tern shell so as to make it chemistry oriented. The structure handling part can, of course, be used as a stand-alone package but, by using the rule driven inference engine provided by the expert system as a shell, even more effective tools can be created. We were able to link five independent expert systems within a shell and apply each one according to the menu (provided by the shell) to the same structure, which was edited at the beginning. For those applications, the same structure handling utility (superstructure search) matched structural fragment from different files and then communicated the results back to the application for further consideration. The choice of the mother shell is not very critical, as long as certain requirements are met. The shell must be able to: - handle externals of different kinds, notably graphics; - provide handling rules that are standard in knowledge-based inference engines: backward and forward chaining, etc.; and - provide flexible I/O handling of all parameters and variables. On personal computers running under DOS there are problems with the shell we used (KES) when handling larger external programs (using graphics or windowing) or even other KES knowledge bases. Self-contained packages, like dBASE or LOTUS l-2-3, cannot be called as externals by the present release of KES (2.4), although all these larger external programs were connectable to knowledge bases written in KES release 2.3. Additionally, KES does not provide a very flexible way to import or export (read/write) attributes and classes or class attributes. Hence, for each application, a specific reformatting program must be written to satisfy the particular requirements. On the brighter side, mastering the use of KES as a shell is comparatively easy, the handling of externals (if not too large) is smooth, and the inference engine has proved to be powerful in previous chemistry-oriented applications [6]. One of our next steps will be to link together larger partial expert systems, to enhance the structure handling routines (substructure search, structure generator and fragmentor) and to try other expert system shells.
51
REFERENCES 1 P.B. Ayscough (Editor), Proceedings of Meeting on Expert Systems in Chemistry and Chemical Industry, Chemomezrics and Intelligent Laborafoty Systems, 5 (1988). 2 R.E. Dessy, Expert systems part 1 and part 2, Analytical Chemistry, 56 (1984) 1208A-1212A, 1312A-1330A. 3 J.W. Klaassens, G. Kateman and B.G.M. Vandeginste, Expert systems and analytical chemistry, Trendr in Analytical Chemistry, 4 (1985) 114-117. 4 J. Zupan and M.E. Munk, The feed-back search of hierarchical trees, Analytical Chemisty, 58 (1986) 3219-3225. 5 G. Musch, M. De Smet and D.L. Massart, Expert systems for pharmaceutical analysis. I. Selection of the detection system in high-performance liquid chromatographic analysis: UV versus amperometric detection, Journal of Chromatography, 348 (1985) 97-110. 6 L. Buydens, M. Detaervenier, D. Tombeur and D.L. Massart, An expert system for development of analytical procedures: UV spectrophotometric determination of pharmaceutically active substances in tablets, Chemometrics and Intelligent Laboratory Systems, 1 (1986) 99-108. 7 D. Bonchev, 0. Mekenyan and A.T. Balaban, Algorithms for coding chemical compounds, in N. Trinajstic (Editor), Mathematics and Computational Concepts in Chemistry, Ellis Horwood, Chichester, 1986, pp. 34-47. Freseniu’ 8 J. Zupan, Library search in analytical chemistry, Zeitschrift ftir Anai’yrische Chemie, 313 (1982) 466-472. 9 N.A.B. Gray, Computer-Assisted Structure Elucidation, Wiley New York, 1986, Chapters 7 and 9. 10 M.E. Munk, C.A. Shelley, H.B. Woodruff and M.O. Trulson, Computer-assisted structure elucidation, Fresenius’ Zeiischrift f& Anaiytische Chemie, 313 (1982) 473-479. 11 J. Zupan, Problems in data retrieval systems for analytical chemistry, Analytica Chimicu Acta, 10 (1978) 273-288. bilateral 12 J. Bauer, E. Fontain and I. Ugi, Computer-assisted solution of chemical problems and generation of reaction networks, Analytica Chimica Actu, 210 (1988) 123-134. 13 J.T. Clerc, Similarity of structures, Keynote lecture at VIII ICCCRE, Beijing, China, June 15-20th, 1987. and use of chemical 14 J. Zupan and S. Bohanec, Creation data bases with substructure search capability, Vestnik Slovenskega Kemijskega Drustva, 34 (1987) 71-81. 15 M. De Smet, G. Musch, A. Peeters, L. Buydens and D.L. Massart, An expert system for the selection of HPLC methods for the analysis of drugs, Journal of Chromatogruphy, in press. 16 J. Zupan, M. Novic, S. Bohanec, M. Razinger, L. Lah, M. Tusar and I. Kosir, Expert system for solving problems in 13C NMR spectroscopy, Analytifa Chimica Acfa, 200 (1987) 343-345.