source: tags/initial/ARBDB_COMPRESS/AC_sequence.cxx

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

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.1 KB
Line 
1#include <stdio.h>
2#include <stdlib.h>
3#include <memory.h>
4#include <malloc.h>
5#include <string.h>
6#include <ctype.h>
7
8#include <arbdb.h>
9#include <arbdbt.h>
10
11#include "ac.hxx"
12
13
14
15
16//********************************************************************
17//
18//              class AC_SEQUENCE : Konstruktor/Destruktor
19//
20//********************************************************************
21AC_SEQUENCE::AC_SEQUENCE(GBDATA *gb_data_i) {   // gb_data is nur Link
22//r     sequence                = seq;
23        gb_data                 = gb_data_i;
24        quality                 = 0;
25        seq_len                 = GB_read_string_count(gb_data);
26}
27
28AC_SEQUENCE::~AC_SEQUENCE(){
29
30}
31//*********************************************************************
32
33
34//*********************************************************************
35//      class AC_SEQUENCE::get_quality(GBDATA *gb_data)
36//
37//              bestimmt die Anzahl der Buchstaben einer Sequenz.
38//*********************************************************************
39long  AC_SEQUENCE::get_quality() {
40
41        char *runner;
42        long counter = 0;
43        char *temp_sequence  = GB_read_char_pntr(gb_data);
44        for(runner = temp_sequence; *runner; runner++) {
45                if(isalpha(*runner)) counter++;
46        }
47
48        return counter;
49} // end AC_SEQUENCE::get_quality(GBDATA *gb_data)
50//*********************************************************************
51
52
53//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
54//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
55//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
56
57
58//*********************************************************************
59//
60//              class AC_SEQUENCE_ALIGNED : Konstruktor/Destruktor
61//
62//*********************************************************************
63AC_SEQUENCE_ALIGNED::AC_SEQUENCE_ALIGNED(GBDATA *gb_data_i) : AC_SEQUENCE (gb_data_i) {
64        ac_dbdata_state = ALIGNED_SEQUENCES;
65}
66
67
68
69AC_SEQUENCE_ALIGNED::~AC_SEQUENCE_ALIGNED()  {
70
71}
72//*********************************************************************
73
74
75
76//*********************************************************************
77//      class AC_SEQUENCE_ALIGNED::get_distance()
78//
79//              liefert die Distanz zwischen der aktuellen Sequenz und
80//              der Referenzsequenz.
81//              Es muessen zwei vergleichbare Zeichen (= Buchstaben)
82//              aufeinandertreffen. Sind die Zeichen unterschiedlich,
83//              erhoeht sich die Distanz um + 1 .
84//
85//*********************************************************************
86double AC_SEQUENCE_ALIGNED::get_distance(AC_SEQUENCE *that)  {
87       
88        register long   distance, equals;
89        register char   *revptr, *seqptr;
90
91        revptr = that->sequence;                // Reverenzsequenz
92
93        seqptr  = GB_read_char_pntr(gb_data);
94
95//      seqptr = this->sequence;                // aktuelle Sequenz
96        distance = 0;
97        equals = 0;
98        register char   reg1, reg2;
99        for( ; (reg1 = *revptr) && (reg2 = *seqptr); revptr++, seqptr++ ) {
100                if( (!isalpha(reg1)) || !isalpha(reg2))  continue;
101                if (reg1==reg2) {
102                        equals++;
103                }else{
104                        distance++;
105                } // endif
106        } // endfor
107       
108        return distance/(distance + equals + 1.0);
109
110} // end AC_SEQUENCE_ALIGNED::get_distance()
111//*********************************************************************
112
113
114//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
115//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
116//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
117
118
119//*********************************************************************
120//
121//              class AC_SEQUENCE_UNALIGNED : Konstruktor/Destruktor
122//
123//*********************************************************************
124AC_SEQUENCE_UNALIGNED::AC_SEQUENCE_UNALIGNED(GBDATA *gb_data_i) : AC_SEQUENCE (gb_data_i) {
125        ac_dbdata_state = UNALIGNED_SEQUENCES;
126}
127
128
129
130AC_SEQUENCE_UNALIGNED::~AC_SEQUENCE_UNALIGNED()  {
131
132}
133//*********************************************************************
134
135
136
137//*********************************************************************
138//      class AC_SEQUENCE_ALIGNED::get_distance()
139//
140//              Dummyfunktion zum Compilerberuhigen
141//
142//
143//*********************************************************************
144double AC_SEQUENCE_UNALIGNED::get_distance(AC_SEQUENCE *that)  {
145
146        return 0;
147} // end AC_SEQUENCE_UNALIGNED::get_distance()
148//*********************************************************************
149
150
151
152
Note: See TracBrowser for help on using the repository browser.