Protein Threading Based on Multiple Protein Structure Alignment

Similar documents
Protein Structure Prediction II Lecturer: Serafim Batzoglou Scribe: Samy Hamdouche

Protein Threading. BMI/CS 776 Colin Dewey Spring 2015

09/06/25. Computergestützte Strukturbiologie (Strukturelle Bioinformatik) Non-uniform distribution of folds. Scheme of protein structure predicition

CMPS 6630: Introduction to Computational Biology and Bioinformatics. Structure Comparison

Number sequence representation of protein structures based on the second derivative of a folded tetrahedron sequence

Chapter 5. Proteomics and the analysis of protein sequence Ⅱ

Introduction to Comparative Protein Modeling. Chapter 4 Part I

Single alignment: Substitution Matrix. 16 march 2017

Protein Structure Prediction

CAP 5510 Lecture 3 Protein Structures

Week 10: Homology Modelling (II) - HHpred

Algorithms in Bioinformatics FOUR Pairwise Sequence Alignment. Pairwise Sequence Alignment. Convention: DNA Sequences 5. Sequence Alignment

Francisco Melo, Damien Devos, Eric Depiereux and Ernest Feytmans

Protein folding. α-helix. Lecture 21. An α-helix is a simple helix having on average 10 residues (3 turns of the helix)

InDel 3-5. InDel 8-9. InDel 3-5. InDel 8-9. InDel InDel 8-9

Protein Structure: Data Bases and Classification Ingo Ruczinski

