view BEDTools-Version-2.14.3/src/utils/genomeFile/genomeFile.h @ 0:dfcd8b6c1bda

Uploaded
author aaronquinlan
date Thu, 03 Nov 2011 10:25:04 -0400
parents
children
line wrap: on
line source

/*****************************************************************************
  genomeFile.h

  (c) 2009 - Aaron Quinlan
  Hall Laboratory
  Department of Biochemistry and Molecular Genetics
  University of Virginia
  aaronquinlan@gmail.com

  Licensed under the GNU General Public License 2.0 license.
******************************************************************************/
#ifndef GENOMEFILE_H
#define GENOMEFILE_H

#include <map>
#include <string>
#include <iostream>
#include <sstream>
#include <fstream>
#include <cstring>
#include <cstdio>
#include "api/BamReader.h"
#include "api/BamAux.h"
using namespace BamTools;

using namespace std;


// typedef for mapping b/w chrom name and it's size in b.p.
typedef map<string, int, std::less<string> > chromToSizes;


class GenomeFile {

public:

    // Constructor using a file
    GenomeFile(const string &genomeFile);
    
    // Constructor using a vector of BamTools RefVector
    GenomeFile(const RefVector &genome);

    // Destructor
    ~GenomeFile(void);

    // load a GENOME file into a map keyed by chrom. value is size of chrom.
    void loadGenomeFileIntoMap();

    int getChromSize(const string &chrom);  // return the size of a chromosome
    vector<string> getChromList();          // return a list of chrom names
    int getNumberOfChroms();                // return the number of chroms
    string getGenomeFileName();             // return the name of the genome file



private:
    string  _genomeFile;
    chromToSizes _chromSizes;
    vector<string> _chromList;
};

#endif /* GENOMEFILE_H */