Example #1
0
			static void multiwayMergeFiles(
				std::vector < std::string > const & inputfilenames,
				std::string const & outputfilename
				)
			{
				typedef ::libmaus2::graph::TripleEdgeInput input_type;
				typedef input_type::unique_ptr_type input_ptr_type;
				::libmaus2::autoarray::AutoArray<input_ptr_type> inputs(inputfilenames.size());
				
				for ( uint64_t i = 0; i < inputfilenames.size(); ++i )
				{
					input_ptr_type tinputsi (
                                                new input_type ( inputfilenames[i] , 32*1024 )
                                                );
					inputs[i] = UNIQUE_PTR_MOVE(tinputsi);
				}
						
				::libmaus2::autoarray::AutoArray < ::libmaus2::graph::TripleEdge > triples(inputfilenames.size());
				::libmaus2::autoarray::AutoArray < bool > ok(inputfilenames.size());
			
				::libmaus2::graph::TripleEdgeOutputMerge output(outputfilename, 32*1024);

				for ( uint64_t i = 0; i < inputfilenames.size(); ++i )
					ok [i] = inputs[i]->getNextTriple ( triples[i] );

				while ( anyTrue ( ok ) )
				{
					uint64_t const minidx = minOk(ok,triples);
					output.write ( triples[minidx] );
					ok[minidx] = inputs[minidx]->getNextTriple( triples[minidx] );
				}
			}
Example #2
0
			static inline uint64_t minOk(
				::libmaus2::autoarray::AutoArray < bool > const & ok,
				::libmaus2::autoarray::AutoArray < ::libmaus2::graph::TripleEdge > const & triples
				)
			{
				assert ( anyTrue ( ok ) );
				
				bool foundok = false;
				uint64_t minidx = 0;
				
				while ( ! foundok )
					if ( ok[minidx] )
						foundok = true;
					else
						minidx++;
						
				assert ( ok[minidx] );
				::libmaus2::graph::TripleEdge mintrip = triples[minidx];
				
				for ( uint64_t i = 0; i < triples.getN(); ++i )
					if ( ok[i] && triples[i] < mintrip )
					{
						mintrip = triples[i];
						minidx = i;
					}
					
				return minidx;
			}
Example #3
0
bool anyTrue(const double a[], int n)
{
    if (n <= 0)
        return false;
    if(somePredicate(a[n-1]))
        return true;
    return anyTrue(a, n-1);
}
Example #4
0
 // 2.1 compatibility
 array anytrue(const array &in, const int dim) { return anyTrue(in, dim); }