<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.2 20190208//EN" "http://jats.nlm.nih.gov/publishing/1.2/JATS-journalpublishing1.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="web-tools" dtd-version="1.2" xml:lang="en">
    <front>
        <journal-meta>
            <journal-id journal-id-type="pmc">F1000Research</journal-id>
            <journal-title-group>
                <journal-title>F1000Research</journal-title>
            </journal-title-group>
            <issn pub-type="epub">2046-1402</issn>
            <publisher>
                <publisher-name>F1000 Research Limited</publisher-name>
                <publisher-loc>London, UK</publisher-loc>
            </publisher>
        </journal-meta>
        <article-meta>
            <article-id pub-id-type="doi">10.12688/f1000research.3-46.v1</article-id>
            <article-categories>
                <subj-group subj-group-type="heading">
                    <subject>Web Tool</subject>
                </subj-group>
                <subj-group>
                    <subject>Articles</subject>
                    <subj-group>
                        <subject>Bioinformatics</subject>
                    </subj-group>
                </subj-group>
            </article-categories>
            <title-group>
                <article-title>
                    <italic>BioJS InterMineTable Component</italic>: A BioJS component&#x00a0;for displaying data from InterMine compatible webservice&#x00a0;endpoints</article-title>
                <fn-group content-type="pub-status">
                    <fn>
                        <p>[version 1; peer review: 1 approved]</p>
                    </fn>
                </fn-group>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Kalderimis</surname>
                        <given-names>Alexis</given-names>
                    </name>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Stepan</surname>
                        <given-names>Radek</given-names>
                    </name>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Sullivan</surname>
                        <given-names>Julie</given-names>
                    </name>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Lyne</surname>
                        <given-names>Rachel</given-names>
                    </name>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Lyne</surname>
                        <given-names>Michael</given-names>
                    </name>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="yes">
                    <name>
                        <surname>Micklem</surname>
                        <given-names>Gos</given-names>
                    </name>
                    <uri content-type="orcid">https://orcid.org/0000-0002-6883-6168</uri>
                    <xref ref-type="corresp" rid="c1">a</xref>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <aff id="a1">
                    <label>1</label>Department of Genetics and Cambridge Systems Biology Centre, Cambridge University, Cambridge, CB2 3EH, UK</aff>
            </contrib-group>
            <author-notes>
                <corresp id="c1">
                    <label>a</label>
                    <email xlink:href="mailto:g.micklem@gen.cam.ac.uk">g.micklem@gen.cam.ac.uk</email>
                </corresp>
                <fn id="fn1">
                    <label>*</label>
                    <p>
						
                        <email xlink:href="mailto:alex@intermine.org">alex@intermine.org</email>
					</p>
                </fn>
                <fn id="fn2">
                    <label>&#x2020;</label>
                    <p>
						
                        <email xlink:href="mailto:radek@intermine.org">radek@intermine.org</email>
					</p>
                </fn>
                <fn id="fn3">
                    <label>&#x2021;</label>
                    <p>
						
                        <email xlink:href="mailto:julie@flymine.org">julie@flymine.org</email>
					</p>
                </fn>
                <fn id="fn4">
                    <label>&#x00a7;</label>
                    <p>
						
                        <email xlink:href="mailto:rachel@flymine.org">rachel@flymine.org</email>
					</p>
                </fn>
                <fn id="fn5">
                    <label>&#x00b6;</label>
                    <p>
						
                        <email xlink:href="mailto:mike@intermine.org">mike@intermine.org</email>
					</p>
                </fn>
                <fn fn-type="con">
                    <p>Alex Kalderimis wrote the manuscript and implemented the component, under the supervision of Gos Micklem, to a set of user specifications supplied by Julie Sullivan. Rachel Lyne, Radek &#x0160;t&#x011b;p&#x00e1;n and Mike Lyne contributed to the component design and revised the manuscript. All authors have approved the manuscript.</p>
                </fn>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>13</day>
                <month>2</month>
                <year>2014</year>
            </pub-date>
            <pub-date pub-type="collection">
                <year>2014</year>
            </pub-date>
            <volume>3</volume>
            <elocation-id>46</elocation-id>
            <history>
                <date date-type="accepted">
                    <day>10</day>
                    <month>2</month>
                    <year>2014</year>
                </date>
            </history>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2014 Kalderimis A et al.</copyright-statement>
                <copyright-year>2014</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/3.0/">
                    <license-p>This is an open access article distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <self-uri content-type="pdf" xlink:href="https://f1000research.com/articles/3-46/pdf"/>
            <abstract>
                <p>The InterMineTable component is a reusable JavaScript component as part of the BioJS project. It enables users to embed powerful table-based query facilities in their websites with access to genomic data-warehouses such as 
                    <ext-link ext-link-type="uri" xlink:href="http://www.flymine.org">http://www.flymine.org</ext-link>, which allow users to perform flexible queries over a wide range of integrated data types.</p>
            </abstract>
            <funding-group>
                <funding-statement>InterMine has been developed with the support of the following grants, awarded to Dr. G. Micklem: the Wellcome Trust (Grant number: 090297), and the National&#13;
