source: tags/cvs_2_svn/ARBDB_COMPRESS/AC_sequence.cxx

Last change on this file was 5156, checked in by westram, 16 years ago
  • indented
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.5 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    long        distance, equals;
89    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    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.