### The JBrowse `biodb-to-json.pl` Configuration File

`biodb-to-json.pl` and `prepare-refseqs.pl` can use a configuration file to connect to an existing `Bio::DB::*` database and batch-format its data for use by JBrowse You don't necessarily need a config file if all of your data is in flat files. In this case, it is recommended that you format your data using `flatfile-to-json.pl`. See `docs/examples/format_tomato.sh` for an example of a simple shell script that uses `prepare-refseqs.pl` and `flatfile-to-json.pl` to to create a complete genome browser for Tomato.

The basic syntax of the configuration file is JSON. Many of the configuration keys are quite similar to those used by GBrowse.

The root level of the config file:

key | value | type
--- | --- | ---
description | Brief description of the data source | string

db_adaptor

Perl class that implements Bio::DasI.
Common ones include

- Bio::DB::SeqFeature::Store
- Bio::DB::GFF
- Bio::DB::Das::Chado

string

db_args | arguments to the constructor for the specified db_adaptor | dictionary of key-value pairs
TRACK DEFAULTS | default track settings | track settings dictionary
tracks | settings for all the tracks | array of track settings dictionaries

The main part of the configuration file consists of the per-track settings:

key | value | type
--- | --- | ---
track | track identifier used by the software. It's more convenient if this doesn't have any weird characters or spaces in it | string
key | Human-readable label for the track | string
feature | List of feature types to put into the track | array of strings

autocomplete

If you want to be able to search for the features in this track, set this to one of the following strings:

- label
  to search on the feature label
- alias
  to search on the feature aliases
- all
  to search on both labels and aliases

string

class | The CSS class for the feature. Look in the feature glyph list for the available options. | string
category | The category this track is in, for grouping the tracks together | string
urlTemplate | Template for a URL to visit if the user clicks on a feature in this track | string
extraData | Extra per-feature information to send to the client; useful in the urlTemplate | dictionary of header -> perl sub
subfeatureClasses | Specifies what CSS class to apply to what type of subfeature | dictionary of type -> CSS class
arrowheadClass | CSS class for arrowheads | string
clientConfig | settings to control the behavior of the client for this track, mainly zoom thresholds for when to display more information | dictionary