Human Genome Research Institute (Grant number: R01HG004834).&#13;
The content is solely the responsibility of the authors and does not necessarily represent the official views of the funding bodies.</funding-statement>
            </funding-group>
        </article-meta>
    </front>
    <body>
        <sec sec-type="intro">
            <title>Introduction</title>
            <p>There are currently a number of genomics data-warehouses available which are powered by the InterMine
                <sup>
                    <xref ref-type="bibr" rid="ref-1">1</xref>
                </sup> platform. This set includes large curated services dedicated to the primary Model Organism database (MOD) communities as part of the InterMOD project
                <sup>
                    <xref ref-type="bibr" rid="ref-2">2</xref>
                </sup>, the collected data sets of research projects such as the modENCODE project
                <sup>
                    <xref ref-type="bibr" rid="ref-3">3</xref>
                </sup>, as well as a range of other resources including metabolicMine
                <sup>
                    <xref ref-type="bibr" rid="ref-4">4</xref>
                </sup>, TargetMine
                <sup>
                    <xref ref-type="bibr" rid="ref-5">5</xref>
                </sup>, FlyTFMine
                <sup>
                    <xref ref-type="bibr" rid="ref-6">6</xref>
                </sup>, and MitoMiner
                <sup>
                    <xref ref-type="bibr" rid="ref-7">7</xref>
                </sup>. In addition to being accessible through web-interfaces these resources also provide web-service access (to be described in a forthcoming paper).</p>
            <p>The InterMine system provides users with a number of benefits. A typical InterMine instance, such as FlyMine
                <sup>
                    <xref ref-type="bibr" rid="ref-8">8</xref>
                </sup> or YeastMine
                <sup>
                    <xref ref-type="bibr" rid="ref-9">9</xref>
                </sup>, contains feature annotations, protein data, publications, biochemical pathways, orthology, Gene Ontology (GO), array expression results, and other kinds of data, all integrated into a single knowledge graph. This means end users are able to ask questions across different data types. InterMine&#x2019;s particular data integration strategy puts minimal limitations on the kinds of queries that can be performed: any arbitrary number of data-sets can be referred to in the same query (provided links exist between them) and a wide variety of logical contraints can be added. The InterMine platform thus provides a basis for very flexible, user-defined queries over linked data sets.</p>
            <p>The BioJS
                <sup>
                    <xref ref-type="bibr" rid="ref-10">10</xref>
                </sup> project seeks to provide a suite of reusable JavaScript components that members of the bioinformatics community will find useful for producing analysis and visualisation tools. The InterMineTable BioJS component contributes towards this aim by adding a data query and exploration tool to the set of BioJS components which exposes the full flexibility and power of user defined queries over integrated linked data in a clear user interface.</p>
            <sec>
                <title>Installation</title>
                <p>As a visual BioJS component, the intended audience is web-developers aiming to provide extended functionality to web-based resources for life-scientists. It is expected to be deployed within modern browser environments with access to third-party resources. With this in mind, installation comprises of including the dependencies for the InterMine table component on the page (usually added in the head section of an HTML page), see 
                    <xref ref-type="other" rid="sm">Supplementary materials A</xref>. Once the dependency on the InterMine tables library is loaded, the InterMineTable BioJS component may be included (see 
                    <xref ref-type="other" rid="l1">code listing 1</xref>).</p>
                <p id="l1">
                    <bold>
                        <styled-content style="#CA6538" style-type="color">Listing 1.</styled-content> Loading the BioJS InterMine Table library</bold>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;font-weight:bold">&lt;script
