11. Edit Ensembl plugin
Ensembl sites use a plugin architecture that allows any methods/settings to be overwritten by files that are loaded after the main webcode. GenomeHubs provides a plugin which customises some of the features of a standard Ensembl Site, however, in order to set links to the other site components (particlarly the downloads server which hosts data for the assembly statistic visualisations) it is necessary to write a plugin.
At its simplest, this plugin need only contain a configuration file to specify URLs, but it is also useful to include images and text for the assemblies that you will be hosting. Beyond this a plugin could be developed to customise almost any feature of the site so this provides an introduction to one of the most powerful features of an Ensembl site.

- GenomeHubs fetches plugins from git repositories when starting the Ensembl browser so your plugin must be available in a git repository, but this does not need to be a publicly hosted repository on Github so long as it is accessible via
git clone
from the machine that will host the Ensembl site.
Edit
conf/ini-files/DEFAULTS.ini
to update urls, logos and styles:- modify entries that refer to genomehubs
- ensure that urls point to your domain
- ensure that the
ASSEMBLY_STATS_URL
path matches the version name of the directory mounted on the downloads server - update other logos and styles as required
Add images for each species (if available) to
htdocs/i/species
:- name images to match the
SPECIES.URL
meta parameter - add a 96 pixel square image to the
96
subdirectory - add a 64 pixel square image to the
64
subdirectory - add a 48 pixel square image to the
48
subdirectory
Add descriptive text to appear on each assembly home page to
htdocs/ssi/species
:- name files
about_<SPECIES.URL>.html
- use section names to allow the text to be parsed:<!-- {about} --><p>Something about the organism.</p><!-- {about} --><!-- {assembly} --><p>Assembly methods.</p><!-- {assembly} --><!-- {annotation} --><p>Annotation methods.</p><!-- {annotation} --><!-- {references} --><ol><li>Numbered references</li></ol><!-- {references} -->
Edit copyright and link details in the perl modules under
modules/EnsEMBL/Web/Document/Element
Commit and push all changesTo place assemblies in sections on your Ensembl homepage, add a
SiteDefs.pm
file to the conf
directory:- Name the module to match the
PLUGIN_PACKAGE
name in your EasyMirror container configuration and include anupdate_conf
method:```package EG::MealyBugBase::SiteDefs;
use strict;
sub update_conf { push @$SiteDefs::ENSEMBL_API_LIBS, $SiteDefs::ENSEMBL_SERVERROOT . '/your-plugin-name/modules'; }
1;
```