Sequence Graphs


Introduction
Seq-graph: Graph on a Bioseq
ASN.1 Specification: seqres.asn
C Structures and Functions: objres.h


 Introduction

Analytical tools can attach results to Bioseqs in named collections as Seq-annots. This allows analytical programs developed from various sources to add information to a standard object (the Bioseq) and then let a single program designed for displaying a Bioseq and its associated information show the analytical results in an integrated fashion. Feature tables have been discussed previously, and can serve as the vehicle for results from restriction mapping programs, motif searching programs, open reading frame locators, and so on. Alignment programs and curator tools can produce Seq-annots containing Seq-aligns. In this chapter we present the third annotation type, a graph, which can be used to show properties like G+C content, surface potential, hydrophobicity, and so on.

Seq-graph: Graph on a Bioseq

A Seq-graph defines some continuous set of values over a defined interval on a Bioseq. It has slots for a title and a comment. The "loc" field defines the region of the Bioseq to which the graph applies. Titles can be given for the X (graph value) axis and/or the Y (sequence axis) of the graph. The "comp" slot allows a compression to supplied (i.e. how many residues are represented by a single value of the graph?). Compression is assumed to be one otherwise. Scaling values, a and b can be used to scale the values given in the Seq-graph to those displayed on the graph (by the formula "display value" = (a times "graph value") plus b). Finally, the number of values in the graph must be given (and should agree with the length of "loc" divided by "comp").

The graphs themselves can be coded as byte, integer, or real values. Each type defines the maximum and minimum values to show on the graph (no given values need necessarily reach the maximum or minimum) and the value along which to draw the X axis of the graph.

ASN.1 Specification: seqres.asn

--$Revision: 2.0 $

--**********************************************************************

--

--  NCBI Sequence Analysis Results (other than alignments)

--  by James Ostell, 1990

--

--**********************************************************************

 

NCBI-Seqres DEFINITIONS ::=

BEGIN

 

EXPORTS Seq-graph;

 

IMPORTS Seq-loc FROM NCBI-Seqloc;

 

--*** Sequence Graph ********************************

--*

--*   for values mapped by residue or range to sequence

--*

 

Seq-graph ::= SEQUENCE {

    title VisibleString OPTIONAL ,

    comment VisibleString OPTIONAL ,

    loc Seq-loc ,                       -- region this applies to

    title-x VisibleString OPTIONAL ,    -- title for x-axis

    title-y VisibleString OPTIONAL ,

    comp INTEGER OPTIONAL ,             -- compression (residues/value)

   a REAL OPTIONAL ,                   -- for scaling values

   b REAL OPTIONAL ,                   -- display = (a x value) + b

    numval INTEGER ,                    -- number of values in graph

    graph CHOICE {

        real Real-graph ,

        int Int-graph ,

        byte Byte-graph } }

 

Real-graph ::= SEQUENCE {

    max REAL ,                          -- top of graph

    min REAL ,                          -- bottom of graph

    axis REAL ,                         -- value to draw axis on

    values SEQUENCE OF REAL }

 

Int-graph ::= SEQUENCE {

    max INTEGER ,

    min INTEGER ,

    axis INTEGER ,

    values SEQUENCE OF INTEGER }

 

Byte-graph ::= SEQUENCE {              -- integer from 0-255

    max INTEGER ,

    min INTEGER ,

    axis INTEGER ,

    values OCTET STRING }

 

END

C Structures and Functions: objres.h

/*  objres.h

* ===========================================================================

*

*                            PUBLIC DOMAIN NOTICE                         

*               National Center for Biotechnology Information

*                                                                          

*  This software/database is a "United States Government Work" under the  

*  terms of the United States Copyright Act.  It was written as part of   

*  the author's official duties as a United States Government employee and

*  thus cannot be copyrighted.  This software/database is freely available

*  to the public for use. The National Library of Medicine and the U.S.   

*  Government have not placed any restriction on its use or reproduction. 

*                                                                          

*  Although all reasonable efforts have been taken to ensure the accuracy 

*  and reliability of the software and data, the NLM and the U.S.         

*  Government do not and cannot warrant the performance or results that   

*  may be obtained by using this software or data. The NLM and the U.S.   

*  Government disclaim all warranties, express or implied, including      

*  warranties of performance, merchantability or fitness for any particular

*  purpose.                                                                

*                                                                         

*  Please cite the author in any work or product based on this material.  

*

* ===========================================================================

*

* File Name:  objres.h

*

* Author:  James Ostell

*  

* Version Creation Date: 4/1/91

*

* $Revision: 2.0 $

*

* File Description:  Object manager interface for module NCBI-Seqres

*

* Modifications: 

* --------------------------------------------------------------------------

* Date    Name        Description of modification

* -------  ----------  -----------------------------------------------------

*

*

* ==========================================================================

*/

 

#ifndef _NCBI_Seqres_

#define _NCBI_Seqres_

 

#ifndef _ASNTOOL_

#include <asn.h>

#endif

#ifndef _NCBI_Seqloc_

#include <objloc.h>

#endif

 

#ifdef __cplusplus

extern "C" {

#endif

 

/*****************************************************************************

*

*   loader

*

*****************************************************************************/

extern Boolean SeqResAsnLoad PROTO((void));

 

/*****************************************************************************

*

*   internal structures for NCBI-SeqRes objects

*

*****************************************************************************/

 

/*****************************************************************************

*

*   SeqGraph

*

*****************************************************************************/

typedef struct seqgraph {

    CharPtr title,

        comment;

    SeqLocPtr loc;     /* SeqLoc */

    CharPtr titlex,

        titley;

    Uint1 flags[3];   /* [0]-comp used?,[1]-a,b used?, [2] graphtype */

    Int4 compl;                       /* 1=real, 2=int, 3=byte */

    FloatHi a, b;

    Int4 numval;

    DataVal max,

        min,

        axis;

    Pointer values;  /* real=array of FloatHi, int=array of Int4, */

    struct seqgraph PNTR next;              /* byte = ByteStore */

} SeqGraph, PNTR SeqGraphPtr;

 

SeqGraphPtr SeqGraphNew PROTO((void));

Boolean SeqGraphAsnWrite PROTO((SeqGraphPtr sgp, AsnIoPtr aip, AsnTypePtr atp));

SeqGraphPtr SeqGraphAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));

SeqGraphPtr SeqGraphFree PROTO((SeqGraphPtr sgp));

 

/*****************************************************************************

*

*   SeqGraphSet

*

*****************************************************************************/

Boolean SeqGraphSetAsnWrite PROTO((SeqGraphPtr sgp, AsnIoPtr aip, AsnTypePtr set, AsnTypePtr element));

SeqGraphPtr SeqGraphSetAsnRead PROTO((AsnIoPtr aip, AsnTypePtr set, AsnTypePtr element));

 

#ifdef __cplusplus

}

#endif

 

#endif

 

-