                      Revision history for CMap

0.16 

-   Updated menus to be more intuitive
-   Added AJAX to load the comparative maps menu separately to speed up page
    loading
-   Added more options to opening menu
-   Caches the first view of a map (before sessions are invoked)
-   Removed cluster correspondence option
-   Bug fixes
-   Added chado synchronization tools
-   Added commas to the matrix
-   Some query optimization
-   Added script to order, orient and stack relational maps based on a
    reference map for easier viewing
-   Allow for custom map size
-   Modified the make name correspondence code to work with really large maps
-   Modified the delete duplicate correspondence code for speed
-   Allow for multiple installations on the same machine

0.15    2005-01-05

-   Server side sessions are used to store the information about what is being 
    viewed.  This dramatically reduces URL size and allows more complex 
    operations.  However, sessions expire, making bookmarks volatile.
-   Added a feature to save links permanently.  By clicking the "Save Link" 
    button, a new permanent URL is created for the user to bookmark.  Saved 
    links can also be browsed.
-   "Saved Links" can also be imported via cmap_admin.pl using an XML file.
-   The "Import Links" code has been completely replaced by "Saved Links" 
    code.  The "Import Links" code created links that were easily deleted by 
    the system and didn't have a very robust import format.
-   A "Hide Empty Rows" option was added to the matrix.
-   Speed increases to help with larger data sources.
-   Allow individual "Minimum number of Corrs" value for each slot.
-   Added a "default" feature type display value for features that may be on 
    new comparison maps.
-   Added a cluster correspondence option.
-   Each slot only has one title box, with slot specific buttons in it.
-   Each map has it's own set of buttons on the image.
-   Allow individual maps in slot to be deleted using the button labeled "x".
-   Allow the maps in a slot to be limited to an individual map using the 
    button labeled "L".
-   Allow individual maps in slot to be flipped.  The flip button for flipped
    maps is labeled "UF" for un-flip. 
-   Allow maps of different base units to be scaled using a conversion factor
    specified in the config file.
-   A "clean view" is now offered that does not have the navigation buttons on
    the picture.  This is to make the image more appealing for publishing.
-   Reference maps can be stacked vertically or placed in multiple rows.
-   The order of the reference maps can be specified.
-   Intra-slot correspondences can be displayed.
-   A "Spidering" feature has been created to allow you to see how a map is
    related to other maps in its map set.  The spider crawls the intra-slot
    correspondences to a selected depth.  It returns an image with a row of maps
    for each level.
-   Option to draw correspondence lines to either the features or the maps.
-   Option to turn off some or all of the clickable elements on the image to 
    save bandwidth and render time.
-   Sanity check for the number of clickable elements on an image.
-   All database queries have been moved to a single module.

0.14    2005-04-14

-   Fixed Bugs.
-   Utilized evidence score.
-   Decreased the length of viewer URLs by reducing "feature_type_*" to "ft_*".
-   Added the ability to change the alt text and the url of area boxes in the 
    config (just like the $code var).
-   Added object plugin code for the *_details pages.

0.13    2004-12-17

-   Expanded/reorganized/hidden menus.  Many more options for
    controlling the maps are now available.  As such, most of the
    menus remain hidden until the user requests to see them.
-   Added new map glyphs to the maps. Above each map is a number in
    square brackets indicating the number of features on the map.
    Running vertically are pairs of arrows pointing up and down which
    allow you to crop/zoom in on a map.  Below the maps are "-" and "+"
    magnification buttons.
-   The selection form for comparative maps is significantly larger
    now and is hidden beneath the "Comparison" button.  Clicking a map
    set name causes all the available maps of that map set to display in
    the map selection form. It's also possible to choose more than one
    comparative map.
-   Expanded ability to filter/display features based on their type
    and whether they have correspondences. Under the "Options" menu is a
    table allowing the user to choose for each feature type whether to
    ignore it completely, display only if there is a correspondence, or
    to always display features of that type.
-   The user can decrease the number of lines indicating
    correspondences by aggregating into lines that are color-coded to
    indicate the number of correspondences.
-   Maps may be "compressed" such that no feature glyphs are drawn on
    them allowing more data to be shown with less density.
-   Map, feature and evidence types definitions, attributes and external 
    references have been moved out of database tables and into configuration 
    files.  These tables have been dropped from the schema and the 
    configuration files have a new structure where the previous single 
    configuration file has been broken into a "global.conf" file for global 
    options and other datasource-specific files.
-   Added the option to draw maps with the same base unit to be drawn to 
    scale with respect to each other.
-   Added an optional directionality to the features and added a "direction_arrow" 
    feature glyph to take advantage of this. 
