📄 0readme
字号:
LIBRARYThe Bioinformatics Template Library (BTL) version 3.4beta.DESCRIPTIONThe focus of this library is on the data structures and algorithms used withinthe fields of bioinformatics and molecular modelling. The approach used closelyfollows that of the Standard Template Library (STL) which is part of ISO/ANSIstandard C++. This library uses templates to implement generic programming.Templates allow the development efficient generic programming modules usingcompile-time mechanisms.Although the BTL has been designed with biomolecular applications in mind itcontains classes of more general utility. For instance, the matrix and matrix_algorithms class could be used for matrix algebra in many contexts. INSTALLATIONThis file contains all the source code for the BTL version 3.4beta.As templates are used extensively, the code consists of header files. These have to be compiled each time they are included. The code in library can (hopefully) be compiled by any ANSI/ISO standard compliant compiler.In development, we currently use gcc 3.4.1. Several examples of usage, which alsoserve as elementary compilation tests, are found the in examples sub-directoryCHANGES TO VERSION 3.4 SINCE 3.0The changes are confined to bug fixes and modifications to bring the code closer to the ISO standard.Standardization---------------Many of these changes have been driven by improvements to the GNU compilersSwitched to standard header files: Mark Williams (UCL). This has meant the removal of the BTL_NumericLimits header now replaced by <limits> and neccesitated a few code changes e.g. btl_matrix_algorithms #487 BTL_REAL theshold = DBL_EPSILON -> BTL_REAL theshold = numeric_limits<double>::epsilon();Standard conforming use of typenames throughout code: Boris Gorelik(HUJI) & MWImplementation of btl namespace: Will Pitt (Celltech) & MWMove to use of string class in FileProcessors: MWChanged name of the minor algorithm in btl_matrix_algorithms to matrix_minor to avoid clash with a minor function in the GCC std namespace: MW, BG & Barry Smith (Birkbeck)In btl_numerics.h there are a few template base class initialisations: BS e.g. lines 488, 493, 529 and 533 : random_normal(long seed):random_uniform(seed) -> random_normal(long seed):random_uniform<T>(seed)Also in btl_numerics.h compiler wants fully specification within some member functions: BS e.g. lines 501,502,505,506,540 u = random_uniform<T>::next_number();<iterator_traits> now used to identify the type refered to by iterators passed to generic algorithms: MWBug Fixes---------Post multiplication of a matrix by a vectorbtl_matrix.h @ line#442: Rohit Singh (Stanford) for (i = vec.begin(); i < vec.end(); i++, j++) -> for (i = v.begin(); i < v.end(); i++, j++)btl_matrix.h @ line#440: MW const_iterator j = m.begin(); -> const_iterator j = mat.begin();btl_matrix_algorithms.h @ line#501 fixed rare numerical instability: Ralph Gross-Kunstleve (LBL) & MWCHANGES TO VERSION 3.0 SINCE 2.0Version 3.0 is a radical overhual of the content and syntax of the library.There has been substantial effort to make more components generic and to expand the number of available algorithms (up from only two in v2.0a to a respectable forty-one in the present version).Extensive changes have been made to bring the syntax and mode of usage of the BTLinto line with that of the standard library in order to reduce the learning curve for new users. This is obviously disruptive to current users but the standard syntax will provide a firm foundation for all future developmentSeveral headers have been defined which are intended for inclusion by users of the library.They set up appropriate environments for the BTL containers, algorithms, functors, processors etc.btl_numeric_vector.h - the numeric_vector containerbtl_matrix.h - the matrix containerbtl_graph.h - the graph container includes DFSIterator, Dereferencer etcbtl_graph_with_edges.h - the graph_with_edges containerbtl_vector_algorithms.h - vector algebrabtl_matrix_algorithms - matrix algebrabtl_statistics.h - statisticsbtl_numerics.h - algorithms to compare the contents of containers and the - functors random and less_absolutebtl_least_squares.h - least-squares fitting of coordinates data via Kearsley's method btl_sequence_algorithms.h - Needleman-Wunschbtl_biomolecular_data.h - File processors, and the functors PDB_sort, amino_acid_propertyA namespace btl has been introduced, consequently the BTL prefix is no longer needed when using functions.THE NEW ALGORITHMS AND SYNTAX ARE FULLY DOCUMENTED IN THE HTML DOCUMENTATION-------------------------------------------------------------------------------------------NOTES FOR USERS OF EARLIER VERSIONSChanges to the numeric_vector Class (was Vector)The container is now a template classThe class is now defined in a single .h file to encourage inlining of codeNow defines all standard public STL types (iterator, reference, size_type etc.) Efficiency improvements to many operationsRemoved Vector<T> operator*(const value_type& y, const Vector<T> &v) { return (v * y); }Removed Vector<T> operator/(const value_type& y, const Vector<T> &v) { return (v / y); }Changes to the matrix Class (was Matrix)The container is now a template classThe class is now defined in a single .h file to encourage inlining of codeUnderlying structure changed from an array to an STL vectorCode implementing most overloaded operators now written directly in terms of iteratorsNow defines all standard public STL types (iterator, reference, size_type etc.)Constructors now conform to STL style, when an equivalent exists: matrix(3,3) constructs a 3x3 matrix of type REAL initialised to 0.0 BTL_REAL init; matrix(3,3,init) constructs a 3x3 matrix of type REAL initialised to init int init; matrix(3,3,init) constructs a 3x3 matrix of type int initialised to 0 matrix(first, last, nrows) constructs a matrix from another container e.g. vector, numeric_vector, matrix, list, even an arrayan exception is matrix(), which creates a 3x3 matrix of type BTL_REAL initialised to 0.0 not an empty matrix because matrix cannot be resized after creation the friend Matrix<T> operator*(const Matrix<T>::value_type& r, const Matrix<T>& m) has been removedthe ReadRow function has be removed as same functionality is provided by a numeric_vectorconstructor and the STL copy with only slightly different syntaxThe WriteRow function has been removed as same functionality is provided by STL copya read_column function has been addedThe Eigens member function has been replaced by eigen_solution which returns eigen vectorsstored in rows of a matrix not columns as previouslyChanges to CholskyInverse Class (merged into btl_matrix_algorithms.h)In order to allow application to template containers confroming to STL standard onlythe inversion is no longer 'in place', but creates a new matrix containing the inverseas a Matrix of type REAL. The CholeskyInverse is now called inverse_cholesky.Changes to Graph and GraphWithEdges ClassesPresently these classes have only been renamed (see above). Full transition to the standard syntax will be implemented in the 3.0betaADDITIONS IN VERSION 2.0 SINCE VERSION 1.01/ Graph and GraphWithEdges container adaptor classes. These implement genericgraph data structures. The former has simple pointers between vertices while in the later values or objects can be associated with edges. Any type of data orobjects can be associated with vertices and edges and stored in any STL container.2/ 1, 2 and 3 dimensional fast Fourier transforms as generic algorithms3/ The Cholesky method of matrix inversion is now a generic algorithm that canbe applied to any matrix class that has certain member functions (e.g. those inthe Template Numerical Toolkit (TNT) at http://math.nist.gov/tnt/4/ A PDBSort function object for sorting protein atoms into Brookhaven pdbformat order5/ An AminoAcidProperty function object which returns a property value given anamino acid code character.6/ Some very basic file processors for reading XYZ format coordinate andPIR format protein sequence files.7/ The BTL_ prefix has been added to all global type names to avoid nameclashes. This prefix will be replaced by a BTL:: namespace scope when the gcccompiler fully implements namespaces.COPYRIGHTThe copyright 1997, 1998, 1999 for this library is owned by Birkbeck College, Malet Street, London WC1E 7HX, U.K.The copyright 2004, 2005 for this library is owned by University College,Malet Street, London WC1E 6BT, U.K.This library is free software; you can redistribute it and/or modify it underthe terms of the GNU Library General Public License as published by the FreeSoftware Foundation; either version 2 of the License, or (at your option) anylater version. This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITYor FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General PublicLicense for more details. You should have received a copy of the GNU LibraryGeneral Public License along with this library; if not, write to the FreeSoftware Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -