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 :