&#x00a0;&#x00a0;&#x00a0;&#x00a0;src=</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"Biojs.InterMine.Table.js"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">&gt;&lt;/script&gt;</styled-content>
                    </preformat>
                </p>
                <p>This last resource contains the definition of the InterMine.Table BioJS component. As it is not available from a reliable third party source, it currently needs to be downloaded from the BioJS registry
                    <sup>
                        <xref ref-type="bibr" rid="ref-11">11</xref>
                    </sup>, and hosted locally.</p>
            </sec>
            <sec>
                <title>Usage</title>
                <p>This component is used by instantiating the InterMine table component in a user-included JavaScript file, passing in the appropriate configuration for the desired source of data as well as the query over those data.</p>
                <p>Once instantiated, the results of the query against the specified integrated data-warehouse are loaded into a component where they can be browsed and manipulated. This means that the two critical concepts for using this component are 1) the location of the data-store, defined as the uniform resource locator (URL) pointing at the root of a set of web-services, and 2) the query to be run on the data in the store, defined in a configuration object. For example, to load a table of data from FlyMine the user would want the URL to point to FlyMine&#x2019;s webservices:</p>
                <p id="l2">
                    <bold>
                        <styled-content style="#CA6538" style-type="color">Listing 2.</styled-content> Specifying the Data-Store</bold>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">var</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold">url =</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"http://www.flymine.org/query"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">;</styled-content>
                    </preformat>
                </p>
                <p>The query can be broadly defined as a list of fields, identified by paths from a root, constrained by a (possibly empty) set of filters. There are some refinements to this (such as sort-order, optional element definition, and constraint composition) for which more detailed documentation
                    <sup>
                        <xref ref-type="bibr" rid="ref-12">12</xref>
                    </sup> exists. The concept of a path is important to the idea of a graph of linked data, as it enables chains of relationships between entities to be followed, with minimal syntactic overhead. For example the chain of relationships 
                    <italic toggle="yes">the names of the protein domains of the proteins encoded by the genes belonging to a biochemical pathway</italic> can be referred to as 
                    <bold>Pathway.genes.proteins.proteinDomains.name</bold>.</p>
                <p>A query is defined as a plain JavaScript object which can be simple, such as the following query, which requests the common name, scientific name and taxon ID for all organisms in the data-store:</p>
                <p id="l3">
                    <bold>
                        <styled-content style="#CA6538" style-type="color">Listing 3.</styled-content> A simple Query, see 
                        <xref ref-type="fig" rid="f1">Figure 1</xref>
                    </bold>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;font-weight:bold;color:#358E3E;">// Available organisms</styled-content>

                        <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">var</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold">query = {
&#x00a0;&#x00a0;name:</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"An optional name"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">, 
&#x00a0;&#x00a0;from:</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"Organism"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">, 
&#x00a0;&#x00a0;select: [</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"commonName"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">,</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"name"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">,</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"taxonId"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">], 
};</styled-content>
                    </preformat>
                </p>
                <fig fig-type="figure" id="f1" orientation="portrait" position="float">
                    <label>Figure 1. </label>
                    <caption>
                        <title>A table of data loaded from FlyMine displaying the output of 
                            <xref ref-type="other" rid="l3">Code Listing 3</xref>.</title>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/3700/2b3979db-a7ae-428a-8aa9-c319b1d8984c_figure1.gif"/>
                </fig>
                <p>or arbitrarily complex, such as the following query which combines information from multiple data sources (OMIM
                    <sup>
                        <xref ref-type="bibr" rid="ref-13">13</xref>
                    </sup>, PANTHER
                    <sup>
                        <xref ref-type="bibr" rid="ref-14">14</xref>
                    </sup>, Treefam
                    <sup>
                        <xref ref-type="bibr" rid="ref-15">15</xref>
                    </sup>, KEGG
                    <sup>
                        <xref ref-type="bibr" rid="ref-16">16</xref>
                    </sup>, Reactome
                    <sup>
                        <xref ref-type="bibr" rid="ref-17">17</xref>
                    </sup>, FlyBase
                    <sup>
                        <xref ref-type="bibr" rid="ref-18">18</xref>
                    </sup>) and across different organisms to find the 
                    <italic toggle="yes">Drosophila melanogaster</italic> genes in the pathways of genes which are orthologous to human genes implicated in Alzheimer&#x2019;s disease:</p>
                <p id="l4">
                    <bold>
                        <styled-content style="#CA6538" style-type="color">Listing 4.</styled-content> A Complex Query, see 
                        <xref ref-type="fig" rid="f2">Figure 2</xref>
                    </bold>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">var</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold">disease = {</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">
&#x00a0;&#x00a0;from:</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"Disease"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">,
&#x00a0;&#x00a0;select: [</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"genes.homologues.homologue.pathways.genes.*"</styled-content>
&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold">], </styled-content>
&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold">where: {</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"name"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">:</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"Alzheimer*"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">,</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"genes.organism.name"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">:</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"Homo sapiens"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">,</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"genes.homologues.homologue.organism.name"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">:</styled-content> 
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"Drosophila melanogaster"</styled-content>
&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold">}</styled-content>

                        <styled-content style="font-size:15px;font-weight:bold">};</styled-content>
                    </preformat>
                </p>
                <fig fig-type="figure" id="f2" orientation="portrait" position="float">
                    <label>Figure 2. </label>
                    <caption>
                        <title>A table of data loaded from FlyMine displaying the output of 
                            <xref ref-type="other" rid="l4">Code Listing 4</xref>.</title>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/3700/2b3979db-a7ae-428a-8aa9-c319b1d8984c_figure2.gif"/>
                </fig>
                <p>An element also needs to be present on the page where the table should be loaded. This can be any element (although a DIV element is conventional), and should be uniquely identifiable (through its ID for instance).</p>
                <p id="l5">
                    <bold>
                        <styled-content style="#CA6538" style-type="color">Listing 5.</styled-content> Defining the Target Element</bold>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">var</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold">target =</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"#table-container"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">;</styled-content>
                    </preformat>
                </p>
                <p>These values are then passed to the component constructor, which builds a new table in the page, and loads the relevant data from the configured service:</p>
                <p id="l6">
                    <bold>
                        <styled-content style="#CA6538" style-type="color">Listing 6.</styled-content> Instantiation</bold>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">var</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold">table =</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">new</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold">Biojs.InterMine.Table({
&#x00a0;&#x00a0;target: target,</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">
&#x00a0;&#x00a0;url: url,</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">
&#x00a0;&#x00a0;query: query</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">
});</styled-content>
                    </preformat>
                </p>
                <p>Once instantiated, a table will be loaded into the page displaying rows of data as specified by the query (see 
                    <xref ref-type="fig" rid="f1">Figure 1</xref>, 
                    <xref ref-type="fig" rid="f2">Figure 2</xref>).</p>
            </sec>
            <sec>
                <title>Interaction</title>
                <p>The table, as well as providing a number of common dynamic features such as resorting, pagination and column rearrangement, also permits much deeper interaction than other comparable table libraries. The table allows the underlying query to be changed: the constraints of the underlying query can be edited (
                    <xref ref-type="fig" rid="f3">Figure 3</xref>); columns (including ones referring to data types not in the original query) can be added; existing columns can be removed; changes made can be undone; the data can be exported in a number of formats or sent to another application, such as a local Galaxy
                    <sup>
                        <xref ref-type="bibr" rid="ref-19">19</xref>&#x2013;
                        <xref ref-type="bibr" rid="ref-21">21</xref>
                    </sup> instance, or to a remote application such as GenomeSpace
                    <sup>
                        <xref ref-type="bibr" rid="ref-22">22</xref>
                    </sup> (
                    <xref ref-type="fig" rid="f4">Figure 4</xref>); the results can be saved as a resusable set (a 
                    <italic toggle="yes">list</italic>) within the originating service; individual items can also be previewed (
                    <xref ref-type="fig" rid="f5">Figure 5</xref>).</p>
                <fig fig-type="figure" id="f3" orientation="portrait" position="float">
                    <label>Figure 3. </label>
                    <caption>
                        <title>Editing the filters on a table.</title>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/3700/2b3979db-a7ae-428a-8aa9-c319b1d8984c_figure3.gif"/>
                </fig>
                <fig fig-type="figure" id="f4" orientation="portrait" position="float">
                    <label>Figure 4. </label>
                    <caption>
                        <title>Downloading the results of a query.</title>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/3700/2b3979db-a7ae-428a-8aa9-c319b1d8984c_figure4.gif"/>
                </fig>
                <fig fig-type="figure" id="f5" orientation="portrait" position="float">
                    <label>Figure 5. </label>
                    <caption>
                        <title>Previewing an item.</title>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/3700/2b3979db-a7ae-428a-8aa9-c319b1d8984c_figure5.gif"/>
                </fig>
                <p>One particularly useful feature is the ability to view the contents of a single column, analysing it on aggregate and adding or editing filters. This facility is able to present summary charts for columns based on data type: binned histograms for numerical data (
                    <xref ref-type="fig" rid="f6">Figure 6</xref>), and column charts for categorical data (
                    <xref ref-type="fig" rid="f7">Figure 7</xref>, showing the user adding a filter by selecting items from the column).</p>
                <fig fig-type="figure" id="f6" orientation="portrait" position="float">
                    <label>Figure 6. </label>
                    <caption>
                        <title>Analysing and filtering a single column of numeric data within a table.</title>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/3700/2b3979db-a7ae-428a-8aa9-c319b1d8984c_figure6.gif"/>
                </fig>
                <fig fig-type="figure" id="f7" orientation="portrait" position="float">
                    <label>Figure 7. </label>
                    <caption>
                        <title>Analysing and filtering a single column of categorical data within a table.</title>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/3700/2b3979db-a7ae-428a-8aa9-c319b1d8984c_figure7.gif"/>
                </fig>
            </sec>
            <sec>
                <title>Events</title>
                <p>The standard mechanism for communication between components in JavaScript is event signalling. As per the BioJS specification, this component supports other objects registering event listeners so they may be notified when events of interest (such as user interactions) occur.</p>
                <p>Once loaded, the table may emit a number of different events (as listed in the API documentation
                    <sup>
                        <xref ref-type="bibr" rid="ref-23">23</xref>
                    </sup>), and may be manipulated by calling methods on the instance, allowing the calling page to respond to user interactions. For example, if a developer wished to receive notifications when the user clicks on any of the cells in the table, they can register to listen for these events:</p>
                <p id="l7">
                    <bold>
                        <styled-content style="#CA6538" style-type="color">Listing 7.</styled-content> Adding an Event Listener</bold>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;font-weight:bold">table.addListener(</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"imo:click"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">,</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">function</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">