-   A new query caching scheme greatly improves performance of map viewer
    when accessing the same data repeatedly.
-   Added ability to search maps by name or by number of corresponding maps.
    The results can then be sorted by the map data, such as total features
    or average features per base unit.
-   Added "link viewer" to allow the creation of CMap URLs from imported
    map location data.
-   Added instructions for how to integrate CMap with GBrowse using the 
    Chado database schema.

0.12    2004-07-29

-   Added colors to matrix cells to indicate ranges of correspondences
-   Added "GIF" image type choice now that GIF is free
-   Further enhancements to label distribution: if there are as many
    labels as can possibly fit in the vertical space, they're just
    placed evenly;  otherwise, they are spaced as closely as possible to
    the feature glyph.  All labels are taken for highlighted features,
    then as many will fit of those with correspondences, and lastly any
    others are taken.
-   Add new "M" map button for "Matrix" to link a map to its view in
    the matrix
-   Additions to map detail page:  added a small table on the map
    details page just between the image and the feature correspondences
    to list any information known about the map (e.g., any attributes or
    xrefs) and a breakdown of the feature counts by type with a summary
    of how many features total are on the map.  Additionally, there is
    now an additional link for downloading the map data called "Download
    Map Data."
-   Added a new action called "download_data" to allow users to
    easily request a tab-delimited dump of the features on any map or
    for an entire map set (XML dump also available if downloading a
    full map set).
-   Enhancements to the map set info page: added a link to easily
    restrict the page to any one map set if looking at more than one;
    links to download the data for the map set or a single map, see the
    map set or any single map in the matrix;  expanded view of maps in a
    set with more links and explicit text to indicate actions; added the
    display of the publication date of the study, if available.
-   Added link to feature type info page to search for all features
    of each type 
-   Added link to map type info page allowing a user to quickly view all
    the info (on the "map_set_info" page) of all the maps of a
    particular type
-   Species info page now lists all the map sets linked to each
    species (Pankaj Jaiswal), ability to easily view any single
    species on the page by clicking the "Show Only This Species" link
-   Changed the layout of the top table on the correspondence
    details page from being large on the horizontal to the vertical.
-   cmap_admin.pl now allows selection of map sets by accession id
    (very handy if many map sets are defined)
-   Fixed bug in "Flip" button (Alex Feltus)
-   Fixed bug in map details page feature type selection (Noel Yap)
-   Fixed bug in web admin view of xrefs (Pankaj Jaiswal)
-   Fixed bug in "view_feature_on_map" (Noel Yap)
-   Added "cmap-fix-map-display-order.pl" script in "bin"
-   Added ability to disallow automated name-based correspondences
    based on feature type (e.g., don't create correspondences between
    features of type "centromere")
-   Fixed bug in pager URL on map details page



0.11    2004-03-12

-   Various bug fixes
-   Changes to feature search to use a UNION query for better performance

0.10    2004-02-27

-   Added preliminary support for SQLite
-   Added support for multiple alternate names for features
-   Added ability to specify "intro" texts in the "cmap.conf" for 
    various user pages
-   Added "attributes" support for arbitrary key/value pairs of 
    information on any database object
-   Revamped cross-references to allow multiple specific and generic
    xrefs for all objects that can have attributes
-   Allow feature search to accept feature accession ID
-   Added new handlers for viewing correspondence evidence type 
    information, feature aliases, feature correspondences
-   Added new export/import system to manipulate hierarchical db objects
-   Removed forking code in map viewer/dependence on Cache::Cache
-   Removed dependence on Time::Object (deprecated in favor of Time::Piece)
-   Added initial species restriction for main map viewer
-   Changed matrix view to require a "submit" to reduce initial load times
    (esp. for big tables);  added additional restrictions on view
-   Added SVG output (but only for static images, i.e. no hyperlinks)
-   Wrote user tutorial
-   Changed the way to assert additional correspondences by feature type;
    now put all equivalent feature types on one line
-   Moved from mod_perl to plain CGI (but can still run under mod_perl)

0.09    2003-09-29

-   Fixed problems in "cache_dir" method where temp dir wasn't being created
-   Fixed bug in name-based correspondences where extra feature types 
    weren't being correctly included in checks
-   Significantly increased speed of making name-based correspondences
-   Fixed bugs in admin feature search
-   Added "accession_id" to map type table
-   Added restriction by species and map type to map set info page
-   Added expanded ability to indicate number selections in cmap_admin.pl
-   Added order by species/map type on map viewer "Ref. Map" selection
-   Fixed errors in map detail page
-   Added map set names to top of matrix
-   Added "View All Maps" link to map set info template
-   Added "description" field to feature type and "feature_type_info" 
    handler for displaying details on feature types
