         mem_filter.rank(
             f_index,
             r_index,
-            d_read_data.const_read_string_set(),
+            nvbio::plain_view( d_read_data ).sequence_string_set(),
             min_intv,
             max_intv,
             min_span );

    const uint32 mems_batch = 16*1024*1024;
    nvbio::vector<device_tag,mem_filter_type::mem_type> mems( mems_batch );

    while (1)
    {
        // load a batch of reads
        SharedPointer<io::ReadData> h_read_data( read_data_file->next( batch_reads, batch_bps ) );
        if (h_read_data == NULL)
            break;

        log_info(stderr, "  loading reads... started\n");

        // copy it to the device
        const io::ReadDataDevice d_read_data( *h_read_data );

        const uint32 n_reads = d_read_data.size() / 2;


#include <nvbio/strings/infix.h>
#include <nvbio/strings/seeds.h>
#include <nvbio/fmindex/mem.h>
#include <nvbio/io/sequence/sequence.h>
#include <nvbio/io/fmi.h>

using namespace nvbio;
