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

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

/*****************************************************************************
  mergeBed.h

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

  Licenced under the GNU General Public License 2.0 license.
******************************************************************************/
#include "bedFile.h"
#include <vector>
#include <algorithm>
#include <numeric>
#include <iostream>
#include <fstream>
#include <limits.h>
#include <stdlib.h>

using namespace std;


//************************************************
// Class methods and elements
//************************************************
class BedMerge {

public:

  // constructor
  BedMerge(string &bedFile, bool numEntries, 
           int maxDistance, bool forceStrand, 
           bool reportNames, bool reportScores, const string &scoreOp);

  // destructor
  ~BedMerge(void);

  void MergeBed();
  void MergeBedStranded();

private:

    string _bedFile;
    bool   _numEntries;
    bool   _forceStrand;
    bool   _reportNames;
    bool   _reportScores;
    string _scoreOp;
    int    _maxDistance;
    // instance of a bed file class.
    BedFile *_bed;

    void Report(string chrom, int start, int end, const vector<string> &names, const vector<string> &scores, int mergeCount);
    void ReportStranded(string chrom, int start, int end, const vector<string> &names, const vector<string> &scores, int mergeCount, string strand);
    void ReportMergedNames(const vector<string> &names);
    void ReportMergedScores(const vector<string> &scores);
    
};