&#x00a0;&#x00a0;&#x00a0;&#x00a0;(type, id) {</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">
&#x00a0;alert(</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"User clicked on "</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold">+ type +</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">" "</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold">+ id);</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">
});</styled-content>
                    </preformat>
                </p>
                <p>This integration means that the table need not be an isolated part of an application, but can be fully integrated with other components. For example, instead of just notifying the user by using 
                    <italic toggle="yes">alert</italic>, the information about this object could be displayed in another component. If the user clicked on a protein, this could be detected, and other suitable components could be instantiated to display protein-specific analysis (see 
                    <xref ref-type="other" rid="l8">code sample 8</xref>).</p>
                <p id="l8">
                    <bold>
                        <styled-content style="#CA6538" style-type="color">Listing 8.</styled-content> Integrating with Other Components - Example 1</bold>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;font-weight:bold">table.addListener(</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"imo:click"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">,</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">function</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">
&#x00a0;&#x00a0;&#x00a0;&#x00a0;(type, id) {</styled-content>
&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">if</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">(</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"Protein"</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold">=== type) {</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold">table.service.findById(type, id)</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;.then(loadProteinStructureDisplayer);</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">
&#x00a0;&#x00a0;}</styled-content>
&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">function</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;loadProteinStructureDisplayer(protein) {</styled-content>
&#x00a0;&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold;color:#358E3E;">// ... load other BioJS component here.</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">
&#x00a0;&#x00a0;}</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">
});</styled-content>
                    </preformat>
                </p>
                <p>As well as responding to user interaction with the table, the table component exposes an API to change the state of the table by changing the query it represents. This allows communication in the other direction. For example if a linked component, such as a protein structure displayer, emits an event indicating the user has selected a given set of protein domains, the table could be modified by adding a filter for these domains to the current query (see 
                    <xref ref-type="other" rid="l9">code sample 9</xref>):</p>
                <p id="l9">
                    <bold>
                        <styled-content style="#CA6538" style-type="color">Listing 9.</styled-content> Integrating with Other Components - Example 2</bold>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;font-weight:bold;color:#358E3E;">/* Assuming a "displayer" component that
