cddalignview.h
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:7k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: cddalignview.h,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 20:57:33  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.1
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: cddalignview.h,v 1000.0 2003/10/29 20:57:33 gouriano Exp $
  10. * ===========================================================================
  11. *
  12. *                            PUBLIC DOMAIN NOTICE
  13. *               National Center for Biotechnology Information
  14. *
  15. *  This software/database is a "United States Government Work" under the
  16. *  terms of the United States Copyright Act.  It was written as part of
  17. *  the author's official duties as a United States Government employee and
  18. *  thus cannot be copyrighted.  This software/database is freely available
  19. *  to the public for use. The National Library of Medicine and the U.S.
  20. *  Government have not placed any restriction on its use or reproduction.
  21. *
  22. *  Although all reasonable efforts have been taken to ensure the accuracy
  23. *  and reliability of the software and data, the NLM and the U.S.
  24. *  Government do not and cannot warrant the performance or results that
  25. *  may be obtained by using this software or data. The NLM and the U.S.
  26. *  Government disclaim all warranties, express or implied, including
  27. *  warranties of performance, merchantability or fitness for any particular
  28. *  purpose.
  29. *
  30. *  Please cite the author in any work or product based on this material.
  31. *
  32. * ===========================================================================
  33. *
  34. * Authors:  Paul Thiessen
  35. *
  36. * File Description:
  37. *      C interface header for cddalignview as function call
  38. *
  39. * ===========================================================================
  40. */
  41. #ifndef CDDALIGNVIEW__H
  42. #define CDDALIGNVIEW__H
  43. #ifdef __cplusplus
  44. #include <corelib/ncbistd.hpp>
  45. #include <corelib/ncbistre.hpp>
  46. extern "C" {
  47. #endif
  48. /* output option bit flags (can be or'ed together) */
  49. #define CAV_TEXT            0x01    /* plain-text output */
  50. #define CAV_HTML            0x02    /* HTML output */
  51. #define CAV_LEFTTAILS       0x04    /* show left (N-terminal) tails */
  52. #define CAV_RIGHTTAILS      0x08    /* show right (C-terminal) tails */
  53. #define CAV_CONDENSED       0x10    /* collapse incompletely aligned columns (text/HTML only) */
  54. #define CAV_DEBUG           0x20    /* send debug/trace messages to stderr */
  55. #define CAV_HTML_HEADER     0x40    /* include HTML header for complete page */
  56. #define CAV_SHOW_IDENTITY   0x80    /* for HTML, show identity rather than using bit cutoff */
  57. #define CAV_FASTA           0x0100  /* FASTA text output */
  58. #define CAV_FASTA_LOWERCASE 0x0200  /* make unaligned residues lower case in FASTA output */
  59. #define CAV_ANNOT_BOTTOM    0x0400  /* put annotations on bottom; default is on top */
  60. /* data structure for holding alignment feature/annotation info */
  61. typedef struct {
  62.     int nLocations;             /* how many residues are marked */
  63.     int *locations;             /* indexes on master (numbered from 0) to mark */
  64.     const char *shortName;      /* short name (displayed in title column) */
  65.     const char *description;    /* optional description, displayed in legend */
  66.     char featChar;              /* character to use in annotation line */
  67. } AlignmentFeature;
  68. /*
  69.  * The main function call:
  70.  *  - 'asnDataBlock' is a pointer to in-memory asn data (can be binary or text).
  71.  *    This memory block will *not* be overwritten or freed by this function.
  72.  *  - 'options' specifies the desired output, e.g. "CAV_HTML | CAV_LEFTTAILS"
  73.  *    to get HTML output with left (N-terminal) sequence tails shown
  74.  *  - 'paragraphWidth' is the size of the "paragraph" chunks of the alignment
  75.  *  - 'conservationThreshhold' is the information content bit score above
  76.  *    which a column is marked as conserved in the HTML display
  77.  *  - 'title' if non-NULL is used as the <TITLE> of the HTML output when
  78.  *    CAV_HTML_HEADER is used
  79.  *  - 'nFeatures' is the number of feature annotations
  80.  *  - features is an array of features (See AlignmentFeature struct above)
  81.  *
  82.  * The output (of whatever type) will be placed on the standard output stream.
  83.  *
  84.  * Upon success, will return CAV_SUCCESS (see below). Otherwise, will return
  85.  * one of the given error values to give some indication of what went wrong.
  86.  */
  87. extern int CAV_DisplayMultiple(
  88.     const void *asnDataBlock,
  89.     unsigned int options,
  90.     unsigned int paragraphWidth,
  91.     double conservationThreshhold,
  92.     const char *title,
  93.     int nFeatures,
  94.     const AlignmentFeature *features
  95. );
  96. /* error values returned by CAV_DisplayMultiple() */
  97. #define CAV_SUCCESS             0
  98. #define CAV_ERROR_BAD_PARAMS    1   /* incorrect/incompatible options */
  99. #define CAV_ERROR_BAD_ASN       2   /* unrecognized asn data */
  100. #define CAV_ERROR_SEQUENCES     3   /* error parsing sequence data */
  101. #define CAV_ERROR_ALIGNMENTS    4   /* error parsing alignment data */
  102. #define CAV_ERROR_PAIRWISE      5   /* error parsing a master/slave pairwise alignment */
  103. #define CAV_ERROR_DISPLAY       6   /* error creating display structure */
  104. #ifdef __cplusplus
  105. }
  106. // a C++ version of the function, that places output on the given streams.
  107. extern int CAV_DisplayMultiple(
  108.     const void *asnDataBlock,
  109.     unsigned int options,
  110.     unsigned int paragraphWidth,
  111.     double conservationThreshhold,
  112.     const char *title,
  113.     int nFeatures,
  114.     const AlignmentFeature *features,
  115.     ncbi::CNcbiOstream *outputStream,       // regular program output (alignments); cout if NULL
  116.     ncbi::CNcbiOstream *diagnosticStream    // diagnostic messages/errors; cerr if NULL
  117. );
  118. #endif
  119. #endif /* CDDALIGNVIEW__H */
  120. /*
  121. * ---------------------------------------------------------------------------
  122. * $Log: cddalignview.h,v $
  123. * Revision 1000.0  2003/10/29 20:57:33  gouriano
  124. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.1
  125. *
  126. * Revision 1.1  2003/03/19 19:05:31  thiessen
  127. * move again
  128. *
  129. * Revision 1.1  2003/03/19 05:33:43  thiessen
  130. * move to src/app/cddalignview
  131. *
  132. * Revision 1.12  2003/03/18 22:35:06  thiessen
  133. * add C++ version of function that takes streams for output
  134. *
  135. * Revision 1.11  2003/02/03 17:52:04  thiessen
  136. * move CVS Log to end of file
  137. *
  138. * Revision 1.10  2003/01/21 18:01:07  thiessen
  139. * add condensed alignment display
  140. *
  141. * Revision 1.9  2003/01/21 12:33:17  thiessen
  142. * move includes into src dir
  143. *
  144. * Revision 1.8  2002/11/08 19:38:16  thiessen
  145. * add option for lowercase unaligned in FASTA
  146. *
  147. * Revision 1.7  2002/02/12 13:06:47  thiessen
  148. * annot description optional
  149. *
  150. * Revision 1.6  2002/02/08 19:53:59  thiessen
  151. * add annotation to text/HTML displays
  152. *
  153. * Revision 1.5  2001/05/17 14:48:52  lavr
  154. * Typos corrected
  155. *
  156. * Revision 1.4  2001/03/02 01:19:29  thiessen
  157. * add FASTA output
  158. *
  159. * Revision 1.3  2001/02/15 19:23:07  thiessen
  160. * add identity coloring
  161. *
  162. * Revision 1.2  2001/02/14 16:05:46  thiessen
  163. * add block and conservation coloring to HTML display
  164. *
  165. * Revision 1.1  2001/01/29 18:13:41  thiessen
  166. * split into C-callable library + main
  167. *
  168. */