Mercurial > repos > aaronquinlan > multi_intersect
diff BEDTools-Version-2.14.3/src/pairToBed/pairToBed.h @ 1:bec36315bd12 default tip
Deleted selected files
author | aaronquinlan |
---|---|
date | Sat, 19 Nov 2011 14:17:03 -0500 |
parents | dfcd8b6c1bda |
children |
line wrap: on
line diff
--- a/BEDTools-Version-2.14.3/src/pairToBed/pairToBed.h Thu Nov 03 10:25:04 2011 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,161 +0,0 @@ -/***************************************************************************** - pairToBed.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 INTERSECTBED_H -#define INTERSECTBED_H - -#include "api/BamReader.h" -#include "api/BamWriter.h" -#include "api/BamAux.h" -using namespace BamTools; - -#include "bedFile.h" -#include "bedFilePE.h" -#include <vector> -#include <iostream> -#include <fstream> - -using namespace std; - - - -/************************************************** -Helper function protoypes -**************************************************/ -void IsCorrectMappingForBEDPE (const BamAlignment &bam, const RefVector &refs, BEDPE &a); - - - -//************************************************ -// Class methods and elements -//************************************************ -class BedIntersectPE { - -public: - - // constructor - BedIntersectPE(string bedAFilePE, string bedBFile, float overlapFraction, - string searchType, bool sameStrand, bool diffStrand, bool bamInput, bool bamOutput, bool uncompressedBam, bool useEditDistance); - // destructor - ~BedIntersectPE(void); - - void FindOverlaps(const BEDPE &, vector<BED> &hits1, vector<BED> &hits2, const string &type); - - bool FindOneOrMoreOverlaps(const BEDPE &, const string &type); - - void FindSpanningOverlaps(const BEDPE &a, vector<BED> &hits, const string &type); - bool FindOneOrMoreSpanningOverlaps(const BEDPE &a, const string &type); - - void IntersectBedPE(); - void IntersectBamPE(string bamFile); - - void DetermineBedPEInput(); - -private: - - string _bedAFilePE; - string _bedBFile; - float _overlapFraction; - string _searchType; - bool _sameStrand; - bool _diffStrand; - bool _useEditDistance; - bool _bamInput; - bool _bamOutput; - bool _isUncompressedBam; - - // instance of a paired-end bed file class. - BedFilePE *_bedA; - - // instance of a bed file class. - BedFile *_bedB; - - inline - void ConvertBamToBedPE(const BamAlignment &bam1, const BamAlignment &bam2, const RefVector &refs, BEDPE &a) { - - // initialize BEDPE variables - a.start1 = a.start2 = a.end1 = a.end2 = -1; - a.chrom1 = a.chrom2 = "."; - a.strand1 = a.strand2 = '.'; - uint32_t editDistance1, editDistance2; - editDistance1 = editDistance2 = 0; - - // take the qname from end 1. - a.name = bam1.Name; - - // end 1 - if (bam1.IsMapped()) { - a.chrom1 = refs.at(bam1.RefID).RefName; - a.start1 = bam1.Position; - a.end1 = bam1.GetEndPosition(false, false); - a.strand1 = "+"; - if (bam1.IsReverseStrand()) a.strand1 = "-"; - - // extract the edit distance from the NM tag - // if possible. otherwise, complain. - if (_useEditDistance == true) { - if (bam1.GetTag("NM", editDistance1) == false) { - cerr << "The edit distance tag (NM) was not found in the BAM file. Please disable -ed. Exiting\n"; - exit(1); - } - } - } - - // end 2 - if (bam2.IsMapped()) { - a.chrom2 = refs.at(bam2.RefID).RefName; - a.start2 = bam2.Position; - a.end2 = bam2.GetEndPosition(false, false); - a.strand2 = "+"; - if (bam2.IsReverseStrand()) a.strand2 = "-"; - - // extract the edit distance from the NM tag - // if possible. otherwise, complain. - if (_useEditDistance == true) { - if (bam2.GetTag("NM", editDistance2) == false) { - cerr << "The edit distance tag (NM) was not found in the BAM file. Please disable -ed. Exiting\n"; - exit(1); - } - } - } - - // swap the ends if necessary - if ( a.chrom1 > a.chrom2 || ((a.chrom1 == a.chrom2) && (a.start1 > a.start2)) ) { - swap(a.chrom1, a.chrom2); - swap(a.start1, a.start2); - swap(a.end1, a.end2); - swap(a.strand1, a.strand2); - } - - // compute the minimum mapping quality b/w the two ends of the pair. - a.score = "0"; - if (_useEditDistance == false) { - if (bam1.IsMapped() == true && bam2.IsMapped() == true) - a.score = ToString(min(bam1.MapQuality, bam2.MapQuality)); - } - // BEDPE using edit distance - else { - if (bam1.IsMapped() == true && bam2.IsMapped() == true) - a.score = ToString((int) (editDistance1 + editDistance2)); - else if (bam1.IsMapped() == true) - a.score = ToString((int) editDistance1); - else if (bam2.IsMapped() == true) - a.score = ToString((int) editDistance2); - } - }; - - inline - void ProcessBamBlock (const BamAlignment &bam1, const BamAlignment &bam2, - const RefVector &refs, - BamWriter &writer); -}; - -#endif /* PEINTERSECTBED_H */