bigBed Track Format
The bigBed format stores annotation items that can be either a simple or a linked collection of
exons, much as BED files do. BigBed files are created
from BED type files using the program bedToBigBed
. The resulting bigBed
files are in an indexed binary format. The main advantage of the bigBed files is that only
those portions of the files needed to display a particular region are transferred to the Genome
Browser server. Because of this, bigBed has considerably faster display performance than
regular BED when working with large data sets. The bigBed file remains on your local web-accessible
server (http, https, or ftp), not on the UCSC server, and only the portion that is needed for the
currently displayed chromosomal position is locally cached as a "sparse file".
Additional indices can be created for the items in a bigBed file to support item search in track
hubs. See Example #3 below for an example of how to build an additional
index.
See this wiki page for help in selecting the graphing track data format that is most
appropriate for your type of data.
Note that the bedToBigBed
utility uses a substantial amount of memory:
approximately 25% more RAM than the uncompressed BED input file.
Creating a bigBed track
To create a bigBed track, follow these steps:
Step 1.
Create a BED format file following the directions
here. When converting a BED file to a bigBed file,
you are limited to one track of data in your input file; therefore, you must create a separate BED
file for each data track. Your BED file must be sorted first on the chrom
field, and
secondarily on the chromStart
field. You can use the following UNIX sort
command to do this:
sort -k1,1 -k2,2n unsorted.bed > input.bed
Step 2.
Remove any existing "track" or "browser" lines from your BED file so that it
contains only data.
Step 3.
Download the bedToBigBed
program from the
binary utilities directory.
Step 4.
Use the fetchChromSizes
script from the
same directory
to create the chrom.sizes file for the UCSC database you are working with (e.g., hg19).
Step 5.
Use the bedToBigBed
utility to create a bigBed file from your sorted BED file, using
the input.bed file and chrom.sizes files created in Steps 1 and
4:
bedToBigBed input.bed chrom.sizes myBigBed.bb
Step 6.
Move the newly created bigBed file (myBigBed.bb) to a web-accessible http, https, or
ftp location.
Step 7.
If the file name ends with a .bigBed or .bb suffix, you can paste the URL of the
file directly into the
custom track management page, click "submit" and
view the file as a track in the Genome Browser. By default, the file name will be used to name the track. To configure the track
name and descriptions, you must create a "track
line", as shown in Step 8.
Step 8.
Construct a custom track using a single track line.
Note that any of the track attributes listed
here are applicable to tracks of type bigBed. The most basic
version of the track line will look something like this:
track type=bigBed name="My Big Bed" description="A Graph of Data from My Lab" bigDataUrl=http://myorg.edu/mylab/myBigBed.bb
Paste this custom track line into the text box on the custom
track management page.
The bedToBigBed
program can be run with several additional options. Some of these,
such as the -as
and -type
options, are used in examples below. For a full
list of the available options, type bedToBigBed
(with no arguments) on the command line
to display the usage message.
Examples
Example #1
In this example, you will create a bigBed custom track using an existing bigBed file,
bigBedExample.bb, on the UCSC http server. This file contains chromosome 21 data on the
human hg19 assembly.
To create a custom track using this bigBed file:
-
Paste the URL
http://genome.ucsc.edu/goldenPath/help/examples/bigBedExample.bb
into
the custom track management page for the human assembly
hg19 (Feb. 2009).
-
Click the "submit" button.
-
On the next page that displays, click the "chr21" link in the custom track listing to
view the bigBed track in the Genome Browser.
Alternatively, you can customize the track display by including track and browser lines that define
certain parameters:
-
Construct a track line that references the bigBedExample.bb file:
track type=bigBed name="bigBed Example One" description="A bigBed file" bigDataUrl=http://genome.ucsc.edu/goldenPath/help/examples/bigBedExample.bb
-
Include the following browser line to ensure that the custom track opens at the correct
position:
browser position chr21:33,031,597-33,041,570
-
Paste the browser and track lines into the custom track
management page, click the "submit" button, then click the "chr21" link in the
custom track listing to view the bigBed track in the Genome Browser.
Example #2
In this example, you will create your own bigBed file from an existing bed file.
-
Save the BED file bedExample.txt to your computer
(Steps 1 and 2 in Creating a bigBed track, above).
-
Save the file hg19.chrom.sizes to your computer. It
contains the chrom.sizes data for the human (hg19) assembly (Step 4, above).
-
Download the
bedToBigBed
utility (Step 3, above).
-
Run the utility to create the bigBed output file (Step 5, above):
bedToBigBed bedExample.txt hg19.chrom.sizes myBigBed.bb
-
Place the bigBed file you just created (myBigBed.bb) on a web-accessible server
(Step 6, above).
-
Paste the URL itself into the Custom Tracks entry form or construct a track line that
points to your bigBed file (Step 7, above).
-
Create the custom track on the human assembly hg19 (Feb. 2009), and view it in the Genome Browser
(Step 8, above). Note that the original BED file contains data on chromosome 21
only.
Example #3
In this example, you will create your own bigBed file from a fully featured existing BED file that
contains the standard BED fields up to and including the color field (field 9), plus two
additional non-standard fields (two alternate names for each item in the file). BigBed files can
store extra fields in addition to the predefined BED
fields. If you add extra fields to your bigBed file, you must include an AutoSql format
(.as) file describing the fields. For more information on AutoSql, see
Kent and Brumbaugh, 2002, as
well as examples of .as files in
this directory.
This example also demonstrates how to create extra indices on the name field, and the first of the
extra fields to be used for track item search.
-
Save the BED file bedExample2.bed to your computer
(Steps 1 and 2 in Creating a bigBed track, above).
-
Save the file hg18.chrom.sizes to your computer. This file
contains the chrom.sizes for the human (hg18) assembly (Step 4, above).
-
Save the AutoSql file bedExample2.as to your
computer. This file contains descriptions of the BED fields, and is required when the BED file
contains a color field.
-
Download the
bedToBigBed
utility (Step 3, above).
-
Run the utility to create a bigBed output file with an index on the name field and the first
extra field: (Step 5, above):
bedToBigBed -as=bedExample2.as -type=bed9+2 -extraIndex=name,geneSymbol bedExample2.bed hg18.chrom.sizes myBigBed2.bb
-
Place the bigBed file you just created (myBigBed2.bb) on a web-accessible server
(Step 6, above).
-
Paste the URL of the file into the custom tracks entry form, or alternatively construct a track
line that points to your bigBed file (Step 7, above). Because this bigBed file includes a
field for color, you must include the
itemRgb
attribute in the track line.
It will look somewhat similar to this (note that you must insert the URL specific to your own
bigBed file):
track type=bigBed name="bigBed Example Three" description="A bigBed File with Color and two Extra Fields" itemRgb="On" bigDataUrl=http://yourWebAddress/myBigBed2.bb
-
Create the custom track on the human assembly hg18 (Mar. 2006), and view it in the Genome Browser
(step 8, above). Note that the original BED file contains data on chromosome 7 only.
-
If you are using the bigBed file in a track hub, you can use the additional indices for track
item searches. See the setting "searchIndex" in the
Track Database Definition Document for more
information. For example, if you run the
bedToBigBed
utility with the option
-extraIndex=name
, you will be able to search on the "name" field by adding
the line searchIndex name
to the stanza about your bigBed in the hub's
trackDb.txt file.
-
Extra fields can contain text for labels or for display with mouseover (if the BED
"name" field is needed for something that is not the label). See the trackDb settings
"mouseOverField" and
"labelField" for more information.
-
When you click on features, the contents of all extra fields are shown as a table. You can modify
the layout of the resulting page with the trackDb settings
"skipFields",
"sepFields"
and "skipEmptyFields", and
transform text fields into links with the
"urls" trackDb setting.
-
Extra fields that start with the character "_" are reserved for internal use (special
display code); their contents are not shown on the details page.
Sharing Your Data with Others
If you would like to share your bigBed data track with a colleague, learn how to create a URL by
looking at Example #11 on this page.
Extracting Data from the bigBed Format
Because the bigBed files are indexed binary files, it can be difficult to extract data from them.
UCSC has developed the following programs to assist in working with bigBed formats, available from
the binary utilities directory:
-
bigBedToBed
— converts a bigBed file to ASCII BED format.
-
bigBedSummary
— extracts summary information from a bigBed file.
-
bigBedInfo
— prints out information about a bigBed file.
These programs accept either file names or URLs to files as input. As with all UCSC
Genome Browser programs, simply type the program name (with no parameters) on the command line to
view the usage statement.
Troubleshooting
If you get an error when you run the bedToBigBed
program, check your input BED file for
data coordinates that extend past the end of the chromosome. If these are present, run the
bedClip
program
(available here) to remove the problematic
row(s) in your input BED file before using the bedToBigBed
program.