source: tags/initial/ALIV3/a3_ptree.hxx

Last change on this file was 2, checked in by oldcode, 24 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.2 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.