&#x00a0;&#x00a0;&#x00a0;&#x00a0;emits the "domains:selected" event */</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">
displayer.addListener(</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"domains:selected"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">, </styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">function</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold">(domains) {</styled-content>
&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">var</styled-content> 
                        <styled-content style="font-size:15px;font-weight:bold">currentQuery = table.getQuery();</styled-content>
&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold">currentQuery.addConstraint({</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"Gene.proteins.proteinDomains.identifier"</styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">:</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold">domains</styled-content>
&#x00a0;&#x00a0;
                        <styled-content style="font-size:15px;font-weight:bold">}); </styled-content>
                        <styled-content style="font-size:15px;font-weight:bold">
});</styled-content>
                    </preformat>
                </p>
                <p>In this way, the interoperability of these components makes them of increasing utility to developers, as more of them are published and integrated into third party applications.</p>
            </sec>
        </sec>
        <sec sec-type="discussion">
            <title>Discussion</title>
            <p>This tool addresses an important set of needs for bioinformatics developers. While there are some other libraries that aim to make creating dynamic tables easy to develop (such as DataTables
                <sup>
                    <xref ref-type="bibr" rid="ref-24">24</xref>
                </sup>), there are none that tightly integrate facilities such as query constraint editing, column summary analysis, data export, support for genomic data types, and list management without a great deal of development effort. Access to flexible and powerful data-warehousing tools on the InterMine platform makes these table components uniquely powerful in the life sciences sphere. Services that implement the InterMine public API are also able to make use of the features of these tables. The extremely high quality data sets curated by the principal Model Organism databases, which the the InterMOD project members make available, makes this tool unique in its immediate access to integrated life sciences data.</p>
        </sec>
        <sec sec-type="conclusions">
            <title>Conclusions</title>
            <p>It is hoped that this component will prove useful to those developing tools for researchers in the life sciences. Various publically funded groups, such as the MODs and other data-producing consortia, have put significant effort into creating, curating and composing high quality data sets. InterMine is an effective platform to add value to this work by integrating the data and exposing a flexible query API and user interface. The recent work in exposing these resources through web-services and producing reusable web-based components allows this investment to benefit not just visitors to the sites of InterMine applications, but any developer or user who wants to include complex query tools as part of their platform. With access to a broad range of data sources meeting the needs of several diverse research communities, we expect that a great deal of duplicated effort can be avoided, saving significant amounts of time and money.</p>
        </sec>
        <sec>
            <title>Software availability</title>
            <p>Zenodo: im-tables-biojs, doi: 
                <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.5281/zenodo.8301">10.5281/zenodo.8301</ext-link>
                <sup>
                    <xref ref-type="bibr" rid="ref-25">25</xref>
                </sup>
            </p>
            <p>GitHub: BioJS, 
                <ext-link ext-link-type="uri" xlink:href="http://github.com/biojs/biojs">http://github.com/biojs/biojs</ext-link>.</p>
        </sec>
    </body>
    <back>
        <ack>
            <title>Acknowledgements</title>
            <p>The authors thank Manuel Corpas for useful feedback.</p>
        </ack>
        <sec id="sm" sec-type="supplementary-materials">
            <title>Supplementary materials</title>
        </sec>
        <sec>
            <title>A Dependencies</title>
            <p>
                <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                    <styled-content style="font-size:15px;font-weight:bold">&lt;</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">link</styled-content>
&#x00a0;
                    <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">rel</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold">=</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"stylesheet"</styled-content>
&#x00a0;
                    <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">type</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold">=</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"text/css"</styled-content>
&#x00a0;
                    <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">href</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold">=</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"http://cdn.intermine.org/js/</styled-content>

                    <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">intermine/im-tables/latest/imtables.css"</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold">&gt;</styled-content>

                    <styled-content style="font-size:15px;font-weight:bold">&lt;</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">script</styled-content>
&#x00a0;
                    <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">charset</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold">=</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"UTF-8"</styled-content>
&#x00a0;
                    <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">type</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold">=</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"text/javascript"</styled-content>
