CHANGES IN VERSION 1.20
-----------------------

NEW FEATURES

    o Add makeTxDbFromGRanges() for extracting gene, transcript, exon, and CDS
      information from a GRanges object structured as GFF3 or GTF, and
      returning that information as a TxDb object.

    o TxDb objects have a new column ("tx_type" in the "transcripts" table)
      that the user can request thru the 'columns' arg of the transcripts()
      extractor. This column is populated when the user makes a TxDb object
      from Ensembl (using makeTxDbFromBiomart()) or from a GFF3/GTF file (using
      makeTxDbFromGFF()), but not yet (i.e. it's set to NA) when s/he makes it
      from a UCSC track (using makeTxDbFromUCSC()). However it seems that UCSC
      is also providing that information for some tracks so we're planning to
      have makeTxDbFromUCSC() get it from these tracks in the near future.
      Also low-level makeTxDb() now imports the "tx_type" column if supplied.

    o Add transcriptLengths() for extracting the transcript lengths from a
      TxDb object. It also returns the CDS and UTR lengths for each transcript
      if the user requests them.

    o extractTranscriptSeqs() now works on a FaFile or GmapGenome object (or,
      more generally, on any object that supports seqinfo() and getSeq()).

SIGNIFICANT USER-VISIBLE CHANGES

    o Renamed makeTranscriptDbFromUCSC(), makeTranscriptDbFromBiomart(),
      makeTranscriptDbFromGFF(), and makeTranscriptDb() -> makeTxDbFromUCSC(),
      makeTxDbFromBiomart(), makeTxDbFromGFF(), and makeTxDb(). Old names
      still work but are deprecated.

    o Many changes and improvements to makeTxDbFromGFF():
      - Re-implemented it on top of makeTxDbFromGRanges().
      - The geneID tag, if present, is now used to assign an external gene id
        to transcripts that couldn't otherwise be linked to a gene. This is
        for compatibility with some GFF3 files from FlyBase (see for example
        dmel-1000-r5.11.filtered.gff included in this package).
      - Arguments 'exonRankAttributeName', 'gffGeneIdAttributeName',
        'useGenesAsTranscripts', and 'gffTxName', are not needed anymore so
        they are now ignored and deprecated.  
      - Deprecated 'species' arg in favor of new 'organism' arg.

    o Some tweaks to makeTxDbFromBiomart():
      - Drop transcripts with UTR anomalies with a warning instead of failing.
        We've started to see these hopeless transcripts with the release 79 of
        Ensembl in the dmelanogaster_gene_ensembl dataset (based on FlyBase
        r6.02 / FB2014_05). With this change, the user can still make a TxDb
        for dmelanogaster_gene_ensembl but some transcripts will be dropped
        with a warning.
      - BioMart data anomaly warnings and errors now show the first 3
        problematic transcripts instead of 6.

    o 'gene_id' metadata column returned by genes() is now a character vector
      instead of a CharacterList object.

    o Use # prefix instead of | in "show" method for TxDb objects.

DEPRECATED AND DEFUNCT

    o Deprecated makeTranscriptDbFromUCSC(), makeTranscriptDbFromBiomart(),
      makeTranscriptDbFromGFF(), and makeTranscriptDb(), in favor of
      makeTxDbFromUCSC(), makeTxDbFromBiomart(), and makeTxDbFromGFF(), and
      makeTxDb().

    o Deprecated species() accessor in favor of organism() on TxDb objects.

    o sortExonsByRank() is now defunct (was deprecated in GenomicFeatures
      1.18)

    o Removed extractTranscriptsFromGenome(), extractTranscripts(),
      determineDefaultSeqnameStyle() (were defunct in GenomicFeatures 1.18).

BUG FIXES

    o makeTxDbFromBiomart():
      - Fix issue causing the download of 'chrominfo' data frame to fail when
        querying the primary Ensembl mart (with host="ensembl.org" and
        biomart="ENSEMBL_MART_ENSEMBL").
      - Fix issue with error reporting code: when some transcripts failed to
        pass the sanity checks, the error message was displaying the wrong
        transcripts. More precisely, many good transcripts were mistakenly
        added to the set of bad transcripts and included in the error message.

    o extractTranscriptSeqs(): fix error message when internal call to
      exonsBy() fails on 'transcripts'.


CHANGES IN VERSION 1.18
-----------------------

NEW FEATURES

    o Add extractUpstreamSeqs().

    o makeTranscriptDbFromUCSC() now supports the "flyBaseGene" table
      (FlyBase Genes track).

    o makeTranscriptDbFromBiomart() now knows how to fetch the sequence
      lengths from the Ensembl Plants db.

    o makeTranscriptDbFromGFF() is now more tolerant of bad strand
      information.

SIGNIFICANT USER-VISIBLE CHANGES

    o Replace toy TxDb UCSC_knownGene_sample.sqlite (based on hg18) with
      hg19_knownGene_sample.sqlite (based on hg19) and use hg19 instead of
      hg18 in all examples (and unit tests).

    o Rename TranscriptDb class -> TxDb.

    o Now when GTF files are processed into TxDbs with exon ranking being
      inferreed, if the exons are on separate chromosomes, we toss out that
      transcript (since we cannot possibly guess the exon ranking correctly).

DEPRECATED AND DEFUNCT

    o extractTranscripts() and extractTranscriptsFromGenome() are now defunct.

    o Deprecate sortExonsByRank().

BUG FIXES

    o Bug fixes and improvements to makeTranscriptDbFromBiomart():
      (a) Fix long standing bug where the code in charge of inferring the
          CDSs from the UTRs would return CDSs spanning all the exons of a
          non-coding transcript.
      (b) Fix an issue that was preventing the function from extracting the
          CDS information added recently to the datasets in the Ensembl Fungi,
          Ensembl Metazoa, Ensembl Plants, and Ensembl Protists databases. 
      (c) Make the code in charge of extracting the CDSs more robust by taking
          advantage of new attributes (genomic_coding_start and
          genomic_coding_end) added by Ensembl in release 74 (Dec 2013),
          and by adding more sanity checks.


CHANGES IN VERSION 1.14
-----------------------

NEW FEATURES

    o keys method now has new arguments to allow for more
      sophisticated filtering.
    
    o adds genes() extractor 

    o makeTranscriptDbFromGFF() now handles even more different kinds
      of GFF files.


BUG FIXES

    o better argument checking for makeTranscriptDbFromGFF()

    o cols arguments and methods will now be columns arguments and methods


CHANGES IN VERSION 1.12
-----------------------

NEW FEATURES

    o Support for new UCSC species

    o Better support for GTF and GFF processing into TranscriptDb objects

    o Methods for making TranscriptDb objects from general sources
      have been made more useful

BUG FIXES

    o Updates to allow continued access to ever changing services like UCSC

    o Corrections for seqnameStyle methods

    o Over 10X performance gains for processing of GTF and GFF files


CHANGES IN VERSION 1.10
-----------------------

NEW FEATURES

    o Add makeTranscriptDbFromGFF().  Users can now use GFF files to
      make TranscriptDb resources.

    o Add *restricted* "seqinfo<-" method for TranscriptDb objects. It only
      supports replacement of the sequence names (for now), i.e., except for
      their sequence names, Seqinfo objects 'value' (supplied) and 'seqinfo(x)'
      (current) must be identical.

    o Add promoters() and getPromoterSeq().

    o Add 'reassign.ids' arg (FALSE by default) to makeTranscriptDb().

SIGNIFICANT USER-VISIBLE CHANGES

    o Updated vignette.

    o Improve how makeTranscriptDbFromUCSC() and makeTranscriptDbFromBiomart()
      assign internal ids (see commit 65144 for the details).

    o 2.5x speedup of fiveUTRsByTranscript() and threeUTRsByTranscript().

DEPRECATED AND DEFUNCT

    o Are now defunct: transcripts_deprecated(), exons_deprecated(), and
      introns_deprecated().

    o Deprecate loadFeatures() and saveFeatures() in favor of loadDb() and
      saveDb(), respectively.

BUG FIXES

    o Better handling of BioMart data anomalies.


CHANGES IN VERSION 1.8
-----------------------

NEW FEATURES

    o Added asBED and asGFF methods to convert a TranscriptDb to a
      GRanges that describes transcript structures according to either
      the BED or GFF format. This enables passing a TranscriptDb
      object to rtracklayer::export directly, when targeting GFF/BED.


CHANGES IN VERSION 1.6
-----------------------

NEW FEATURES

    o TranscriptDbs are now available as standard packages.  Functions
    that were made available before the last release allow users to
    create these packages.

    o TranscriptDb objects now can be used with select

    o select method for TranscriptDb objects to extract data.frames of
    available annotations.  Users can specify keys, along with the
    keytype, and the columns of data that they want extracted from the
    annotation package.

    o keys now will operate on TranscriptDB objects to expose ID types
    as potential keys

    o keytypes will show which kinds of IDs can be used as a key by select

    o cols will display the kinds of data that can be extracted by select

    o isActiveSeq has been added to allow entire chromosomes to be
    toggled active/inactive by the user.  By default, everything is
    exposed, but if you wish you can now easily hide everything that
    you don't want to see.  Subsequence to this, all your accessors
    will behave as if only the "active" things are present in the
    database.

SIGNIFICANT USER-VISIBLE CHANGES

    o saveDb and loadDb are here and will be replacing saveFeatures
    and loadFeatures.  The reason for the name change is that they
    dispatch on (and should work with a wider range of object types
    than just trancriptDb objects (and their associated databases).

BUG FIXES

    o ORDER BY clause has been added to SQL statements to enforce more
    consistent ordering of returned rows.

    o bug fixes to enable DB construction to still work even after
    changes in schemas etc at UCSC, and ensembl sources.

    o bug fixes to makeFeatureDbFromUCSC allow it to work more
    reliably (it was being a little too optimistic about what UCSC
    would actually supply data for)

