本文整理汇总了C++中UNIQUE_PTR_MOVE函数的典型用法代码示例。如果您正苦于以下问题:C++ UNIQUE_PTR_MOVE函数的具体用法?C++ UNIQUE_PTR_MOVE怎么用?C++ UNIQUE_PTR_MOVE使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了UNIQUE_PTR_MOVE函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: openFileAtPosition
static ::libmaus::aio::CheckedInputStream::unique_ptr_type openFileAtPosition(std::string const & filename, uint64_t const pos)
{
::libmaus::aio::CheckedInputStream::unique_ptr_type istr(new ::libmaus::aio::CheckedInputStream(filename));
istr->seekg(pos,std::ios::beg);
return UNIQUE_PTR_MOVE(istr);
}
示例2: bamclipreinsert
int bamclipreinsert(::libmaus2::util::ArgInfo const & arginfo)
{
if ( isatty(STDIN_FILENO) )
{
::libmaus2::exception::LibMausException se;
se.getStream() << "Refusing to read binary data from terminal, please redirect standard input to pipe or file." << std::endl;
se.finish();
throw se;
}
if ( isatty(STDOUT_FILENO) )
{
::libmaus2::exception::LibMausException se;
se.getStream() << "Refusing write binary data to terminal, please redirect standard output to pipe or file." << std::endl;
se.finish();
throw se;
}
int const level = libmaus2::bambam::BamBlockWriterBaseFactory::checkCompressionLevel(arginfo.getValue<int>("level",getDefaultLevel()));
int const verbose = arginfo.getValue<int>("verbose",getDefaultVerbose());
::libmaus2::bambam::BamDecoder dec(std::cin,false);
::libmaus2::bambam::BamHeader const & header = dec.getHeader();
std::string const headertext(header.text);
// add PG line to header
std::string const upheadtext = ::libmaus2::bambam::ProgramHeaderLineSet::addProgramLine(
headertext,
"bamclipreinsert", // ID
"bamclipreinsert", // PN
arginfo.commandline, // CL
::libmaus2::bambam::ProgramHeaderLineSet(headertext).getLastIdInChain(), // PP
std::string(PACKAGE_VERSION) // VN
);
// construct new header
libmaus2::bambam::BamHeader const uphead(upheadtext);
/*
* start index/md5 callbacks
*/
std::string const tmpfilenamebase = arginfo.getValue<std::string>("tmpfile",arginfo.getDefaultTmpFileName());
std::string const tmpfileindex = tmpfilenamebase + "_index";
::libmaus2::util::TempFileRemovalContainer::addTempFile(tmpfileindex);
std::string md5filename;
std::string indexfilename;
std::vector< ::libmaus2::lz::BgzfDeflateOutputCallback * > cbs;
::libmaus2::lz::BgzfDeflateOutputCallbackMD5::unique_ptr_type Pmd5cb;
if ( arginfo.getValue<unsigned int>("md5",getDefaultMD5()) )
{
if ( arginfo.hasArg("md5filename") && arginfo.getUnparsedValue("md5filename","") != "" )
md5filename = arginfo.getUnparsedValue("md5filename","");
else
std::cerr << "[V] no filename for md5 given, not creating hash" << std::endl;
if ( md5filename.size() )
{
::libmaus2::lz::BgzfDeflateOutputCallbackMD5::unique_ptr_type Tmd5cb(new ::libmaus2::lz::BgzfDeflateOutputCallbackMD5);
Pmd5cb = UNIQUE_PTR_MOVE(Tmd5cb);
cbs.push_back(Pmd5cb.get());
}
}
libmaus2::bambam::BgzfDeflateOutputCallbackBamIndex::unique_ptr_type Pindex;
if ( arginfo.getValue<unsigned int>("index",getDefaultIndex()) )
{
if ( arginfo.hasArg("indexfilename") && arginfo.getUnparsedValue("indexfilename","") != "" )
indexfilename = arginfo.getUnparsedValue("indexfilename","");
else
std::cerr << "[V] no filename for index given, not creating index" << std::endl;
if ( indexfilename.size() )
{
libmaus2::bambam::BgzfDeflateOutputCallbackBamIndex::unique_ptr_type Tindex(new libmaus2::bambam::BgzfDeflateOutputCallbackBamIndex(tmpfileindex));
Pindex = UNIQUE_PTR_MOVE(Tindex);
cbs.push_back(Pindex.get());
}
}
std::vector< ::libmaus2::lz::BgzfDeflateOutputCallback * > * Pcbs = 0;
if ( cbs.size() )
Pcbs = &cbs;
/*
* end md5/index callbacks
*/
::libmaus2::bambam::BamWriter::unique_ptr_type writer(new ::libmaus2::bambam::BamWriter(std::cout,uphead,level,Pcbs));
libmaus2::bambam::BamAuxFilterVector bafv;
// bafv.set('z','z');
// std::vector<uint8_t> R(8);
// std::string const zz("zz");
libmaus2::bambam::BamAlignment & algn = dec.getAlignment();
uint64_t c = 0;
libmaus2::autoarray::AutoArray < std::pair<uint8_t,uint8_t> > auxtags;
libmaus2::autoarray::AutoArray<libmaus2::bambam::cigar_operation> cigop;
std::stack < libmaus2::bambam::cigar_operation > hardstack;
libmaus2::bambam::BamAlignment::D_array_type Tcigar;
//.........这里部分代码省略.........
示例3: bamfixmatecoordinates
int bamfixmatecoordinates(::libmaus::util::ArgInfo const & arginfo)
{
::libmaus::util::TempFileRemovalContainer::setup();
::libmaus::timing::RealTimeClock rtc; rtc.start();
bool const verbose = arginfo.getValue<unsigned int>("verbose",getDefaultVerbose());
unsigned int const colhashbits = arginfo.getValue<unsigned int>("colhashbits",getDefaultColHashBits());
unsigned int const collistsize = arginfo.getValue<unsigned int>("collistsize",getDefaultColListSize());
int const level = arginfo.getValue<int>("level",getDefaultLevel());
std::string const tmpfilenamebase = arginfo.getValue<std::string>("tmpfile",arginfo.getDefaultTmpFileName());
switch ( level )
{
case Z_NO_COMPRESSION:
case Z_BEST_SPEED:
case Z_BEST_COMPRESSION:
case Z_DEFAULT_COMPRESSION:
break;
default:
{
::libmaus::exception::LibMausException se;
se.getStream()
<< "Unknown compression level, please use"
<< " level=" << Z_DEFAULT_COMPRESSION << " (default) or"
<< " level=" << Z_BEST_SPEED << " (fast) or"
<< " level=" << Z_BEST_COMPRESSION << " (best) or"
<< " level=" << Z_NO_COMPRESSION << " (no compression)" << std::endl;
se.finish();
throw se;
}
break;
}
std::string const tmpfilename = tmpfilenamebase + "_bamcollate";
::libmaus::util::TempFileRemovalContainer::addTempFile(tmpfilename);
::libmaus::bambam::CollatingBamDecoder CBD(std::cin,tmpfilename,false /* put rank */,colhashbits/*hash bits*/,collistsize/*size of output list*/);
::libmaus::bambam::BamFormatAuxiliary auxdata;
::libmaus::bambam::BamHeader const & bamheader = CBD.getHeader();
// add PG line to header
std::string const upheadtext = ::libmaus::bambam::ProgramHeaderLineSet::addProgramLine(
bamheader.text,
"bamfixmatecoordinates", // ID
"bamfixmatecoordinates", // PN
arginfo.commandline, // CL
::libmaus::bambam::ProgramHeaderLineSet(bamheader.text).getLastIdInChain(), // PP
std::string(PACKAGE_VERSION) // VN
);
// construct new header
::libmaus::bambam::BamHeader uphead(upheadtext);
if ( uphead.getSortOrder() != "queryname" )
uphead.changeSortOrder("unknown");
/*
* start index/md5 callbacks
*/
std::string const tmpfileindex = tmpfilenamebase + "_index";
::libmaus::util::TempFileRemovalContainer::addTempFile(tmpfileindex);
std::string md5filename;
std::string indexfilename;
std::vector< ::libmaus::lz::BgzfDeflateOutputCallback * > cbs;
::libmaus::lz::BgzfDeflateOutputCallbackMD5::unique_ptr_type Pmd5cb;
if ( arginfo.getValue<unsigned int>("md5",getDefaultMD5()) )
{
if ( arginfo.hasArg("md5filename") && arginfo.getUnparsedValue("md5filename","") != "" )
md5filename = arginfo.getUnparsedValue("md5filename","");
else
std::cerr << "[V] no filename for md5 given, not creating hash" << std::endl;
if ( md5filename.size() )
{
::libmaus::lz::BgzfDeflateOutputCallbackMD5::unique_ptr_type Tmd5cb(new ::libmaus::lz::BgzfDeflateOutputCallbackMD5);
Pmd5cb = UNIQUE_PTR_MOVE(Tmd5cb);
cbs.push_back(Pmd5cb.get());
}
}
libmaus::bambam::BgzfDeflateOutputCallbackBamIndex::unique_ptr_type Pindex;
if ( arginfo.getValue<unsigned int>("index",getDefaultIndex()) )
{
if ( arginfo.hasArg("indexfilename") && arginfo.getUnparsedValue("indexfilename","") != "" )
indexfilename = arginfo.getUnparsedValue("indexfilename","");
else
std::cerr << "[V] no filename for index given, not creating index" << std::endl;
if ( indexfilename.size() )
{
libmaus::bambam::BgzfDeflateOutputCallbackBamIndex::unique_ptr_type Tindex(new libmaus::bambam::BgzfDeflateOutputCallbackBamIndex(tmpfileindex));
Pindex = UNIQUE_PTR_MOVE(Tindex);
cbs.push_back(Pindex.get());
}
}
std::vector< ::libmaus::lz::BgzfDeflateOutputCallback * > * Pcbs = 0;
if ( cbs.size() )
Pcbs = &cbs;
/*
//.........这里部分代码省略.........
示例4: init
void init()
{
rgfilter.set("RG");
pgfilter.set("PG");
std::vector < std::vector<libmaus2::bambam::Chromosome> const * > V;
std::vector < std::vector<libmaus2::bambam::ReadGroup> const * > R;
std::vector< std::string const * > H;
for ( uint64_t i = 0; i < inputbamheaders.size(); ++i )
{
libmaus2::bambam::BamHeader const & header = *inputbamheaders[i];
V.push_back( & (header.getChromosomes()) );
R.push_back( & (header.getReadGroups()) );
H.push_back( & (header.text) );
std::string const SO = libmaus2::bambam::BamHeader::getSortOrderStatic(header.text);
orderedCoordinates = orderedCoordinates && (SO == "coordinate");
orderedNames = orderedNames && (SO == "queryname");
}
libmaus2::bambam::ChromosomeVectorMerge::unique_ptr_type tchromosomeMergeInfo(new libmaus2::bambam::ChromosomeVectorMerge(V));
chromosomeMergeInfo = UNIQUE_PTR_MOVE(tchromosomeMergeInfo);
libmaus2::bambam::ReadGroupVectorMerge::unique_ptr_type treadGroupMergeInfo(new libmaus2::bambam::ReadGroupVectorMerge(R));
readGroupMergeInfo = UNIQUE_PTR_MOVE(treadGroupMergeInfo);
libmaus2::bambam::ProgramHeaderLinesMerge::unique_ptr_type tprogramHeaderLinesMergeInfo(new libmaus2::bambam::ProgramHeaderLinesMerge(H));
programHeaderLinesMergeInfo = UNIQUE_PTR_MOVE(tprogramHeaderLinesMergeInfo);
// get HD line fields
std::vector < std::pair<std::string,std::string> > VHDP;
for ( uint64_t i = 0; i < inputbamheaders.size(); ++i )
{
std::vector<libmaus2::bambam::HeaderLine> VHD = libmaus2::bambam::HeaderLine::extractLinesByType(inputbamheaders[i]->text,"HD");
if ( VHD.size() )
{
libmaus2::bambam::HeaderLine const & H = VHD.front();
for ( std::map<std::string,std::string>::const_iterator ita = H.M.begin(); ita != H.M.end(); ++ita )
VHDP.push_back(*ita);
}
}
// sort by tag
std::sort(VHDP.begin(),VHDP.end());
// extract consistent tags present in all HD lines
std::map<std::string,std::string> MHD;
uint64_t l = 0;
while ( l < VHDP.size() )
{
uint64_t h = l+1;
while ( h < VHDP.size() && VHDP[l].first == VHDP[h].first )
++h;
// we have the right number
if ( h-l == inputbamheaders.size() )
{
// check for consistent value
bool eq = true;
for ( uint64_t i = l+1; i < h; ++i )
eq = eq && (VHDP[i].second == VHDP[l].second);
if ( eq )
MHD[VHDP[l].first] = VHDP[l].second;
}
l = h;
}
std::string const VN = (MHD.find("VN") != MHD.end()) ? MHD.find("VN")->second : "1.5";
std::ostringstream headertextstr;
headertextstr << "@HD\tVN:" << VN;
if ( inputbamheaders.size() == 1 )
headertextstr << "\tSO:" << libmaus2::bambam::BamHeader::getSortOrderStatic(inputbamheaders[0]->text);
else
headertextstr << "\tSO:unknown";
for ( std::map<std::string,std::string>::const_iterator ita = MHD.begin(); ita != MHD.end(); ++ita )
{
std::string const & key = ita->first;
if ( key != "VN" && key != "SO" )
headertextstr << "\t" << key << ":" << ita->second;
}
headertextstr << "\n";
for ( uint64_t i = 0; i < chromosomeMergeInfo->chromosomes.size(); ++i )
headertextstr << chromosomeMergeInfo->chromosomes[i].createLine() << "\n";
for ( uint64_t i = 0; i < readGroupMergeInfo->readgroups.size(); ++i )
headertextstr << readGroupMergeInfo->readgroups[i].createLine() << "\n";
headertextstr << programHeaderLinesMergeInfo->PGtext;
std::vector<std::string> otherlines;
for ( uint64_t i = 0; i < inputbamheaders.size(); ++i )
{
//.........这里部分代码省略.........
示例5: PlainOrGzipStreamBufferWrapper
PlainOrGzipStreamBufferWrapper(int const rfd, uint64_t const bufsize = 64*1024, uint64_t const pushbacksize = 64*1024)
{
libmaus::aio::PosixFdInputStream::unique_ptr_type TPFIS(new libmaus::aio::PosixFdInputStream(rfd,bufsize,pushbacksize));
PFIS = UNIQUE_PTR_MOVE(TPFIS);
init(*PFIS,bufsize,pushbacksize);
}
示例6: filterBamUsedSequences
static void filterBamUsedSequences(
libmaus::util::ArgInfo const & arginfo,
std::istream & in,
::libmaus::bitio::IndexedBitVector const & IBV,
std::ostream & out
)
{
libmaus::lz::BgzfInflateStream bgzfin(in);
libmaus::bambam::BamHeaderLowMem::unique_ptr_type PBHLM ( libmaus::bambam::BamHeaderLowMem::constructFromBAM(bgzfin));
bool const verbose = arginfo.getValue<unsigned int>("verbose",getDefaultVerbose());
std::vector< ::libmaus::lz::BgzfDeflateOutputCallback * > cbs;
::libmaus::lz::BgzfDeflateOutputCallbackMD5::unique_ptr_type Pmd5cb;
std::string md5filename;
if ( arginfo.getValue<unsigned int>("md5",getDefaultMD5()) )
{
if ( arginfo.hasArg("md5filename") && arginfo.getUnparsedValue("md5filename","") != "" )
md5filename = arginfo.getUnparsedValue("md5filename","");
else
std::cerr << "[V] no filename for md5 given, not creating hash" << std::endl;
if ( md5filename.size() )
{
::libmaus::lz::BgzfDeflateOutputCallbackMD5::unique_ptr_type Tmd5cb(new ::libmaus::lz::BgzfDeflateOutputCallbackMD5);
Pmd5cb = UNIQUE_PTR_MOVE(Tmd5cb);
cbs.push_back(Pmd5cb.get());
}
}
int const level = libmaus::bambam::BamBlockWriterBaseFactory::checkCompressionLevel(arginfo.getValue<int>("level",getDefaultLevel()));
libmaus::lz::BgzfDeflate<std::ostream>::unique_ptr_type Pbgzfout(
new libmaus::lz::BgzfDeflate<std::ostream>(
out,level
)
);
libmaus::lz::BgzfDeflate<std::ostream> & bgzfout = *Pbgzfout;
if ( verbose )
std::cerr << "[V] writing filtered header...";
PBHLM->serialiseSequenceSubset(bgzfout,IBV,"bamfilterheader2" /* id */,"bamfilterheader2" /* pn */,
arginfo.commandline /* pgCL */, PACKAGE_VERSION /* pgVN */
);
if ( verbose )
std::cerr << "done." << std::endl;
::libmaus::bambam::BamAlignment algn;
uint64_t c = 0;
while ( libmaus::bambam::BamAlignmentDecoder::readAlignmentGz(bgzfin,algn) )
{
if ( algn.isMapped() )
{
int64_t const refid = algn.getRefID();
assert ( refid >= 0 );
assert ( IBV.get(refid) );
algn.putRefId(IBV.rank1(refid)-1);
}
else
{
algn.putRefId(-1);
}
if ( algn.isPaired() && algn.isMapped() )
{
int64_t const refid = algn.getNextRefID();
assert ( refid >= 0 );
assert ( IBV.get(refid) );
algn.putNextRefId(IBV.rank1(refid)-1);
}
else
{
algn.putNextRefId(-1);
}
algn.serialise(bgzfout);
if ( verbose && ( ((++c) & (1024*1024-1)) == 0 ) )
std::cerr << "[V] " << c/(1024*1024) << std::endl;
}
bgzfout.flush();
bgzfout.addEOFBlock();
Pbgzfout.reset();
if ( Pmd5cb )
Pmd5cb->saveDigestAsFile(md5filename);
}
示例7: RMMTree
RMMTree(base_layer_type const & rB, uint64_t const rn)
: B(rB), n(rn), numlevels(computeNumLevels(n)), I(numlevels), C(numlevels), S(numlevels+1)
{
uint64_t in = n;
unsigned int level = 0;
while ( in > 1 )
{
uint64_t const out = (in+k-1) >> klog;
// minimal indices for next level
libmaus::bitio::CompactArray::unique_ptr_type tIlevel(
new libmaus::bitio::CompactArray(out,klog));
I[level] = UNIQUE_PTR_MOVE(tIlevel);
libmaus::util::Histogram::unique_ptr_type subhist;
if ( level == 0 )
{
libmaus::util::Histogram::unique_ptr_type tsubhist(fillSubHistogram(B.begin(),in));
subhist = UNIQUE_PTR_MOVE(tsubhist);
}
else
{
libmaus::util::Histogram::unique_ptr_type tsubhist(fillSubHistogram(C[level-1]->begin(),in));
subhist = UNIQUE_PTR_MOVE(tsubhist);
}
C_type::generator_type impgen(*subhist);
if ( level == 0 )
fillSubArrays(B.begin(),in,*(I[level]),impgen);
else
fillSubArrays(C[level-1]->begin(),in,*(I[level]),impgen);
C_ptr_type tClevel(impgen.createFinal());
C[level] = UNIQUE_PTR_MOVE(tClevel);
in = out;
++level;
}
S[0] = n;
for ( uint64_t i = 0; i < numlevels; ++i )
S[i+1] = I[i]->size();
if ( rmmtreedebug )
for ( uint64_t kk = k, level = 0; kk < n; kk *= k, ++level )
{
uint64_t low = 0;
uint64_t z = 0;
while ( low < n )
{
uint64_t const high = std::min(low+kk,n);
uint64_t minv = B[low];
uint64_t mini = low;
for ( uint64_t i = low+1; i < high; ++i )
if ( B[i] < minv )
{
minv = B[i];
mini = i;
}
assert ( (*C[level])[z] == minv );
assert ( (*I[level])[z] == ((mini-low)*k)/kk );
++z;
low = high;
}
}
}
示例8: bamalignfrac
void bamalignfrac(::libmaus2::util::ArgInfo const & arginfo)
{
libmaus2::bambam::BamAlignmentDecoderWrapper::unique_ptr_type decwrapper(
libmaus2::bambam::BamMultiAlignmentDecoderFactory::construct(arginfo));
::libmaus2::bambam::BamAlignmentDecoder * ppdec = &(decwrapper->getDecoder());
::libmaus2::bambam::BamAlignmentDecoder & dec = *ppdec;
::libmaus2::bambam::BamAlignment const & algn = dec.getAlignment();
libmaus2::autoarray::AutoArray<libmaus2::bambam::cigar_operation> cigop;
uint64_t basealgn = 0;
uint64_t clip = 0;
uint64_t totalbases = 0;
#if defined(LIBMAUS2_HAVE_REGEX_H)
std::string const regexs = arginfo.getUnparsedValue("name","");
libmaus2::util::unique_ptr<libmaus2::regex::PosixRegex>::type regex_ptr;
if ( regexs.size() )
{
libmaus2::util::unique_ptr<libmaus2::regex::PosixRegex>::type tregex_ptr(new libmaus2::regex::PosixRegex(regexs));
regex_ptr = UNIQUE_PTR_MOVE(tregex_ptr);
}
#endif
while ( dec.readAlignment() )
{
if (
algn.isMapped()
#if defined(LIBMAUS2_HAVE_REGEX_H)
&&
(
(!regex_ptr)
||
(regex_ptr->findFirstMatch(algn.getName()) != -1)
)
#endif
)
{
uint32_t const numcig = algn.getCigarOperations(cigop);
totalbases += algn.getLseq();
for ( uint64_t i = 0; i < numcig; ++i )
{
switch ( cigop[i].first )
{
case libmaus2::bambam::BamFlagBase::LIBMAUS2_BAMBAM_CMATCH:
case libmaus2::bambam::BamFlagBase::LIBMAUS2_BAMBAM_CINS:
case libmaus2::bambam::BamFlagBase::LIBMAUS2_BAMBAM_CEQUAL:
case libmaus2::bambam::BamFlagBase::LIBMAUS2_BAMBAM_CDIFF:
basealgn += cigop[i].second;
break;
case libmaus2::bambam::BamFlagBase::LIBMAUS2_BAMBAM_CSOFT_CLIP:
clip += cigop[i].second;
break;
case libmaus2::bambam::BamFlagBase::LIBMAUS2_BAMBAM_CHARD_CLIP:
totalbases += cigop[i].second;
clip += cigop[i].second;
break;
case libmaus2::bambam::BamFlagBase::LIBMAUS2_BAMBAM_CDEL:
case libmaus2::bambam::BamFlagBase::LIBMAUS2_BAMBAM_CREF_SKIP:
break;
}
}
}
}
std::cerr << "total bases in mapped reads\t" << totalbases << std::endl;
std::cerr << "clipped (hard and soft) bases in mapped reads\t" << clip << std::endl;
std::cerr << "aligned bases in mapped reads\t" << basealgn << std::endl;
}
示例9: construct
static unique_ptr_type construct(std::istream & textstr)
{
return UNIQUE_PTR_MOVE(unique_ptr_type(new this_type(textstr)));
}
示例10: CompactFastQContainer
CompactFastQContainer(std::istream & textstr)
: T(textstr), dict(new ::libmaus::fastx::CompactFastQContainerDictionary(textstr)), H(), C()
{
GetObject G(T.begin());
H = UNIQUE_PTR_MOVE(::libmaus::fastx::CompactFastQHeader::unique_ptr_type(new ::libmaus::fastx::CompactFastQHeader(G)));
}
示例11: bamsplitmod
int bamsplitmod(libmaus::util::ArgInfo const & arginfo)
{
if ( isatty(STDIN_FILENO) )
{
::libmaus::exception::LibMausException se;
se.getStream() << "Refusing read binary data from terminal, please redirect standard input to pipe or file." << std::endl;
se.finish();
throw se;
}
int const level = libmaus::bambam::BamBlockWriterBaseFactory::checkCompressionLevel(arginfo.getValue<int>("level",getDefaultLevel()));
int const verbose = arginfo.getValue<int>("verbose",getDefaultVerbose());
uint64_t const div = arginfo.getValue<int>("div",getDefaultDiv());
std::string const prefix = arginfo.getUnparsedValue("prefix",getDefaultFilePrefix(arginfo));
if ( ! div )
{
::libmaus::exception::LibMausException se;
se.getStream() << "div cannot be 0." << std::endl;
se.finish();
throw se;
}
libmaus::bambam::BamDecoder bamdec(std::cin);
libmaus::bambam::BamAlignment const & algn = bamdec.getAlignment();
libmaus::bambam::BamHeader const & header = bamdec.getHeader();
::libmaus::bambam::BamHeader::unique_ptr_type uphead(updateHeader(arginfo,header));
libmaus::autoarray::AutoArray<libmaus::aio::CheckedOutputStream::unique_ptr_type> COS(div);
libmaus::autoarray::AutoArray<libmaus::bambam::BamWriter::unique_ptr_type> writers(div);
std::vector < std::string > filenames;
for ( uint64_t i = 0; i < div; ++i )
{
std::ostringstream ostr;
ostr << prefix << "_" << std::setw(6) << std::setfill('0') << i << std::setw(0) << ".bam";
libmaus::aio::CheckedOutputStream::unique_ptr_type tCOS(new libmaus::aio::CheckedOutputStream(ostr.str()));
COS[i] = UNIQUE_PTR_MOVE(tCOS);
libmaus::bambam::BamWriter::unique_ptr_type twriter(new libmaus::bambam::BamWriter(*COS[i],*uphead,level));
writers[i] = UNIQUE_PTR_MOVE(twriter);
}
uint64_t c = 0;
if ( verbose )
{
while ( bamdec.readAlignment() )
{
algn.serialise ( writers [ (c++) % div ] -> getStream() );
if ( ((c) & ((1ull<<20)-1)) == 0 )
std::cerr << "[V] " << c << std::endl;
}
std::cerr << "[V] " << c << std::endl;
}
else
{
while ( bamdec.readAlignment() )
algn.serialise ( writers [ (c++) % div ] -> getStream() );
}
for ( uint64_t i = 0; i < div; ++i )
{
writers[i].reset();
COS[i]->flush();
COS[i].reset();
}
return EXIT_SUCCESS;
}
示例12: load
static unique_ptr_type load(std::string const & filename)
{
libmaus::aio::CheckedInputStream CIS(filename);
unique_ptr_type tptr(new this_type(CIS));
return UNIQUE_PTR_MOVE(tptr);
}
示例13: getStream
FastABgzfDecoder::unique_ptr_type getStream(std::string const & filename, uint64_t const id) const
{
FastABgzfDecoder::unique_ptr_type Tptr(new FastABgzfDecoder(filename,(*this)[id],blocksize));
return UNIQUE_PTR_MOVE(Tptr);
}
示例14: pid
libmaus2::util::LogPipeMultiplexGeneric::LogPipeMultiplexGeneric(
std::string const & serverhostname,
unsigned short port,
std::string const & sid,
uint64_t const id
)
: pid(-1)
{
// reset
stdoutpipe[0] = stdoutpipe[1] = -1;
stderrpipe[0] = stderrpipe[1] = -1;
// connect
::libmaus2::network::ClientSocket::unique_ptr_type tsock(
new ::libmaus2::network::ClientSocket(
port,serverhostname.c_str()
)
);
sock = UNIQUE_PTR_MOVE(tsock);
// no delay on socket
sock->setNoDelay();
// write session id
sock->writeString(0,sid);
// id
sock->writeSingle<uint64_t>(id);
// connection type
sock->writeString("log");
// create pipe for standard out
if ( pipe(&stdoutpipe[0]) != 0 )
{
closeFds();
::libmaus2::exception::LibMausException se;
se.getStream() << "pipe() failed: " << strerror(errno) << std::endl;
se.finish();
throw se;
}
//create pipe for standard error
if ( pipe(&stderrpipe[0]) != 0 )
{
closeFds();
::libmaus2::exception::LibMausException se;
se.getStream() << "pipe() failed: " << strerror(errno) << std::endl;
se.finish();
throw se;
}
// close previous standard output
if ( close(STDOUT_FILENO) != 0 )
{
closeFds();
::libmaus2::exception::LibMausException se;
se.getStream() << "close() failed: " << strerror(errno) << std::endl;
se.finish();
throw se;
}
if ( close(STDERR_FILENO) != 0 )
{
closeFds();
::libmaus2::exception::LibMausException se;
se.getStream() << "close() failed: " << strerror(errno) << std::endl;
se.finish();
throw se;
}
if ( dup2(stdoutpipe[1],STDOUT_FILENO) == -1 )
{
closeFds();
::libmaus2::exception::LibMausException se;
se.getStream() << "dup2() failed: " << strerror(errno) << std::endl;
se.finish();
throw se;
}
if ( dup2(stderrpipe[1],STDERR_FILENO) == -1 )
{
closeFds();
::libmaus2::exception::LibMausException se;
se.getStream() << "dup2() failed: " << strerror(errno) << std::endl;
se.finish();
throw se;
}
pid = fork();
if ( pid < 0 )
{
closeFds();
::libmaus2::exception::LibMausException se;
se.getStream() << "fork() failed: " << strerror(errno) << std::endl;
se.finish();
throw se;
}
else if ( pid == 0 )
{
// close write end
close(stdoutpipe[1]);
stdoutpipe[1] = -1;
close(stderrpipe[1]);
stderrpipe[1] = -1;
// close copies
//.........这里部分代码省略.........
示例15: toWaveletTreeBitsParallel
//.........这里部分代码省略.........
uint64_t c = 0;
for ( uint64_t i = 0; i < numpackets + 1; ++i )
{
uint64_t const t = aones[i];
aones[i] = c;
c += t;
}
}
{
uint64_t c = 0;
for ( uint64_t i = 0; i < numpackets + 1; ++i )
{
uint64_t const t = azeroes[i];
azeroes[i] = c;
c += t;
}
}
uint64_t const ones = aones[numpackets];
uint64_t const zeros = (r-l)-ones;
::libmaus2::autoarray::AutoArray < ::libmaus2::bitio::CompactArray::unique_ptr_type > ACZ(numpackets);
::libmaus2::autoarray::AutoArray < ::libmaus2::bitio::CompactArray::unique_ptr_type > ACO(numpackets);
if ( verbose )
std::cerr << "(a";
for ( uint64_t h = 0; h < numpackets; ++h )
{
::libmaus2::bitio::CompactArray::unique_ptr_type tACZ(
new ::libmaus2::bitio::CompactArray( azeroes [ h+1 ] - azeroes[ h ], C->getB() - sb )
);
ACZ[h] = UNIQUE_PTR_MOVE(tACZ);
::libmaus2::bitio::CompactArray::unique_ptr_type tACO(
new ::libmaus2::bitio::CompactArray( aones [ h+1 ] - aones[ h ], C->getB() - sb )
);
ACO[h] = UNIQUE_PTR_MOVE(tACO);
}
if ( verbose )
std::cerr << ")";
if ( verbose )
std::cerr << "(d";
#if defined(_OPENMP)
#pragma omp parallel for schedule(dynamic,1) num_threads(numthreads)
#endif
for ( int64_t h = 0; h < static_cast<int64_t>(numpackets); ++h )
{
uint64_t const low = std::min ( l + h * packetsize, r );
uint64_t const high = std::min ( low + packetsize, r );
uint64_t zp = 0;
uint64_t op = 0;
::libmaus2::bitio::CompactArray & CO = *ACO[h];
::libmaus2::bitio::CompactArray & CZ = *ACZ[h];
for ( uint64_t i = low; i != high; ++i )
{
uint64_t const v = S.get(i);
if ( v & mask )
CO.set ( op++, v);
else
CZ.set ( zp++, v);
}