From 748edfff663eccf725512ff10869cefb2cb745c9 Mon Sep 17 00:00:00 2001 From: Garrett Stevens Date: Mon, 9 Nov 2020 16:44:40 -0700 Subject: [PATCH 1/5] Spelling fixes --- products/jbrowse-desktop/doc/objectTypes.md | 2 +- website/docs/bcc2020_plugin_development.md | 2 +- website/docs/config_guide.md | 8 ++++---- website/docs/developer_guide.md | 2 +- website/docs/quickstart_admin.md | 4 ++-- website/docs/user_guide.md | 6 +++--- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/products/jbrowse-desktop/doc/objectTypes.md b/products/jbrowse-desktop/doc/objectTypes.md index 4c85ea67c2..d93cb078eb 100644 --- a/products/jbrowse-desktop/doc/objectTypes.md +++ b/products/jbrowse-desktop/doc/objectTypes.md @@ -20,7 +20,7 @@ A configuration is a type of mobx-state-tree model, in which leaf nodes are Conf Slot Slot ``` -Configurations are all descendents of a single root configuration, which is `root.configuration`. +Configurations are all descendants of a single root configuration, which is `root.configuration`. Configuration types should always be created by the `ConfigurationSchema` factory, e.g. diff --git a/website/docs/bcc2020_plugin_development.md b/website/docs/bcc2020_plugin_development.md index 5b531869fd..013b0007c0 100644 --- a/website/docs/bcc2020_plugin_development.md +++ b/website/docs/bcc2020_plugin_development.md @@ -214,4 +214,4 @@ production This is an initial look into jbrowse 2 plugin development. I strongly encourage reading the developer guide in the main documentation for more info, and let us -know if you have any feeback or questions. Thanks! +know if you have any feedback or questions. Thanks! diff --git a/website/docs/config_guide.md b/website/docs/config_guide.md index 873478f3d4..077e9fb470 100644 --- a/website/docs/config_guide.md +++ b/website/docs/config_guide.md @@ -17,7 +17,7 @@ A JBrowse 2 configuration file, a config.json, is structured as follows /* list of assembly configurations, e.g. the genomes being viewed */ ], "tracks": [ - /* array of tracks being loaded, contain reference to which assembl(ies) + /* array of tracks being loaded, contain reference to which assembl(y/ies) they belong to */ ], "defaultSession": { @@ -78,7 +78,7 @@ Here is a complete config.json file containing only a hg19 ## Configuring reference name aliasing -Reference name aliasing is a process to make chromosomes that are named slighlty +Reference name aliasing is a process to make chromosomes that are named slightly differently but which refer to the same thing render properly The refNameAliases in the above config provides this functionality @@ -395,7 +395,7 @@ Example AlignmentsTrack config #### BamAdapter configuration options - bamLocation - a 'file location' for the BAM -- index: a subconfigurations chema containing +- index: a subconfiguration schema containing - indexType: options BAI or CSI. default: BAI - location: a 'file location' of the index @@ -490,7 +490,7 @@ Example config #### VcfTabixAdapter configuration options - vcfGzLocation - a 'file location' for the BigWig -- index: a subconfigurations chema containing +- index: a subconfiguration schema containing - indexType: options TBI or CSI. default TBI - location: the location of the index diff --git a/website/docs/developer_guide.md b/website/docs/developer_guide.md index bdcca3cf9f..24ccbe8e99 100644 --- a/website/docs/developer_guide.md +++ b/website/docs/developer_guide.md @@ -775,7 +775,7 @@ ConfigSlot types, and other nodes are ConfigurationSchema types. Slot Slot ``` -Configurations are all descendents of a single root configuration, which is +Configurations are all descendants of a single root configuration, which is `root.configuration`. Configuration types should always be created by the `ConfigurationSchema` diff --git a/website/docs/quickstart_admin.md b/website/docs/quickstart_admin.md index f8d7eb1df2..c30b1f3f02 100644 --- a/website/docs/quickstart_admin.md +++ b/website/docs/quickstart_admin.md @@ -4,7 +4,7 @@ title: Quick start guide for the admin-server toplevel: true --- -JBrowse 2 offsers a "graphical configuration editor" called the `admin-server` +JBrowse 2 offers a "graphical configuration editor" called the `admin-server` that let's you add genome assemblies, tracks, and edit their configs in the web browser @@ -97,7 +97,7 @@ Mode. To illustrate how to access this, first we will open a Linear Genome View using the navigation bar (`File > Add > Linear Genome View`), and click on the "Select Tracks" button. -The configuration settings are accesible by clicking on the ellipses by each +The configuration settings are accessible by clicking on the ellipses by each track ![](./img/admin_settings_access.png) diff --git a/website/docs/user_guide.md b/website/docs/user_guide.md index 9f008deb5f..ee8a89a2ac 100644 --- a/website/docs/user_guide.md +++ b/website/docs/user_guide.md @@ -114,7 +114,7 @@ Currently, in order to edit a track config, you have to make a copy of the track ![](img/copy_track.png) Figure showing how to copy a track, note that settings button is disabled -because we don't "own this track" as a non-priviledged user +because we don't "own this track" as a non-privileged user After you have copied the track, you can edit the track settings @@ -179,7 +179,7 @@ the reference genome, or blue if they aligned to the reverse strand. ### Coverage visualization -The coverage visualization shows the depth-of-coverage of the reads at eacposition on the genome, and also draws using colored boxes any occurence of +The coverage visualization shows the depth-of-coverage of the reads at each position on the genome, and also draws using colored boxes any occurrence of mismatches between the read and the reference genome, so if 50% of the reads had a T instead of the reference A, half the height of the coverage histogram would contain a 'red' box @@ -203,7 +203,7 @@ If a read contains bases that do not map the the genome properly, they can either be removed from the alignment (hard clipping) or can be included, and not shown by default (soft clipping) -JBrowse 2 also contains an option to "show the soft clipping" that has occured. +JBrowse 2 also contains an option to "show the soft clipping" that has occurred. This can be valuable to show the signal around a region that contains structural variation or difficult mappability From d27f3fa82b673224ac1f35ec3305355aae335985 Mon Sep 17 00:00:00 2001 From: Garrett Stevens Date: Wed, 11 Nov 2020 09:23:55 -0700 Subject: [PATCH 2/5] quickstart_admin to quickstart_gui --- website/blog/2020-11-05-jbrowse-web-1.0.0-release.md | 2 +- website/docs/config_guide.md | 2 +- website/docs/{quickstart_admin.md => quickstart_gui.md} | 2 +- website/docs/user_guide.md | 2 +- website/sidebars.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) rename website/docs/{quickstart_admin.md => quickstart_gui.md} (99%) diff --git a/website/blog/2020-11-05-jbrowse-web-1.0.0-release.md b/website/blog/2020-11-05-jbrowse-web-1.0.0-release.md index 22ca22730b..8b881e36d0 100644 --- a/website/blog/2020-11-05-jbrowse-web-1.0.0-release.md +++ b/website/blog/2020-11-05-jbrowse-web-1.0.0-release.md @@ -20,7 +20,7 @@ Changes - fixed bug with reference sequences that don't use the alias system - fixed bug with SV inspector having a disabled state stuck on the buttons - added documentation for the `jbrowse admin-server` command - [here](/docs/quickstart_admin) + [here](/docs/quickstart_gui) - added display modes, a giant effort to make the same track visible in multiple contexts - added a splash screen when no default session is in the config file diff --git a/website/docs/config_guide.md b/website/docs/config_guide.md index 077e9fb470..8a3691add5 100644 --- a/website/docs/config_guide.md +++ b/website/docs/config_guide.md @@ -148,7 +148,7 @@ See our CLI docs for the add-assembly for more details here -- Note: assemblies can also be added graphically using the assembly manager when you are using the so-called admin-server. See the [quickstart -guide](quickstart_admin#adding-an-assembly) for more details. +guide](quickstart_gui#adding-an-assembly) for more details. ## Assembly config diff --git a/website/docs/quickstart_admin.md b/website/docs/quickstart_gui.md similarity index 99% rename from website/docs/quickstart_admin.md rename to website/docs/quickstart_gui.md index c30b1f3f02..01151bc86e 100644 --- a/website/docs/quickstart_admin.md +++ b/website/docs/quickstart_gui.md @@ -1,5 +1,5 @@ --- -id: quickstart_admin +id: quickstart_gui title: Quick start guide for the admin-server toplevel: true --- diff --git a/website/docs/user_guide.md b/website/docs/user_guide.md index ee8a89a2ac..567aa4fc18 100644 --- a/website/docs/user_guide.md +++ b/website/docs/user_guide.md @@ -78,7 +78,7 @@ specify the index file explicitly. Note: If you are an administrator, you can add tracks with the command line or with the admin server [add-track](cli#jbrowse-add-track) or [admin-server -guide](quickstart_admin) +guide](quickstart_gui) ### Sharing sessions diff --git a/website/sidebars.json b/website/sidebars.json index e355635174..a6fe590f78 100644 --- a/website/sidebars.json +++ b/website/sidebars.json @@ -6,7 +6,7 @@ { "type": "category", "label": "Quickstart guides", - "items": ["quickstart_web", "quickstart_admin", "quickstart_desktop"] + "items": ["quickstart_web", "quickstart_gui", "quickstart_desktop"] }, "user_guide", "config_guide", From 5e1b60432092f23d4dc6d94ebec868c6b80beade Mon Sep 17 00:00:00 2001 From: Garrett Stevens Date: Wed, 11 Nov 2020 12:18:24 -0700 Subject: [PATCH 3/5] Make three quickstarts: web, cli, and gui Co-authored-by: Teresa Martinez Co-authored-by: Peter Xie Co-authored-by: Elliot Hershberg --- website/docs/img/admin_server.png | Bin 0 -> 5776 bytes website/docs/img/config_not_found.png | Bin 0 -> 12824 bytes website/docs/img/lgv_assembly.png | Bin 0 -> 11603 bytes website/docs/img/sample_config.png | Bin 0 -> 31227 bytes website/docs/img/volvox_alignments.png | Bin 0 -> 24632 bytes website/docs/img/volvox_variants.png | Bin 0 -> 22694 bytes website/docs/quickstart_cli.md | 210 +++++++++++++++++++++++++ website/docs/quickstart_gui.md | 122 +++++++------- website/docs/quickstart_web.md | 182 +++++++++++---------- website/sidebars.json | 7 +- 10 files changed, 372 insertions(+), 149 deletions(-) create mode 100644 website/docs/img/admin_server.png create mode 100644 website/docs/img/config_not_found.png create mode 100644 website/docs/img/lgv_assembly.png create mode 100644 website/docs/img/sample_config.png create mode 100644 website/docs/img/volvox_alignments.png create mode 100644 website/docs/img/volvox_variants.png create mode 100644 website/docs/quickstart_cli.md diff --git a/website/docs/img/admin_server.png b/website/docs/img/admin_server.png new file mode 100644 index 0000000000000000000000000000000000000000..5801be552843ee8cd199ec4bc6407462144eac09 GIT binary patch literal 5776 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 DIVR7U literal 0 HcmV?d00001 diff --git a/website/docs/img/config_not_found.png b/website/docs/img/config_not_found.png new file mode 100644 index 0000000000000000000000000000000000000000..633ce4801f807109167063e09bea57bb197b02da GIT binary patch literal 12824 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 literal 0 HcmV?d00001 diff --git a/website/docs/img/lgv_assembly.png b/website/docs/img/lgv_assembly.png new file mode 100644 index 0000000000000000000000000000000000000000..5c8cbccafc98f25cff7370d447aa07a986a5363b GIT binary patch literal 11603 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 literal 0 HcmV?d00001 diff --git a/website/docs/img/volvox_variants.png b/website/docs/img/volvox_variants.png new file mode 100644 index 0000000000000000000000000000000000000000..e458d1f96474e770e98a9810e3f61804be22b38a GIT binary patch literal 22694 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 literal 0 HcmV?d00001 diff --git a/website/docs/quickstart_cli.md b/website/docs/quickstart_cli.md new file mode 100644 index 0000000000..476eb30b49 --- /dev/null +++ b/website/docs/quickstart_cli.md @@ -0,0 +1,210 @@ +--- +id: quickstart_cli +title: Config editing quick start — command-line interface +toplevel: true +--- + +In order to display your data, JBrowse 2 needs to know about the reference +genome for your organism of interest and needs to have tracks created that +reference your data sources. This guide will show you how to set those up using +the JBrowse CLI. + +:::note + +You can also do this configuration with graphical configuration editing +interface built into JBrowse 2. See that guide [here](quickstart_gui). + +::: + +## Pre-requisites + +- [JBrowse CLI](quickstart_web#install-the-cli-tools) + +- [JBrowse 2 web application](quickstart_web#using-jbrowse-create-to-install-jbrowse) + +## Adding a genome assembly + +:::info + +For this step we configure JBrowse to use files being hosted at a URL. For an +example of how to use files located on your computer, see the +[adding a track](#adding-a-track) step. + +::: + +First we will configure an assembly, or reference genome, for for JBrowse 2. +This usually means providing a file that describes the reference sequence for +the organism, such as a FASTA or 2BIT file. + +You will want to use your own data for your organism, but for this example we +provide a small example reference sequence for a simulated organism, _volvox +mythicus_, that you can use. + +```sh-session +# Make sure you are in the directory where you have downloaded JBrowse 2 +jbrowse add-assembly http://jbrowse.org.s3.amazonaws.com/genomes/volvox/volvox.fa +``` + +:::caution + +A FASTA must have an index to work in JBrowse 2. This command assumes that the +index file is the same as the FASTA but with `.fai` appended to the file name. + +::: + +This command will generate a config file if one does not exist yet and add an +assembly called "volvox" to the config file with the URLs of the FASTA and FASTA +index files. The name of the assembly was guessed from the file name, but you +can customize that and many other things with various flags passed to the +command. You can run `jbrowse add-assembly --help` to get a list of all the +options. + +JBrowse 2 also supports other assembly file formats, such as bgzip-compressed +indexed FASTA (e.g. `.fa.gz`, `.fa.gz.fai`, and `.fa.gz.gzi` files) and 2BIT +files. See [configuring assemblies](config_guide#assembly-config) for more info +on formats supported for the sequence file. + +:::note + +If your FASTA is not indexed, you can use the `samtools` tool to index it. + +```sh-session +samtools faidx volvox.fa +# generates volvox.fa.fai +``` + +Or if you want to compress your FASTA, you can use `bgzip` as well. + +```sh-session +bgzip volvox.fa +samtools faidx volvox.fa.gz +# compresses volvox.fa to volvox.fa.gz and generates volvox.fa.gz.fai and volvox.fa.gz.gzi +``` + +For more info about `bgzip` and `samtools`, see https://www.htslib.org/. + +::: + +If you have your JBrowse 2 +[running as described](quickstart_web#running-jbrowse-2) in the JBrowse web +quickstart, you can refresh the page and an add a linear genome view. You will +now see your config in the Assembly dropdown. + +![JBrowse 2 linear genome view setup with volvox in assembly dropdown](./img/lgv_assembly.png) + +## Adding a track + +Now we will show you how to add an alignments track and a variant track to +JBrowse 2. + +:::info + +For this step we configure JBrowse to use files located on your computer. For an +example of how to use files hosted at a URL, see the +[adding a genome assembly](#adding-a-genome-assembly) step. + +::: + +### Adding an alignments track + +For this example we will use a BAM file to add an alignments track. Again, for +this example we provide a small example BAM, but for your data you will replace +the file name with the names of your data files. + +For this track we will assume the data is on your computer at the locations +`/data/volvox.bam` and `/data/volvox.bam.bai`. You can down these file here if +you want to run this example: +[BAM](http://jbrowse.org.s3.amazonaws.com/genomes/volvox/volvox.bam) and +[BAM index](http://jbrowse.org.s3.amazonaws.com/genomes/volvox/volvox.bam.bai). + +To add the track, run + +```sh-session +# Replace with the location of your BAM file +jbrowse add-track /data/volvox.bam --load copy +``` + +This will copy the BAM and BAM index into the JBrowse 2 directory and add a +track pointing at those files to the config file. To see more options adding the +track, such as specifying a name, run `jbrowse add-track --help`. + +If you don't want to copy your BAM file, you can use `--move` to move the file +into the JBrowse 2 directory or `--symlink` to add a symlink to the file to the +JBrowse 2 directory. If you want more control over the location, you can use +`inPlace` to point the track at the file where it is, but be careful with this +option because on a traditional server you will need to ensure that the file is +in a place where the web server is serving it. + +:::note + +If your BAM is not indexed, you can use the `samtools` tool to index it. + +```sh-session +samtools index volvox.bam +# generates volvox.bam.bai +``` + +For more info about `samtools`, see https://www.htslib.org/. + +::: + +If you have your JBrowse 2 +[running as described](quickstart_web#running-jbrowse-2) in the JBrowse web +quickstart, you can refresh the page and an add a linear genome view of the +volvox assembly. Then open track selector, and you will see the alignments +track. + +![JBrowse 2 linear genome view with alignments track](./img/volvox_alignments.png) + +### Adding a variant track + +Adding a variant track is similar to adding an alignments track. For this +example, we will use a VCF file for the track. JBrowse 2 expects VCFs to be +compressed with `bgzip` and indexed. Similar to the above example, we will +assume the files are at `/data/volvox.vcf.gz` and `/data/volvox.vcf.gz.tbi`. You +can download these file here: +[VCF](http://jbrowse.org.s3.amazonaws.com/genomes/volvox/volvox.vcf.gz) and +[VCF index](http://jbrowse.org.s3.amazonaws.com/genomes/volvox/volvox.vcf.gz.tbi). + +To add the track, run + +```sh-session +jbrowse add-track /data/volvox.vcf.gz --load copy +``` + +:::note + +If your VCF is not indexed, you can use the `bgzip` and `tabix` tools to +compress index it. + +```sh-session +bgzip yourfile.vcf +tabix yourfile.vcf.gz +``` + +Alternatively, you can do the same thing with the `bcftools` tool. + +```sh-session +bcftools view volvox.vcf --output-type z > volvox.vcf.gz +rm volvox.vcf +bcftools index --tbi volvox.vcf.gz +``` + +For more info about `bgzip`, `tabix`, and `bcftools`, see +https://www.htslib.org/. + +::: + +If you have your JBrowse 2 +[running as described](quickstart_web#running-jbrowse-2) in the JBrowse web +quickstart, you can refresh the page and an add a linear genome view of the +volvox assembly. Then open track selector, and you will see the variant track. + +![JBrowse 2 linear genome view with variant track](./img/volvox_variants.png) + +## Conclusion + +Now that you have JBrowse configured with an assembly and a couple of tracks, +you can start customizing it further. Check out the rest of the docs for more +information, especially the [JBrowse CLI](cli) docs for more details on some of +the steps shown here. diff --git a/website/docs/quickstart_gui.md b/website/docs/quickstart_gui.md index 01151bc86e..9191e4545c 100644 --- a/website/docs/quickstart_gui.md +++ b/website/docs/quickstart_gui.md @@ -1,58 +1,67 @@ --- id: quickstart_gui -title: Quick start guide for the admin-server +title: Config editing quick start — graphical interface toplevel: true --- -JBrowse 2 offers a "graphical configuration editor" called the `admin-server` -that let's you add genome assemblies, tracks, and edit their configs in the web -browser +In order to display your data, JBrowse 2 needs to know about the reference +genome for your organism of interest and needs to have tracks created that +reference your data sources. This guide will show you how to set those up using +the JBrowse 2's graphical configuration editing. -This guide will introduce how to use the admin-server +:::note -**Note: the admin-server is meant to be used temporarily for configuration, not in production** +You can also do this configuration with JBrowse CLI. See that guide +[here](quickstart_cli). -### Pre-requisites +::: + +## Pre-requisites This tutorial requires having the following software installed -- [JBrowse 2 CLI tools](quickstart_web#install-the-cli-tools) +- [JBrowse CLI](quickstart_web#install-the-cli-tools) - [JBrowse 2 web application](quickstart_web#using-jbrowse-create-to-install-jbrowse) -### Starting JBrowse 2 admin server - -The JBrowse 2 CLI tools is the admin server. +## Starting JBrowse 2 admin server -The admin-server is meant to be run only temporarily to help you setup your -config, it is not used for serving your jbrowse instance in production +The JBrowse CLI contains a tool called `admin-server`. This will act as a web +server for JBrowse 2 and will write any changes made in JBrowse 2 to a config +file. The `admin-server` is meant to be run only temporarily to help you set up +your config, it is not used for serving your jbrowse instance in production. -The admin-server launches an instance of JBrowse 2 in "admin mode", which then let's you +The `admin-server` launches an instance of JBrowse 2 in "admin mode", which then +lets you -- Add assemblies with the "Assembly manager" -- Add tracks -- Edit track configs +- Add and edit assemblies with the "Assembly manager" +- Add tracks and edit tracks +- Add and edit connections -All of these changes will be written to the server side config.json. This is -something that can only be done while the admin-server is running, which again, -is only meant to be temporary! +All of these changes will be written by the server to the JBrowse config file +(usually `config.json`) located in the JBrowse instance. This is something that +can only be done while the `admin-server` is running, which again, is only meant +to be temporary! -To start the admin-server, navigate into your JBrowse 2 directory and run +To start the `admin-server`, navigate into your JBrowse 2 directory and run ```sh-session -## Download the latest instance of jbrowse 2 to /var/www/html/jbrowse2, e.g. your web directory -jbrowse create /var/www/html/jbrowse2 - -## Navigate to this directory -cd /var/www/html/jbrowse2 - ## Start the admin-server jbrowse admin-server ``` This will then generate a link that you can visit in your web browser -### Adding an assembly +![JBrowse CLI admin-server output](./img/admin_server.png) + +:::warning + +Note: the admin-server is meant to be used temporarily for configuration, not in +production + +::: + +## Adding a genome assembly A key first step in configuring a genome browser is adding an assembly to view. In order to do this, use the navigation bar to open up the Assembly Manager @@ -78,49 +87,54 @@ genome hosted by JBrowse: - fasta index: `https://jbrowse.org/genomes/GRCh38/fasta/hg38.prefix.fa.gz.fai` - gzi: `https://jbrowse.org/genomes/GRCh38/fasta/hg38.prefix.fa.gz.gzi` -![](./img/configure_hg38_assembly.png) -Figure showing the settings +![](./img/configure_hg38_assembly.png) Figure showing the settings After clicking the back arrow to return to the table of assemblies, we see that we have successfully added the hg38 assembly. -![](./img/hg38_assembly_table.png) -Figure showing the assembly manager +![](./img/hg38_assembly_table.png) Figure showing the assembly manager The assembly can be edited or deleted, but for now we will return to the application. -### Accessing configuration settings +### Editing a genome assembly + +After you've added a genome assembly, you can use the pencil icon button in the +Assembly manager to edit that assembly. You can also delete assemblies from the +assembly manager. + +## Adding a track + +More information about adding a track graphically is forthcoming. + +### Editing a track -In JBrowse 2, all assemblies and tracks are graphically configurable in Admin -Mode. To illustrate how to access this, first we will open a Linear Genome -View using the navigation bar (`File > Add > Linear Genome View`), and click on -the "Select Tracks" button. +First we will open a Linear Genome View using the navigation bar +(`File > Add > Linear Genome View`), and click on the "Select Tracks" button. The configuration settings are accessible by clicking on the ellipses by each -track +track. -![](./img/admin_settings_access.png) -Figure showing the configuration editor +![](./img/admin_settings_access.png) Figure showing the configuration editor -Open the configuration editor for the track by clicking on the "Settings" -button shown above. You can use the configuration editor to live edit any -configurable value for a given track. +Open the configuration editor for the track by clicking on the "Settings" button +shown above. You can use the configuration editor to live-edit any configurable +value for a given track. -### Additional resources +## Additional resources There are a number of additional features for configuring JBrowse 2. Make sure -to refer to the [config guide](config_guide.md) for topics such as [adding -tracks](config_guide.md#adding-tracks-and-connections) or [adding an assembly -with the CLI](config_guide.md#adding-an-assembly-with-the-cli) +to refer to the [config guide](config_guide.md) for topics such as +[adding tracks](config_guide.md#adding-tracks-and-connections) or +[adding an assembly with the CLI](config_guide.md#adding-an-assembly-with-the-cli) -### Conclusion +## Conclusion -This quickstart showed how to launch the `admin-server` in the JBrowse2 CLI -tools to perform graphical configuration of your application. Specifically, we -looked at how to access and use the assembly manager, as well as how to access -the configuration editor for tracks. Importantly, all tracks have different +This quickstart showed how to launch the `admin-server` in the JBrowse CLI to +perform graphical configuration of your application. Specifically, we looked at +how to access and use the assembly manager, as well as how to access the +configuration editor for tracks. Importantly, all tracks have different configuration options available in the configuration editor. -Make sure to take a look for any tracks you add to JBrowse 2 that you might -want to further configure! +Make sure to take a look at any tracks you add to JBrowse 2 that you might want +to further configure! diff --git a/website/docs/quickstart_web.md b/website/docs/quickstart_web.md index e2ce1672ed..8a1fffefb8 100644 --- a/website/docs/quickstart_web.md +++ b/website/docs/quickstart_web.md @@ -1,143 +1,137 @@ --- id: quickstart_web -title: Quick start guide using the CLI tools +title: JBrowse web quick start toplevel: true --- -This guide will walk through installing jbrowse 2 on your website +In this guide, we'll get an instance of JBrowse running on your computer. -JBrowse 2, like JBrowse 1, is "static site" compatible, meaning it does not -have any server side code that needs to run. We refer to JBrowse 2 for the web -as jbrowse-web also. +## Pre-requisites -### Pre-requisites +- Ability to run commands on the command line +- Node.js 10+ -- You have a webserver such as nginx, apache2, or something else that can - handle plain static resources (js, html, css) +:::caution -- Node.js 10+ - recommend to install this from somewhere other than apt e.g. - [NodeSource](https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions) +If you are using `apt` as your package manager, we recommend not using it to +install Node.js. Good alternatives include +[NodeSource](https://github.com/nodesource) or +[NVM](https://github.com/nvm-sh/nvm). -### Using jbrowse CLI tools +::: -We provide a set of CLI tools for initializing your instance that can do -multiple tasks such as +## Download -- downloading jbrowse 2 from github automatically -- updating an existing jbrowse 2 instance with the latest version on github -- loading a genome assembly -- loading track configs -- etc. +You can download JBrowse 2 by using the JBrowse CLI or by downloading and +unpacking it manually. We recommend using the JBrowse CLI since it also includes +utilities to help you configure JBrowse 2 once it is set up. -You can do many of these tasks manually if you have familiarity with the -system, but the CLI tool will help automate tasks for you +### Downloading using the JBrowse CLI -#### Install the CLI tools +The JBrowse CLI can help perform many tasks to help you manage JBrowse 2, such +as: -To install the JBrowse CLI tools, we expect node v10 or greater to be installed -already, then you can use +- create a new instance of JBrowse 2 automatically +- update an existing instance of JBrowse 2 with the latest released version +- configure your JBrowse 2 instance + +#### Installing the CLI tools + +To install the JBrowse CLI, run ```sh-session npm install -g @jbrowse/cli ``` -After running this command you can then test it with +After running this command you can then test the installation with ```sh-session jbrowse --version ``` -This will output the current version of our CLI tools - -Note: if you do not want to install the CLI tools, they are technically -optional, but they provide useful commands for managing your jbrowse -installation such as downloading a release automatically, adding tracks, genome -assemblies, etc. to your installation +This will output the current version of the JBrowse CLI. -#### Using jbrowse create to install jbrowse +:::note -If you are running a web server such as apache2 or nginx, you may have your web -server in a directory such as `/var/www/html` +If you can't or don't want to globally install the JBrowse CLI, you can also use +the [npx](https://nodejs.dev/learn/the-npx-nodejs-package-runner) command, which +is included with Node.js, to run JBrowse CLI without installing it. Simply +replace `jbrowse` with `npx @jbrowse/cli` in any command, e.g. -```sh-session -jbrowse create /var/www/html/jbrowse2 ``` - -This will download the latest JBrowse 2 release from github releases and -download it to the folder specified. - -Note that `jbrowse create` simply downloads a release from github and unzips it to -the folder specified - -#### Loading a genome assembly - -After you have run the previous step, you will load a genome assembly, which we -refer to simply as an assembly. This is basically a FASTA file - -```sh-session -cd /var/www/html/jbrowse2 -samtools faidx ~/hg19.fa -jbrowse add-assembly ~/hg19.fa --load copy +npx @jbrowse/cli --version ``` -This will copy the hg19.fa and hg19.fa.fai (the FASTA index) to the current -folder, and initialize a file called config.json with the hg19 assembly. +::: -You can also use .2bit files or bgzip-indexed fasta +#### Using `jbrowse create` to download JBrowse 2 -Here is an example with bgzip indexed fasta +In the directory where you would like to download JBrowse 2, run this command +```sh-session +jbrowse create jbrowse2 ``` -cd /var/www/html/jbrowse2 -bgzip -i hg19.fa -samtools faidx hg19.fa.gz -jbrowse add-assembly ~/hg19.fa.gz --load copy -``` - -See [configuring assemblies](config_guide#assembly-config) for more info on formats -supported for the sequence file. - -#### Adding a BAM track -Once you have loaded an assembly, we can try adding a BAM track - -```sh-session -samtools index ~/myfile.bam -jbrowse add-track ~/myfile.bam --load copy +### Downloading using the JBrowse CLI + +You can also download JBrowse 2 manually. Go to the +[releases page](https://github.com/GMOD/jbrowse-components/releases/) of the +JBrowse 2 GitHub repository and find the latest release that is tagged +`@jbrowse/web`. Download the ZIP file from that release. Make sure it is the ZIP +file that starts with `jbrowse-web-` and not the "Source code" ZIP file. Once +you have downloaded the ZIP file, extract it to the location you would like to +have JBrowse 2. + +### Checking the download + +Whether you used the JBrowse CLI or downloaded manually, the directory where you +downloaded JBrowse should look something like this: + +```txt +jbrowse2/ +├── a586bb28a5bad4a3aba2.worker.js +├── a586bb28a5bad4a3aba2.worker.js.LICENSE.txt +├── a586bb28a5bad4a3aba2.worker.js.map +├── asset-manifest.json +├── favicon.ico +├── index.html +├── manifest.json +├── precache-manifest.52c8ba3337cf7ae812b37d874b2de030.js +├── robots.txt +├── service-worker.js +├── static/ +└── test_data/ ``` -This would copy myfile.bam and myfile.bam.bai (inferred filename) from the home -directory +## Running JBrowse 2 -Note that URLs are also allowed +JBrowse 2 requires a web server to run. It won't work if you try to directly +open the `index.html` in your web browser. We can use a simple server to check +that JBrowse 2 has been downloaded properly. Run ```sh-session -jbrowse add-track http://myhost/myfile.bam +cd jbrowse2/ +npx serve . ``` -In this case it would not download the file, but simply put the URL in the -config.json +This will start a web server in our JBrowse 2 directory. Navigate to the +location specified in the tool's output. It will look something like +`http://localhost:5000`. Once at that page, you should see a page that says that +the configuration is not found. That is expected, since we haven't configured +JBrowse 2 yet. It will look something like this: -#### Adding a VCF track +![JBrowse 2 screen showing no configuration found](./img/config_not_found.png) -We generally expect VCF files to be tabix indexed. If you have tabix installed -(sudo apt install tabix) then you can run +Go ahead an click on the sample config to see a JBrowse 2 running with a demo +configuration. It should look like this: -```sh-session -bgzip yourfile.vcf -tabix yourfile.vcf.gz -``` - -Then run - -```sh-session -jbrowse add-track yourfile.vcf.gz --load copy -``` +![JBrowse 2 with a sample configuration](./img/sample_config.png) -#### Conclusion +Congratulations! You're running JBrowse 2. -Hopefully this helps you get started with JBrowse 2 +## Next steps -Check out the rest of the docs, for more information, and also see the CLI docs -for more info [CLI tools](cli) especially for details on some of the -steps shown here. +Now that JBrowse 2 is set up, you can configure it with your own genomes and +tracks. There are two ways you can configure JBrowse 2: with the JBrowse CLI +(guide [here](quickstart_cli)) or with JBrowse 2's built-in graphical +configuration editing (guide [here](quickstart_gui)). diff --git a/website/sidebars.json b/website/sidebars.json index a6fe590f78..99b4948eea 100644 --- a/website/sidebars.json +++ b/website/sidebars.json @@ -6,7 +6,12 @@ { "type": "category", "label": "Quickstart guides", - "items": ["quickstart_web", "quickstart_gui", "quickstart_desktop"] + "items": [ + "quickstart_web", + "quickstart_cli", + "quickstart_gui", + "quickstart_desktop" + ] }, "user_guide", "config_guide", From aaee066883560389e54bcbfe42878db9cb3656f8 Mon Sep 17 00:00:00 2001 From: Garrett Stevens Date: Wed, 11 Nov 2020 13:25:51 -0700 Subject: [PATCH 4/5] Add track adding to GUI quickstart --- website/docs/quickstart_gui.md | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/website/docs/quickstart_gui.md b/website/docs/quickstart_gui.md index 9191e4545c..4ccfdab797 100644 --- a/website/docs/quickstart_gui.md +++ b/website/docs/quickstart_gui.md @@ -105,7 +105,37 @@ assembly manager. ## Adding a track -More information about adding a track graphically is forthcoming. +To add a new track or connection, you can use the menu bar in the app to open +the form for adding a track `File > Open Track`: + +![JBrowse 2 file menu with menu item](./img/add_track_form.png) + +Alternatively, you can use the action button (circular "+") inside the track +selector to access the "Add track" form. + +![JBrowse 2 action button](./img/add_track_tracklist.png) + +In the "Add track" form, you can provide a URL to a file to load. Opening files +from your local machine is not supported currently in the JBrowse 2 web app +(JBrowse desktop does allow this, though, and this functionality may be added in +some form in the future) + +Paste a URL to a file and optionally provide an index file URL too. The +following file formats are supported + +- `tabix`-indexed VCF +- `tabix`-indexed BED +- `tabix`-indexed GFF +- indexed BAM +- indexed CRAM +- BigWig +- BigBed +- Hi-C (Juicebox) + +For tabix files, TBI or CSI indexes are allowed. CSI or BAI is allowed for BAM. +Only CRAI is allowed for CRAM. The index will be inferred for BAI or TBI files +as e.g. filename+'.bai'. If it is different from this, make sure to specify the +index file explicitly. ### Editing a track From 6ccd44dce800bc8e3ad83e192500baf12492d281 Mon Sep 17 00:00:00 2001 From: Garrett Stevens Date: Wed, 11 Nov 2020 14:45:13 -0700 Subject: [PATCH 5/5] [ci skip] Fix typo down -> download --- website/docs/quickstart_cli.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/docs/quickstart_cli.md b/website/docs/quickstart_cli.md index 476eb30b49..fe20cef41c 100644 --- a/website/docs/quickstart_cli.md +++ b/website/docs/quickstart_cli.md @@ -112,8 +112,8 @@ this example we provide a small example BAM, but for your data you will replace the file name with the names of your data files. For this track we will assume the data is on your computer at the locations -`/data/volvox.bam` and `/data/volvox.bam.bai`. You can down these file here if -you want to run this example: +`/data/volvox.bam` and `/data/volvox.bam.bai`. You can download these file here +if you want to run this example: [BAM](http://jbrowse.org.s3.amazonaws.com/genomes/volvox/volvox.bam) and [BAM index](http://jbrowse.org.s3.amazonaws.com/genomes/volvox/volvox.bam.bai).