.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Legacy::Graphics::Browser 3pm" .TH Legacy::Graphics::Browser 3pm "2018-10-03" "perl v5.26.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Legacy::Graphics::Browser\-\- Old version, deprecated .SH "METHODS" .IX Header "METHODS" The remainder of this document describes the methods available to the programmer. .SS "\fInew()\fP" .IX Subsection "new()" .Vb 1 \& my $browser = Legacy::Graphics::Browser\->new(); .Ve .PP Create a new Legacy::Graphics::Browser object. The object is initially empty. This is done automatically by gbrowse. .SS "\fIurl_label()\fP" .IX Subsection "url_label()" .Vb 1 \& my $url_label = $browser\->url_label($yucky_url); .Ve .PP Creates a label.alias for \s-1URL\s0 strings starting with 'http' or 'ftp'. The last word (following a '/') in the url is used for the label. Returns a string \*(L"url:label\*(R". .SS "\fIread_configuration()\fP" .IX Subsection "read_configuration()" .Vb 1 \& my $success = $browser\->read_configuration(\*(Aq/path/to/gbrowse.conf\*(Aq); .Ve .PP Parse the files in the gbrowse.conf configuration directory. This is done automatically by gbrowse. Returns a true status code if successful. .ie n .SS "$conf_dir = \fIdir()\fP" .el .SS "\f(CW$conf_dir\fP = \fIdir()\fP" .IX Subsection "$conf_dir = dir()" Returns the directory path that this config is attached to. .SS "\fIsources()\fP" .IX Subsection "sources()" .Vb 1 \& @sources = $browser\->sources; .Ve .PP Returns the list of symbolic names for sources. The symbolic names are derived from the configuration file name by: .PP .Vb 2 \& 1) stripping off the .conf extension. \& 2) removing the pattern "^\ed+\e." .Ve .PP This means that the configuration file \*(L"03.fly.conf\*(R" will have the symbolic name \*(L"fly\*(R". .SS "\fIsource()\fP" .IX Subsection "source()" .Vb 2 \& $source = $browser\->source; \& $source = $browser\->source($new_source); .Ve .PP Sets or gets the current source. The default source will the first one found in the gbrowse.conf directory when sorted alphabetically. .PP If you attempt to set an invalid source, the module will issue a warning and will return undef. .SS "\fIsetting()\fP" .IX Subsection "setting()" .Vb 3 \& $value = $browser\->setting(general => \*(Aqstylesheet\*(Aq); \& $value = $browser\->setting(gene => \*(Aqfgcolor\*(Aq); \& $value = $browser\->setting(\*(Aqstylesheet\*(Aq); .Ve .PP The \fIsetting()\fR method returns the value of one of the current source configuration settings. \fIsetting()\fR takes two arguments. The first argument is the name of the stanza in which the configuration option is located. The second argument is the name of the setting. Stanza and option names are case sensitive, with the exception of the \&\*(L"general\*(R" section, which is automatically folded to lowercase. .PP If only one argument is provided, then the \*(L"general\*(R" stanza is assumed. .PP Option values are folded in such a way that newlines and tabs become single spaces. For example, if the \*(L"default features\*(R" option is defined like this: .PP .Vb 3 \& default features = Transcripts \& Genes \& Scaffolds .Ve .PP Then the value retrieved by .PP .Vb 1 \& $browser\->setting(\*(Aqgeneral\*(Aq=>\*(Aqdefault features\*(Aq); .Ve .PP will be the string \*(L"Transcripts Genes Scaffolds\*(R". Note that it is your responsibility to split this into a list. I suggest that you use Text::Shellwords to split the list in such a way that quotes and escapes are preserved. .PP Because of the default, you could also fetch this information without explicitly specifying the stanza. Combined with shellwords gives the idiom: .PP .Vb 1 \& @defaults = shellwords($browser\->setting(\*(Aqdefault features\*(Aq)); .Ve .SS "\fIfallback_setting()\fP" .IX Subsection "fallback_setting()" .Vb 1 \& $value = $browser\->setting(gene => \*(Aqfgcolor\*(Aq); .Ve .PP Tries to find the setting for designated label (e.g. \*(L"gene\*(R") first. If this fails, looks in [\s-1TRACK DEFAULTS\s0]. If this fails, looks in [\s-1GENERAL\s0]. .SS "\fIplugin_setting()\fP" .IX Subsection "plugin_setting()" .Vb 1 \& $value = = $browser\->plugin_setting("option_name"); .Ve .PP When called in the context of a plugin, returns the setting for the requested option. The option must be placed in a [PluginName:plugin] configuration file section: .PP .Vb 2 \& [MyPlugin:plugin] \& foo = bar .Ve .PP Now within the MyPlugin.pm plugin, you may call \&\f(CW$browser\fR\->plugin_setting('foo') to return value \*(L"bar\*(R". .SS "\fIdb_settings()\fP" .IX Subsection "db_settings()" .Vb 1 \& @args = $browser\->db_settings; .Ve .PP Returns the appropriate arguments for connecting to Bio::DB::GFF. It can be used this way: .PP .Vb 1 \& $db = Bio::DB::GFF\->new($browser\->dbgff_settings); .Ve .SS "\fIgbrowse_root()\fP" .IX Subsection "gbrowse_root()" .Vb 1 \& $root = $browser\->gbrowse_root() .Ve .PP Return the setting of \*(L"gbrowse root\*(R" .SS "\fIrelative_path()\fP" .IX Subsection "relative_path()" .Vb 1 \& $relative_path = $browser\->relative_path(\*(Aqgbrowse.css\*(Aq); .Ve .PP Add the setting of \*(L"gbrowse root\*(R" to the indicated path, if relative. Otherwise pass through unchanged. .SS "\fIrelative_path_setting()\fP" .IX Subsection "relative_path_setting()" .Vb 1 \& $relative_path = $browser\->relative_path_setting(\*(Aqstylesheet\*(Aq); .Ve .PP Like \fIrelative_path()\fR, but works on a named setting rather than an actual path or directory. .SS "\fIversion()\fP" .IX Subsection "version()" .Vb 1 \& $version = $browser\->version .Ve .PP This is a shortcut method that returns the value of the \*(L"version\*(R" option in the general section. The value returned is the version of the data source. .SS "\fIdescription()\fP" .IX Subsection "description()" .Vb 1 \& $description = $browser\->description .Ve .PP This is a shortcut method that returns the value of the \*(L"description\*(R" option in the general section. The value returned is a human-readable description of the data source. .ie n .SS "$time = $browser\->remember_settings_time" .el .SS "\f(CW$time\fP = \f(CW$browser\fP\->remember_settings_time" .IX Subsection "$time = $browser->remember_settings_time" Return the relative time (in \s-1CGI\s0 \*(L"expires\*(R" format) to maintain information about the current page settings, including plugin configuration. .ie n .SS "$time = $browser\->remember_source_time" .el .SS "\f(CW$time\fP = \f(CW$browser\fP\->remember_source_time" .IX Subsection "$time = $browser->remember_source_time" Return the relative time (in \s-1CGI\s0 \*(L"expires\*(R" format) to maintain information on which source the user is viewing. .ie n .SS "$language = $browser\->language([$new_language])" .el .SS "\f(CW$language\fP = \f(CW$browser\fP\->language([$new_language])" .IX Subsection "$language = $browser->language([$new_language])" Get/set an associated Legacy::Graphics::Browser::I18n language translation object. .ie n .SS "$french = $browser\->tr($english)" .el .SS "\f(CW$french\fP = \f(CW$browser\fP\->tr($english)" .IX Subsection "$french = $browser->tr($english)" Translate message into currently-set language, with fallback to \s-1POSIX,\s0 via associated Legacy::Graphics::Browser::I18n language translation object. .ie n .SS "$section_setting = $browser\->section_setting($section_name)" .el .SS "\f(CW$section_setting\fP = \f(CW$browser\fP\->section_setting($section_name)" .IX Subsection "$section_setting = $browser->section_setting($section_name)" Returns \*(L"open\*(R" \*(L"closed\*(R" or \*(L"off\*(R" for the named section. Named sections are: .PP .Vb 7 \& instructions \& search \& overview \& details \& tracks \& display \& add tracks .Ve .SS "\fIlabels()\fP" .IX Subsection "labels()" .Vb 1 \& @track_labels = $browser\->labels .Ve .PP This method returns the names of each of the track stanzas, hereinafter called \*(L"track labels\*(R" or simply \*(L"labels\*(R". These labels can be used in subsequent calls as the first argument to \fIsetting()\fR in order to retrieve track-specific options. .SS "\fIdefault_labels()\fP" .IX Subsection "default_labels()" .Vb 1 \& @default_labels = $browser\->default_labels .Ve .PP This method returns the labels for each track that is turned on by default. .SS "\fIlabel2type()\fP" .IX Subsection "label2type()" .Vb 1 \& @feature_types = $browser\->label2type($label,$lowres); .Ve .PP Given a track label, this method returns a list of the corresponding sequence feature types in a form that can be passed to Bio::DB::GFF. The optional \f(CW$lowres\fR flag can be used to tell \fIlabel2type()\fR to select a set of features that are suitable when viewing large sections of the sequence (it is up to the person who writes the configuration file to specify this). .SS "\fItype2label()\fP" .IX Subsection "type2label()" .Vb 1 \& $label = $browser\->type2label($type); .Ve .PP Given a feature type, this method translates it into a track label. .SS "\fIfeature2label()\fP" .IX Subsection "feature2label()" .Vb 1 \& $label = $browser\->feature2label($feature [,$length]); .Ve .PP Given a Bio::DB::GFF::Feature (or anything that implements a \fItype()\fR method), this method returns the corresponding label. If an optional length is provided, the method takes semantic zooming into account. .SS "\fIcitation()\fP" .IX Subsection "citation()" .Vb 1 \& $citation = $browser\->citation($label) .Ve .PP This is a shortcut method that returns the citation for a given track label. It simply calls \f(CW$browser\fR\->setting($label=>'citation'); .SS "\fIwidth()\fP" .IX Subsection "width()" .Vb 1 \& $width = $browser\->width .Ve .PP This is a shortcut method that returns the width of the display in pixels. .SS "\fIheader()\fP" .IX Subsection "header()" .Vb 1 \& $header = $browser\->header; .Ve .PP This is a shortcut method that returns the header \s-1HTML\s0 for the gbrowse page. .SS "\fIfooter()\fP" .IX Subsection "footer()" .Vb 1 \& $footer = $browser\->footer; .Ve .PP This is a shortcut method that returns the footer \s-1HTML\s0 for the gbrowse page. .SS "\fIconfig()\fP" .IX Subsection "config()" .Vb 1 \& $config = $browser\->config; .Ve .PP This method returns a Bio::Graphics::FeatureFile object corresponding to the current source. .SS "\fImtime()\fP" .IX Subsection "mtime()" .Vb 1 \& $time = $browser\->mtime() .Ve .PP This method returns the modification time of the config file for the current source. .SS "\fIpath()\fP" .IX Subsection "path()" .Vb 1 \& $path = $browser\->path() .Ve .PP This method returns the file path of the config file for the current source. .SS "\fImake_link()\fP" .IX Subsection "make_link()" .Vb 1 \& $url = $browser\->make_link($feature,$panel,$label) .Ve .PP Given a Legacy::SeqFeatureI object, turn it into a \s-1URL\s0 suitable for use in a hypertext link. For convenience, the Legacy::Graphics panel is also provided. If \f(CW$label\fR is provided, then its link overrides the type of the feature. .SS "\fIrender_panels()\fP" .IX Subsection "render_panels()" .Vb 1 \& $panels = $browser\->render_panels(%args); .Ve .PP Render an image and an image map according to the options in \f(CW%args\fR. In a Returns a two-element list. The first element is a \s-1URL\s0 that refers to the image which can be used as the \s-1SRC\s0 for an <\s-1IMG\s0> tag. The second is a complete image map, including the <\s-1MAP\s0> and sections. .PP The arguments are a series of tag=>value pairs, where tags are: .PP .Vb 1 \& Argument Value \& \& segment A Bio::DB::GFF::Segment or \& Legacy::Das::SegmentI object (required). \& \& tracks An arrayref containing a series of track \& labels to render (required). The order of the labels \& determines the order of the tracks. \& \& options A hashref containing options to apply to \& each track (optional). Keys are the track labels \& and the values are 0=auto, 1=force no bump, \& 2=force bump, 3=force label, 4=expanded bump. \& \& feature_files A hashref containing a series of \& Bio::Graphics::FeatureFile objects to be \& rendered onto the display (optional). The keys \& are labels assigned to the 3d party \& features. These labels must appear in the \& tracks arrayref in order for render_panels() to \& determine the order in which to render them. \& \& do_map This argument is a flag that controls whether or not \& to generate the image map. It defaults to false. \& \& do_centering_map This argument is a flag that controls whether or not \& to add elements to the image map so that the user can \& center the image by clicking on the scale. It defaults \& to false, and has no effect unless do_map is also true. \& \& title Add specified title to the top of the image. \& \& noscale Suppress the scale \& \& flip Flip coordinates left to right \& \& hilite_callback Callback for performing hilighting \& \& image_and_map This argument will cause render_panels to emulate \& the legacy method image_and_map() and return a \& GD::Image object and a \*(Aqboxes\*(Aq array reference rather \& than rendered html. This argument applies only to composite \& (non\-draggable) panel images. .Ve .PP Any arguments names that begin with an initial \- (hyphen) are passed through to Bio::Graphics::Panel\->\fInew()\fR directly .PP Any arguments names that begin with an initial \- (hyphen) are passed through to Bio::Graphics::Panel\->\fInew()\fR directly .SS "\fIdrag_and_drop()\fP" .IX Subsection "drag_and_drop()" Return true if drag_and_drop tracks should be enabled on this datasource. Looks at the \*(L"drag and drop\*(R" option and also consults a series of user agents known to support drag_and_drop. .SS "\fIgenerate_panels()\fP" .IX Subsection "generate_panels()" Generate the \s-1GD\s0 object and the imagemap and returns a hashref in the format .PP .Vb 1 \& $results\->{track_label} = {image=>$uri, map=>$map_data, width=>$w, height=>$h, file=>$img_path) .Ve .PP If the \*(L"drag_n_drop\*(R" argument is false, then returns a single track named \*(L"_\|_all_\|_\*(R". .PP Arguments: a key=>value list 'section' Section type to draw; one of \*(L"overview\*(R", \*(L"region\*(R" or \*(L"detail\*(R" 'segment' A feature iterator that responds to \fInext_seq()\fR methods 'feature_files' A hash of Bio::Graphics::FeatureFile objects containing 3d party features 'options' An hashref of options, where 0=auto, 1=force no bump, 2=force bump, 3=force label 4=force fast bump, 5=force fast bump and label 'drag_n_drop' Force drag-and-drop behavior on or off 'limit' Place a limit on the number of features of each type to show. 'labels' List of named tracks, in the order in which they are to be shown 'tracks' List of named tracks, in the order in which they are to be shown (deprecated) 'label_scale' If true, prints chromosome name next to scale 'title' A title for the image 'noscale' Suppress scale entirely 'image_class' Optional image class for generating \s-1SVG\s0 output (by passing \s-1GD::SVG\s0) 'cache_extra' Extra cache args needed to make this image unique 'scale_map_type' If equal to \*(L"centering_map\*(R" adds an imagemap to the ruler that recenters. If equal to \*(L"interval_map\*(R" creates an imagemap that jumps to a small interval in map 'featurefile_select' callback for selecting features to be rendered from a featurefile onto a panel any arguments that begin with an initial \- (hyphen) are passed through to Panel\->new directly .SS "add_feature_file" .IX Subsection "add_feature_file" Internal use: render a feature file into a panel .SS "generate_image" .IX Subsection "generate_image" .Vb 1 \& ($url,$path) = $browser\->generate_image($gd) .Ve .PP Given a GD::Image object, this method calls its \fIpng()\fR or \fIgif()\fR methods (depending on \s-1GD\s0 version), stores the output into the temporary directory given by the \*(L"tmpimages\*(R" option in the configuration file, and returns a two element list consisting of the \s-1URL\s0 to the image and the physical path of the image. .SS "\fInew_hits_on_overview()\fP" .IX Subsection "new_hits_on_overview()" .Vb 1 \& $hashref = $browser\->hits_on_overview($db,$hits,$options,$keyname); .Ve .PP This method is used to render a series of genomic positions (\*(L"hits\*(R") into a graphical summary of where they hit on the genome in a segment-by-segment (e.g. chromosome) manner. .PP The first argument is a Bio::DB::GFF (or Bio::DasI) database. .PP The second argument is an array ref containing one of: .PP .Vb 2 \& 1) a set of array refs in the form [ref,start,stop,name], where \& name is optional. \& \& 2) a Bio::DB::GFF::Feature object \& \& 3) a Legacy::SeqFeatureI object. .Ve .PP The third argument is the page settings hash from gbrowse. .PP The fourth option is the key to use for the \*(L"hits\*(R" track. .PP The returned \s-1HTML\s0 is stored in a hashref, where the keys are the reference sequence names and the values are \s-1HTML\s0 to be emitted. .SS "\fIerror()\fP" .IX Subsection "error()" .Vb 1 \& my $error = $browser\->error([\*(Aqnew error\*(Aq]); .Ve .PP Retrieve or store an error message. Currently used to pass run-time errors involving uploaded/remote annotation files. .SS "\fIcreate_panel_args()\fP" .IX Subsection "create_panel_args()" .Vb 1 \& @args = $self\->create_panel_args($section,$args); .Ve .PP Return arguments need to create a Bio::Graphics::Panel. \&\f(CW$section\fR is one of 'detail','overview', or 'region' \&\f(CW$args\fR is a hashref that contains the keys: .PP .Vb 5 \& keystyle \& title \& image_class \& postgrid \& background .Ve .SS "\fIcreate_track_args()\fP" .IX Subsection "create_track_args()" .Vb 1 \& @args = $self\->create_track_args($label,$args); .Ve .PP Return arguments need to create a Legacy::Graphics::Track. \&\f(CW$label\fR is a config file stanza label for the track. .SS "\fIsegment_coordinates()\fP" .IX Subsection "segment_coordinates()" .Vb 1 \& ($start,$stop,$flip) = $self\->segment_coordinates($segment,$flip) .Ve .PP Method to correct for rare case in which start and stop are flipped. .SS "\fIcreate_cache_key()\fP" .IX Subsection "create_cache_key()" .Vb 1 \& $cache_key = $self\->create_cache_key(@args) .Ve .PP Create a unique cache key for the given args. .SS "\fIget_cached_panel()\fP" .IX Subsection "get_cached_panel()" .Vb 1 \& ($image_uri,$map,$width,$height) = $self\->get_cached_panel($cache_key) .Ve .PP Return cached image url, imagemap data, width and height of image. .SS "" .IX Subsection "" .Vb 1 \& ($region_sizes,$region_labels,$region_default) = $config\->region_sizes() .Ve .PP Return information about the region panel: .PP .Vb 3 \& 1. list of valid region sizes (@$region_sizes) \& 2. mapping of size to label (%$region_labels) \& 3. default size ($region_default) .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" Bio::Graphics::Panel, Bio::Graphics::Glyph, Bio::Graphics::Feature, Bio::Graphics::FeatureFile .SH "AUTHOR" .IX Header "AUTHOR" Lincoln Stein . .PP Copyright (c) 2001 Cold Spring Harbor Laboratory .PP This package and its accompanying libraries is free software; you can redistribute it and/or modify it under the terms of the \s-1GPL\s0 (either version 1, or at your option, any later version) or the Artistic License 2.0. Refer to \s-1LICENSE\s0 for the full license text. In addition, please see \s-1DISCLAIMER\s0.txt for disclaimers of warranty.