Mercurial > repos > aaronquinlan > multi_intersect
diff BEDTools-Version-2.14.3/src/slopBed/slopBed.cpp @ 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/slopBed/slopBed.cpp Thu Nov 03 10:25:04 2011 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,91 +0,0 @@ -/***************************************************************************** - slopBed.cpp - - (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. -******************************************************************************/ -#include "lineFileUtilities.h" -#include "slopBed.h" - - -BedSlop::BedSlop(string &bedFile, string &genomeFile, bool forceStrand, float leftSlop, float rightSlop, bool fractional) { - - _bedFile = bedFile; - _genomeFile = genomeFile; - _forceStrand = forceStrand; - _leftSlop = leftSlop; - _rightSlop = rightSlop; - _fractional = fractional; - - _bed = new BedFile(bedFile); - _genome = new GenomeFile(genomeFile); - - // get going, slop it up. - SlopBed(); -} - - -BedSlop::~BedSlop(void) { - -} - - -void BedSlop::SlopBed() { - - int lineNum = 0; - BED bedEntry, nullBed; // used to store the current BED line from the BED file. - BedLineStatus bedStatus; - - _bed->Open(); - bedStatus = _bed->GetNextBed(bedEntry, lineNum); - while (bedStatus != BED_INVALID) { - if (bedStatus == BED_VALID) { - if (_fractional == false) { - AddSlop(bedEntry, (int) _leftSlop, (int) _rightSlop); - } - else { - int leftSlop = (int) (_leftSlop * bedEntry.size()); - int rightSlop = (int) (_rightSlop * bedEntry.size()); - AddSlop(bedEntry, leftSlop, rightSlop); - } - _bed->reportBedNewLine(bedEntry); - bedEntry = nullBed; - } - bedStatus = _bed->GetNextBed(bedEntry, lineNum); - } - _bed->Close(); -} - - -void BedSlop::AddSlop(BED &bed, int leftSlop, int rightSlop) { - - // special handling if the BED entry is on the negative - // strand and the user cares about strandedness. - CHRPOS chromSize = _genome->getChromSize(bed.chrom); - - if ( (_forceStrand) && (bed.strand == "-") ) { - // inspect the start - if ( (static_cast<int>(bed.start) - rightSlop) > 0 ) bed.start -= rightSlop; - else bed.start = 0; - - // inspect the start - if ( (static_cast<int>(bed.end) + leftSlop) <= static_cast<int>(chromSize)) bed.end += leftSlop; - else bed.end = chromSize; - } - else { - // inspect the start - if ( (static_cast<int>(bed.start) - leftSlop) > 0) bed.start -= leftSlop; - else bed.start = 0; - - // inspect the end - if ( (static_cast<int>(bed.end) + rightSlop) <= static_cast<int>(chromSize)) bed.end += rightSlop; - else bed.end = chromSize; - } -} - -