
For 2.0.4

- Vectorize matchPattern() (result will be a list of BStringViews
  objects).

- Make alphabetFrequency works with BStringViews objects with
  "out of limits" views.

- Implement .needwunsQS in C.

- Restore Boyer-Moore

- Merge ~rgentlem/tmp/EMBOSS-3.0.0/emboss/matcher.c (Huang & Miller
  alignment algo) into Biostrings.

- An old Robert request: "have a look at GeneR, and see if there are
  any other packages that do sequence matching, and describe, in one page or
  so, what the differences are between the packages (also some notion of speed
  and size, how well do they work on different inputs)".


For 2.0.5

- "normalized" BStringViews objects: 'v' is "normalized" means
    (1) no "out of limits" views,
    (2) views are sorted from left to right (first(v) is ascending),
    (3) views don't overlap and can't even be adjacents
  If length(v) >= 2, then the 3 above conditions are equivalent to: 
    1 <= first(v)[i] <= last(v)[i] < first(v)[i+1]
                     <= last(v)[i+1] <= nchar(subject(v))
  for every 1 <= i < length(v).
  If length(v) == 0, then 'v' is normalized.
  If length(v) == 1, then 'v' is normalized <=> view is not "out of limits".

  The normalize() function:
  For any given BStringViews object v0, let's call S(v0) the subset of
  integers defined by:
    (union of all [first(v0)[i],last(v0)[i]]) inter [1,nchar(subject(v0))]
  We can see that there is a unique "normalized" BStringViews object v
  (with same subject as v0) such that S(v) = S(v0).
  So we can define the normalize() function: v0 -> v = normalize(v0).
  An interesting property of this function is that, for any v0,
  v = normalize(v0) is the smallest BStringViews object (with same
  subject than v0) such that S(v) = S(v0).
  It can also been shown that length(v) <= (nchar(subject(v0)) + 1) / 2.

- Once we have this notion of "normalized" BStringViews objects, we can
  define the following operators on them (the results of these operations
  are "normalized" too):
    v2 <- !v: (unary operation) S(v2) =  [1:nchar(subject(v))] - S(v)
    v3 <- v | w: s(v3) = (S(v) union S(w))
    v4 <- v & w: s(v4) = (S(v) inter S(w))
  So we end up having the equivalent of the fundamental set operations
  (complementary, union, intersection).
  No need to define an equivalent for the set difference (S(v) - S(w)),
  or the set symetric difference ((S(v) -S(w)) union (S(w) - S(v)))
  since they can be achieved by using the fundamental operations.

  Note: The results of the above operations are undetermined if one of
  the operand is not "normalized" or if the 2 operands don't have the same
  subject! (no need to do any check of any sort, or to try to fail
  gracefully, this will just result in slowing down the operators).
  The result has always the same subject than the operands.

- One nice property: given any BStringViews object v, !normalized(v) is
  the smallest BStringViews object with a set of views that covers the parts
  of the subject that are not covered by the original set of views.

- Have the BStringViews() method for BString objects support the 'sep' arg.

- Test Raphael use case with built-in string functions and compare speed
  with Biostrings solution. Add the conclusions to the matchPattern.Rnw
  vignette.

- Add the substr() method for BString objects (returns a character-string)
  and for BStringViews objects (returns a character vector of same length
  than its first arg).

- Why doesn't sapply or lapply work for a BStringViews object (it didn't
  work either for BioString objects). Isn't it enough that these objects
  are subsettable?

- Compare NAMESPACE + list of aliases in Rd files from Biostrings 1 and 2
  make sure no important feature has been lost.

- Update the CHANGES file.


Later

- Restore the test units.

- Improve the Rd files (a lot of TODO tags have to be replaced by real
  documentation there).

- Fix pb with length(x) <- 2 screwing up x if it's a BString or BStringViews
  object (prevent people of doing this by defining the replacement version
  of the length method and issuing an error).

- Still have to think about it (Robert suggestion): make [[ work on "out
  of limits" views with a warning (we keep issuing an error only when the
  view is all blank).

- Remove the Biostrings 1 subdir.

- Merge SuffixTree package from Robert.
