source: tags/arb_5.2/ALIV3/a3_ptree.hxx

Last change on this file was 5828, checked in by westram, 15 years ago
  • changed ulong→ULONG and uint→UINT (ulong/uint are missing under OSX)
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.8 KB
Line 
1// -----------------------------------------------------------------------------
2
3#ifndef _A3_PTREE_HXX
4#define _A3_PTREE_HXX
5
6// -----------------------------------------------------------------------------
7//  Include-Dateien
8// -----------------------------------------------------------------------------
9
10#include "a3_seq.hxx"
11
12// -----------------------------------------------------------------------------
13//  Datentypen
14// -----------------------------------------------------------------------------
15
16typedef enum
17{
18    P_ADENIN  = 0x0001,
19    P_CYTOSIN = 0x0002,
20    P_GUANIN  = 0x0004,
21    P_URACIL  = 0x0008,
22    P_ONE     = 0x0010,
23    P_ANY     = 0x0020,
24    P_FINISH  = 0x0040,
25
26    N_ADENIN  = 0x0080,
27    N_CYTOSIN = 0x0100,
28    N_GUANIN  = 0x0200,
29    N_URACIL  = 0x0400,
30    N_ONE     = 0x0800,
31    N_ANY     = 0x1000
32}
33Mask;
34
35struct PtNode   // Struktur eines Baumknotens
36{
37    Mask        mask;           // Maske fuer die Positionen und Verweise
38    int        *position;       // Positionsfeld
39    PtNode    **next;           // Verweise auf darueberliegende Knoten
40
41                PtNode      ( void )            // Konstruktor fuer leeren Knoten
42                {
43                    mask     = (Mask)0;
44                    position = NULL;
45                    next     = NULL;
46                };
47                PtNode      ( str     seq,      // Konstruktor fur Baum aus Sequenz
48                              int    *pos,      // Basenpositionen
49                              int     num,      // Anzahl der Basenpositionen
50                              int     rec );    // Rekursionsstufe
51                PtNode      ( PtNode &node );   // Kopierkonstruktor
52               ~PtNode      ( void );           // Destruktor
53
54    int         NumOfPos    ( void );           // Anzahl der Positionen
55    int         IndexOfPos  ( Mask   base );    // Index einer Position
56    int         NumOfNext   ( void );           // Anzahl der Verzweigungen
57    int         IndexOfNext ( Mask   base );    // Index einer verzweigung
58    void        Dump        ( void );           // Ausgabe des Baums elementeweise
59    void        Show        ( int    rec,       // Ausgabe des Baums
60                              int   *where );
61};
62
63class Postree   // Klasse fuer einen Positionsbaum einer RNS-Sequenzen
64{
65    private:
66
67    Sequence    sequence;   // Die zugehoerige Sequenz
68    PtNode     *topnode;    // Oberster Knoten des Positionsbaumes
69
70    public:
71
72            Postree         ( void );                   // Konstruktor fuer leeren Positionsbaum
73
74            Postree         ( str        seq );         // Konstruktor fuer Positionsbaum
75                                                        // einer vorgegebenen Sequenz
76
77            Postree         ( UINT       len );         // Konstruktor fuer Positionsbaum einer
78                                                        // Zufallssequenz mit vorgegebener Laenge
79
80            Postree         ( str        file,          // Konstruktor fuer Positionsbaum
81                              UINT       line );        // einer Sequenz aus einer Datei
82                                                        // mit vorgegebener Zeilennummer
83
84            Postree         ( Postree   &postree );     // Kopierkonstruktor
85
86            ~Postree        ( void );                   // Destruktor
87
88    int     SeqLen          ( void );                   // Liefert Laenge der kompremierten Sequenz
89   
90    void    Set             ( str        seq );         // Positionsbaum fuer neue Sequenz anlegen
91
92    int     Find            ( str        seq,           // Sucht nach dem exakten Vorkommen einer
93                              int      **pos,           // Teilsequenz und liefert deren moegliche
94                              int       *anz,           // Positionen und Laenge zurueck
95                              int       *len,
96                              int        sort );
97
98    int     OneMismatch     ( str        seq,           // Sucht nach dem Vorkommen einer Teil-
99                              int      **pos,           // sequenz, wobei 1 Fehler toleriert wird
100                              int       *anz,           // und liefert deren moegliche Positionen
101                              int       *len );         // und Laenge zurueck
102
103    int     OneSubstitution ( str        seq,           // Sucht nach dem Vorkommen einer Teil-
104                              int      **pos,           // sequenz, wobei 1 Substitituton toleriert
105                              int       *anz,           // wird und liefert deren moegliche Positionen
106                              int       *len );         // und Laenge zurueck
107
108    int     OneDeletion     ( str        seq,           // Sucht nach dem Vorkommen einer Teil-
109                              int      **pos,           // sequenz, wobei 1 Deletion toleriert
110                              int       *anz,           // wird und liefert deren moegliche Positionen
111                              int       *len );         // und Laenge zurueck
112
113    int     OneInsertion    ( str        seq,           // Sucht nach dem Vorkommen einer Teil-
114                              int      **pos,           // sequenz, wobei 1 Insertion toleriert
115                              int       *anz,           // wird und liefert deren moegliche Positionen
116                              int       *len );         // und Laenge zurueck
117   
118    void    Dump            ( void );                   // Gibt die Elemente eines Positionsbaum aus
119
120    void    Show            ( int        mode );        // Zeigt einen Positionsbaum an
121                                                        // 0 Baum, 1 Sequenz, 2 beides
122};
123
124// -----------------------------------------------------------------------------
125
126#endif
127
128// -----------------------------------------------------------------------------
Note: See TracBrowser for help on using the repository browser.