Exemple #1
0
static void gt_mmsearchiterator_reinit(GtMMsearchiterator *mmsi,
                                       const GtEncseq *dbencseq,
                                       const ESASuffixptr *suftab,
                                       GtUword leftbound,
                                       GtUword rightbound,
                                       GtUword itvoffset,
                                       GtReadmode readmode,
                                       const GtQuerysubstring *querysubstring,
                                       GtUword minmatchlength)
{
  mmsi->suftab = suftab;
  if (mmsi->esr == NULL)
  {
    mmsi->esr = gt_encseq_create_reader_with_readmode(dbencseq, readmode, 0);
  } else
  {
    gt_encseq_reader_reinit_with_readmode(mmsi->esr,dbencseq,readmode,0);
  }
  mmsi->lcpitv.left = leftbound;
  mmsi->lcpitv.right = rightbound;
  mmsi->lcpitv.offset = itvoffset;
  if (!gt_mmsearch(dbencseq,mmsi->esr,suftab,readmode,&mmsi->lcpitv,
                   querysubstring,minmatchlength))
  {
    mmsi->lcpitv.left = 1UL;
    mmsi->lcpitv.right = 0;
  }
  mmsi->sufindex = mmsi->lcpitv.left;
}
Exemple #2
0
static GtMMsearchiterator *gt_mmsearchiterator_new_generic(
                                       const GtEncseq *dbencseq,
                                       const ESASuffixptr *suftab,
                                       unsigned long leftbound,
                                       unsigned long rightbound,
                                       unsigned long itvoffset,
                                       GtReadmode readmode,
                                       const GtQuerysubstring *querysubstring,
                                       unsigned long minmatchlength)

{
  GtMMsearchiterator *mmsi = gt_malloc(sizeof *mmsi);

  mmsi->lcpitv.left = leftbound;
  mmsi->lcpitv.right = rightbound;
  mmsi->lcpitv.offset = itvoffset;
  mmsi->suftab = suftab;
  mmsi->esr = gt_encseq_create_reader_with_readmode(dbencseq, readmode, 0);
  if (!gt_mmsearch(dbencseq,mmsi->esr,suftab,readmode,&mmsi->lcpitv,
                   querysubstring,minmatchlength))
  {
    mmsi->lcpitv.left = 1UL;
    mmsi->lcpitv.right = 0;
  }
  mmsi->sufindex = mmsi->lcpitv.left;
  return mmsi;
}