2 Dean C. Adams and Gavin J. P. Naylor the best three-dimensional ordination of the structure space is found through an eigen-decomposition (correspon

CMPS 6630: Introduction to Computational Biology and Bioinformatics. Tertiary Structure Prediction

Bio nformatics. Lecture 23. Saad Mneimneh

Sequence analysis and Genomics

CMPS 3110: Bioinformatics. Tertiary Structure Prediction

Molecular Modeling. Prediction of Protein 3D Structure from Sequence. Vimalkumar Velayudhan. May 21, 2007

A New Dominant Point-Based Parallel Algorithm for Multiple Longest Common Subsequence Problem

HMM applications. Applications of HMMs. Gene finding with HMMs. Using the gene finder

COMP 598 Advanced Computational Biology Methods & Research. Introduction. Jérôme Waldispühl School of Computer Science McGill University

Protein Structure Prediction, Engineering & Design CHEM 430

Algorithms in Bioinformatics

In-Depth Assessment of Local Sequence Alignment

Bio nformatics. Lecture 3. Saad Mneimneh

A New Similarity Measure among Protein Sequences

Alpha-helical Topology and Tertiary Structure Prediction of Globular Proteins Scott R. McAllister Christodoulos A. Floudas Princeton University

Statistical Machine Learning Methods for Bioinformatics IV. Neural Network & Deep Learning Applications in Bioinformatics

PROTEIN FOLD RECOGNITION USING THE GRADIENT BOOST ALGORITHM

Homology Modeling. Roberto Lins EPFL - summer semester 2005

Homology Modeling (Comparative Structure Modeling) GBCB 5874: Problem Solving in GBCB

frmsdalign: Protein Sequence Alignment Using Predicted Local Structure Information for Pairs with Low Sequence Identity

Whole Genome Alignments and Synteny Maps

Structure-Based Comparison of Biomolecules

Sara C. Madeira. Universidade da Beira Interior. (Thanks to Ana Teresa Freitas, IST for useful resources on this subject)

CS612 - Algorithms in Bioinformatics

Building 3D models of proteins

Pairwise & Multiple sequence alignments

Analysis and Prediction of Protein Structure (I)

A profile-based protein sequence alignment algorithm for a domain clustering database

Supporting Online Material for

Protein Science (1997), 6: Cambridge University Press. Printed in the USA. Copyright 1997 The Protein Society

Sequence Alignment: A General Overview. COMP Fall 2010 Luay Nakhleh, Rice University

Bioinformatics and BLAST

Sequence Bioinformatics. Multiple Sequence Alignment Waqas Nasir

Multiple Sequence Alignment, Gunnar Klau, December 9, 2005, 17:

Protein Fold Recognition Using Gradient Boost Algorithm

Tiffany Samaroo MB&B 452a December 8, Take Home Final. Topic 1

STRUCTURAL BIOINFORMATICS I. Fall 2015

Computational Biology

3. SEQUENCE ANALYSIS BIOINFORMATICS COURSE MTAT

Bioinformatics. Dept. of Computational Biology & Bioinformatics

Grundlagen der Bioinformatik, SS 08, D. Huson, May 2,

Sequence Alignment Techniques and Their Uses

Grouping of amino acids and recognition of protein structurally conserved regions by reduced alphabets of amino acids

RMS/Coverage Graphs: A Qualitative Method for Comparing Three-Dimensional Protein Structure Predictions

THEORY. Based on sequence Length According to the length of sequence being compared it is of following two types

Identification of Representative Protein Sequence and Secondary Structure Prediction Using SVM Approach

1. Protein Data Bank (PDB) 1. Protein Data Bank (PDB)

Neural Networks for Protein Structure Prediction Brown, JMB CS 466 Saurabh Sinha

Motivating the need for optimal sequence alignments...

Implementing Approximate Regularities

Sequence Alignment (chapter 6)

The typical end scenario for those who try to predict protein

Grundlagen der Bioinformatik Summer semester Lecturer: Prof. Daniel Huson

Sequence and Structure Alignment Z. Luthey-Schulten, UIUC Pittsburgh, 2006 VMD 1.8.5

Bioinformatics (GLOBEX, Summer 2015) Pairwise sequence alignment

PROTEIN FUNCTION PREDICTION WITH AMINO ACID SEQUENCE AND SECONDARY STRUCTURE ALIGNMENT SCORES

Comparing whole genomes

Tools and Algorithms in Bioinformatics

Overview Multiple Sequence Alignment

Bioinformatics. Macromolecular structure

Tools and Algorithms in Bioinformatics

CISC 889 Bioinformatics (Spring 2004) Sequence pairwise alignment (I)

2MHR. Protein structure classification is important because it organizes the protein structure universe that is independent of sequence similarity.

Biologically significant sequence alignments using Boltzmann probabilities

Protein Structure Determination

HOMOLOGY MODELING. The sequence alignment and template structure are then used to produce a structural model of the target.

proteins Estimating quality of template-based protein models by alignment stability Hao Chen 1 and Daisuke Kihara 1,2,3,4 * INTRODUCTION

MOLECULAR MODELING IN BIOLOGY (BIO 3356) SYLLABUS

PDBe TUTORIAL. PDBePISA (Protein Interfaces, Surfaces and Assemblies)

Application of Associative Matrices to Recognize DNA Sequences in Bioinformatics

Statistical Machine Learning Methods for Bioinformatics II. Hidden Markov Model for Biological Sequences

Bayesian Models and Algorithms for Protein Beta-Sheet Prediction

ProcessingandEvaluationofPredictionsinCASP4

114 Grundlagen der Bioinformatik, SS 09, D. Huson, July 6, 2009

Protein Structure Prediction Using Multiple Artificial Neural Network Classifier *

INFORMATION-THEORETIC BOUNDS OF EVOLUTIONARY PROCESSES MODELED AS A PROTEIN COMMUNICATION SYSTEM. Liuling Gong, Nidhal Bouaynaya and Dan Schonfeld

An Introduction to Sequence Similarity ( Homology ) Searching

Did you know that Multiple Alignment is NP-hard? Isaac Elias Royal Institute of Technology Sweden

Pairwise Alignment. Guan-Shieng Huang. Dept. of CSIE, NCNU. Pairwise Alignment p.1/55

Lecture 5,6 Local sequence alignment

Syllabus of BIOINF 528 (2017 Fall, Bioinformatics Program)

Protein Bioinformatics. Rickard Sandberg Dept. of Cell and Molecular Biology Karolinska Institutet sandberg.cmb.ki.

MATHEMATICAL MODELS - Vol. III - Mathematical Modeling and the Human Genome - Hilary S. Booth MATHEMATICAL MODELING AND THE HUMAN GENOME

Introduction to Bioinformatics

Transcription:

Protein Threading Based on Multiple Protein Structure lignment Tatsuya kutsu Kim Lan Sim takutsu@ims.u-tokyo.ac.jp klsim@ims.u-tokyo.ac.jp Human Genome Center, Institute of Medical Science, University of Tokyo 4-6-1 Shirokanedai, Minato-ku, Tokyo 108-8639, Japan bstract Protein threading, a method employed in protein three-dimensional (3D) structure prediction was only proposed in the early 1990 s although predicting protein 3D structure from its given amino acid sequence has been around since 1970 s. Here we describe a protein threading method/system that we have developed based on multiple protein structure alignment. In order to compute multiple structure alignments, we developed a similar structure search program on massive parallel computers and a program for constructing a multiple structure alignment from pairwise structure alignments, where the latter is based on the center star method for sequence alignment. simple dynamic-programming based algorithm which uses a profile matrix obtained from the result of multiple structure alignment was also developed to compute a threading (i.e., an alignment between a target sequence and a known structure). Using this system, we participated in the threading category (category L) of CSP3 (Third Community Wide Experiment on the Critical ssessment of Techniques for Protein Structure Prediction). The results are discussed. 1 Introduction Protein structure prediction is one of the most important computational problems in bioinformatics. The challenge involves predicting the correct three-dimensional (3D) structure from a given amino acid sequence of a protein. This problem is of immense importance because 3D structure is a prerequisite for function, and thus a lot of methods have been proposed for protein structure prediction [14]. Most methods are based on the assumption that amino acid sequence determines the 3D structure [5]. lthough the homology modeling method seems the most reliable, it can be applied only when 3D structure of a similar sequence is already known. In order to overcome this drawback, Bowie, Lüthy and Eisenberg proposed a new method [7]. In this method, given an amino acid sequence and a set of protein structures (or structural patterns), a structure into which the sequence is most likely to fold is computed. n alignment between amino acids of a sequence and spatial positions of a 3D structure is computed using a suitable score function in order to test whether or not a sequence is likely to fold into a structure. The process of computing an alignment between a sequence and a structure is called protein threading, and its alignment, a threading. lot of variants have been proposed since the work by Bowie, Lüthy and Eisenberg [8, 11, 13]. We have also proposed an approximation algorithm for protein threading [4] and a method for deriving a good score function from known 3D structure data [3]. However, the predictive accuracy of the existing methods is not satisfactory. Moreover, there is a crucial drawback in most of the existing methods: users can not know the certainty of a prediction result, although, in the case of homology modeling, the similarity between sequences can be used as a measure of the certainty of a prediction result. Therefore, we developed a protein threading method for which users can know the certainty of a prediction result to some extent. Visual inspection of a threading embedded in multiple structure alignment of known structures provides users with means to evaluate the performance of threading.

lthough the developed methodology may not be new, the developed system has some useful features: in the computation of a threading, several constraints can be put on; the system includes a fast parallel program for similar structure search. The developed system does not make prediction automatically. Instead, prediction is done interactively, and the results of other prediction methods such as secondary structure prediction can be taken into account in the form of constraints. The outline of the prediction method is as follows: (1) Candidates of possible structures are obtained from homology search, literatures and human inspiration, (2) Structures similar to each candidate are searched from PDB (the database of 3D structures) [6] using the parallel search program, (3) For each candidate, a multiple structure alignment is computed from pairwise structure alignments for similar structures by using a method similar to the center star method [9], (4) protein threading (i.e., an alignment between a sequence and a structure) is computed by a simple DP algorithm in which the multiple alignment result is used as a profile. We applied the proposed method/system to the sequences given as the common problems (targets) in CSP3. CSP3 is a very good blind test of protein structure prediction and no one knows the answers at the time of the submission of predictions. We obtained a ranking of 14th in the threading category (category L), to which 37 teams submitted their predictions. This shows that the proposed method/system is reasonably feasible. The organization of the paper is as follows. parallel program for similar protein structure search is described in Section 2. method for computing multiple structure alignment and a method for computing protein threading are shown in Section 3 and in Section 4 respectively. Section 5 reports our results in CSP3, and in Section 6, we propose future work. 2 Similar Structure Search on Parallel Computer few years ago, one of the authors developed a computer program stralign for computing a structure alignment between two protein structures [2] (source code written in C-language is available via http://www.hgc.ims.u-tokyo.ac.jp/service/tooldoc/stralign ). lthough stralign is useful for comparing two structures, it takes several tens of seconds if it is applied to large structures. In similar structure search, an input structure is compared with all structures (several thousands of structures) in PDB. It would take too long time if stralign were directly applied to similar structure search. Therefore, we have developed a parallel program which executes several tens of stralign processes on a massive parallel computer. For that purpose, we used the following simple master-slave model. The master process watches the status of all slave processes. If the master process finds an idle slave process, then it sends a protein structure, which is not yet compared, to the slave process. The slave process computes a structure alignment (using stralign) between that structure and the input structure, and then it returns the result to the master process. lthough this model is very simple, it works quite well because each comparison can be made independently. We implemented this model using the POSIX thread library on SUN ULTR ENTERPRISE 10000 with 64 CPU (see Fig. 1). By means of storing all 3D data in main memory, we could achieve near linear speedup ratio per slave process (up to 50 processes), where speedup ratio represents the ratio of the search time taken by a slave process to the search time taken by n slave processes. The average speedup ratio over 5 input structures is shown in Fig. 1 because the search time depends on an input structure. Since it takes a lot of time when the number of processes is small, we do not test such cases and the speedup ratio is normalized so that it becomes 10.0 in the case of 10 slave processes. Note

that comparison of an input structure with all structures (> 7000 structures) in PDB can be done in a few minutes when 50 processors are used. speedup ratio 60 50 40 30 20 10 10 20 30 40 50 60 #slave processes Figure 1: The speedup ratio against the number of slave processes. The linear line represents the ideal speedup ratio per slave process. The data for the above graph were generated from searching through 7000 structures on SUN ULTR ENTERPRISE 10000. 3 Multiple Structure lignment from Pairwise Structure lignments lthough a lot of studies have been done on multiple sequence alignment, a few studies have been done on multiple structure alignment [10]. From a computational viewpoint, the problem of computing an optimal multiple structure alignment is proven to be NP-hard [1], where it is defined as a geometric problem. Moreover, even obtaining an approximate alignment is proven to be hard [1]. Therefore, development of a hueristic algorithm is a good choice. In multiple sequence alignment, the center star method is one of the well-known heuristics [9]. Since it is very simple, we applied the center star method to multiple structure alignment (see Fig. 2). In order to apply the center star method, the center structure should be determined. Since a S0 : S1 : S2 : HFGYVD DHGKYD HFGHYD (S0,S1) H F DH (S0,S2) HF HF G YVD GKY D G YVD GHY D DH H F H F G YVD GKY D GHY D Figure 2: The center star method for multiple sequence/structure alignment. S 0 is the center in this example.

candidate structure S 0 is given in our case, we treat S 0 as the center structure. Then, using the parallel program described in Section 2, we obtain structures S 1,S 2,...,S N that are structurally similar to S 0. Simultaneously, we obtain structure alignments (S 0,S 1 ), (S 0,S 2 ),...,(S 0,S N ), where (S 0,S i ) denotes the structure alignment between S 0 and S i. Note that structure alignment is represented in the same form as in sequence alignment [2]. fter obtaining (S 0,S 1 ),...,(S 0,S N ), we apply the following procedure [9]: 1. Let I 0 be the maximum number of gap symbols placed before the first character (residue) of S 0 in any of the alignments (S 0,S 1 ),...,(S 0,S N ). Let I S0 be the maximum number of gaps placed after the last character of S 0 in any of the alignments, and let I i be the maximum number of gaps placed between character S 0,i and S 0,i+1, where S j,i denotes the i-th letter of string S j (recall that a pairwise structure alignment is represented as a pairwise sequence alignment). 2. Create a string S 0 by inserting I 0 gaps before S 0, I S0 gaps after S 0, and I i gaps between S 0,i and S 0,i+1. 3. For each S j (j>0), create a pairwise alignment (S 0,S j ) between S 0 and S j by inserting gaps into S j so that deletion of the columns consisting of gaps from (S 0,S j ) results in the same alignment as (S 0,S j ). 4. Simply arrange (S 0,S j ) s into a single matrix (note that all (S 0,S j ) s have the same length). It should be note that is defined so that the projection of to S 0 and S i is identical to (S 0,S i ) if we delete columns consisting of gap symbols. 4 Protein Threading Based on Multiple Structure lignment 4.1 Simple Threading lgorithm Protein threading is a problem of computing an (optimal) alignment between a sequence and a structure. In order to compute protein threading, score function is required and is important. In this paper, we use a simple profile-like score function obtained from multiple structure alignment. Note that, if a score function including interaction between two or more amino acids is considered, the protein threading problem becomes NP-hard [12] and computation of an optimal threading is very difficult [13]. Here we define a threading formally. Let X = x 1...x n be an input amino acid sequence (i.e., X is a string over alphabet Σ such that Σ = 20), which is a target sequence for 3D structure prediction. Let be a structure alignment computed by the method described in Section 3 from a candidate protein structure. threading T between X and is obtained by inserting gap symbols (denoted by ) into or at either end of X and such that the resulting sequences are of the same length l, where columns of must be preserved (see Fig. 3). n optimal threading is computed in the following way (see Fig. 3). Let c i be the i-th column of. Let c 1 1,c2 i,...,cn+1 i be amino acids in column c i. Then, we define the score between x j and c i by score(x j,c i )= N+1 k=1 s(x j,c k i ), where s(x, y) is a usual score function for sequence alignment (e.g., Dayhoff matrix, PM matrix). Currently, we use PM250 matrix for s(x, y). Then, an optimal threading is computed by a simple DP (dynamic programming) algorithm as in usual sequence alignment [16]. Note that the time complexity is O(nmN) in this case because N + 1 scores are taken into account for each pair of x j and c i. In some cases, we use the sum of K best scores of s(x j,c k i ) in place of N+1 h=1 s(x j,c k i ), where K is some constant. Note that it is just a heuristic and there is no special reason.

Input sequence H W K G Y LD Structure alignment D R Y P K W D H F Y V D K F T H Y L D Score function used in alignment score(, c 5 )= s(,p) + s(,) + s(,t) Threading H W K G Y L D D R Y H F P K W D Y V D K F T H Y L D c 1 c 2 c 3 c 4 c 5 c 6 c 7 c 8 c 9 Figure 3: Threading based on structure alignment. 4.2 Protein Threading with Constraints lthough we implemented and examined the above algorithm, its performance was not good because the number of proteins having strong structural similarities but having weak sequence similarities was small. Thus, we computed appropriate threadings interactively using additional information. In particular, we used the results of secondary structure prediction by PHD [15]. ssume that the user convince that part of an input sequence x i...x i+k must corresponds to part of a structure alignment c j...c j+k from additional information such as PHD results. Then, we can put this constraint by letting the score function as follows: { +, if x is the same amino acid as xi+h, score(x, c j+h ) = 0, otherwise, where an appropriate constant (i.e., a very large constant) is used instead of + in practice. This modification is easy and does not increase the order of the time complexity of the DP procedure. lthough it is a simple modification, it is very useful when we can use additional information. Constraint N R V S K F Modification of score D K Y E K F c i K F must match P K Y W T H Y c i+1 c i+2 c i+3 c i+4 c i+5 e.g. score(x, c i+3 )= + if x = S 0 otherwise Figure 4: Modification of a score function in order to make use of constraints. 5 Our Results of Predictions in CSP3 Since the proposed prediction method is interactive, statistical test (using known 3D structures as a test set) is meaningless. Therefore, we made prediction on 35 proteins given as targets (problems)

in CSP3 (http://predictioncenter.llnl.gov/), among which 17 predictions are taken into the evaluation in the threading (L) category (22 targets among 43 targets were taken into consideration in the L category). CSP is a very fair competition for protein structure prediction because no one knows the correct answers (3D structures) at the time of submission of predictions [14]. fter the submission of predictions, the organizers of CSP3 compare and evaluate the submitted predictions. Three among 17 predictions (predictions for three targets T0043, T0053, T0081) were evaluated as similar to the correct folds. Even among the predictions by the best team, only eight were evaluated as similar to the correct folds. T0043 (PDB id: 1HK) is 7,8-dihydro-6-hydroxymethylpterinpyrophosphokinase from Escherichia coli, T0053 is CbiK protein from Salmonella typhimurium, and T0081 (PDB id: 1B93) is methylglyoxal synthase from E. coli. It is noteworthy to state that for target T0043, we were the only team who made a near correct prediction. Biological knowledge of the second author (background of the first author is computer science, and background of the second author is applied biology) played an important role for making predictions, especially for generating candidates of template structures. However, even for the 3 targets for which we made good predictions, the obtained alignments were not good. In general, to select the appropriate fold from many possible candidates would otherwise have been difficult without the useful information generated from the developed system. Moreover, without the system, we could not have generated any threadings. 6 Concluding Remarks We developed a practical method/system for computing protein threadings based on multiple structure alignment. s reported in Section 5, the performance of the system was not satisfactory. The followings are considered as the reasons. (1) Since we did not use PSI-BLST and we did not classify the known structures, we obtained candidates of template structures from homology search (FST and BLST), literatures and human inspiration. Therefore, in some cases, we failed to generate appropriate candidates. (2) For many candidates, the number of proteins having strong structural similarities but having weak sequence similarities was small. The probability of getting a good profile for protein threading decreases proportionally to the sample size. (3) We did not have enough time for tuning and improving the system. We began to develop the system only a few months before the submission deadlines of CSP3. But we believe that the methodology we used is not bad, because the idea of using the results of multiple structure alignment is very natural (although it may not be new). In particular, it can be assumed that, as the PDB becomes larger, the number of similar structures is expected to increase concomitantly. Thus, we foresee that the performance of our system will improve. Finally, we briefly mention about future work. Currently, our method/system is far from automatic since candidates of protein structures and constraints should be given by users. Therefore, making the system much more automatic is important. The developed program of similar structure search is not fast enough for interactive use, and massive parallel computers are expensive. Moreover, the number of known protein structures is rapidly increasing. Therefore, much faster algorithms for similar structure search should be developed. Only sequence information was used after multiple structure alignment was obtained. Information such as polarity, area buried, and detailed physico-chemical properties of the amino acid residues should also be taken into account.

cknowledgments This work is supported in part by a Grant-in-id Genome Science for Scientific Research on Priority reas from the Ministry of Education, Science, Sports and Culture in Japan. References [1] kutsu, T. and Halldórsson, M.M., On the approximation of largest common subtrees and largest common point sets, Lecture Notes in Computer Science, 834:405 413, 1994. [2] kutsu, T., Protein structure alignment using dynamic programming and iterative improvement, IEICE Trans. on Information and Systems, E79-D:1629 1636, 1996. [3] kutsu, T. and Tashimo, H., Linear programming based approach to the derivation of a contact potential for protein threading, Proc. Pacific Symposium on Biocomputing 1998, World Scientific, 413 424, 1998. [4] kutsu, T. and Miyano, S., On the approximation of protein threading, Theoretical Computer Science, 210:261 275, 1999. [5] nfinsen, C.B., Principles that govern the folding of protein chains, Science, 181:223 230, 1973. [6] Bernstein, F.C. et. al., The Protein Data Bank: computer-based archival file for macromolecular structures, J. Molecular Biology, 112:535 542, 1976. [7] Bowie, J.U., Lüthy, R., and Eisenberg, D., method to identify protein sequences that fold into a known three-dimensional structures, Science, 253:164 170, 1991. [8] Godzik,. and Skolnick, J., Sequence-structure matching in globular proteins: application to supersecondary and tertiary structure determination, Proc. National cademy of Science US, 89:12098 12102, 1992. [9] Gusfield, D., Efficient methods for multiple sequence alignment with guaranteed error bounds, Bulletin of Mathematical Biology, 55:141 154, 1993. [10] Holm, L. and Sander, C., The FSSP database of structurally aligned protein fold families, Nucleic cids Research, 22:3600 3609, 1994. [11] Jones, D.T., Taylor, W.R., and Thornton, J.M., new approach to protein fold recognition, Nature, 358:86 89, 1992. [12] Lathrop, R.H., The protein threading problem with sequence amino acid interaction preferences is NP-complete, Protein Engineering, 7:1059 1068, 1994. [13] Lathrop, R.H. and Smith, T.F., Global optimum protein threading with gapped alignment and empirical pair score functions, J. Molecular Biology, 255:641 665, 1996. [14] Moult, J., Hubbard, T., Bryant, S.H., Fidelis, K., and Pedersen, J.T., Critical assessment of methods of protein structure prediction (CSP): Round II, PROTEINS: Structure, Function, and Genetics, Suppl. 1:2 6, 1997. [15] Rost, B. and Sander, C., Prediction of protein structure at better than 70% accuracy, J. Molecular Biology, 232:584 599, 1993. [16] Waterman, M.S., Introduction to Computational Biology, Capman & Hall, London, 1995.