Hello,

as a side effect in providing ArchLinux packages for internal use in our 
institute I tried to compile coot against the latest versions of ssm, clipper, 
libccp4 and mmdb as provided by ftp://ftp.ccp4.ac.uk/opensource/

To be able to compile coot against ssm-1.3 I had apply the attched patch. I 
hope you might find it useful.

Regards,

Alexander
diff -crB ./src/graphics-info.h ../coot-patched/src/graphics-info.h
*** ./src/graphics-info.h	2013-04-27 16:04:58.000000000 +0200
--- ../coot-patched/src/graphics-info.h	2013-07-25 04:09:17.861265837 +0200
***************
*** 3307,3313 ****
  				      short int move_copy_of_imol2_flag);
  
  #ifdef HAVE_SSMLIB
!    void print_ssm_sequence_alignment(CSSMAlign *SSMAlign,
  				     atom_selection_container_t asc_ref,
  				     atom_selection_container_t asc_mov,
  				     PCAtom *atom_selection1, 
--- 3307,3313 ----
  				      short int move_copy_of_imol2_flag);
  
  #ifdef HAVE_SSMLIB
!    void print_ssm_sequence_alignment(ssm::Align *SSMAlign,
  				     atom_selection_container_t asc_ref,
  				     atom_selection_container_t asc_mov,
  				     PCAtom *atom_selection1, 
***************
*** 3315,3321 ****
  				     int n_selected_atoms_1, int n_selected_atoms_2, 
  				     short int move_copy_of_imol2_flag);
  
!    void make_and_print_horizontal_ssm_sequence_alignment(CSSMAlign *SSMAlign,
  							 atom_selection_container_t asc_ref,
  							 atom_selection_container_t asc_mov,
  							 PCAtom *atom_selection1, 
--- 3315,3321 ----
  				     int n_selected_atoms_1, int n_selected_atoms_2, 
  				     short int move_copy_of_imol2_flag);
  
