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

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

/*****************************************************************************
  windowBed.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.
******************************************************************************/
#ifndef WINDOWBED_H
#define WINDOWBED_H

#include "api/BamReader.h"
#include "api/BamWriter.h"
#include "api/BamAux.h"
using namespace BamTools;

#include "bedFile.h"
#include <vector>
#include <iostream>
#include <fstream>

using namespace std;

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

public:

    // constructor
    BedWindow(string bedAFile, string bedBFile, int leftSlop, int rightSlop,
              bool anyHit, bool noHit, bool writeCount, bool strandWindows,
              bool matchOnSameStrand, bool matchOnDiffStrand, bool bamInput, bool bamOutput, bool isUncompressedBam);

    // destructor
    ~BedWindow(void);

private:

    string _bedAFile;
    string _bedBFile;
    bool _anyHit;
    bool _writeCount;
    int _leftSlop;
    int _rightSlop;
    bool _noHit;
    bool _strandWindows;
    bool _matchOnSameStrand;
    bool _matchOnDiffStrand;
    bool _bamInput;
    bool _bamOutput;
    bool  _isUncompressedBam;

    // instance of a bed file class.
    BedFile *_bedA, *_bedB;

    // methods
    void WindowIntersectBed();
    void WindowIntersectBam(string bamFile);
    void FindWindowOverlaps(const BED &a, vector<BED> &hits);
    bool FindOneOrMoreWindowOverlaps(const BED &a);
    void AddWindow(const BED &a, CHRPOS &fudgeStart, CHRPOS &fudgeEnd);

};
#endif /* WINDOWBED_H */