a44421a79fb36cc2036fe116b97ea3bc9590cd0c
braney
  Fri Dec 2 09:34:39 2011 -0800
removed rcsid (#295)
diff --git src/hg/gpcrParser/gpcrParser.c src/hg/gpcrParser/gpcrParser.c
index 96d1f8f..5d321e0 100644
--- src/hg/gpcrParser/gpcrParser.c
+++ src/hg/gpcrParser/gpcrParser.c
@@ -1,200 +1,199 @@
 /** gpcrParser.c - Parses transmembrane cooridnates, outputs to xml file. */
 #include "common.h"
 #include "memalloc.h"
 #include "dystring.h"
 
-static char const rcsid[] = "$Id: gpcrParser.c,v 1.7 2003/05/06 07:22:19 kate Exp $";
 
 /** Method prototypes */
 void catSeqFile(FILE* outfile, char* filename);
 void getTransFromFile(FILE* infile, char *path);
 FILE* createXMLFile(char* proteinID, char *path);
 void populateXMLFile(FILE *outfile, int tmNumber, char *proteinID, char *path);
 void addCoordinatesToXMLFile(FILE *outfile, int start, int end, char* mapTo, int count);
 void finishXMLFile(FILE *outfile, char *proteinID, int seqLength);
 void usage(char **argv);
 
 void usage(char **argv)
 {
    if(argv[1] == NULL) 
         {
         errAbort(
           "gpcrParser - Create xml files for gpcr snakeplots.\n"
           "usage:\n   gpcrParser TMHMMresult.htm [path]\n"
           "    The first parameter is the html output from www.cbs.dtu.dk\n"
           "    Path is the working directory holding the seq files needed to\n"
           "    create the xml files. The xml files will be created in the path location.\n"
           "    If no path location is entered, the seq files should be in your cwd\n"
            );
          }
 }
 
 void catSeqFile(FILE* outfile, char* filename)
 /** Copies contents of one file to another file */
 {
 FILE* infile;
 char* line = NULL;
 infile = mustOpen(filename, "r");
      while( (line = readLine(infile))  != NULL )
      {
      fprintf(outfile, "\t\t%s\n", line);
      freeMem(line);
      }
 carefulClose(&infile);
 }
 
 void finishXMLFile(FILE *outfile, char *proteinID, int seqLength)
 /** Add the closing lines to the file */
 {
 fprintf(outfile, 
    "\t\t\n</secondary-structure>\n\n\t</protein>\n\n\t<diagram>\n\n\t\t<colors>\n\n"
    "\t\t\t<define color=\"white\" red=\"255\" green=\"255\" blue=\"255\"/>\n\n"
    "\t\t\t<define color=\"red\" red=\"255\" green=\"0\" blue=\"0\"/>\n\n"
    "\t\t\t<color-scheme name=\"GPCRDB\">\n\n"
    "\t\t\t\t<residue-background color=\"white\"/>\n\n\t\t\t</color-scheme>\n\n"
    "\t\t\t<residue-color position=\"20\" color=\"white\"/>\n\n"
    "\t\t\t<residue-color position=\"21\" color=\"red\"/>\n\n"
    "\t\t</colors>\n\n\t\t<elipses>\n\n"
    "\t\t\t<exclude residueRange=\"1-%d\" />\n\n"
    "\t\t\t<include residueRange=\"1-1\"/>\n\n\t\t</elipses>\n\n"
    "\t\t<output>\n\n\t\t\t<image format=\"GIF\" filename=\"%s.gif\"/>\n\n"
    "\t\t\t<page template=\"H:\\dev\\crover\\nrdb\\sample-template.xsl\""
    "filename=\"gpcr-rbdg-out.xml\" diagram-name=\"gpcr\"/>\n\n"
    "\t\t\t<image-map filename=\"%s.map\"/>\n\n\t\t</output>\n\n"
    "\t</diagram>\n\n</rbde-diagram>", 
     seqLength-1, proteinID, proteinID
        );
 }
 
 void addCoordinatesToXMLFile(FILE *outfile, int start, int end, char* mapTo, int count)
 /** Add each coordinate for the gpcr */
 {
 fprintf(outfile, "\t\t\t");
    if( sameString(mapTo, "TM") )
        {
        fprintf(outfile, 
            "<segment start=\"%d\" end=\"%d\" mapto=\"%s%d\" />\n", 
            start, end, mapTo, count);
        }
        else
        {
        fprintf( outfile, 
            "<segment start=\"%d\" end=\"%d\" mapto=\"%s\" />\n",
            start, end, mapTo );
        }
 }
 
 void populateXMLFile(FILE *outfile, int tmNumber, char *proteinID, char *path)
 /** Adds the number of TM helices and sequence the the xml file */
 {
 struct dyString *filename = newDyString(128);
     if(path == NULL)
         dyStringPrintf(filename, "%s.seq", proteinID);
     else
         dyStringPrintf(filename, "%s%s.seq", path, proteinID);
 fprintf(outfile, 
     "%d\" id-prefix=\"TM\" nterm-id=\"N-term\" cterm-id=\"C-term\" direction=\"down\" />\n\n"
     "\t</diagram-layout>\n\n\t<protein>\n\n\t\t<name>%s</name>\n\n\t\t<residue-codes>\n\n", 
     tmNumber, proteinID
        );
 catSeqFile(outfile, filename->string);
 fprintf(outfile, "\n\n\t\t</residue-codes>\n\n\t\t<secondary-structure>\n\n");
 freeDyString(&filename);
 }
 
 FILE* createXMLFile(char* proteinID, char *path)
 {
 FILE* outfile;
 struct dyString *filename = newDyString(128);
     if(path == NULL)
         dyStringPrintf(filename, "%s.xml", proteinID);
     else
         dyStringPrintf(filename, "%s%s.xml", path, proteinID);
 outfile = mustOpen(filename->string, "w");
 fprintf(outfile, 
     "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n\n"
     "<rbde-diagram xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
     " xsi:noNamespaceSchemaLocation=\"H:\\dev\\crover\\xml\\xsd\\residue-based-diagram.xsd\">\n\n"
     "\t<diagram-layout>\n\n\t\t<tm-bundle tm-number=\""
        );
 freeDyString(&filename);
 return outfile;
 }
 
 void getTransFromFile(FILE* infile, char *path)
 {
 FILE* outfile = NULL;
 int start, end, tmNumber, count, seqLength;
 char *line, *token;
 struct dyString *proteinID = newDyString(24);
 start = end = tmNumber = count = seqLength = 0;
 while( ( line  = readLine(infile) ) != NULL )
     {  /*grab the protein ID after each <PRE> tag*/
     while( (token = nextWord(&line)) != NULL )
         {
    	    if( sameString(token,"<PRE>#"))
                 {  /*create a new xml file*/
                 token = nextWord(&line);
        	        dyStringAppend(proteinID, token);
                 token = lastWordInLine(line);
                 seqLength = atoi(token);
                 }
             if( sameString(token,"predicted") )
                 {   /*grab the number of transmembrane helices*/
                 token = lastWordInLine(line);
                 tmNumber = atoi(token);
                     if(tmNumber > 0)
                         {
                         outfile = createXMLFile(proteinID->string, path);
                         populateXMLFile(outfile, tmNumber, proteinID->string, path);
                         }
                 }
             if( sameString(token,"</PRE>") )
                 {  /*close the xml file*/
                 carefulClose(&outfile);
   	        dyStringClear(proteinID);
                 count = 0;
                 }
             if( sameString(token,"TMhelix") )
                 {
                     if( (token = nextWord(&line)) != NULL )
                          {  /*get the start*/
                          start = atoi(token);
                               if( (token = nextWord(&line)) != NULL  )
                                   end = atoi(token);
                          }
                     if( count == 0)
                         addCoordinatesToXMLFile(outfile, 1, start-1, "N-term", count);
                     count++;
                     addCoordinatesToXMLFile(outfile, start, end, "TM", count);
                     if( count == tmNumber && outfile != NULL )
                         {
                         addCoordinatesToXMLFile(outfile,end+1,seqLength,"C-term",count);
                         finishXMLFile(outfile, proteinID->string, seqLength);
                         }
                 }
         } /*end inner while*/
     }   /*end outer while*/
     freeMem(line);
     freeDyString(&proteinID);
 }
 
 int main(int argc, char** argv)
 {
 FILE *infile;
 struct dyString *path = newDyString(128);
 usage(argv);
     if(argv[2] != NULL)
         {
         dyStringAppend(path, argv[2]);
         if(!endsWith(path->string, "/"))
             dyStringAppend(path, "/");
         }
 infile = mustOpen(argv[1], "r");
 getTransFromFile(infile, path->string);
 carefulClose(&infile);
 freeDyString(&path);
 return 0;
 }