00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __SRV_PXML__
00022 #include "srv_pxml.h"
00023 #endif
00024
00025
00026 void PrintInstructions ( pstr argv0 ) {
00027 printf (
00028 "\n"
00029 "SSM XML parser example\n"
00030 "~~~~~~~~~~~~~~~~~~~~~~\n"
00031 "\n"
00032 "%s ssmout.xml\n"
00033 "\n"
00034 "where 'ssmout.xml' is an output XML file.\n"
00035 "\n",argv0
00036 );
00037 }
00038
00039
00040 int main ( int argc, char ** argv, char ** env ) {
00041 PCSSMXML SSMXML;
00042 char queryID[500],targetID[500];
00043 char queryCh[10] ,targetCh[10];
00044 mat44 RT;
00045 int rc, nMatches,i;
00046
00047 if (argc<2) {
00048 PrintInstructions ( argv[0] );
00049 return 1;
00050 }
00051
00052
00053
00054 InitMatType();
00055
00056
00057 SSMXML = new CSSMXML();
00058
00059
00060 rc = SSMXML->readSSMXML ( argv[1] );
00061 printf ( " SSM XML file read rc=%i\n",rc );
00062
00063 if (rc) return rc;
00064
00065 nMatches = SSMXML->getNofMatches();
00066 printf ( " Total %i matches\n",nMatches );
00067 if (nMatches<=0) return 2;
00068
00069 rc = SSMXML->getQueryID ( queryID );
00070 if (rc==query_pdbentry) printf ( " Query: PDB code %s\n",queryID );
00071 else if (rc==query_file) printf ( " Query: coordinate file %s\n",queryID );
00072 else printf ( " Error retrieving query ID #%i\n",rc );
00073
00074 for (i=1;i<=nMatches;i++) {
00075
00076 printf ( " MATCH #%i\n",i );
00077
00078 rc = SSMXML->getTargetID ( targetID,i );
00079 switch (rc) {
00080 case target_pdbentry :
00081 printf ( " Target: PDB code %s\n" ,targetID ); break;
00082 case target_file :
00083 printf ( " Target: file %s\n" ,targetID ); break;
00084 case target_pdb :
00085 printf ( " Target: PDB entry %s\n",targetID ); break;
00086 case target_scop :
00087 printf ( " Target: SCOP entry %s\n",targetID ); break;
00088 case target_scopsubset :
00089 printf ( " Target: SCOP subset entry %s\n",targetID ); break;
00090 default :
00091 printf ( " Error retrueving target ID #%i\n",rc );
00092 }
00093
00094 SSMXML->getQueryChain ( queryCh ,i );
00095 SSMXML->getTargetChain ( targetCh,i );
00096 printf ( " query chain '%s'\n"
00097 " target chain '%s'\n", queryCh,targetCh );
00098
00099 printf ( " P-score %11.4f, Z-score %11.4f, RPDBe %11.4f\n",
00100 SSMXML->getPScore(i),SSMXML->getZScore(i),SSMXML->getRMSD(i) );
00101
00102 rc = SSMXML->getRTMatrix ( RT,i );
00103 if (rc) {
00104 printf ( " Error #%i at retrieving RT-matrix.\n",rc );
00105 break;
00106 }
00107 printf ( " RT-matrix: %10.3f %10.3f %10.3f %10.3f\n"
00108 " %10.3f %10.3f %10.3f %10.3f\n"
00109 " %10.3f %10.3f %10.3f %10.3f\n",
00110 RT[0][0], RT[0][1], RT[0][2], RT[0][3],
00111 RT[1][0], RT[1][1], RT[1][2], RT[1][3],
00112 RT[2][0], RT[2][1], RT[2][2], RT[2][3] );
00113
00114 }
00115
00116 return 0;
00117
00118 }
00119
00120
00121