Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

srv_parser.cpp

00001 //
00002 // =================================================================
00003 //
00004 //    28.10.02   <--  Date of Last Modification.
00005 //                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00006 //  -------------------------------------------------------------------
00007 //
00008 //  **** Module  :  SRV_Parser <implementation>
00009 //       ~~~~~~~~~
00010 //  **** Project :  SSM Server
00011 //       ~~~~~~~~~
00012 //  **** Functions : main  ( example parsing SSM XML output )
00013 //       ~~~~~~~~~~~
00014 //
00015 //  E. Krissinel, 2002
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   //  1.  Make routine initializations, which must always be done
00053   //      before working with MMDB
00054   InitMatType();
00055 
00056   //  2.  Create an instance of XML object
00057   SSMXML = new CSSMXML();
00058 
00059   //  3.  Read XML file.
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 

Generated on Fri Apr 16 13:47:46 2004 for MSDAPI by doxygen 1.3.4-20031005