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 );