-   Added reference map set info to map viewer page when only the 
    reference map set has been chosen
-   Added new help submenu to allow users to view and jump to all help
    pages
-   Changed installation to use Module::Build instead of ExtUtils::MakeMaker
-   Added SIGNATURE to verify tarball

0.08   2003-08-15

-   Added ability to view all maps in reference map set
-   Added "cmap_feature_note" table to allow free text notes on features
-   Changed legend text back to using color of feature type
-   Fixed bugs in admin feature search, made as powerful as user search
-   Removed custom data paging code (Utils::paginate) in favor of 
    Data::Pageset, pager modeled after PubMed
-   Added "cmap_map_cache" helper table to consolidate and reduce 
    number of SQL calls
-   Added map buttons for info, details, delete, flip, and new view
-   Altered database indices for improved performance
-   Added "view_feature_on_map" handler to quickly get from a feature
    accession ID to a view of it on a map
-   Added HTML-based admin tutorial in "docs"

0.07    2003-05-30

-   Fixed bug in cmap_admin.pl which referenced deprecate "linkage_group"
    field
-   Altered import code to use Text::RecordParser
-   Fixed drawing bugs for spanning features with negative coordinates
-   Changed "span" shape to not extend all the way to the map (was too
    easily overdrawing other spans)
-   Significant changes in drawing code to allow relational maps of
    varying widths that don't collide with map titles or other maps,
    this also fixed a very old bug (#688326)
-   Fixed bug (#729138) where features weren't being properly deleted 
    when loading a map in "overwrite" mode
-   Added ability to collapse overlapping features
-   Changed some text in legend to use black rather than image colors 
    to improve readability

0.06    2003-04-17

-   Fixed bug (#657917) where last page of features on map view in web
    admin tool was showing too many rows in feature table
-   Added separate BUGS and TODO files so they are not lost in the 
    Changes file
-   Added a generic feature search to web admin tool
-   Added new "paginate" sub to Utils for creating pages of record sets
    for web navigation, added better and more standard paging to 
    user feature search and most of the admin pages that return what
    could be a large record set
-   Fixed bug (#660483) where "IO::Tee=GLOB(0x4d7900)" was being printed
    while exporting data as SQL statements in cmap_admin.pl
-   Added a DESTROY method to base class to disconnect database so that
    "Database handle destroyed without explicit disconnect" error   
    messages wouldn't appear
-   Cleaned up many of the admin templates to make them more consistent
-   Added "is_enabled" field to "cmap_feature_correspondence" to allow a
    curator to permanently disable a feature correspondence record
    For MySQL:
    alter table cmap_feature_correspondence add is_enabled tinyint \
        not null default '1'; 
    For Oracle:
    alter table cmap_feature_correspondence add is_enabled number(4) \
        default '1' not null;
    For PostgreSQL:  PG doesn't allow the addition of a "NOT NULL"
    field, nor was I able to find an easy way to add such a constraint,
    so I dumped the data, dropped the table and recreated it with the
    definition in the create file
-   Added "drawing_lane" field to cmap_feature_type so that a curator 
    can determine the lane for drawing features (thereby placing some
    feature types closer to the map)
    For MySQL:
    alter table cmap_feature_type add drawing_lane int(11) not null \
        default '1';
    For Oracle:
    alter table cmap_feature_type add drawing_lane number(4) \
        default '1' not null;
    For PostgreSQL:  Same as above on "is_enabled" field
-   Added "drawing_priority" field to cmap_feature_type so that a curator 
    can determine the order for drawing features within a lane 
    For MySQL:
    alter table cmap_feature_type add drawing_priority int(11) not null \
        default '1';
    For Oracle:
    alter table cmap_feature_type add drawing_priority number(4) \
        default '1' not null;
    For PostgreSQL:  Same as above on "is_enabled" field
-   Added conditions to SQL for the matrix that all the map sets selected
    must have "is_enabled=1"
-   Changed label distribution on maps to wait until after all the 
    features for a lane have been drawn, then sort by position, whether 
    the feature is highlighted, and whether the feature has a 
    correspondence
-   Added new DATA_CURATION document in "docs" directory to describe how
    to curate data using CMap tools
-   Added a legend to explain feature glyphs
-   Added watermark of "CMap" version number in lower-right corner of 
    legend hyperlinked to the GMOD-CMap website
-   Added code to allow a dbxref with only a name to be accepted (so a 
    curator can block out an cross-reference on a feature with "Not 
    available")
-   Added ability to search for multiple features in the admin tool
-   Added ability to choose quote escaping style in cmap_admin.pl when
    exporting data as SQL INSERT statements
-   Fixed bug (#665326) where SQL for finding map features was missing 
    spanning features (with both start and stop positions) when the given
    range started after the feature's start position
-   Changed ambiguously named element "include_features" on main CMap 
    form to "label_features" in preparation for allowing users to actually
    choose which feature types to show.  Be sure to use the new "cmap.conf"
    if you're upgrading (or change "include_features" to "label_features")
-   Added restriction by feature type to map detail page
-   Changed link to map details page for non-relational maps to be a 
    question mark underneath the map rather than a click on the whole
    map;  this is less ambiguous and also frees up the map for clicking
    to zoom on specific areas
-   Added ability to restrict correspondences by type
-   Changed "score" in "cmap_correspondence_evidence" to a float
    For MySQL:
    alter table cmap_correspondence_evidence modify score double;
    For Oracle:
    alter table cmap_correspondence_evidence modify (score number(8,2));
    For PostgreSQL:
    alter table cmap_correspondence_evidence rename score to old_score;
    alter table cmap_correspondence_evidence add score double precision;
    update cmap_correspondence_evidence set score=old_score;
    alter table cmap_correspondence_evidence rename to foo;
    select correspondence_evidence_id, accession_id, \
        feature_correspondence_id, evidence_type_id, score, remark \
        into cmap_correspondence_evidence from foo;
    drop table foo;
-   Added "line_color" to "cmap_evidence_type" table
    For MySQL:
    alter table cmap_evidence_type add line_color varchar(20);
    For Oracle:
    alter table cmap_evidence_type add line_color varchar2(20);
    For PostgreSQL:
    alter table cmap_evidence_type add line_color character varying(20);
-   Added "title" attribute to map areas on templates for viewing maps
-   Changed "truncate table" in SQL for reloading of correspondence
    matrix to be a more simple unqualified "delete from" in order to
    get around permissions in PostgreSQL (there was also some
    complaint earlier that this didn't work with some earlier version
    of MySQL)
-   Added "display_order" fields to "cmap_map"
    For MySQL:
    alter table cmap_map add display_order int(11) not null default '1';
    For Oracle:
    alter table cmap_map add display_order number(11) DEFAULT '1' CONSTRAINT \
        nn_cmap_map_display_order NOT NULL;
    For PostgreSQL:
    alter table cmap_map add display_order integer default '1' not null;
-   Fixed bug (#677777) where feature search in the web admin tool
    wasn't case-insensitive
-   Added trimming of whitespace on column names in data import
-   Added pagination to map set info page
-   Added coloring of correspondence lines based on evidence
-   Added new feature glyphs: up-arrow, down-arrow, double-arrow, 
    filled-box, in-triangle, and out-triangle
-   Expanded legend into feature types and evidence types
-   Added support for multiple data sources
-   Added option to not overwrite map info when importing via cmap_admin.pl
-   Added exporting of feature correspondence via cmap_admin.pl
-   Added dbxref_name and dbxref_url to feature export in cmap_admin.pl
-   Added cmap-schema.png, a diagram of the tables
-   Removed DATA_IMPORT, DATA_CURATION from docs, consolidated into new
    ADMINISTRATION document
-   Fixed bug in user feature search where "All" choice for features types and
    species wasn't working
-   Added acceptance of multiple evidence codes (separated by commas) in
    feature correspondence import file
-   Removed Bio::GMOD::CMap::Drawer::Feature
-   Added minimum number of correspondences restriction
-   Added deleting of maps and map sets to cmap_admin.pl
-   Added view of color palette in web admin tool
-   Added ability to create automated name-based correspondences between
    features of different types via cmap.conf options
-   Added quoted string support to feature search
-   Increased size of all "double" fields (in MySQL declarations) from 8 to 11
-   Added experimental throttling measures (see ADMINISTRATION)
-   Added ability to highlight features by primary name, alternate name
    or accession ID
-   Added ability to highlight features with embedded spaces in the name

0.05    2002-12-17

-   Added extra split tokens to highlight string in map detail page 
    as features weren't being highlighted in the table when 
    multiple highlighted features were specified with anything other
    than a comma
-   Added all original parameters in the URL for resorting the 
    feature table on the map detail page
-   Fixed bug in admin map view that showed all features and a 
    broken pager
-   Fixed bug in admin feature search that broke in Oracle because
    double quotes were used instead of single quotes
-   Fixed bad URL in admin home page that pointed to "/maps" instead
    of "/cmap"
-   Fixed bad HTML in admin feature create/edit templates that didn't
    show feature type because of a missing "</SELECT>"
-   Fixed SQL in matrix that actually caused a server error, which
    should never happen
-   Added missing "</HTML>" tags to templates "feature_search.tmpl,"
    "feature_detail.tmpl," and "error.tmpl"
-   Added "alternate_name" to SQL for feature search (was expected by
    interface but never returned by code)
-   Added appropriate ending to feature search template (was missing
    call to page object's "end_body" method, important for Gramene)
-   Fixed bug in admin when adding a feature correspondence (see bug
    #632053)
-   Fixed a bug that allowed a feature to extend beyond the current
    map range if it wanted to
-   Added "alternate_name" to SQL for feature correspondences table of
    the feature detail page (interface was expecting it)
-   Fixed misplaced angle brackets in feature search template
-   Changed order of options on admin feature edit page that made IE
    set the "is_landmark" option to "yes" when it wasn't originally set
-   Added back in "use DBI;" statement to main CMap.pm module to
    prevent "Can't call method..." errors
-   Fixed errors in loading SQL driver in data module
-   Got rid of "cmap_dump.pl" as that logic has been moved into
    cmap_admin.pl
-   Added a schema for PostgreSQL and started initial testing

0.04    2002-10-11

-   Added "cmap_dump.pl" script to help dump CMap tables as
    database-independent "INSERT" statements
-   Put dump of entire Gramene database on GMOD site
-   Fixed a bug where a feature's relative start/stop positions could
    return a value less than 0 or greater than 1, which could allow
    features to be drawn outside the bounds of a map
-   Fixed some bugs in admin templates where they weren't including
    the footer
-   Got rid of useless "help_footer" template
-   Added ability to tee the output of cmap_admin.pl actions to a log
    file in user's home directory
-   Fixed various import and correspondence routines to print so as to
    take advantage of log tee
-   Added IO::Tee dependency to Makefile and default perlstartup.pl
-   Moved "insert_correspondence" from Utils.pm into Admin.pm, added
    some logic to keep it from creating correspondences between
    relational maps
-   In jumbling around code, I had messed up some code that allowed
    automatic zooming of comparative maps when going to the
    "map_details" page
-   Made cmap_cache dir permissions '0700' on creation
-   Playing around with some ideas about automatic auditing of
    database changes.  Nothing implemented yet, but I'm considering a
    Bio::GMOD::CMap::DB class to inherit from DBI and override the "do"
    method.
-   Really cleaned up admin code for removing objects from the
    database, very important as I can't rely on referential integrity
    to do cascade deletes, dependency checking, etc.
-   Cleaned up code to handle catastrophic errors better (misplaced
    conf file, bad db connection info, bad template dir, etc.).
-   Improved POD in cmap_admin.pl
-   Improved INSTALL docs with feedback from beta testers

0.03    2002-09-26

Moved all the code to the namespace Bio::GMOD::CMap as the tool
became a part of the Generic Model Organism Database project
(http://www.gmod.org/).  

-   Added importing of correspondences (before there was only
    name-based)
-   Made install use ExtUtils::MakeMaker for "real" installation
-   Fixed bug in distribution of feature labels
-   Added frames around map "slots"
-   Added zooming on comparative maps in "map_details" and flanking
    markers
-   Added database cross-references to features
-   Fixed collisions of map titles
-   Added more to INSTALL file, moved some parts to DATA_IMPORT
-   Added sample data from Gramene project, maybe I'll have some other
    datasets in the future?  I'd also like to add a dump from MySQL.
-   Added "I-beam" shape for drawing maps
-   Changed database as such:
    *   Allow a feature to have specific db cross-references:
        alter table cmap_feature add dbxref_name varchar(32);
        alter table cmap_feature add dbxref_url varchar(200);
    *   Change the name of the "how_to_draw" column (awkward)
        alter table cmap_map_type change column how_to_draw 
            shape varchar(12);
        alter table cmap_feature_type change column how_to_draw 
            shape varchar(12);
        alter table cmap_map_set change column how_to_draw 
            shape varchar(12);
-   Fixed problem with spacing of maps and long titles
-   Removed old CSHL::* namespace

0.02    2002-07-31

Pretty much a complete rewrite of version 0.01.  Moved to the
namespace CSHL::CMap.  Much improved, but still pretty rough, esp. on
the installation and customization.

0.01  

The original version was called CSHL::ComparativeMaps as I developed
it for Cold Spring Harbor's Gramene project (http://www.gramene.org/).
It was pretty rough.  Be glad you aren't using it.
