// internal methods
private:
+ void ClearBuffer(vector<BamAlignment>& buffer);
bool GenerateSortedRuns(void);
bool HandleBufferContents(vector<BamAlignment>& buffer);
bool MergeSortedRuns(void);
// constructor
SortTool::SortToolPrivate::SortToolPrivate(SortTool::SortSettings* settings)
: m_settings(settings)
- , m_tempFilenameStub("bamtools.sort.temp.")
, m_numberOfRuns(0)
-{ }
+{
+ // set filename stub depending on inputfile path
+ // that way multiple sort runs don't trip on each other's temp files
+ if ( m_settings) {
+ size_t extensionFound = m_settings->InputBamFilename.find(".bam");
+ if (extensionFound != string::npos )
+ m_tempFilenameStub = m_settings->InputBamFilename.substr(0,extensionFound);
+ m_tempFilenameStub.append(".sort.temp.");
+ }
+}
// destructor
SortTool::SortToolPrivate::~SortToolPrivate(void) { }
// while data available
BamAlignment al;
- while ( inputReader.GetNextAlignmentCore(al) ) {
+ while ( inputReader.GetNextAlignmentCore(al)) {
// store alignments in buffer
buffer.push_back(al);
// while data available in temp files
BamAlignment al;
- while ( multiReader.GetNextAlignment(al) ) {
+ while ( multiReader.GetNextAlignmentCore(al) ) {
mergedWriter.SaveAlignment(al);
}