libStatGen Software  1
Chromosome.cpp
1 #include <cassert>
2 #include "Chromosome.h"
3 
4 Chromosome::Chromosome(GenomeSequence* gs, unsigned int chromosomeIndex)
5 {
6  assert(gs);
7  assert(chromosomeIndex < (unsigned int)gs->getChromosomeCount());
8 
9  this->gs = gs;
10  this->chromosomeIndex = chromosomeIndex;
11  this->offset = gs->getChromosomeStart((int)chromosomeIndex);
12  this->chromosomeSize = gs->getChromosomeSize((int)chromosomeIndex);
13 }
14 
15 Chromosome::Chromosome(GenomeSequence* gs, const char* chromosomeName)
16 {
17  assert(gs);
18  this->gs = gs;
19 
20  this->chromosomeIndex = gs->getChromosome(chromosomeName);
21  assert(chromosomeIndex != INVALID_CHROMOSOME_INDEX);
22 
23  this->offset = gs->getChromosomeStart((int)chromosomeIndex);
24  this->chromosomeSize = gs->getChromosomeSize((int)chromosomeIndex);
25 }
26 
27 Chromosome::Chromosome(const char* genomseSequenceFileName, unsigned int chromosomeIndex, bool isColorSpace)
28 {
29  std::string s(genomseSequenceFileName);
30  if (this->gs) delete gs;
31  gs = new GenomeSequence;
32  assert(gs);
33  gs->setReferenceName(s);
34  assert(!gs->open(isColorSpace));
35  this->chromosomeIndex = chromosomeIndex;
36  this->offset = gs->getChromosomeStart((int)chromosomeIndex);
37  this->chromosomeSize = gs->getChromosomeSize((int)chromosomeIndex);
38 }
39 
40 Chromosome::Chromosome(const std::string& genomseSequenceFileName, unsigned int chromosomeIndex, bool isColorSpace)
41 {
42  if (this->gs) delete gs;
43  gs = new GenomeSequence;
44  assert(gs);
45  gs->setReferenceName(genomseSequenceFileName);
46  assert(!gs->open(isColorSpace));
47  this->chromosomeIndex = chromosomeIndex;
48  this->offset = gs->getChromosomeStart((int)chromosomeIndex);
49  this->chromosomeSize = gs->getChromosomeSize((int)chromosomeIndex);
50 }
bool setReferenceName(std::string referenceFilename)
set the reference name that will be used in open()
genomeIndex_t getChromosomeStart(int chromosomeIndex) const
given a chromosome, return the genome base it starts in
int getChromosomeCount() const
Return the number of chromosomes in the genome.
Create/Access/Modify/Load Genome Sequences stored as binary mapped files.
int getChromosome(genomeIndex_t position) const
given a whole genome index, get the chromosome it is located in
genomeIndex_t getChromosomeSize(int chromosomeIndex) const
given a chromosome, return its size in bases
bool open(bool isColorSpace=false, int flags=O_RDONLY)
open the reference specified using GenomeSequence::setReferenceName