!    void make_and_print_horizontal_ssm_sequence_alignment(ssm::Align *SSMAlign,
  							 atom_selection_container_t asc_ref,
  							 atom_selection_container_t asc_mov,
  							 PCAtom *atom_selection1, 
***************
*** 3325,3331 ****
     void print_horizontal_ssm_sequence_alignment(std::pair<std::string, std::string> aligned_sequences) const;
  
     std::pair<std::string, std::string>
!      get_horizontal_ssm_sequence_alignment(CSSMAlign *SSMAlign,
  					   atom_selection_container_t asc_ref,
  					   atom_selection_container_t asc_mov,
  					   PCAtom *atom_selection1, PCAtom *atom_selection2,
--- 3325,3331 ----
     void print_horizontal_ssm_sequence_alignment(std::pair<std::string, std::string> aligned_sequences) const;
  
     std::pair<std::string, std::string>
!      get_horizontal_ssm_sequence_alignment(ssm::Align *SSMAlign,
  					   atom_selection_container_t asc_ref,
  					   atom_selection_container_t asc_mov,
  					   PCAtom *atom_selection1, PCAtom *atom_selection2,
diff -crB ./src/graphics-info-superpose.cc ../coot-patched/src/graphics-info-superpose.cc
*** ./src/graphics-info-superpose.cc	2013-01-16 17:40:31.000000000 +0100
--- ../coot-patched/src/graphics-info-superpose.cc	2013-07-25 04:42:47.876256551 +0200
***************
*** 22,27 ****
--- 22,31 ----
  #include "Python.h"  // before system includes to stop "POSIX_C_SOURCE" redefined problems
  #endif
  
+ #ifdef HAVE_SSMLIB
+ #include "ssm_defs.h"
+ #endif 
+ 
  #if defined _MSC_VER
  #include <windows.h>
  #endif
***************
*** 168,179 ****
  
  #ifdef HAVE_SSMLIB
  
!    int precision = SSMP_Normal;
!    int connectivity = CSSC_Flexible;
  
     // probably not necessary, not sure:
!    SetSSConnectivityCheck ( CSSC_Flexible );
!    SetSSMatchPrecision    ( SSMP_Normal );
  
     if (asc_ref.n_selected_atoms > 0) { 
        if (asc_mov.n_selected_atoms > 0) {
--- 172,183 ----
  
  #ifdef HAVE_SSMLIB
  
!    ssm::PRECISION precision = ssm::PREC_Normal;
!    ssm::CONNECTIVITY connectivity = ssm::CONNECT_Flexible;
  
     // probably not necessary, not sure:
!    ssm::SetConnectivityCheck ( ssm::CONNECT_Flexible );
!    ssm::SetMatchPrecision    ( ssm::PREC_Normal );
  
     if (asc_ref.n_selected_atoms > 0) { 
        if (asc_mov.n_selected_atoms > 0) {
***************
*** 199,234 ****
  
  	 // Remove the pointer one day.
  	 // 
! 	 CSSMAlign *SSMAlign = new CSSMAlign();
! 	 int rc = SSMAlign->Align(mol2, mol1, precision, connectivity,
  				  asc_mov.SelectionHandle,
  				  asc_ref.SelectionHandle);
  
  	 if (rc)  {
  	    std::string ws;
  	    switch (rc)  {
! 	    case SSM_noHits :
  	       std::cout << " *** secondary structure does not match.\n";
  	       ws = "secondary structure does not match";
  	       break;
! 	    case SSM_noSPSN :
  	       std::cout << " *** structures are too remote.\n";
  	       ws = "structures are too remote";
  	       break;
! 	    case SSM_noGraph :
  	       std::cout << " *** can't make graph for " << name1 << "\n";
  	       ws = "can't make graph for " + name1;
  	       ws += " structure";
  	       break;
! 	    case SSM_noVertices :
  	       std::cout << " *** empty graph for " << name1 << "\n";
  	       ws = "empty graph for " + name1;
  	       break;
! 	    case SSM_noGraph2 :
  	       std::cout << " *** can't make graph for " << name2 << "\n";
  	       ws = "can't make graph for " + name2;
  	       break;
! 	    case SSM_noVertices2 :
  	       std::cout << " *** empty graph for " << name2 << "\n";
  	       ws = "empty graph for " + name2;
  	       break;
--- 203,238 ----
  
  	 // Remove the pointer one day.
  	 // 
! 	 ssm::Align *SSMAlign = new ssm::Align();
! 	 int rc = SSMAlign->align(mol2, mol1, precision, connectivity,
  				  asc_mov.SelectionHandle,
  				  asc_ref.SelectionHandle);
  
  	 if (rc)  {
  	    std::string ws;
  	    switch (rc)  {
! 	    case ssm::RC_NoHits :
  	       std::cout << " *** secondary structure does not match.\n";
  	       ws = "secondary structure does not match";
  	       break;
! 	    case ssm::RC_NoSuperposition :
  	       std::cout << " *** structures are too remote.\n";
  	       ws = "structures are too remote";
  	       break;
! 	    case ssm::RC_NoGraph :
  	       std::cout << " *** can't make graph for " << name1 << "\n";
  	       ws = "can't make graph for " + name1;
  	       ws += " structure";
  	       break;
! 	    case ssm::RC_NoVertices :
  	       std::cout << " *** empty graph for " << name1 << "\n";
  	       ws = "empty graph for " + name1;
  	       break;
! 	    case ssm::RC_NoGraph2 :
  	       std::cout << " *** can't make graph for " << name2 << "\n";
  	       ws = "can't make graph for " + name2;
  	       break;
! 	    case ssm::RC_NoVertices2 :
  	       std::cout << " *** empty graph for " << name2 << "\n";
  	       ws = "empty graph for " + name2;
  	       break;
***************
*** 298,304 ****
  	    // mat44 tmat;
  	    // realtype rmsdAchieved, seqIdentity, nCombs;
  	    // int nAligned, nGaps, nMisD;
! 	    // CSuperpose Superpose;  type in class CSSMAlign
  	    // 
  	    // Superpose->GetSuperposition(Ca1, dist1, nCa1, Ca2,
  	    // nCa2, tmat, rmsdAchieved, nAligned, nGaps, seqIdentity,
--- 302,308 ----
  	    // mat44 tmat;
  	    // realtype rmsdAchieved, seqIdentity, nCombs;
  	    // int nAligned, nGaps, nMisD;
! 	    // CSuperpose Superpose;  type in class ssm::Align
  	    // 
  	    // Superpose->GetSuperposition(Ca1, dist1, nCa1, Ca2,
  	    // nCa2, tmat, rmsdAchieved, nAligned, nGaps, seqIdentity,
***************
*** 331,337 ****
  
  #ifdef HAVE_SSMLIB
  void
! graphics_info_t::make_and_print_horizontal_ssm_sequence_alignment(CSSMAlign *SSMAlign,
  							 atom_selection_container_t asc_ref,
  							 atom_selection_container_t asc_mov,
  							 PCAtom *atom_selection1, PCAtom *atom_selection2,
--- 335,341 ----
  
  #ifdef HAVE_SSMLIB
  void
! graphics_info_t::make_and_print_horizontal_ssm_sequence_alignment(ssm::Align *SSMAlign,
  							 atom_selection_container_t asc_ref,
  							 atom_selection_container_t asc_mov,
  							 PCAtom *atom_selection1, PCAtom *atom_selection2,
***************
*** 394,400 ****
  
  #ifdef HAVE_SSMLIB
  std::pair<std::string, std::string>
! graphics_info_t::get_horizontal_ssm_sequence_alignment(CSSMAlign *SSMAlign,
  						       atom_selection_container_t asc_ref,
  						       atom_selection_container_t asc_mov,
  						       PCAtom *atom_selection1, PCAtom *atom_selection2,
--- 398,404 ----
  
  #ifdef HAVE_SSMLIB
  std::pair<std::string, std::string>
! graphics_info_t::get_horizontal_ssm_sequence_alignment(ssm::Align *SSMAlign,
  						       atom_selection_container_t asc_ref,
  						       atom_selection_container_t asc_mov,
  						       PCAtom *atom_selection1, PCAtom *atom_selection2,
***************
*** 483,489 ****
  
  #ifdef HAVE_SSMLIB
  void
! graphics_info_t::print_ssm_sequence_alignment(CSSMAlign *SSMAlign,
  					      atom_selection_container_t asc_ref,
  					      atom_selection_container_t asc_mov,
  					      PCAtom *atom_selection1, PCAtom *atom_selection2,
--- 487,493 ----
  
  #ifdef HAVE_SSMLIB
  void
! graphics_info_t::print_ssm_sequence_alignment(ssm::Align *SSMAlign,
  					      atom_selection_container_t asc_ref,
  					      atom_selection_container_t asc_mov,
  					      PCAtom *atom_selection1, PCAtom *atom_selection2,
diff -crB ./src/molecule-class-info-ncs.cc ../coot-patched/src/molecule-class-info-ncs.cc
*** ./src/molecule-class-info-ncs.cc	2013-01-16 17:40:31.000000000 +0100
--- ../coot-patched/src/molecule-class-info-ncs.cc	2013-07-25 04:44:45.450071527 +0200
***************
*** 51,56 ****
--- 51,57 ----
  
  #ifdef HAVE_SSMLIB
  #include "ssm_align.h"
+ #include "ssm_defs.h"
  #endif
  
  // This is called by make_bonds_type_checked(), which is called by
***************
*** 514,546 ****
     if (graphics_info_t::ncs_matrix_flag == coot::NCS_SSM) {
  #ifdef HAVE_SSMLIB
  
!       int precision = SSMP_Normal;
!       int connectivity = CSSC_Flexible;
!       CSSMAlign *SSMAlign = new CSSMAlign();
!       int rc = SSMAlign->Align(atom_sel.mol, atom_sel.mol,
  			       precision, connectivity, SelHandle2, SelHandle1);
  
        if (rc)  {
  	 std::string ws;
  	 switch (rc)  {
! 	 case SSM_noHits :
  	    std::cout << " *** secondary structure does not match.\n";
  	    ws = "secondary structure does not match";
  	    break;
! 	 case SSM_noSPSN :
  	    std::cout << " *** structures are too remote.\n";
  	    ws = "structures are too remote";
  	    break;
! 	 case SSM_noGraph :
  	    std::cout << " *** can't make graph for 1\n";
  	    break;
! 	 case SSM_noVertices :
  	    std::cout << " *** empty graph for 1\n";
  	    break;
! 	 case SSM_noGraph2 :
  	    std::cout << " *** can't make graph for 2\n";
  	    break;
! 	 case SSM_noVertices2 :
  	    std::cout << " *** empty graph for 2\n";
  	    break;
  	 default :
--- 515,547 ----
     if (graphics_info_t::ncs_matrix_flag == coot::NCS_SSM) {
  #ifdef HAVE_SSMLIB
  
!       ssm::PRECISION precision = ssm::PREC_Normal;
!       ssm::CONNECTIVITY connectivity = ssm::CONNECT_Flexible;
!       ssm::Align *SSMAlign = new ssm::Align();
!       int rc = SSMAlign->align(atom_sel.mol, atom_sel.mol,
  			       precision, connectivity, SelHandle2, SelHandle1);
  
        if (rc)  {
  	 std::string ws;
  	 switch (rc)  {
! 	 case ssm::RC_NoHits :
  	    std::cout << " *** secondary structure does not match.\n";
  	    ws = "secondary structure does not match";
  	    break;
! 	 case ssm::RC_NoSuperposition :
  	    std::cout << " *** structures are too remote.\n";
  	    ws = "structures are too remote";
  	    break;
! 	 case ssm::RC_NoGraph :
  	    std::cout << " *** can't make graph for 1\n";
  	    break;
! 	 case ssm::RC_NoVertices :
  	    std::cout << " *** empty graph for 1\n";
  	    break;
! 	 case ssm::RC_NoGraph2 :
  	    std::cout << " *** can't make graph for 2\n";
  	    break;
! 	 case ssm::RC_NoVertices2 :
  	    std::cout << " *** empty graph for 2\n";
  	    break;
  	 default :

Reply via email to