&#x00a0;
                    <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">src</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold">=</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">"http://cdn.intermine.org/js/</styled-content>

                    <styled-content style="font-size:15px;font-weight:bold;color:#9400D1;">intermine/im-tables/latest/imtables-bundled.js"</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold">&gt;</styled-content>

                    <styled-content style="font-size:15px;font-weight:bold">&lt;</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold;color:#0000FF;">script</styled-content>
                    <styled-content style="font-size:15px;font-weight:bold">/&gt;</styled-content>
                </preformat>
            </p>
            <p>Here we are referring to resources which are made publically available as part of a Content Delivery Network (CDN). These resources could just as well be hosted locally.</p>
        </sec>
        <ref-list>
            <ref id="ref-1">
                <label>1</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Smith</surname>
                            <given-names>RN</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Aleksic</surname>
                            <given-names>J</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Butano</surname>
                            <given-names>D</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>InterMine: a flexible data warehouse system for the integration and analysis of heterogeneous biological data.</article-title>
                    <source>
						
                        <italic toggle="yes">Bioinformatics.</italic>
					</source>
                    <year>2012</year>;<volume>28</volume>(<issue>23</issue>):<fpage>3163</fpage>&#x2013;<lpage>3165</lpage>.
                    <pub-id pub-id-type="pmid">23023984</pub-id>
                    <pub-id pub-id-type="doi">10.1093/bioinformatics/bts577</pub-id>
                    <pub-id pub-id-type="pmcid">3516146</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-2">
                <label>2</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Sullivan</surname>
                            <given-names>J</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Karra</surname>
                            <given-names>K</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Moxon</surname>
                            <given-names>SA</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>InterMOD: integrated data and tools for the unification of model organism research.</article-title>
                    <source>
						
                        <italic toggle="yes">Sci Rep.</italic>
					</source>
                    <year>2013</year>;<volume>3</volume>:<fpage>1802</fpage>.
                    <pub-id pub-id-type="pmid">23652793</pub-id>
                    <pub-id pub-id-type="doi">10.1038/srep01802</pub-id>
                    <pub-id pub-id-type="pmcid">3647165</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-3">
                <label>3</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Contrino</surname>
                            <given-names>S</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Smith</surname>
                            <given-names>RN</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Butano</surname>
                            <given-names>D</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>modMine: flexible access to modENCODE data.</article-title>
                    <source>
						
                        <italic toggle="yes">Nucleic Acids Res.</italic>
					</source>
                    <year>2012</year>;<volume>40</volume>(<issue>Database issue</issue>):<fpage>D1082</fpage>&#x2013;<lpage>1088</lpage>.
                    <pub-id pub-id-type="pmid">22080565</pub-id>
                    <pub-id pub-id-type="doi">10.1093/nar/gkr921</pub-id>
                    <pub-id pub-id-type="pmcid">3245176</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-4">
                <label>4</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Lyne</surname>
                            <given-names>M</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Smith</surname>
                            <given-names>RN</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Lyne</surname>
                            <given-names>R</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>metabolicMine: an integrated genomics, genetics and proteomics data warehouse for common metabolic disease research.</article-title>
                    <source>
						
                        <italic toggle="yes">Database (Oxford).</italic>
					</source>
                    <year>2013</year>;<volume>2013</volume>:<fpage>bat060</fpage>.
                    <pub-id pub-id-type="pmid">23935057</pub-id>
                    <pub-id pub-id-type="doi">10.1093/database/bat060</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-5">
                <label>5</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Chen</surname>
                            <given-names>YA</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Tripathi</surname>
                            <given-names>LP</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Mizuguchi</surname>
                            <given-names>K</given-names>
                        </name>
					</person-group>:
                    <article-title>TargetMine, an integrated data warehouse for candidate gene prioritisation and target discovery.</article-title>
                    <source>
						
                        <italic toggle="yes">PLoS ONE.</italic>
					</source>
                    <year>2011</year>;<volume>6</volume>(<issue>3</issue>):<fpage>e17844</fpage>.
                    <pub-id pub-id-type="pmid">21408081</pub-id>
                    <pub-id pub-id-type="doi">10.1371/journal.pone.0017844</pub-id>
                    <pub-id pub-id-type="pmcid">3050930</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-6">
                <label>6</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Adryan</surname>
                            <given-names>B</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Teichmann</surname>
                            <given-names>SA</given-names>
                        </name>
					</person-group>:
                    <article-title>FlyTF: a systematic review of site-specific transcription factors in the fruit fly Drosophila melanogaster.</article-title>
                    <source>
						
                        <italic toggle="yes">Bioinformatics.</italic>
					</source>
                    <year>2006</year>;<volume>22</volume>(<issue>12</issue>):<fpage>1532</fpage>&#x2013;<lpage>1533</lpage>.
                    <pub-id pub-id-type="pmid">16613907</pub-id>
                    <pub-id pub-id-type="doi">10.1093/bioinformatics/btl143</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-7">
                <label>7</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Smith</surname>
                            <given-names>AC</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Robinson</surname>
                            <given-names>AJ</given-names>
                        </name>
					</person-group>:
                    <article-title>MitoMiner, an integrated database for the storage and analysis of mitochondrial proteomics data.</article-title>
                    <source>
						
                        <italic toggle="yes">Mol. Cell Proteomics.</italic>
					</source>
                    <year>2009</year>;<volume>8</volume>(<issue>6</issue>):<fpage>1324</fpage>&#x2013;<lpage>1337</lpage>.
                    <pub-id pub-id-type="pmid">19208617</pub-id>
                    <pub-id pub-id-type="doi">10.1074/mcp.M800373-MCP200</pub-id>
                    <pub-id pub-id-type="pmcid">2690483</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-8">
                <label>8</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Lyne</surname>
                            <given-names>R</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Smith</surname>
                            <given-names>R</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Rutherford</surname>
                            <given-names>K</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>FlyMine: an integrated database for Drosophila and Anopheles genomics.</article-title>
                    <source>
						
                        <italic toggle="yes">Genome Biol.</italic>
					</source>
                    <year>2007</year>;<volume>8</volume>(<issue>7</issue>):<fpage>R129</fpage>.
                    <pub-id pub-id-type="pmid">17615057</pub-id>
                    <pub-id pub-id-type="doi">10.1186/gb-2007-8-7-r129</pub-id>
                    <pub-id pub-id-type="pmcid">2323218</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-9">
                <label>9</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Balakrishnan</surname>
                            <given-names>R</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Park</surname>
                            <given-names>J</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Karra</surname>
                            <given-names>K</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>YeastMine&#x2013;an integrated data warehouse for Saccharomyces cerevisiae data as a multipurpose tool-kit.</article-title>
                    <source>
						
                        <italic toggle="yes">Database (Oxford).</italic>
					</source>
                    <year>2012</year>;<volume>2012</volume>:<fpage>bar062</fpage>.
                    <pub-id pub-id-type="pmid">22434830</pub-id>
                    <pub-id pub-id-type="doi">10.1093/database/bar062</pub-id>
                    <pub-id pub-id-type="pmcid">3308152</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-10">
                <label>10</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>G&#x00f3;mez</surname>
                            <given-names>J</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Garc&#x00ed;a</surname>
                            <given-names>LJ</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Salazar</surname>
                            <given-names>GA</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>BioJS: an open source JavaScript framework for biological data visualization.</article-title>
                    <source>
						
                        <italic toggle="yes">Bioinformatics.</italic>
					</source>
                    <year>2013</year>;<volume>29</volume>(<issue>8</issue>):<fpage>1103</fpage>&#x2013;<lpage>1104</lpage>.
                    <pub-id pub-id-type="pmid">23435069</pub-id>
                    <pub-id pub-id-type="doi">10.1093/bioinformatics/btt100</pub-id>
                    <pub-id pub-id-type="pmcid">3624812</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-11">
                <label>11</label>
                <mixed-citation publication-type="book">
                    <article-title>Biojs project registry</article-title>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.ebi.ac.uk/Tools/biojs/registry">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-12">
                <label>12</label>
                <mixed-citation publication-type="book">
                    <article-title>Pathquery documentation</article-title>.
                    <ext-link ext-link-type="uri" xlink:href="http://intermine.readthedocs.org/en/latest/api/pathquery/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-13">
                <label>13</label>
                <mixed-citation publication-type="book">McKusick-Nathans Institute of Genetic Medicine, Johns Hopkins University (Baltimore, MD) Online mendelian inheritance in man, omim
                    <sup>&#x00ae;</sup>.<year>2013</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://omim.org/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-14">
                <label>14</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Mi</surname>
                            <given-names>H</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Muruganujan</surname>
                            <given-names>A</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Thomas</surname>
                            <given-names>PD</given-names>
                        </name>
					</person-group>:
                    <article-title>PANTHER in 2013: modeling the evolution of gene function, and other gene attributes, in the context of phylogenetic trees.</article-title>
                    <source>
						
                        <italic toggle="yes">Nucleic Acids Res.</italic>
					</source>
                    <year>2013</year>;<volume>41</volume>(<issue>Database issue</issue>):<fpage>D377</fpage>&#x2013;<lpage>386</lpage>.
                    <pub-id pub-id-type="pmid">23193289</pub-id>
                    <pub-id pub-id-type="doi">10.1093/nar/gks1118</pub-id>
                    <pub-id pub-id-type="pmcid">3531194</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-15">
                <label>15</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Li</surname>
                            <given-names>H</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Coghlan</surname>
                            <given-names>A</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Ruan</surname>
                            <given-names>J</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>TreeFam: a curated database of phylogenetic trees of animal gene families.</article-title>
                    <source>
						
                        <italic toggle="yes">Nucleic Acids Res.</italic>
					</source>
                    <year>2006</year>;<volume>34</volume>(<issue>Database issue</issue>):<fpage>D572</fpage>&#x2013;<lpage>580</lpage>.
                    <pub-id pub-id-type="pmid">16381935</pub-id>
                    <pub-id pub-id-type="doi">10.1093/nar/gkj118</pub-id>
                    <pub-id pub-id-type="pmcid">1347480</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-16">
                <label>16</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Ogata</surname>
                            <given-names>H</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Goto</surname>
                            <given-names>S</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Sato</surname>
                            <given-names>K</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>KEGG: Kyoto Encyclopedia of Genes and Genomes.</article-title>
                    <source>
						
                        <italic toggle="yes">Nucleic Acids Res.</italic>
					</source>
                    <year>1999</year>;<volume>27</volume>(<issue>1</issue>):<fpage>29</fpage>&#x2013;<lpage>34</lpage>.
                    <pub-id pub-id-type="pmid">9847135</pub-id>
                    <pub-id pub-id-type="doi">10.1093/nar/27.1.29</pub-id>
                    <pub-id pub-id-type="pmcid">148090</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-17">
                <label>17</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Joshi-Tope</surname>
                            <given-names>G</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Gillespie</surname>
                            <given-names>M</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Vastrik</surname>
                            <given-names>I</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>Reactome: a knowledgebase of biological pathways.</article-title>
                    <source>
						
                        <italic toggle="yes">Nucleic Acids Res.</italic>
					</source>
                    <year>2005</year>;<volume>33</volume>(<issue>Database issue</issue>):<fpage>D428</fpage>&#x2013;<lpage>432</lpage>.
                    <pub-id pub-id-type="pmid">15608231</pub-id>
                    <pub-id pub-id-type="doi">10.1093/nar/gki072</pub-id>
                    <pub-id pub-id-type="pmcid">540026</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-18">
                <label>18</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Marygold</surname>
                            <given-names>SJ</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Leyland</surname>
                            <given-names>PC</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Seal</surname>
                            <given-names>RL</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>Fly-Base: improvements to the bibliography.</article-title>
                    <source>
						
                        <italic toggle="yes">Nucleic Acids Res.</italic>
					</source>
                    <year>2013</year>;<volume>41</volume>(<issue>Database issue</issue>):<fpage>D751</fpage>&#x2013;<lpage>757</lpage>.
                    <pub-id pub-id-type="pmid">23125371</pub-id>
                    <pub-id pub-id-type="doi">10.1093/nar/gks1024</pub-id>
                    <pub-id pub-id-type="pmcid">3531214</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-19">
                <label>19</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Goecks</surname>
                            <given-names>J</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Nekrutenko</surname>
                            <given-names>A</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Taylor</surname>
                            <given-names>J</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>Galaxy: a comprehensive approach for supporting accessible, reproducible, and transparent computational research in the life sciences.</article-title>
                    <source>
						
                        <italic toggle="yes">Genome Biol.</italic>
					</source>
                    <year>2010</year>;<volume>11</volume>(<issue>8</issue>):<fpage>R86</fpage>.
                    <pub-id pub-id-type="pmid">20738864</pub-id>
                    <pub-id pub-id-type="doi">10.1186/gb-2010-11-8-r86</pub-id>
                    <pub-id pub-id-type="pmcid">2945788</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-20">
                <label>20</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Blankenberg</surname>
                            <given-names>D</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Von Kuster</surname>
                            <given-names>G</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Coraor</surname>
                            <given-names>N</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>Galaxy: A web-based genome analysis tool for experimentalists.</article-title>
                    <source>
						
                        <italic toggle="yes">Curr Protoc Mol Biol.</italic>
					</source>
                    <year>2010</year>; Chapter 19:<fpage>19.10.1</fpage>&#x2013;<lpage>19.10.21</lpage>.
                    <pub-id pub-id-type="pmid">20069535</pub-id>
                    <pub-id pub-id-type="doi">10.1002/0471142727.mb1910s89</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-21">
                <label>21</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Giardine</surname>
                            <given-names>B</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Riemer</surname>
                            <given-names>C</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Hardison</surname>
                            <given-names>RC</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>Galaxy: a plat-form for interactive large-scale genome analysis.</article-title>
                    <source>
						
                        <italic toggle="yes">Genome Res.</italic>
					</source>
                    <year>2005</year>;<volume>15</volume>(<issue>10</issue>):<fpage>1451</fpage>&#x2013;<lpage>1455</lpage>.
                    <pub-id pub-id-type="pmid">16169926</pub-id>
                    <pub-id pub-id-type="doi">10.1101/gr.4086505</pub-id>
                    <pub-id pub-id-type="pmcid">1240089</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-22">
                <label>22</label>
                <mixed-citation publication-type="book">
                    <article-title>Genomespace</article-title>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.genomespace.org.">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-23">
                <label>23</label>
                <mixed-citation publication-type="book">
                    <article-title>Biojs project api documentation</article-title>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.ebi.ac.uk/Tools/biojs/jsdoc">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-24">
                <label>24</label>
                <mixed-citation publication-type="book">
                    <article-title>Datatables</article-title>.
                    <ext-link ext-link-type="uri" xlink:href="http://datatables.net/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-25">
                <label>25</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Kalderimis</surname>
                            <given-names>A</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Micklem</surname>
                            <given-names>G</given-names>
                        </name>
					</person-group>:
                    <article-title>im-tables-biojs.</article-title>
                    <source>
						
                        <italic toggle="yes">Zenodo.</italic>
					</source>
                    <year>2014</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.5281/zenodo.8301">Data Source</ext-link>
                </mixed-citation>
            </ref>
        </ref-list>
    </back>
    <sub-article article-type="reviewer-report" id="report3676">
        <front-stub>
            <article-id pub-id-type="doi">10.5256/f1000research.3700.r3676</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Ceol</surname>
                        <given-names>Arnaud</given-names>
                    </name>
                    <xref ref-type="aff" rid="r3676a1">1</xref>
                    <role>Referee</role>
                </contrib>
                <aff id="r3676a1">
                    <label>1</label>Computational Research Unit of the Center for Genomics, Istituto Italiano di Tecnologia (IIT@SEMM), Milan, Italy</aff>
            </contrib-group>
            <author-notes>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>18</day>
                <month>2</month>
                <year>2014</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2014 Ceol A</copyright-statement>
                <copyright-year>2014</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access peer review report distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <related-article ext-link-type="doi" id="relatedArticleReport3676" related-article-type="peer-reviewed-article" xlink:href="10.12688/f1000research.3-46.v1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>Reusable libraries for building web applications are very welcome and allow interested groups to build modern, dynamic web tools without losing time to learning new technologies and having to study data access from various different resources.</p>
            <p>Here, the authors propose a library to query all InterMine repositories. The result is a powerful tool: it is not only the web developers who can use this library to access in theory all the InterMine repositories, but users too can build and update queries as well as table directly from the web page by selecting graphically all fields and columns.</p>
            <p>The manuscript provides some useful examples of possible queries. Starting from the example at the address 
                <ext-link ext-link-type="uri" xlink:href="http://zenodo.org/record/8301">http://zenodo.org/record/8301</ext-link> (selected from the Software Availability section), it is easy to have a running page that can be modified.</p>
            <p>Nevertheless, starting a page from scratch is not as straight forward as it could be because the availability links and the installation description are confusing. It is not clear what the meaning of the data availability links provided are (there are three links in the abstract under the heading &#x201c;availability&#x201d; and two in the Software Availability section). The authors may want to add a short description to each so the user can redirect to the one he/she is interested in. Besides, in the Installation section of the manuscript it is written that the &#x201c;
                <italic>last resource contains the definition of the InterMine.Table BioJS component. As it is not available from a reliable third party source, it currently needs to be downloaded from the BioJS registry, and hosted locally</italic>&#x201d;. This is where the confusion is: what should be downloaded and from where? I didn't find references to the InterMine tables in Zenodo or from the GitHub repository. In the example (Zenodo), it looks like the code is actually inserted in the index.js file.</p>
            <p>One of the advantages of the library proposed here is that it is based on the InterMine repositories. In the manuscript the authors provide the example of the FlyMine query, but the component should also be able to query all the others InterMine repositories (I was able to find the updated code on GitHub reference to the worm repository). From what I understand from the author&#x2019;s comments is that a separate article should soon be available and will describe the web service implemented by the InterMine repositories and which are used by this BioJS library. It makes it difficult to understand what queries can be done (i.e. what are the tables and fields that can be queried). Nevertheless, this can be inferred by using the example provided (using the manage columns and adding filter buttons on the example page). The authors may want to provide a supplementary table with the address of the web services that can be queried (or a link to another registry if it exists).</p>
            <p>In the Supplementary material A section, the last &#x201c;&lt;script/&gt;&#x201d; should be &lt;/script&gt;.</p>
            <p>To summarize, I believe that this library is useful and works well, and that after a few clarifications in the manuscript it will help the user integrate straightforward InterMine tables into their own webpages.</p>
            <p>Reviewer Expertise:</p>
            <p>NA</p>
            <p>I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard.</p>
        </body>
    </sub-article>
</article>
