File: ChrIndex2GeneName.cpp

package info (click to toggle)
perm 0.4.0-8
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 976 kB
  • sloc: cpp: 13,499; makefile: 98; sh: 12
file content (64 lines) | stat: -rw-r--r-- 1,355 bytes parent folder | download | duplicates (5)
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
#include "stdafx.h"
#include "ChrIndex2GeneName.h"

CGene::CGene(void)
{
    ;
}
CGene::~CGene(void)
{
    ;
}

CGene::CGene(string name, unsigned int startIndex)
{
    this->name = name;
    this->startIndex = startIndex;
    this->isValid = true;
}

CGene::CGene(string name, unsigned int startIndex, bool isValid)
{
    this->name = name;
    this->startIndex = startIndex;
    this->isValid = isValid;
}

bool CGene::operator<(const CGene &other) const
{
    return (this->startIndex < other.startIndex);
}

bool CGene::operator==(const CGene &other) const
{
    return(other.name == this->name);
}

ChrIndex2GeneName::ChrIndex2GeneName(void)
{
    this->table.clear();
}

ChrIndex2GeneName::~ChrIndex2GeneName(void)
{

}

int ChrIndex2GeneName::insert(string name, unsigned int startIndex)
{
    CGene g(name, startIndex);
    this->table.push_back(g);
    return((int)this->table.size());
}

CGene ChrIndex2GeneName::query(unsigned int chrIndex)
{
    CGene g("search", chrIndex);
    vector<CGene>::iterator gIt = upper_bound(this->table.begin(), this->table.end(), g);
    if (gIt >= (this->table.begin() + 1) && (gIt - 1)->startIndex <= chrIndex) { // the gene before upper bound
        return(CGene((gIt - 1)->name, chrIndex - (gIt - 1)->startIndex, true));
    } else {
        return(CGene(string("Null_Region:"), chrIndex, false));
    }
}