File: RNA3D_StructureData.hxx

package info (click to toggle)
arb 6.0.6-8
  • links: PTS, VCS
  • area: non-free
  • in suites: sid, trixie
  • size: 66,204 kB
  • sloc: ansic: 394,911; cpp: 250,290; makefile: 19,644; sh: 15,879; perl: 10,473; fortran: 6,019; ruby: 683; xml: 503; python: 53; awk: 32
file content (178 lines) | stat: -rw-r--r-- 5,003 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
// =============================================================== //
//                                                                 //
//   File      : RNA3D_StructureData.hxx                           //
//   Purpose   :                                                   //
//                                                                 //
//   Institute of Microbiology (Technical University Munich)       //
//   http://www.arb-home.de/                                       //
//                                                                 //
// =============================================================== //

#ifndef RNA3D_STRUCTUREDATA_HXX
#define RNA3D_STRUCTUREDATA_HXX

#ifndef ARBDB_H
#include <arbdb.h>
#endif

#define SAI    0
#define SEARCH 1

#define SSU_16S 1
#define LSU_23S 2
#define LSU_5S  3

#define _1PNU  1
#define _1VOR  2
#define _1C2W  3

// DisplayLists
enum {
    STRUCTURE_BACKBONE = 300,
    STRUCTURE_BACKBONE_CLR,
    HELIX_NUMBERS,
    HELIX_NUMBERS_POINTS,
    HELIX_A, HELIX_G, HELIX_C, HELIX_U,
    UNPAIRED_HELIX_A, UNPAIRED_HELIX_G, UNPAIRED_HELIX_C, UNPAIRED_HELIX_U,
    NON_HELIX_A, NON_HELIX_G, NON_HELIX_C, NON_HELIX_U,
    STRUCTURE_POS,
    STRUCTURE_POS_ANCHOR,
    MAP_SPECIES_BASE_DIFFERENCE,
    MAP_SPECIES_BASE_DIFFERENCE_POS, MAP_SPECIES_BASE_DIFFERENCE_POS_ANCHOR,
    MAP_SPECIES_BASE_A, MAP_SPECIES_BASE_G, MAP_SPECIES_BASE_C, MAP_SPECIES_BASE_U,
    MAP_SPECIES_DELETION, MAP_SPECIES_MISSING,
    MAP_SPECIES_INSERTION_POINTS, MAP_SPECIES_INSERTION_BASES, MAP_SPECIES_INSERTION_BASES_ANCHOR,
    MAP_SAI_TO_STRUCTURE,
    MAP_SEARCH_STRINGS_TO_STRUCTURE, MAP_SEARCH_STRINGS_BACKBONE,
    ECOLI_CURSOR_POSITION,
    ECOLI_TERTIARY_INTRACTION_PSEUDOKNOTS,
    ECOLI_TERTIARY_INTRACTION_TRIPLE_BASES
};

struct Struct2Dplus3D {
    char base;
    char mask;
    char code;
    int pos;
    int helixNr;
    float x;
    float y;
    float z;
    struct Struct2Dplus3D *next;
};

struct Struct2Dinfo {
    char base;    // Nucleotide
    char mask;    // Helix mask [..<<<..>>>]
    char code;    // Helix code (H)elix (N)on-helix (S)tart (E)nd
    int  pos;     // Base Position
    int  helixNr;  // Helix Number
    struct Struct2Dinfo *next;
};

struct Struct3Dinfo {
    float x;
    float y;
    float z;
    char base;
    int pos;
    struct Struct3Dinfo *next;
};

struct HelixNrInfo {
    float x, y, z;
    int helixNr;
    struct HelixNrInfo *next;
};

struct CurrSpecies {
    float x;
    float y;
    float z;
    int pos;
    char base;
    struct CurrSpecies *next;
};

struct Insertions {
    int pos;
    char base;
    struct Insertions *next;
};

struct Vector3;

class ED4_sequence_terminal;
class BI_ecoli_ref;
struct ED4_plugin_host;

struct Structure3D : virtual Noncopyable {
    Vector3 *strCen;

    int iInterval;
    int iMapSAI;
    int iMapSearch;
    int iMapEnable;
    int iStartPos, iEndPos;
    int iEColiStartPos, iEColiEndPos;
    int iTotalSubs, iTotalDels, iTotalIns;
    int LSU_molID;
    int HelixBase; // to create display lists storing helix information

    static GBDATA         *gb_main;
    BI_ecoli_ref          *EColiRef;
    ED4_plugin_host&  Host;

    OpenGLGraphics *GRAPHICS; // not really a good place - it better should be passed from callers

    Structure3D(ED4_plugin_host& host_);
    ~Structure3D();

    void ReadCoOrdinateFile();
    void StoreCoordinates(float x, float y, float z, char base, unsigned int pos);

    void GetSecondaryStructureInfo();
    void Store2Dinfo(char *info, int pos, int helixNr);
    void PrepareSecondaryStructureData();

    void Combine2Dand3DstructureInfo();
    void Store2D3Dinfo(Struct2Dinfo *s2D, Struct3Dinfo *s3D);

    static int FindTypeOfRNA();
    void DeleteOldMoleculeData();

    void GenerateMoleculeSkeleton();
    void ComputeBasePositions();

    void PositionsToCoordinatesDispList(int listID, int *pos, int len);
    void PointsToQuads(float x, float y, float z);
    void StoreHelixNrInfo(float x, float y, float z, int helixNr);

    void GenerateDisplayLists();
    void GenerateHelixDispLists(int HELIX_NR_ID, int HELIX_NR);
    void GenerateHelixNrDispList(int startHx, int endHx);
    void GenerateSecStructureHelixRegions();
    void GenerateSecStructureNonHelixRegions();
    void GenerateSecStructureUnpairedHelixRegions();

    void GenerateTertiaryInteractionsDispLists();

    void MapCurrentSpeciesToEcoliTemplate(AW_root *awr);
    void StoreCurrSpeciesDifference(char base, int pos);
    void DeleteOldSpeciesData();
    void BuildDisplayList(int listID, int *pos, int len);
    void GenerateBaseDifferenceDisplayList();
    void GenerateBaseDifferencePositionDisplayList();
    void StoreInsertions(char base, int pos);
    void DeleteOldInsertionData();
    void GenerateInsertionDisplayList();

    void GenerateCursorPositionDispList(long pos);

    void MapSaiToEcoliTemplate();
    void MapSearchStringsToEcoliTemplate(AW_root *awr);
};

#else
#error RNA3D_StructureData.hxx included twice
#endif