diff -Nru clipper-2.1+20091215/ChangeLog clipper-2.1+20100511/ChangeLog --- clipper-2.1+20091215/ChangeLog 2010-01-05 22:32:24.000000000 +0000 +++ clipper-2.1+20100511/ChangeLog 2010-05-11 14:23:51.000000000 +0000 @@ -1,5 +1,7 @@ Latest changes:
+
16/04/10:
Minor compatibility fixes. A lot of extra searching and selection functionality added to MiniMol. +
15/12/09:
Update anisotropy correction code to handle I's and low resolution data. Update autoconf and bump so version.
14/07/09:
Update mtz write to give correct symbols. Extend csymmatch to handle waters and to do optional origin and hand matching. Provide legacy mtz column label syntax. gcc 4.4 fixes.
22/05/09:
Enable MiniMol to export alternate conformation codes. Correntions to new Clipper2-stype HKL_data handling.
20/05/09:
Clipper2-stype HKL_data handling extended, including CNS, CIF import. Experimental patch to allow clean shutdown in Coot. Screw operator decomposition in RTop_orth (Phil). diff -Nru clipper-2.1+20091215/clipper/ccp4/ccp4_mtz_io.cpp clipper-2.1+20100511/clipper/ccp4/ccp4_mtz_io.cpp --- clipper-2.1+20091215/clipper/ccp4/ccp4_mtz_io.cpp 2010-01-05 22:32:24.000000000 +0000 +++ clipper-2.1+20100511/clipper/ccp4/ccp4_mtz_io.cpp 2010-05-10 11:31:29.000000000 +0000 @@ -425,12 +425,23 @@ float minres, maxres; CMtz::MtzResLimits( mtzin, &minres, &maxres ); resolution_.init( 0.9999 / sqrt( Util::max(minres,maxres) ) ); + if ( Util::min(minres,maxres) > 0.0 ) + reslim_low = ( 1.0001 / sqrt( Util::min(minres,maxres) ) ); + else + reslim_low = 1000000.0; hkl_sampling_ = HKL_sampling( cell_, resolution_ ); // get title , history title_ = String( mtzin->title, 70 ); history_ = std::vector( mtzin->histlines ); for ( int h = 0; h < history_.size(); h++ ) history_[h] = String( mtzin->hist + MTZRECORDLENGTH*h, MTZRECORDLENGTH ); + num_reflections_ = CMtz::MtzNref( mtzin ); + // Sort order + int isort[5]; + CMtz::ccp4_lrsort( mtzin, isort ); + sort_order_.assign(isort, isort+5); + ccp4_spacegroup_number_ = mtzin->mtzsymm.spcgrp; + // close file CMtz::MtzFree( mtzin ); @@ -576,11 +587,12 @@ mtzout->refs_in_memory = 0; write_spacegroup( mtzout, spacegroup() ); CMtz::ccp4_lwtitl( mtzout, (char*)title_.c_str(), 0 ); - char newhist[history_.size()][MTZRECORDLENGTH]; + std::vector newhist( history_.size()*MTZRECORDLENGTH, ' ' ); for ( int h = 0; h < history_.size(); h++ ) - for ( int c = 0; c < MTZRECORDLENGTH; c++ ) - newhist[h][c] = ( c < history_[h].size() ) ? history_[h][c] : ' '; - CMtz::MtzAddHistory( mtzout, (const char (*)[MTZRECORDLENGTH])newhist, history_.size() ); + for ( int c = 0; c < history_[h].size(); c++ ) + newhist[h*MTZRECORDLENGTH+c] = history_[h][c]; + CMtz::MtzAddHistory( mtzout, (const char (*)[MTZRECORDLENGTH])&(newhist[0]), + history_.size() ); // add all the stored columns to the mtz list write_hierarchy( mtzout, crystals ); @@ -732,11 +744,12 @@ for ( int k = 0; k < 4; k++ ) mtzout->mtzsymm.sym[i][j][k] = mtzin->mtzsymm.sym[i][j][k]; CMtz::ccp4_lwtitl( mtzout, (char*)title_.c_str(), 0 ); - char newhist[history_.size()][MTZRECORDLENGTH]; + std::vector newhist( history_.size()*MTZRECORDLENGTH, ' ' ); for ( int h = 0; h < history_.size(); h++ ) - for ( int c = 0; c < MTZRECORDLENGTH; c++ ) - newhist[h][c] = ( c < history_[h].size() ) ? history_[h][c] : ' '; - CMtz::MtzAddHistory( mtzout, (const char (*)[MTZRECORDLENGTH])newhist, history_.size() ); + for ( int c = 0; c < history_[h].size(); c++ ) + newhist[h*MTZRECORDLENGTH+c] = history_[h][c]; + CMtz::MtzAddHistory( mtzout, (const char (*)[MTZRECORDLENGTH])&(newhist[0]), + history_.size() ); // add all the stored columns to the mtz list write_hierarchy( mtzout, crystals ); @@ -827,17 +840,6 @@ const HKL_sampling& CCP4MTZfile::hkl_sampling() const { return hkl_sampling_; } -/*! Get the column labels from the MTZ file. \return Array of labels. */ -std::vector CCP4MTZfile::column_labels() const -{ - std::vector result; - for ( int x = 0; x < crystals.size(); x++ ) - for ( int s = 0; s < crystals[x].datasets.size(); s++ ) - for ( int c = 0; c < crystals[x].datasets[s].columns.size(); c++ ) - result.push_back( "/"+crystals[x].crystal.crystal_name()+"/"+crystals[x].datasets[s].dataset.dataset_name()+"/" +crystals[x].datasets[s].columns[c].label+" "+crystals[x].datasets[s].columns[c].type); - return result; -} - /*! Import the list of reflection HKLs from an MTZ file into an HKL_info object. If the resolution limit of the HKL_info object is lower than the limit of the file, any excess reflections will be @@ -1274,6 +1276,19 @@ std::vector CCP4MTZfile::history() const { return history_; } +int CCP4MTZfile::num_reflections() const +{return num_reflections_;} + +std::vector CCP4MTZfile::sort_order() const +{return sort_order_;} + +ftype32 CCP4MTZfile::low_res_limit() const +{return reslim_low;} + +int CCP4MTZfile::ccp4_spacegroup_number() const +{return ccp4_spacegroup_number_;} + + void CCP4MTZfile::set_history( const std::vector& history ) { std::vector histnew; @@ -1302,4 +1317,16 @@ } +/*! Get the column labels from the MTZ file. \return Array of labels. */ +std::vector CCP4MTZfile::column_labels() const +{ + std::vector result; + for ( int x = 0; x < crystals.size(); x++ ) + for ( int s = 0; s < crystals[x].datasets.size(); s++ ) + for ( int c = 0; c < crystals[x].datasets[s].columns.size(); c++ ) + result.push_back( "/"+crystals[x].crystal.crystal_name()+"/"+crystals[x].datasets[s].dataset.dataset_name()+"/" +crystals[x].datasets[s].columns[c].label+" "+crystals[x].datasets[s].columns[c].type); + return result; +} + + } // namespace clipper diff -Nru clipper-2.1+20091215/clipper/ccp4/ccp4_mtz_io.h clipper-2.1+20100511/clipper/ccp4/ccp4_mtz_io.h --- clipper-2.1+20091215/clipper/ccp4/ccp4_mtz_io.h 2010-01-05 22:32:24.000000000 +0000 +++ clipper-2.1+20100511/clipper/ccp4/ccp4_mtz_io.h 2010-05-10 11:31:47.000000000 +0000 @@ -162,8 +162,6 @@ const Resolution& resolution() const; //! get file HKL sampling const HKL_sampling& hkl_sampling() const; - //! get column labels - std::vector column_labels() const; //! read the reflection list from the MTZ void import_hkl_list( HKL_info& target ); @@ -204,10 +202,22 @@ //! add to history for MTZ file void set_history( const std::vector& history ); + //! return number of reflections in file + int num_reflections() const; + //! return sort order + std::vector sort_order() const; + //! return low resolution limits from file (A) + ftype32 low_res_limit() const; + //! CCP4 space group number + int ccp4_spacegroup_number() const; + + //! set default column label interpretation mode void set_column_label_mode( CCP4MTZcolumn_label_mode mode ); //! \deprecated + std::vector column_labels() const; + //! \deprecated void import_hkl_data( HKL_data_base& cdata, MTZdataset& cset, MTZcrystal& cxtl, const String mtzpath ); //! \deprecated void export_hkl_data( const HKL_data_base& cdata, const MTZdataset& cset, const MTZcrystal& cxtl, const String mtzpath ); @@ -242,6 +252,14 @@ //! title, history String title_; std::vector history_; + //! Number of reflections + int num_reflections_; + //! Sort order + std::vector sort_order_; + //! low resolution limit from file header + ftype32 reslim_low; + //! CCP4 space group number + int ccp4_spacegroup_number_; // generic methods bool match_path( const String& path, int& x, int& s, int& c ); diff -Nru clipper-2.1+20091215/clipper/cns/cns_hkl_io.cpp clipper-2.1+20100511/clipper/cns/cns_hkl_io.cpp --- clipper-2.1+20091215/clipper/cns/cns_hkl_io.cpp 2010-01-05 22:32:24.000000000 +0000 +++ clipper-2.1+20100511/clipper/cns/cns_hkl_io.cpp 2010-03-16 14:28:57.000000000 +0000 @@ -180,7 +180,7 @@ for ( int i = 0; i < fphis_i.size(); i++ ) fphis_i[i].first->update(); xtype fo[2], pw[2], fc[2], hl[4], fl[1]; - xtype fphis[fphis_i.size()][2]; + xtype fphis[256][2]; // limit of 256 fphi column groups per CNS file HKL hkl; FILE* cns_hkl = fopen( filename.c_str(), "r" ); diff -Nru clipper-2.1+20091215/clipper/core/clipper_sysdep.h clipper-2.1+20100511/clipper/core/clipper_sysdep.h --- clipper-2.1+20091215/clipper/core/clipper_sysdep.h 2010-01-05 22:32:24.000000000 +0000 +++ clipper-2.1+20100511/clipper/core/clipper_sysdep.h 2010-03-16 14:11:26.000000000 +0000 @@ -65,11 +65,18 @@ #include #endif -/* fix for intel compilers - undef isnan macro */ +/* fixes for unexpected macros */ + #if defined(isnan) #undef isnan #endif +#ifdef __WIN32__ +#undef min +#undef max +#endif + + /* numeric types, for where they are critical */ namespace clipper { diff -Nru clipper-2.1+20091215/clipper/core/clipper_types.cpp clipper-2.1+20100511/clipper/core/clipper_types.cpp --- clipper-2.1+20091215/clipper/core/clipper_types.cpp 2010-01-05 22:32:24.000000000 +0000 +++ clipper-2.1+20100511/clipper/core/clipper_types.cpp 2010-03-18 13:08:14.000000000 +0000 @@ -76,9 +76,11 @@ tokbeg = find_first_not_of(sep, tokend); if (tokbeg == String::npos) return splitstr; tokend = find_first_of(sep, tokbeg); + if (tokend == String::npos) break; splitstr.push_back( substr(tokbeg, tokend-tokbeg) ); - if (tokend == String::npos) return splitstr; } + splitstr.push_back( substr(tokbeg) ); + return splitstr; } String String::trim() const diff -Nru clipper-2.1+20091215/clipper/minimol/minimol.cpp clipper-2.1+20100511/clipper/minimol/minimol.cpp --- clipper-2.1+20091215/clipper/minimol/minimol.cpp 2010-01-05 22:32:24.000000000 +0000 +++ clipper-2.1+20100511/clipper/minimol/minimol.cpp 2010-04-12 12:13:16.000000000 +0000 @@ -39,7 +39,9 @@ //L Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, //L MA 02111-1307 USA + #include "minimol.h" +#include "minimol_utils.h" extern "C" { #include @@ -52,6 +54,26 @@ Message_ctor message_ctor_mmodel( " [MModel: constructed]" ); +// helper functions + +namespace MM { + std::vector path_split( const clipper::String& s, const clipper::String& sep ) + { + std::vector splitstr; + size_t tokbeg = 0, tokend = 0; + if ( s.find_first_of(sep, 0) == 0 ) tokbeg = 1; + while (1) { + tokend = s.find_first_of(sep, tokbeg); + if (tokend == String::npos) break; + splitstr.push_back( s.substr(tokbeg, tokend-tokbeg) ); + tokbeg = tokend+1; + } + splitstr.push_back( s.substr(tokbeg) ); + return splitstr; + } +} + + // Atom MAtom::MAtom( const clipper::Atom& atom ) @@ -147,15 +169,14 @@ \return The selection as a new monomer. */ MMonomer MMonomer::select( const String& sel, const MM::MODE mode ) const { - std::vector path = sel.split( "/" ); + std::vector path = MM::path_split( sel, "/" ); while ( path.size() < 1 ) path.push_back( "*" ); MMonomer result; result.copy( *this, MM::COPY_MP ); if ( path[0].trim() == "*" ) { for ( int i = 0; i < children.size(); i++ ) result.insert( children[i] ); - return result; } else { - std::vector list = path[0].split( "," ); + std::vector list = MM::path_split( path[0], "," ); for ( int j = 0; j < list.size(); j++ ) { String sid = CHILDTYPE::id_tidy( list[j] ); for ( int i = 0; i < children.size(); i++ ) @@ -166,6 +187,28 @@ return result; } +/*! Creates a list of inidices of children matching the given selection string. + See select(). + \param sel The selection string. + \param mode MM::UNIQUE or MM::ANY. + \return A vector of integer indices of the matching children. */ +std::vector MMonomer::select_index( const String& sel, const MM::MODE mode ) const +{ + std::vector result; + if ( sel.trim() == "*" ) { + for ( int i = 0; i < children.size(); i++ ) result.push_back( i ); + } else { + std::vector list = MM::path_split( sel, "," ); + for ( int j = 0; j < list.size(); j++ ) { + String sid = CHILDTYPE::id_tidy( list[j] ); + for ( int i = 0; i < children.size(); i++ ) + if ( CHILDTYPE::id_match( sid, children[i].id(), mode ) ) + result.push_back( i ); + } + } + return result; +} + /*! Lookup atom by ID. If mode=UNIQUE, the alternate conformation code must match, otherwise the first atom with the same name is returned. \param n The atom ID. \param mode The search mode. @@ -297,16 +340,15 @@ \return The selection as a new polymer. */ MPolymer MPolymer::select( const String& sel, const MM::MODE mode ) const { - std::vector path = sel.split( "/" ); + std::vector path = MM::path_split( sel, "/" ); while ( path.size() < 2 ) path.push_back( "*" ); MPolymer result; result.copy( *this, MM::COPY_MP ); if ( path[0].trim() == "*" ) { for ( int i = 0; i < children.size(); i++ ) result.insert( children[i].select( path[1], mode ) ); - return result; } else { - std::vector list = path[0].split( "," ); + std::vector list = MM::path_split( path[0], "," ); for ( int j = 0; j < list.size(); j++ ) { String sid = CHILDTYPE::id_tidy( list[j] ); for ( int i = 0; i < children.size(); i++ ) @@ -317,6 +359,29 @@ return result; } +/*! Creates a list of inidices of children matching the given selection string. + See select(). + \param sel The selection string. + \param mode MM::UNIQUE or MM::ANY. + \return A vector of integer indices of the matching children. */ +std::vector MPolymer::select_index( const String& sel, const MM::MODE mode ) const +{ + std::vector result; + if ( sel.trim() == "*" ) { + for ( int i = 0; i < children.size(); i++ ) + result.push_back( i ); + } else { + std::vector list = MM::path_split( sel, "," ); + for ( int j = 0; j < list.size(); j++ ) { + String sid = CHILDTYPE::id_tidy( list[j] ); + for ( int i = 0; i < children.size(); i++ ) + if ( CHILDTYPE::id_match( sid, children[i].id(), mode ) ) + result.push_back( i ); + } + } + return result; +} + /*! Lookup monomer by ID. If mode=UNIQUE, the insertion code must match, otherwise the first monomer with the same sequence number is returned. \param n The monomer ID. \param mode The search mode. @@ -441,16 +506,15 @@ \return The selection as a new model. */ MModel MModel::select( const String& sel, const MM::MODE mode ) const { - std::vector path = sel.split( "/" ); + std::vector path = MM::path_split( sel, "/" ); while ( path.size() < 3 ) path.push_back( "*" ); MModel result; result.copy( *this, MM::COPY_MP ); if ( path[0].trim() == "*" ) { for ( int i = 0; i < children.size(); i++ ) result.insert( children[i].select( path[1]+"/"+path[2], mode ) ); - return result; } else { - std::vector list = path[0].split( "," ); + std::vector list = MM::path_split( path[0], "," ); for ( int j = 0; j < list.size(); j++ ) { String sid = CHILDTYPE::id_tidy( list[j] ); for ( int i = 0; i < children.size(); i++ ) @@ -461,6 +525,29 @@ return result; } +/*! Creates a list of inidices of children matching the given selection string. + See select(). + \param sel The selection string. + \param mode MM::UNIQUE or MM::ANY. + \return A vector of integer indices of the matching children. */ +std::vector MModel::select_index( const String& sel, const MM::MODE mode ) const +{ + std::vector result; + if ( sel.trim() == "*" ) { + for ( int i = 0; i < children.size(); i++ ) + result.push_back( i ); + } else { + std::vector list = MM::path_split( sel, "," ); + for ( int j = 0; j < list.size(); j++ ) { + String sid = CHILDTYPE::id_tidy( list[j] ); + for ( int i = 0; i < children.size(); i++ ) + if ( CHILDTYPE::id_match( sid, children[i].id(), mode ) ) + result.push_back( i ); + } + } + return result; +} + /*! Lookup polymer by ID. Currently, mode is ignored. \param n The monomer ID. \param mode The search mode. \return The polymer. */ @@ -547,6 +634,41 @@ return *this; } +/*! Return an atom on the basis of the MAtomIndex. Behaviour is + undefined if the index is null. + \param index The index of the atom in the heirarchy. + \return A reference to the MAtom. */ +const MAtom& MModel::atom( const MAtomIndex& index ) const +{ return children[index.polymer()][index.monomer()][index.atom()]; } + +/*! Return an atom on the basis of the MAtomIndex. Behaviour is + undefined if the index is null. + \param index The index of the atom in the heirarchy. + \return A reference to the MAtom. */ +MAtom& MModel::atom( const MAtomIndex& index ) +{ return children[index.polymer()][index.monomer()][index.atom()]; } + +std::vector MModel::select_atom_index( const String& sel, const MM::MODE mode ) const +{ + std::vector result; + std::vector path = MM::path_split( sel, "/" ); + while ( path.size() < 3 ) path.push_back( "*" ); + const std::vector mps = + select_index( path[0], mode ); + for ( int p = 0; p < mps.size(); p++ ) { + const std::vector mms = + children[mps[p]].select_index( path[1], mode ); + for ( int m = 0; m < mms.size(); m++ ) { + const std::vector mas = + children[mps[p]][mms[m]].select_index( path[2], mode ); + for ( int a = 0; a < mas.size(); a++ ) { + result.push_back( MAtomIndex( mps[p], mms[m], mas[a] ) ); + } + } + } + return result; +} + // MiniMol @@ -571,6 +693,13 @@ cell_ = cell; } +MAtom MiniMol::symmetry_atom( const MAtomIndexSymmetry& index ) +{ + MAtom atom = MModel::atom(index); + atom.set_coord_orth((spacegroup_.symop(index.symmetry())*atom.coord_orth().coord_frac(cell_)).coord_orth(cell_)); + return atom; +} + bool MiniMol::is_null() const { return ( spacegroup_.is_null() || cell_.is_null() ); } diff -Nru clipper-2.1+20091215/clipper/minimol/minimol.h clipper-2.1+20100511/clipper/minimol/minimol.h --- clipper-2.1+20091215/clipper/minimol/minimol.h 2010-01-05 22:32:24.000000000 +0000 +++ clipper-2.1+20100511/clipper/minimol/minimol.h 2010-03-18 13:11:36.000000000 +0000 @@ -52,6 +52,12 @@ namespace clipper { + + // Forward definitions + class MAtomIndex; + class MAtomIndexSymmetry; + + //! dummy namespace to hold search modes namespace MM { enum MODE { UNIQUE, ANY }; @@ -110,6 +116,7 @@ String id_; }; + //! MiniMol monomer (e.g. residue) object /*! The MiniMol monomer object contains a list of clipper::MAtom. @@ -153,6 +160,8 @@ MAtom& find( const String& n, const MM::MODE mode=MM::UNIQUE ); //! create selection MMonomer select( const String& sel, const MM::MODE mode=MM::UNIQUE ) const; + //! get child indices matching a selection criteria + std::vector select_index( const String& sel, const MM::MODE mode=MM::UNIQUE ) const; //! lookup atom by id int lookup( const String& str, const MM::MODE& mode ) const; void insert( const MAtom& add, int pos=-1 ); //!< add atom @@ -194,6 +203,7 @@ static int rotamer_find( String res, int rota, TYPE t ); }; + //! MiniMol polymer (e.g. chain) object /*! The MiniMol polymer object has one property: an identifying name. @@ -229,6 +239,8 @@ MMonomer& find( const String& n, const MM::MODE mode=MM::UNIQUE ); //! create selection MPolymer select( const String& sel, const MM::MODE mode=MM::UNIQUE ) const; + //! get child indices matching a selection criteria + std::vector select_index( const String& sel, const MM::MODE mode=MM::UNIQUE ) const; //! lookup monomer by id int lookup( const String& str, const MM::MODE& mode ) const; void insert( const MMonomer& add, int pos=-1 ); //!< add monomer @@ -249,6 +261,7 @@ String id_; }; + //! MiniMol model object /*! The MiniMol model object constains a list of clipper::MPolymer. @@ -278,6 +291,8 @@ MPolymer& find( const String& n, const MM::MODE mode=MM::UNIQUE ); //! create selection MModel select( const String& sel, const MM::MODE mode=MM::UNIQUE ) const; + //! get child indices matching a selection criteria + std::vector select_index( const String& sel, const MM::MODE mode=MM::UNIQUE ) const; //! lookup polymer by id int lookup( const String& str, const MM::MODE& mode ) const; void insert( const MPolymer& add, int pos=-1 ); //!< add polymer @@ -289,11 +304,19 @@ //! configureable copy function MModel& copy( const MModel& other, const MM::COPY& mode ); + + //! Return atom by MAtomIndex + const MAtom& atom( const MAtomIndex& index ) const; + //! Return atom by MAtomIndex + MAtom& atom( const MAtomIndex& index ); + //! Select and return MAtomIndex values + std::vector select_atom_index( const String& sel, const MM::MODE mode=MM::UNIQUE ) const; private: typedef MPolymer CHILDTYPE; std::vector children; }; + //! MiniMol lightweight coordinate model object /*! A MiniMol object is a model (clipper::MModel) embedded in a crystal frame, i.e. with additional spacegroup and cell @@ -319,6 +342,9 @@ const MModel& model() const { return *this; } //!< explicitly get model MModel& model() { return *this; } //!< explicitly set model + //! Return symmetry atom by MAtomIndexSymmetry + MAtom symmetry_atom( const MAtomIndexSymmetry& index ); + bool is_null() const; //!< test for null model private: Spacegroup spacegroup_; diff -Nru clipper-2.1+20091215/configure clipper-2.1+20100511/configure --- clipper-2.1+20091215/configure 2010-01-05 22:32:24.000000000 +0000 +++ clipper-2.1+20100511/configure 2010-05-11 14:25:28.000000000 +0000 @@ -21267,7 +21267,7 @@ -CLIPPER_LT_VERSION="2:5:0" +CLIPPER_LT_VERSION="2:7:0" # Optional args diff -Nru clipper-2.1+20091215/configure.ac clipper-2.1+20100511/configure.ac --- clipper-2.1+20091215/configure.ac 2010-01-05 22:32:24.000000000 +0000 +++ clipper-2.1+20100511/configure.ac 2010-05-11 14:25:21.000000000 +0000 @@ -22,7 +22,7 @@ AC_PROG_MAKE_SET AC_PROG_LIBTOOL -CLIPPER_LT_VERSION="2:5:0" +CLIPPER_LT_VERSION="2:7:0" AC_SUBST(CLIPPER_LT_VERSION) # Optional args diff -Nru clipper-2.1+20091215/debian/changelog clipper-2.1+20100511/debian/changelog --- clipper-2.1+20091215/debian/changelog 2011-01-14 11:36:34.000000000 +0000 +++ clipper-2.1+20100511/debian/changelog 2010-12-01 11:48:06.000000000 +0000 @@ -1,3 +1,10 @@ +clipper (2.1+20100511-0ubuntu1) natty; urgency=low + + * New upstream version + * Use source package format 3.0 (quilt) + + -- Morten Kjeldgaard Mon, 22 Nov 2010 11:11:53 +0100 + clipper (2.1+20091215-0ubuntu1) lucid; urgency=low * New upstream version. Debian version string now needs to specify diff -Nru clipper-2.1+20091215/debian/control clipper-2.1+20100511/debian/control --- clipper-2.1+20091215/debian/control 2011-01-14 11:36:34.000000000 +0000 +++ clipper-2.1+20100511/debian/control 2010-12-01 11:44:19.000000000 +0000 @@ -6,7 +6,7 @@ Build-Depends: debhelper (>= 7), cdbs, autotools-dev, quilt, sfftw-dev, fftw-dev, libgpp4-dev, libmmdb-dev, libtool, autoconf Build-Depends-Indep: doxygen -Standards-Version: 3.8.1 +Standards-Version: 3.9.1 Package: libclipper-dev Section: libdevel @@ -14,7 +14,7 @@ Suggests: libclipper-doc Depends: ${misc:Depends}, libclipper2 (= ${binary:Version} ), libmmdb-dev, libgpp4-dev, sfftw-dev, fftw-dev -Description: object oriented library for crystallographic computing +Description: object oriented development kit for crystallographic computing The aim of the clipper project is to produce a set of object-oriented libraries for the organisation of crystallographic data and the performance of crystallographic computation. diff -Nru clipper-2.1+20091215/debian/libclipper2.install clipper-2.1+20100511/debian/libclipper2.install --- clipper-2.1+20091215/debian/libclipper2.install 2011-01-14 11:36:34.000000000 +0000 +++ clipper-2.1+20100511/debian/libclipper2.install 2010-11-22 11:20:33.000000000 +0000 @@ -1,3 +1,3 @@ debian/tmp/usr/lib/libclipper*.so.2 -debian/tmp/usr/lib/libclipper*.so.2.0.5 +debian/tmp/usr/lib/libclipper*.so.2.0.7 debian/tmp/usr/share/lintian/overrides/libclipper2 diff -Nru clipper-2.1+20091215/debian/patches/ccp4_makefile.am.patch clipper-2.1+20100511/debian/patches/ccp4_makefile.am.patch --- clipper-2.1+20091215/debian/patches/ccp4_makefile.am.patch 2011-01-14 11:36:34.000000000 +0000 +++ clipper-2.1+20100511/debian/patches/ccp4_makefile.am.patch 2010-12-01 11:38:29.000000000 +0000 @@ -1,3 +1,8 @@ +Description: Allow alternate CCP4 library + Allow an alternate CCP4 library, this is needed when using clipper with gpp4. +Author: Morten Kjeldgaard +Last-Update: 2010-11-19 + --- clipper.orig/clipper/ccp4/Makefile.am +++ clipper/clipper/ccp4/Makefile.am @@ -2,8 +2,8 @@ diff -Nru clipper-2.1+20091215/debian/patches/cns_map_io.cpp.patch clipper-2.1+20100511/debian/patches/cns_map_io.cpp.patch --- clipper-2.1+20091215/debian/patches/cns_map_io.cpp.patch 2011-01-14 11:36:34.000000000 +0000 +++ clipper-2.1+20100511/debian/patches/cns_map_io.cpp.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ ---- clipper.orig/clipper/cns/cns_map_io.cpp -+++ clipper/clipper/cns/cns_map_io.cpp -@@ -41,7 +41,7 @@ - - - #include "cns_map_io.h" -- -+#include - #include - - namespace clipper { diff -Nru clipper-2.1+20091215/debian/patches/examples.patch clipper-2.1+20100511/debian/patches/examples.patch --- clipper-2.1+20091215/debian/patches/examples.patch 2011-01-14 11:36:34.000000000 +0000 +++ clipper-2.1+20100511/debian/patches/examples.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ ---- clipper.orig/examples/cphasematch.cpp -+++ clipper/examples/cphasematch.cpp -@@ -1,6 +1,7 @@ - // Clipper app to match origins and calculate phase statistics - /* Copyright 2003-2004 Kevin Cowtan & University of York all rights reserved */ - -+#include - #include - #include - #include ---- clipper.orig/examples/csfcalc.cpp -+++ clipper/examples/csfcalc.cpp -@@ -1,6 +1,7 @@ - // Clipper app to perform structure factor calculation - /* Copyright 2003-2004 Kevin Cowtan & University of York all rights reserved */ - -+#include - #include - #include - #include ---- clipper.orig/examples/csigmaa.cpp -+++ clipper/examples/csigmaa.cpp -@@ -1,6 +1,7 @@ - // Clipper app to do sigmaa calc - /* Copyright 2003-2004 Kevin Cowtan & University of York all rights reserved */ - -+#include - #include - #include - #include diff -Nru clipper-2.1+20091215/debian/patches/mmdb_makefile.am.patch clipper-2.1+20100511/debian/patches/mmdb_makefile.am.patch --- clipper-2.1+20091215/debian/patches/mmdb_makefile.am.patch 1970-01-01 00:00:00.000000000 +0000 +++ clipper-2.1+20100511/debian/patches/mmdb_makefile.am.patch 2010-12-01 11:40:24.000000000 +0000 @@ -0,0 +1,15 @@ +Description: Examples need mmdb bindings + The examples directory fails to build unless libclipper-mmdb is included. +Author: Morten Kjeldgaard +Last-Update: 2010-11-22 + +--- clipper.orig/examples/Makefile.am ++++ clipper/examples/Makefile.am +@@ -38,6 +38,7 @@ + $(top_builddir)/clipper/cns/libclipper-cns.la \ + $(top_builddir)/clipper/cif/libclipper-cif.la \ + $(top_builddir)/clipper/minimol/libclipper-minimol.la \ ++ $(top_builddir)/clipper/mmdb/libclipper-mmdb.la \ + $(top_builddir)/clipper/core/libclipper-core.la \ + -lpthread + diff -Nru clipper-2.1+20091215/debian/patches/series clipper-2.1+20100511/debian/patches/series --- clipper-2.1+20091215/debian/patches/series 2011-01-14 11:36:34.000000000 +0000 +++ clipper-2.1+20100511/debian/patches/series 2010-12-01 11:30:57.000000000 +0000 @@ -1,2 +1,2 @@ -#examples.patch ccp4_makefile.am.patch +mmdb_makefile.am.patch diff -Nru clipper-2.1+20091215/debian/source/format clipper-2.1+20100511/debian/source/format --- clipper-2.1+20091215/debian/source/format 1970-01-01 00:00:00.000000000 +0000 +++ clipper-2.1+20100511/debian/source/format 2011-01-14 11:36:34.000000000 +0000 @@ -0,0 +1 @@ +3.0 (quilt) diff -Nru clipper-2.1+20091215/examples/ciftophs.cpp clipper-2.1+20100511/examples/ciftophs.cpp --- clipper-2.1+20091215/examples/ciftophs.cpp 2010-01-05 22:32:24.000000000 +0000 +++ clipper-2.1+20100511/examples/ciftophs.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -// Clipper test application -/* (C) 2003 Kevin Cowtan */ - - -#include -#include -#include - - -using clipper::data32::F_sigF; - - -int main(int argc, char** argv) -{ - clipper::CIFfile ciffile; - clipper::PHSfile phsfile; - - // make data objects - clipper::HKL_info wrk_hkl; - clipper::HKL_data wrk_fo( wrk_hkl ); - - // read data - ciffile.open_read( argv[1] ); - ciffile.import_hkl_info( wrk_hkl ); - ciffile.import_hkl_data( wrk_fo ); - ciffile.close_read(); - - // write data - phsfile.open_write( argv[2] ); - phsfile.export_hkl_info( wrk_hkl ); - phsfile.import_hkl_data( wrk_fo ); - phsfile.close_read(); -} diff -Nru clipper-2.1+20091215/examples/cinvfft.cpp clipper-2.1+20100511/examples/cinvfft.cpp --- clipper-2.1+20091215/examples/cinvfft.cpp 2010-01-05 22:32:24.000000000 +0000 +++ clipper-2.1+20100511/examples/cinvfft.cpp 2010-04-16 15:43:36.000000000 +0000 @@ -53,7 +53,7 @@ // open file mtzin.open_read( ipfile ); - if ( opcol[0] != '/' ) opcol = mtzin.column_paths().back().notail()+"/"+opcol; + if ( opcol[0] != '/' ) opcol = mtzin.assigned_paths().back().notail()+"/"+opcol; mtzin.import_hkl_info( hkls ); mtzin.import_crystal( cxtl, opcol ); clipper::HKL_data fphi( hkls, cxtl );