<?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="other" 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.14541.1</article-id>
            <article-categories>
                <subj-group subj-group-type="heading">
                    <subject>Software Tool Article</subject>
                </subj-group>
                <subj-group>
                    <subject>Articles</subject>
                </subj-group>
            </article-categories>
            <title-group>
                <article-title>drawProteins: a Bioconductor/R package for reproducible and programmatic generation of protein schematics</article-title>
                <fn-group content-type="pub-status">
                    <fn>
                        <p>[version 1; peer review: 2 approved]</p>
                    </fn>
                </fn-group>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author" corresp="yes">
                    <name>
                        <surname>Brennan</surname>
                        <given-names>Paul</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Conceptualization</role>
                    <role content-type="http://credit.niso.org/">Project Administration</role>
                    <role content-type="http://credit.niso.org/">Resources</role>
                    <role content-type="http://credit.niso.org/">Software</role>
                    <role content-type="http://credit.niso.org/">Visualization</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Original Draft Preparation</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Review &amp; Editing</role>
                    <uri content-type="orcid">https://orcid.org/0000-0001-8792-0499</uri>
                    <xref ref-type="corresp" rid="c1">a</xref>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <aff id="a1">
                    <label>1</label>Centre for Medical Education, School of Medicine, Cardiff University, Cardiff, Wales, UK</aff>
            </contrib-group>
            <author-notes>
                <corresp id="c1">
                    <label>a</label>
                    <email xlink:href="mailto:brennanpincardiff@gmail.com">brennanpincardiff@gmail.com</email>
                </corresp>
                <fn fn-type="conflict">
                    <p>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>18</day>
                <month>7</month>
                <year>2018</year>
            </pub-date>
            <pub-date pub-type="collection">
                <year>2018</year>
            </pub-date>
            <volume>7</volume>
            <elocation-id>1105</elocation-id>
            <history>
                <date date-type="accepted">
                    <day>6</day>
                    <month>7</month>
                    <year>2018</year>
                </date>
            </history>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2018 Brennan P</copyright-statement>
                <copyright-year>2018</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.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/7-1105/pdf"/>
            <abstract>
                <p>Protein schematics are valuable for research, teaching and knowledge communication. However, the tools used to automate the process are challenging. The purpose of the drawProteins package is to enable the generation of schematics of proteins in an automated fashion that can integrate with the Bioconductor/R suite of tools for bioinformatics and statistical analysis. Using UniProt accession numbers, the package uses the UniProt API to get the features of the protein from the UniProt database. The features are assembled into a data frame and visualized using adaptations of the ggplot2 package. Visualizations can be customised in many ways including adding additional protein features information from other data frames, altering colors and protein names and adding extra layers using other ggplot2 functions. This can be completed within a script that makes the workflow reproducible and sharable. </p>
            </abstract>
            <kwd-group kwd-group-type="author">
                <kwd>protein</kwd>
                <kwd>schematic</kwd>
                <kwd>BIOCONDUCTOR</kwd>
                <kwd>R package</kwd>
                <kwd>visualization.</kwd>
            </kwd-group>
            <funding-group>
                <award-group id="fund-1" xlink:href="http://dx.doi.org/10.13039/501100007903">
                    <funding-source>Bloodwise</funding-source>
                </award-group>
                <funding-statement>PB has been supported by funding from Bloodwise, UK.</funding-statement>
                <funding-statement>
                    <italic>The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript.</italic>
                </funding-statement>
            </funding-group>
        </article-meta>
    </front>
    <body>
        <sec sec-type="intro">
            <title>Introduction</title>
            <p>Protein schematics are abundant in research papers, reviews, text books and on the internet
                <sup>
                    <xref ref-type="bibr" rid="ref-1">1</xref>
                </sup>. Thus, they represent one of the most common molecular visualizations shown and seen by researchers and students. Constructing protein schematics is often time consuming and is not performed in a reproducible and easily shared manner. The schematics frequently reflect domain expertise, but often also reflect the opinions of an individual researcher in a manner that is not obvious.</p>
            <p>There are solutions in other languages: a Java and JavaScript tool
                <sup>
                    <xref ref-type="bibr" rid="ref-1">1</xref>,
                    <xref ref-type="bibr" rid="ref-2">2</xref>
                </sup> that can be used for protein visualization. For visualization on the internet, there is also the BioJS solution, which can be used for proteins
                <sup>
                    <xref ref-type="bibr" rid="ref-3">3</xref>
                </sup>. Both of these tools are useful but not easily integrated into the Bioconductor workflow. The 
                <ext-link ext-link-type="uri" xlink:href="https://bioconductor.org/packages/release/bioc/html/GenVisR.html">GenVisR</ext-link> package contains the option to produce highly customisable publication-quality graphics for genomic data
                <sup>
                    <xref ref-type="bibr" rid="ref-4">4</xref>
                </sup>. The focus on genomic data reduces the usefulness of drawing protein schematics, particularly those illustrating multiple proteins and protein families.</p>
            <p>For these reasons, a protein visualization package was produced using R to allow compatibility with the Bio- conductor suite of bioinformatics packages. It uses the UniProt Proteins API
                <sup>
                    <xref ref-type="bibr" rid="ref-5">5</xref>,
                    <xref ref-type="bibr" rid="ref-6">6</xref>
                </sup> as a resource of protein features and the 
                <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/package=ggplot2">ggplot2</ext-link> package
                <sup>
                    <xref ref-type="bibr" rid="ref-7">7</xref>
                </sup> as a basis for drawing the schematics. Multiple proteins can be drawn from similar or different families. The only limitation is the availability of UniProt entries.</p>
            <p>Schematic customisation is possible. Protein chains, domains, regions, motifs or phosphorylation sites can be drawn separately or together. Colors can be altered and protein names (labels) can be changed. All of this can be done in a scripted manner that facilitates code sharing, visualization reproducibility and good practice in scientific computing
                <sup>
                    <xref ref-type="bibr" rid="ref-8">8</xref>
                </sup>.</p>
        </sec>
        <sec sec-type="methods">
            <title>Methods</title>
            <sec>
                <title>System requirements</title>
                <p>The Bioconductor pacakge, drawProteins, is designed to work with Bioconductor 3.7 and R version 3.5.</p>
            </sec>
            <sec>
                <title>Implementation</title>
                <p>This package has been created to allow the creation of protein schematics based on the data obtained from the Uniprot Protein Database.</p>
                <p>The basic workflow of drawProteins is:</p>
                <list list-type="bullet">
                    <list-item>
                        <label>1. </label>
                        <p>To provide one or more Uniprot IDs</p>
                    </list-item>
                    <list-item>
                        <label>2. </label>
                        <p>Get a list of feature from the Uniprot API</p>
                    </list-item>
                    <list-item>
                        <label>3. </label>
                        <p>Draw the chains of the proteins</p>
                    </list-item>
                    <list-item>
                        <label>4. </label>
                        <p>Add features as desired</p>
                    </list-item>
                </list>
                <p>drawProteins uses the package httr to interact with the Uniprot API and extract a JSON object into R. The JSON object is used to create a data frame. Adaptations of the graphing package 
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/package=ggplot2">ggplot2</ext-link> are then used to create the protein schematic.</p>
            </sec>
            <sec>
                <title>Operation</title>
                <p>
					
                    <bold>
						
                        <italic toggle="yes">Getting the data from Uniprot.</italic>
					</bold> Currently, drawProteins obtains the protein feature information from the UniProt Protein API
                    <sup>
                        <xref ref-type="bibr" rid="ref-5">5</xref>,
                        <xref ref-type="bibr" rid="ref-6">6</xref>
                    </sup>. At least one working Uniprot accession number must be provided. More than one can be provided but they must be in the same vector, separated by a space. The space is replaced to create a url that can be used to query the Uniprot API
                    <sup>
                        <xref ref-type="bibr" rid="ref-9">9</xref>
                    </sup>.</p>
                <p>The 
                    <monospace>get_features()</monospace> function uses the Uniprot API to return the features of a protein - the chain, domain information and other annotated features such as &#x201c;repeats&#x201d; and &#x201c;motifs&#x201d;. Post-translational modifications, such as phosphorylations, are also provided by the UniProt API.</p>
                <p>The 
                    <monospace>httr::content()</monospace> function is then used to extract the content. From the 
                    <monospace>get_features()</monospace> function, this will provide lists of lists. The length of the parent lists corresponds to the number of accession numbers provided. Interestingly, the order is different to that of the UniProt accession numbers provided. The lists inside the parent list are a list of six, one for each protein, that contains names of the proteins and the features.</p>
                <p>As an example, the script below will retrieve, from UniProt, the details of a the human version of a protein called 
                    <ext-link ext-link-type="uri" xlink:href="https://www.uniprot.org/uniprot/Q04206">RelA</ext-link> or NF-kappaB, p65, a well-studied transcription factor
                    <sup>
                        <xref ref-type="bibr" rid="ref-10">10</xref>
                    </sup>.</p>
                <p>With internet access, this can be retrieved from Uniprot with this code:</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#214A87;">library</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(drawProteins)</styled-content>

                        <styled-content style="font-size:15px;color:#214A87;">library</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(ggplot2)</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903;"># UniProt accession number for human rel A is Q04206</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">rel_json &lt;- drawProteins</styled-content>
                        <styled-content style="font-size:15px;color:#CF5C00;">::</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">get_features</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#4F9905;">"Q04206"</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">)</styled-content>
                    </preformat>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#000000;">## [1] "Download has worked"</styled-content>
                    </preformat>
                </p>
                <p>
                    <bold>
                        <italic toggle="yes">Turning Uniprot data into a dataframe.</italic>
                    </bold> The next step in the workflow is to convert the data from the Uniprot API into a dataframe that can be used with ggplot2.</p>
                <p>The 
                    <monospace>feature_to_dataframe()</monospace> function will convert the list of lists of six provided by the 
                    <monospace>get_features()</monospace> function to a dataframe, which can then be used to plot the schematics.</p>
                <p>The 
                    <monospace>feature_to_dataframe()</monospace> function will also add an &#x201c;order&#x201d; value to allow plotting. The order goes from the bottom in the manner of a graph.</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#000000;">rel_data &lt;- drawProteins</styled-content>
                        <styled-content style="font-size:15px;color:#CF5C00;">::</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">feature_to_dataframe</styled-content>
                        <styled-content style="font-size:15px;color:#000000;;">(rel_json)</styled-content>
                    </preformat>
                </p>
                <p>The rel_data object is a data frame with 9 variables and observations that include protein features. The variables are show below. A data frame of this type could be created independently of UniProt.</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#214A87;">str</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(rel_data)</styled-content>
                    </preformat>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#000000;">## &#x2019;data.frame&#x2019;:    69 obs. of 9 variables:
##  $ type       : chr  "CHAIN" "DOMAIN" "REGION" "MOTIF" ...
##  $ description: chr  "Transcription factor p65" "RHD" "Activation domain" "Nuclear localization signal" 
##  $ begin      : num  1 19 415 301 536 1 38 38 122 123 ...
##  $ end        : num  551 306 459 304 544 1 38 38 122 123 ...
##  $ length     : num  550 287 44 3 8 0 0 0 0 0 ...
##  $ accession  : chr  "Q04206" "Q04206" "Q04206" "Q04206" ...
##  $ entryName  : chr  "TF65_HUMAN" "TF65_HUMAN" "TF65_HUMAN" "TF65_HUMAN" ...
##  $ taxid      : int  9606 9606 9606 9606 9606 9606 9606 9606 9606 9606 ...
##  $ order      : int  1 1 1 1 1 1 1 1 1 1 ...</styled-content>
                    </preformat>
                </p>
                <p>
                    <bold>
                        <italic toggle="yes">Draw the canvas, protein chains and domains.</italic>
                    </bold> The first step is to create the plot area with the 
                    <monospace>draw_canvas()</monospace> function. The x-axis of the canvas is based on the length of the protein (or the longest protein in the case of drawing multiple proteins). The y-axis is based on the number of proteins being drawn. The 
                    <monospace>draw_canvas()</monospace> function requires a data frame.</p>
                <p>Usually, the next step is to draw the protein chains using the 
                    <monospace>draw_chains()</monospace> function. This requires a ggplot2 object and a data frame in that order. The data frame does not have to be the same as that used for 
                    <monospace>draw_canvas()</monospace> but must contain the variables 
                    <monospace>type, description, begin, end, entryName, order</monospace>.</p>
                <p>Protein domains can be added with the 
                    <monospace>draw_domains()</monospace> function, which also requires a ggplot2 object and a data frame in that order. Again, the data frame does not have to be the same as that obtained from UniProt but must contain the variables 
                    <monospace>type, description, begin, end, and order</monospace>. Thus custom domains can be added with the 
                    <monospace>draw_domains()</monospace> function. Note that the chain and the domain are drawn to scale in terms of their number of amino acids (
                    <xref ref-type="fig" rid="f1">Figure 1</xref>).</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#000000;">p &lt;- </styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">draw_canvas</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(rel_data)</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p &lt;- </styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">draw_chains</styled-content>
                        <styled-content style="font-size:15px;color:#000000;;">(p, rel_data,</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">label_size = </styled-content>
                        <styled-content style="font-size:15px;color:#0000CF;">2.5</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">)</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p &lt;- </styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">draw_domains</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(p, rel_data)</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p</styled-content>
                    </preformat>
                </p>
                <fig fig-type="figure" id="f1" orientation="portrait" position="float">
                    <label>Figure 1. </label>
                    <caption>
                        <title>Protein domain schematic of RelA/p65.</title>
                        <p>The default output gives a grey background and labels the domain. RHD = Rel Homology Domain.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/15828/8372196b-f3d2-43b9-88be-567723da42b6_figure1.gif"/>
                </fig>
                <p>To show this visualization better, a white background helps, as does removing the y-axis and the grid (
                    <xref ref-type="fig" rid="f2">Figure 2</xref>). Changing the size of the text using the base_size argument also aids visualization. This can be done with this code:</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#8F5903;"># white background and remove y-axis</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p &lt;- p </styled-content>
                        <styled-content style="font-size:15px;color:#CF5C00;">+</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">theme_bw</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">base_size = </styled-content>
                        <styled-content style="font-size:15px;color:#0000CF;">10</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">)</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00;">+</styled-content> 
                        <styled-content style="font-size:15px;color:#8F5903;"># white background</styled-content>

                        <styled-content style="font-size:15px;color:#214A87;">    theme</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">panel.grid.minor=element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(),</styled-content>

                        <styled-content style="font-size:15px;color:#214A87;">        panel.grid.major=element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">()) </styled-content>
                        <styled-content style="font-size:15px;color:#CF5C00;">+</styled-content>

                        <styled-content style="font-size:15px;color:#214A87;">    theme</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">axis.ticks = element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(),</styled-content>

                        <styled-content style="font-size:15px;color:#214A87;">        axis.text.y = element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">()) </styled-content>
                        <styled-content style="font-size:15px;color:#CF5C00;">+</styled-content>

                        <styled-content style="font-size:15px;color:#214A87;">    theme</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">panel.border = element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">())</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p</styled-content>
                    </preformat>
                </p>
                <fig fig-type="figure" id="f2" orientation="portrait" position="float">
                    <label>Figure 2. </label>
                    <caption>
                        <title>Protein domain schematic of RelA/p65.</title>
                        <p>The background can be customized using theme functions from ggplot2. RHD = Rel Homology Domain.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/15828/8372196b-f3d2-43b9-88be-567723da42b6_figure2.gif"/>
                </fig>
            </sec>
        </sec>
        <sec sec-type="cases">
            <title>Use cases</title>
            <sec>
                <title>Putting the RelA workflow together and adding titles</title>
                <p>The UniProt API provides information on protein regions, protein motifs and protein phosphorylation sites. By using the functions shown in the script below, it is possible to show the features of the protein desired to create. Altering colors and adding customisation is possible.</p>
                <p>For the human protein RelA, also known as the p65 subunit of NFkappaB, a transcription factor with diverse functions including a role in leukaemia, inflammation and cancer, here is a good workflow that generates a nice schematic of the protein showing domains and phosphorylation sites (
                    <xref ref-type="fig" rid="f3">Figure 3</xref>).</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#214A87;">draw_canvas</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(rel_data) -&gt; p</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p &lt;- </styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">draw_chains</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(p, rel_data, </styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">label_size =</styled-content> 
                        <styled-content style="font-size:15px;color:#0000CF;">2</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">)</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p &lt;- </styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">draw_domains</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(p, rel_data)</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p &lt;- </styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">draw_regions</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(p, rel_data)</styled-content> 
                        <styled-content style="font-size:15px;color:#8F5903;"># add regions</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p &lt;- </styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">draw_motif</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(p, rel_data)</styled-content>   
                        <styled-content style="font-size:15px;color:#8F5903;"># add motifs</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p &lt;- </styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">draw_phospho</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(p, rel_data, </styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">size =</styled-content> 
                        <styled-content style="font-size:15px;color:#0000CF;">3</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">)</styled-content> 
                        <styled-content style="font-size:15px;color:#8F5903;"># add phosphorylation sites</styled-content>


                        <styled-content style="font-size:15px;color:#000000;">p &lt;- p</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00;">+</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">theme_bw</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">base_size = </styled-content>
                        <styled-content style="font-size:15px;color:#0000CF;">10</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">)</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00;">+ </styled-content>
                        <styled-content style="font-size:15px;color:#8F5903;"># white backgnd &amp; change text size</styled-content>

                        <styled-content style="font-size:15px;color:#214A87;">    theme</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">panel.grid.minor=element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(),</styled-content>

                        <styled-content style="font-size:15px;color:#214A87;">        panel.grid.major=element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">())</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00;">+</styled-content>

                        <styled-content style="font-size:15px;color:#214A87;">    theme</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">axis.ticks = element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(),</styled-content>

                        <styled-content style="font-size:15px;color:#214A87;">        axis.text.y = element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">())</styled-content>
                        <styled-content style="font-size:15px;color:#CF5C00;"> 
                            <styled-content style="font-size:15px;color:#CF5C00;">+</styled-content>
                        </styled-content>

                        <styled-content style="font-size:15px;color:#214A87;">    theme</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">panel.border = element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">())</styled-content>


                        <styled-content style="font-size:15px;color:#8F5903;"># add titles</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">rel_subtitle &lt;- </styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">paste0</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#4F9905;">"circles = phosphorylation sites\n"</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">,</styled-content>

                        <styled-content style="font-size:15px;color:#4F9905;">                "RHD = Rel Homology Domain\nsource:Uniprot"</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">)</styled-content>


                        <styled-content style="font-size:15px;color:#000000;">p &lt;- p </styled-content>
                        <styled-content style="font-size:15px;color:#CF5C00;">+</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">labs</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">title = </styled-content>
                        <styled-content style="font-size:15px;color:#4F9905;">"Human Rel A/p65"</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">,</styled-content>

                        <styled-content style="font-size:15px;color:#214A87;">                subtitle =</styled-content> 
                        <styled-content style="font-size:15px;color:#000000;">rel_subtitle)</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p</styled-content>

</preformat>
                </p>
                <fig fig-type="figure" id="f3" orientation="portrait" position="float">
                    <label>Figure 3. </label>
                    <caption>
                        <title>More detailed protein domain schematic of RelA/p65.</title>
                        <p>By drawing the domains, regions and motifs a more detailed protein schematic is generated. RHD = Rel Homology Domain; TAD = Transactivation Domain. Yellow circles denote phosphorylation sites.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/15828/8372196b-f3d2-43b9-88be-567723da42b6_figure3.gif"/>
                </fig>
            </sec>
            <sec>
                <title>Drawing schematic for multiple proteins</title>
                <p>With internet access, the script below shows the workflow and generates a visualization of the five human proteins of the NF-kappaB transcription factor family (
                    <xref ref-type="fig" rid="f4">Figure 4</xref>).</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#8F5903;"># accession numbers of five NF-kappaB proteins</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">prot_data &lt;- drawProteins</styled-content>
                        <styled-content style="font-size:15px;color:#CF5C00;">::</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">get_features</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#4F9905;">"Q04206 Q01201 Q04864 P19838 Q00653"</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">)</styled-content>
                    </preformat>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#000000;">## [1] "Download has worked"</styled-content>
                    </preformat>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#000000;">prot_data &lt;- drawProteins</styled-content>
                        <styled-content style="font-size:15px;color:#CF5C00;">::</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">feature_to_dataframe</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(prot_data)</styled-content>


                        <styled-content style="font-size:15px;color:#000000;">p &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">draw_canvas</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(prot_data)</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">draw_chains</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(p, prot_data,</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">label_size =</styled-content> 
                        <styled-content style="font-size:15px;color:#0000CF;">2</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">)</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">draw_domains</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(p, prot_data)</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">draw_repeat</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(p, prot_data)</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">draw_motif</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(p, prot_data)</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">draw_phospho</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(p, prot_data,</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">size =</styled-content> 
                        <styled-content style="font-size:15px;color:#0000CF;">4</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">)</styled-content>


                        <styled-content style="font-size:15px;color:#8F5903;"># background and y-axis</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p &lt;- p</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00;">+</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">theme_bw</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">base_size =</styled-content> 
                        <styled-content style="font-size:15px;color:#0000CF;">10</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">)</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00;">+</styled-content> 
                        <styled-content style="font-size:15px;color:#8F5903;"># white backgnd &amp; change text size</styled-content>
    
                        <styled-content style="font-size:15px;color:#214A87;">theme</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">panel.grid.minor=element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(),</styled-content>
         
                        <styled-content style="font-size:15px;color:#214A87;">panel.grid.major=element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">())</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00;">+</styled-content>
    
                        <styled-content style="font-size:15px;color:#214A87;">theme</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">axis.ticks = element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(),</styled-content>
         
                        <styled-content style="font-size:15px;color:#214A87;">axis.text.y = element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">())</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00;">+</styled-content>
    
                        <styled-content style="font-size:15px;color:#214A87;">theme</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">panel.border = element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">())</styled-content>


                        <styled-content style="font-size:15px;color:#8F5903;"># add titles</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">rel_subtitle &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">paste0</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#4F9905;">"circles = phosphorylation sites\n"</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">,</styled-content>
                  
                        <styled-content style="font-size:15px;color:#4F9905;">"RHD = Rel Homology Domain\nsource:Uniprot"</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">)</styled-content>


                        <styled-content style="font-size:15px;color:#000000;">p &lt;- p</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00;">+</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">labs</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">title =</styled-content> 
                        <styled-content style="font-size:15px;color:#4F9905;">"Schematic of human NF-kappaB proteins"</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">,</styled-content>
                  
                        <styled-content style="font-size:15px;color:#214A87;">subtitle =</styled-content> 
                        <styled-content style="font-size:15px;color:#000000;">rel_subtitle)</styled-content>


                        <styled-content style="font-size:15px;color:#8F5903;"># move legend to top</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p &lt;- p</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00;">+</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">theme</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">legend.position=</styled-content>
                        <styled-content style="font-size:15px;color:#4F9905;">"top"</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">)</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00;">+</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">labs</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">fill=</styled-content>
                        <styled-content style="font-size:15px;color:#4F9905;">""</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">)</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">p</styled-content>
                    </preformat>
                </p>
                <fig fig-type="figure" id="f4" orientation="portrait" position="float">
                    <label>Figure 4. </label>
                    <caption>
                        <title>Protein domain schematic of human NF-kappaB proteins.</title>
                        <p>The five members of the NF-kappaB transcription factors family can be illustrated by drawing the domains, regions and motifs as detailed on the UniProt database. The lengths of the chains, domains and motifs are proportional to the number of amino acids. RHD = Rel Homology Domain; TAD = Transactivation Domain. Yellow circles denote phosphorylation sites.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/15828/8372196b-f3d2-43b9-88be-567723da42b6_figure4.gif"/>
                </fig>
                <p>The proteins, domains and phosphorylation sites (yellow circles) are drawn and positioned according to amino acid number.</p>
            </sec>
            <sec>
                <title>Working with BioMart</title>
                <p>It is possible to use bioMart
                    <sup>
                        <xref ref-type="bibr" rid="ref-11">11</xref>,
                        <xref ref-type="bibr" rid="ref-12">12</xref>
                    </sup> to pull out the UniProt accession numbers for a Gene Ontology (GO) term. For example, the GO term for &#x201c;MAP kinase activity&#x201d;. This has a GO number of 
                    <ext-link ext-link-type="uri" xlink:href="https://www.google.com/search?q=go0004707&amp;ie=utf-8&amp;oe=utf-8&amp;client=firefox-b-ab">GO:0004707</ext-link>. This example script borrows heavily on the biomaRt users guide written by Steffen Durinck, Wolfgang Huber and Mike Smith
                    <sup>
                        <xref ref-type="bibr" rid="ref-13">13</xref>
                    </sup>. The script below generates a visualization containing 14 protein schematics (
                    <xref ref-type="fig" rid="f5">Figure 5</xref>).</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#8F5903;"># install bioMart if you haven&#x2019;t used it before</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903;"># remove the hash tags...</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903;"># source("http://www.bioconductor.org/biocLite.R ")</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903;"># biocLite()</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903;"># biocLite("biomaRt")</styled-content>

                        <styled-content style="font-size:15px;color:#214A87;">library</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(biomaRt)</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903;"># chosing a database = MART and a dataset - gets more focussed each step...</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">ensembl</styled-content> = 
                        <styled-content style="font-size:15px;color:#214A87;">useMart</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#4F9905;">"ensembl"</styled-content>,
                    
                        <styled-content style="font-size:15px;color:#214A87;">dataset=</styled-content>
                        <styled-content style="font-size:15px;color:#4F9905;">"hsapiens_gene_ensembl"</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">)</styled-content>


                        <styled-content style="font-size:15px;color:#8F5903;"># Retrieve all entrezgene identifiers and HUGO gene symbols of genes which have</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903;"># a &#x201c;MAP kinase activity&#x201d; GO term associated with it.</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903;"># this is the GO:0004707</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903;"># this gives 14 proteins....</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903;"># create output in a dataframe and add uniprotswissprot</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903;"># which is the UniProt ID</styled-content>

                        <styled-content style="font-size:15px;color:#000000;">output &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87;">getBM</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87;">attributes = c</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">(</styled-content>
                        <styled-content style="font-size:15px;color:#4F9905;">&#x2019;uniprotswissprot&#x2019;</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">,</styled-content>
                                   
                        <styled-content style="font-size:15px;color:#4F9905;">&#x2019;hgnc_symbol&#x2019;</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">),</styled-content>
                  
                        <styled-content style="font-size:15px;color:#214A87;">filters =</styled-content> 
                        <styled-content style="font-size:15px;color:#4F9905;">&#x2019;go&#x2019;</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">,</styled-content>
                  
                        <styled-content style="font-size:15px;color:#214A87;">values =</styled-content> 
                        <styled-content style="font-size:15px;color:#4F9905;">&#x2019;GO:0004707&#x2019;</styled-content>
                        <styled-content style="font-size:15px;color:#000000;">,</styled-content>
                  
                        <styled-content style="font-size:15px;color:#214A87;">mart =</styled-content> 
                        <styled-content style="font-size:15px;color:#000000;">ensembl)</styled-content>
                    </preformat>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#8F5903"># returns a dataframe... pull out uniprotIDs for drawing...</styled-content>

                        <styled-content style="font-size:15px;color:#000000">uniprotIDs &lt;- output</styled-content>
                        <styled-content style="font-size:15px;color:#CF5C00">$</styled-content>
                        <styled-content style="font-size:15px;color:#000000">uniprotswissprot</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903"># get rid of blank entries - turn into NA</styled-content>

                        <styled-content style="font-size:15px;color:#000000">uniprotIDs[uniprotIDs</styled-content>
                        <styled-content style="font-size:15px;color:#CF5C00">==</styled-content>
                        <styled-content style="font-size:15px;color:#4F9905">""</styled-content>
                        <styled-content style="font-size:15px;color:#000000">] &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#8F5903">NA</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903"># remove NA</styled-content>

                        <styled-content style="font-size:15px;color:#000000">uniprotIDs &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">na.omit</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(uniprotIDs)</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903"># make the IDs characters</styled-content>

                        <styled-content style="font-size:15px;color:#000000">uniprotIDs &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">as.character</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(uniprotIDs)</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903"># just the unique ones</styled-content>

                        <styled-content style="font-size:15px;color:#000000">uniprotIDs &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">unique</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(uniprotIDs)</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903"># combine into one element</styled-content>

                        <styled-content style="font-size:15px;color:#000000">uniprotIDs &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">paste</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(uniprotIDs,</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">collapse =</styled-content> 
                        <styled-content style="font-size:15px;color:#4F9905">" "</styled-content>
                        <styled-content style="font-size:15px;color:#000000">)</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903"># this can now be used in drawProteins</styled-content>


                        <styled-content style="font-size:15px;color:#8F5903"># now get features from Uniprot</styled-content>

                        <styled-content style="font-size:15px;color:#214A87">library</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(magrittr)</styled-content>


                        <styled-content style="font-size:15px;color:#000000">uniprotIDs</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00">%&gt;%</styled-content>
  
                        <styled-content style="font-size:15px;color:#000000">drawProteins</styled-content>
                        <styled-content style="font-size:15px;color:#CF5C00">::</styled-content>
                        <styled-content style="font-size:15px;color:#214A87">get_features</styled-content>
                        <styled-content style="font-size:15px;color:#000000">()</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00">%&gt;%</styled-content>
  
                        <styled-content style="font-size:15px;color:#000000">drawProteins</styled-content>
                        <styled-content style="font-size:15px;color:#CF5C00">::</styled-content>
                        <styled-content style="font-size:15px;color:#214A87">feature_to_dataframe</styled-content>
                        <styled-content style="font-size:15px;color:#000000">() -&gt;</styled-content>
  
                        <styled-content style="font-size:15px;color:#000000">prot_data</styled-content>
</preformat>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#000000">## [1] "Download has worked"</styled-content>
                    </preformat>
                </p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#8F5903"># data frame with 722 observations</styled-content>


                        <styled-content style="font-size:15px;color:#214A87">library</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(ggplot2)</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903"># basic drawing</styled-content>

                        <styled-content style="font-size:15px;color:#000000">p &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">draw_canvas</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(prot_data)</styled-content>

                        <styled-content style="font-size:15px;color:#000000">p &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">draw_chains</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(p, prot_data,</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">label_size =</styled-content> 
                        <styled-content style="font-size:15px;color:#0000CF">2</styled-content>)

                        <styled-content style="font-size:15px;color:#000000">p &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">draw_domains</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(p, prot_data)</styled-content>

                        <styled-content style="font-size:15px;color:#000000">p &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">draw_repeat</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(p, prot_data)</styled-content>

                        <styled-content style="font-size:15px;color:#000000">p &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">draw_motif</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(p, prot_data)</styled-content>

                        <styled-content style="font-size:15px;color:#000000">p &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">draw_phospho</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(p, prot_data,</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">size =</styled-content> 
                        <styled-content style="font-size:15px;color:#0000CF">4</styled-content>)


                        <styled-content style="font-size:15px;color:#8F5903"># background and y-axis</styled-content>

                        <styled-content style="font-size:15px;color:#000000">p &lt;- p</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00">+</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">theme_bw</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87">base_size =</styled-content> 
                        <styled-content style="font-size:15px;color:#0000CF">10</styled-content>
                        <styled-content style="font-size:15px;color:#000000">)</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00">+</styled-content> 
                        <styled-content style="font-size:15px;color:#8F5903"># white background and change text size</styled-content>
  
                        <styled-content style="font-size:15px;color:#214A87">theme</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87">panel.grid.minor=element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(),</styled-content>
    
                        <styled-content style="font-size:15px;color:#214A87">panel.grid.major=element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000">())</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00">+</styled-content>
  
                        <styled-content style="font-size:15px;color:#214A87">theme</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87">axis.ticks = element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(),</styled-content>
    
                        <styled-content style="font-size:15px;color:#214A87">axis.text.y = element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000">())</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00">+</styled-content>
  
                        <styled-content style="font-size:15px;color:#214A87">theme</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87">panel.border = element_blank</styled-content>
                        <styled-content style="font-size:15px;color:#000000">())</styled-content>
  

                        <styled-content style="font-size:15px;color:#8F5903"># add titles</styled-content>

                        <styled-content style="font-size:15px;color:#000000">p &lt;- p</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00">+</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">labs</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87">title =</styled-content> 
                        <styled-content style="font-size:15px;color:#4F9905">"Schematic of human MAP kinases"</styled-content>
                        <styled-content style="font-size:15px;color:#000000">,</styled-content>
  
                        <styled-content style="font-size:15px;color:#214A87">subtitle =</styled-content> 
                        <styled-content style="font-size:15px;color:#4F9905">"circles = phosphorylation sites\nsource:Uniprot"</styled-content>
                        <styled-content style="font-size:15px;color:#000000">)</styled-content>
  

                        <styled-content style="font-size:15px;color:#8F5903"># move legend to top</styled-content>

                        <styled-content style="font-size:15px;color:#000000">p &lt;- p</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00">+</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">theme</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87">legend.position=</styled-content>
                        <styled-content style="font-size:15px;color:#4F9905">"top"</styled-content>
                        <styled-content style="font-size:15px;color:#000000">)</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00">+</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">labs</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(</styled-content>
                        <styled-content style="font-size:15px;color:#214A87">fill=</styled-content>
                        <styled-content style="font-size:15px;color:#4F9905">""</styled-content>
                        <styled-content style="font-size:15px;color:#000000">)</styled-content>


                        <styled-content style="font-size:15px;color:#000000">p</styled-content>
                    </preformat>
                </p>
                <fig fig-type="figure" id="f5" orientation="portrait" position="float">
                    <label>Figure 5. </label>
                    <caption>
                        <title>Protein domain schematic of human MAP kinases.</title>
                        <p>Using bioMart with the Gene Ontology term for "MAP kinase activity", it is possible to draw multiple human MAP kinases using data from UniProt. Yellow circles denote phosphorylation sites.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/15828/8372196b-f3d2-43b9-88be-567723da42b6_figure5.gif"/>
                </fig>
            </sec>
            <sec>
                <title>Customizing the draw functions</title>
                <p>Various customizations are possible:</p>
                <list list-type="bullet">
                    <list-item>
                        <label>1. </label>
                        <p>Alter chain color and outline.</p>
                    </list-item>
                    <list-item>
                        <label>2. </label>
                        <p>Change the labels to a custom list (but remember that the plots are drawn from the bottom up)</p>
                    </list-item>
                    <list-item>
                        <label>3. </label>
                        <p>Change the size and color of the phosphorylation symbols.</p>
                    </list-item>
                </list>
                <p>These are illustrated with the script below which generates 
                    <xref ref-type="fig" rid="f6">Figure 6</xref>.</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-size:15px;color:#214A87">data</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(</styled-content>
                        <styled-content style="font-size:15px;color:#4F9905">"five_rel_data"</styled-content>)

                        <styled-content style="font-size:15px;color:#000000">p &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">draw_canvas</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(five_rel_data)</styled-content>

                        <styled-content style="font-size:15px;color:#000000">p &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">draw_chains</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(p, five_rel_data,</styled-content>
             
                        <styled-content style="font-size:15px;color:#214A87">fill =</styled-content> 
                        <styled-content style="font-size:15px;color:#4F9905">"lightsteelblue1"</styled-content>
                        <styled-content style="font-size:15px;color:#000000">,</styled-content>   
                        <styled-content style="font-size:15px;color:#8F5903"># chain fill color</styled-content>
             
                        <styled-content style="font-size:15px;color:#214A87">outline =</styled-content> 
                        <styled-content style="font-size:15px;color:#4F9905">"grey"</styled-content>
                        <styled-content style="font-size:15px;color:#000000">,</styled-content>            
                        <styled-content style="font-size:15px;color:#8F5903"># chain outline</styled-content>
             
                        <styled-content style="font-size:15px;color:#214A87">labels = c</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(</styled-content>
                        <styled-content style="font-size:15px;color:#4F9905">"p50/p105"</styled-content>
                        <styled-content style="font-size:15px;color:#000000">,</styled-content>      
                        <styled-content style="font-size:15px;color:#8F5903"># custom protein names</styled-content>
                          
                        <styled-content style="font-size:15px;color:#4F9905">"p50/p105"</styled-content>
                        <styled-content style="font-size:15px;color:#000000">,</styled-content>
                          
                        <styled-content style="font-size:15px;color:#4F9905">"p52/p100"</styled-content>
                        <styled-content style="font-size:15px;color:#000000">,</styled-content>
                          
                        <styled-content style="font-size:15px;color:#4F9905">"p52/p100"</styled-content>
                        <styled-content style="font-size:15px;color:#000000">,</styled-content>
                          
                        <styled-content style="font-size:15px;color:#4F9905">"Rel B"</styled-content>
                        <styled-content style="font-size:15px;color:#000000">,</styled-content>
                          
                        <styled-content style="font-size:15px;color:#4F9905">"c-Rel"</styled-content>
                        <styled-content style="font-size:15px;color:#000000">,</styled-content>
                          
                        <styled-content style="font-size:15px;color:#4F9905">"p65/Rel A"</styled-content>
                        <styled-content style="font-size:15px;color:#000000">),</styled-content>
             
                        <styled-content style="font-size:15px;color:#214A87">label_size =</styled-content> 
                        <styled-content style="font-size:15px;color:#0000CF">5</styled-content>
                        <styled-content style="font-size:15px;color:#000000">)</styled-content>

                        <styled-content style="font-size:15px;color:#8F5903"># change size and color of phosphorylation sites</styled-content>

                        <styled-content style="font-size:15px;color:#000000">p &lt;-</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">draw_phospho</styled-content>
                        <styled-content style="font-size:15px;color:#000000">(p, five_rel_data,</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">size =</styled-content> 
                        <styled-content style="font-size:15px;color:#0000CF">3</styled-content>
                        <styled-content style="font-size:15px;color:#000000">,</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">fill =</styled-content> 
                        <styled-content style="font-size:15px;color:#4F9905">"red"</styled-content>
                        <styled-content style="font-size:15px;color:#000000">)</styled-content>

                        <styled-content style="font-size:15px;color:#000000">p</styled-content> 
                        <styled-content style="font-size:15px;color:#CF5C00">+</styled-content> 
                        <styled-content style="font-size:15px;color:#214A87">theme_bw</styled-content>
                        <styled-content style="font-size:15px;color:#000000">()</styled-content>
                    </preformat>
                </p>
                <fig fig-type="figure" id="f6" orientation="portrait" position="float">
                    <label>Figure 6. </label>
                    <caption>
                        <title>Customizing the protein schematic of the NF-kappaB family.</title>
                        <p>Using arguments in the draw_chains() and draw_phospho() functions, it is possible customize colors and labels.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/15828/8372196b-f3d2-43b9-88be-567723da42b6_figure6.gif"/>
                </fig>
            </sec>
        </sec>
        <sec sec-type="discussion">
            <title>Discussion</title>
            <p>After 20 years of manual drawing of protein schematics and experience in proteomic studies
                <sup>
                    <xref ref-type="bibr" rid="ref-14">14</xref>&#x2013;
                    <xref ref-type="bibr" rid="ref-17">17</xref>
                </sup>, the need for a more sustainable and programmatic method seemed important and worthwhile. It seemed wise to develop an approach that would integrate protein visualizations with other bioinformatic tools available in Bioconductor. This package represents an approach to enabling the reproducible and programmatic generation of protein schematics.</p>
            <p>The plan is to develop this package further in terms of generating use cases and adding features. A list of issues for future development has already been added by the author on 
                <ext-link ext-link-type="uri" xlink:href="https://github.com/brennanpincardiff/drawProteins">GitHub</ext-link>. Bug reports, feedback on desired features or code contributions can be made through 
                <ext-link ext-link-type="uri" xlink:href="https://github.com/brennanpincardiff/drawProteins/issues">GitHub</ext-link>.</p>
            <p>The challenge with protein visualization is that specialist domain knowledge sometimes trumps databases. Thus, while integrating knowledge from UniProt is an excellent starting point, it is also essential to allow customisation of plots. This can be done by adding or removing information about the proteins, protein features and post-translational modification to the dataframe object made with R.</p>
        </sec>
        <sec>
            <title>Data availability</title>
            <p>All data underlying the results are available as part of the article and no additional source data are required.</p>
        </sec>
        <sec>
            <title>Software availability</title>
            <p>
				
                <bold>The drawProteins package is available at:</bold> 
                <ext-link ext-link-type="uri" xlink:href="http://bioconductor.org/packages/drawProteins/">http://bioconductor.org/packages/drawProteins/</ext-link>
            </p>
            <p>
				
                <bold>Source code is available at:</bold> 
                <ext-link ext-link-type="uri" xlink:href="https://github.com/brennanpincardiff/drawProteins">https://github.com/brennanpincardiff/drawProteins</ext-link>
            </p>
            <p>
				
                <bold>Archived source code as at time of publication:</bold> 
                <ext-link ext-link-type="uri" xlink:href="https://github.com/brennanpincardiff/drawProteins/tree/v1.0.2">https://github.com/brennanpincardiff/drawProteins/tree/v1.0.2</ext-link> and 
                <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.5281/zenodo.1306619">https://doi.org/10.5281/zenodo.1306619</ext-link>
                <sup>
                    <xref ref-type="bibr" rid="ref-18">18</xref>
                </sup>
            </p>
            <p>
				
                <bold>License:</bold> MIT+</p>
        </sec>
    </body>
    <back>
        <ack>
            <title>Acknowledgements</title>
            <p>Thanks to Steph Locke (
                <ext-link ext-link-type="uri" xlink:href="https://github.com/stephlocke">https://github.com/stephlocke</ext-link>) and Dave Parr (
                <ext-link ext-link-type="uri" xlink:href="https://github.com/DaveRGP">https://github.com/DaveRGP</ext-link>) from the CaRdiff R User Group for help, advice and support that led to the development of this package. Without them the package just wouldn&#x2019;t have happened.</p>
            <p>Some of the Use Cases above have been shown on the authors blog, R for Biochemists (
                <ext-link ext-link-type="uri" xlink:href="http://rforbiochemists.blogspot.co.uk/">http://rforbiochemists.blogspot.co.uk/</ext-link>).</p>
        </ack>
        <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>Ren</surname>
                            <given-names>J</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Wen</surname>
                            <given-names>L</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Gao</surname>
                            <given-names>X</given-names>
                        </name>
				
                        <etal/>
			</person-group>:
                    <article-title>DOG 1.0: illustrator of protein domain structures.</article-title>
                    <source>
				
                        <italic toggle="yes">Cell Res.</italic>
			</source>
                    <year>2009</year>;<volume>19</volume>(<issue>2</issue>):<fpage>271</fpage>&#x2013;<lpage>3</lpage>.
                    <pub-id pub-id-type="pmid">19153597</pub-id>
                    <pub-id pub-id-type="doi">10.1038/cr.2009.6</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>Liu</surname>
                            <given-names>W</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Xie</surname>
                            <given-names>Y</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Ma</surname>
                            <given-names>J</given-names>
                        </name>
				
                        <etal/>
			</person-group>:
                    <article-title>IBS: an illustrator for the presentation and visualization of biological sequences.</article-title>
                    <source>
				
                        <italic toggle="yes">Bioinformatics.</italic>
			</source>
                    <year>2015</year>;<volume>31</volume>(<issue>20</issue>):<fpage>3359</fpage>&#x2013;<lpage>3361</lpage>.
                    <pub-id pub-id-type="pmid">26069263</pub-id>
                    <pub-id pub-id-type="doi">10.1093/bioinformatics/btv362</pub-id>
                    <pub-id pub-id-type="pmcid">4595897</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>Corpas</surname>
                            <given-names>M</given-names>
                        </name>
			</person-group>:
                    <article-title>The BioJS article collection of open source components for biological data visualisation [version 1; referees: not peer reviewed].</article-title>
                    <source>
				
                        <italic toggle="yes">F1000Res.</italic>
			</source>
                    <year>2014</year>;<volume>3</volume>:<fpage>56</fpage>.
                    <pub-id pub-id-type="pmid">25580221</pub-id>
                    <pub-id pub-id-type="doi">10.12688/f1000research.3-56.v1</pub-id>
                    <pub-id pub-id-type="pmcid">4288408</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>Skidmore</surname>
                            <given-names>ZL</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Wagner</surname>
                            <given-names>AH</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Lesurf</surname>
                            <given-names>R</given-names>
                        </name>
				
                        <etal/>
			</person-group>:
                    <article-title>GenVisR: Genomic Visualizations in R.</article-title>
                    <source>
				
                        <italic toggle="yes">Bioinformatics.</italic>
			</source>
                    <year>2016</year>;<volume>32</volume>(<issue>19</issue>):<fpage>3012</fpage>&#x2013;<lpage>3014</lpage>.
                    <pub-id pub-id-type="pmid">27288499</pub-id>
                    <pub-id pub-id-type="doi">10.1093/bioinformatics/btw325</pub-id>
                    <pub-id pub-id-type="pmcid">5039916</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-5">
                <label>5</label>
                <mixed-citation publication-type="journal">
                    <collab>The UniProt Consortium</collab>:
                    <article-title>Uniprot: the universal protein knowledgebase.</article-title>
                    <source>
				
                        <italic toggle="yes">Nucleic Acids Res.</italic>
			</source>
                    <year>2017</year>;<volume>45</volume>(<issue>D1</issue>):<fpage>D158</fpage>&#x2013;<lpage>D169</lpage>.
                    <pub-id pub-id-type="pmid">27899622</pub-id>
                    <pub-id pub-id-type="doi">10.1093/nar/gkw1099</pub-id>
                    <pub-id pub-id-type="pmcid">5210571</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>Nightingale</surname>
                            <given-names>A</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Antunes</surname>
                            <given-names>R</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Alpi</surname>
                            <given-names>E</given-names>
                        </name>
				
                        <etal/>
			</person-group>:
                    <article-title>The Proteins API: accessing key integrated protein and genome information.</article-title>
                    <source>
				
                        <italic toggle="yes">Nucleic Acids Res.</italic>
			</source>
                    <year>2017</year>;<volume>45</volume>(<issue>W1</issue>):<fpage>W539</fpage>&#x2013;<lpage>W544</lpage>.
                    <pub-id pub-id-type="pmid">28383659</pub-id>
                    <pub-id pub-id-type="doi">10.1093/nar/gkx237</pub-id>
                    <pub-id pub-id-type="pmcid">5570157</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>Wickham</surname>
                            <given-names>H</given-names>
                        </name>
			</person-group>:
                    <article-title>ggplot2: Elegant Graphics for Data Analysis</article-title>. Springer-Verlag New York,<year>2009</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://ggplot2.org">Reference Source</ext-link>
                </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>Wilson</surname>
                            <given-names>G</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Bryan</surname>
                            <given-names>J</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Cranston</surname>
                            <given-names>K</given-names>
                        </name>
				
                        <etal/>
			</person-group>:
                    <article-title>Good enough practices in scientific computing.</article-title>
                    <source>
				
                        <italic toggle="yes">PLoS Comput Biol.</italic>
			</source>
                    <year>2017</year>;<volume>13</volume>(<issue>6</issue>):<fpage>e1005510</fpage>.
                    <pub-id pub-id-type="pmid">28640806</pub-id>
                    <pub-id pub-id-type="doi">10.1371/journal.pcbi.1005510</pub-id>
                    <pub-id pub-id-type="pmcid">5480810</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-9">
                <label>9</label>
                <mixed-citation publication-type="journal">
                    <article-title>The uniprot proteins api</article-title>.<year>2018</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://www.ebi.ac.uk/proteins/api/doc/">Reference Source</ext-link>
                </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>Lawrence</surname>
                            <given-names>T</given-names>
                        </name>
			</person-group>:
                    <article-title>The nuclear factor NF-kappaB pathway in inflammation.</article-title>
                    <source>
				
                        <italic toggle="yes">Cold Spring Harb Perspect Biol.</italic>
			</source>
                    <year>2009</year>;<volume>1</volume>(<issue>6</issue>):<fpage>a001651</fpage>.
                    <pub-id pub-id-type="pmid">20457564</pub-id>
                    <pub-id pub-id-type="doi">10.1101/cshperspect.a001651</pub-id>
                    <pub-id pub-id-type="pmcid">2882124</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-11">
                <label>11</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
				
                        <name name-style="western">
                            <surname>Durinck</surname>
                            <given-names>S</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Moreau</surname>
                            <given-names>Y</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Kasprzyk</surname>
                            <given-names>A</given-names>
                        </name>
				
                        <etal/>
			</person-group>:
                    <article-title>BioMart and Bioconductor: a powerful link between biological databases and microarray data analysis.</article-title>
                    <source>
				
                        <italic toggle="yes">Bioinformatics.</italic>
			</source>
                    <year>2005</year>;<volume>21</volume>(<issue>16</issue>):<fpage>3439</fpage>&#x2013;<lpage>3440</lpage>.
                    <pub-id pub-id-type="pmid">16082012</pub-id>
                    <pub-id pub-id-type="doi">10.1093/bioinformatics/bti525</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-12">
                <label>12</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
				
                        <name name-style="western">
                            <surname>Durinck</surname>
                            <given-names>S</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Spellman</surname>
                            <given-names>PT</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Birney</surname>
                            <given-names>E</given-names>
                        </name>
				
                        <etal/>
			</person-group>:
                    <article-title>Mapping identifiers for the integration of genomic datasets with the R/Bioconductor package biomaRt.</article-title>
                    <source>
				
                        <italic toggle="yes">Nat Protoc.</italic>
			</source>
                    <year>2009</year>;<volume>4</volume>(<issue>8</issue>):<fpage>1184</fpage>&#x2013;<lpage>91</lpage>.
                    <pub-id pub-id-type="pmid">19617889</pub-id>
                    <pub-id pub-id-type="doi">10.1038/nprot.2009.97</pub-id>
                    <pub-id pub-id-type="pmcid">3159387</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-13">
                <label>13</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
				
                        <name name-style="western">
                            <surname>Smith</surname>
                            <given-names>M</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Durinck</surname>
                            <given-names>S</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Huber</surname>
                            <given-names>W</given-names>
                        </name>
			</person-group>:
                    <article-title>The biomart users guide</article-title>. 2017.
                    <ext-link ext-link-type="uri" xlink:href="http://bioconductor.org/packages/release/bioc/vignettes/biomaRt/inst/doc/biomaRt.html">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>Brennan</surname>
                            <given-names>P</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Babbage</surname>
                            <given-names>JW</given-names>
                        </name>
					
                        <name name-style="western">
                            <surname>Thomas</surname>
                            <given-names>G</given-names>
                        </name>
				
                        <etal/>
			</person-group>:
                    <article-title>p70
                        <sup>s6k</sup> integrates phosphatidylinositol 3-kinase and rapamycin-regulated signals for E2F regulation in T lymphocytes.</article-title>
                    <source>
				
                        <italic toggle="yes">Mol Cell Biol.</italic>
			</source>
                    <year>1999</year>;<volume>19</volume>(<issue>7</issue>):<fpage>4729</fpage>&#x2013;<lpage>4738</lpage>.
                    <pub-id pub-id-type="pmid">10373522</pub-id>
                    <pub-id pub-id-type="doi">10.1128/MCB.19.7.4729</pub-id>
                    <pub-id pub-id-type="pmcid">84271</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>Brennan</surname>
                            <given-names>P</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Floettmann</surname>
                            <given-names>JE</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Mehl</surname>
                            <given-names>A</given-names>
                        </name>
				
                        <etal/>
			</person-group>:
                    <article-title>Mechanism of action of a novel latent membrane protein-1 dominant negative.</article-title>
                    <source>
				
                        <italic toggle="yes">J Biol Chem.</italic>
			</source>
                    <year>2001</year>;<volume>276</volume>(<issue>2</issue>):<fpage>1195</fpage>&#x2013;<lpage>1203</lpage>.
                    <pub-id pub-id-type="pmid">11031256</pub-id>
                    <pub-id pub-id-type="doi">10.1074/jbc.M005461200</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>Fielding</surname>
                            <given-names>CA</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Siebert</surname>
                            <given-names>S</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Rowe</surname>
                            <given-names>M</given-names>
                        </name>
				
                        <etal/>
			</person-group>:
                    <article-title>Analysis of human tumour necrosis factor receptor 1 dominant-negative mutants reveals a major region controlling cell surface expression.</article-title>
                    <source>
				
                        <italic toggle="yes">FEBS Lett.</italic>
			</source>
                    <year>2004</year>;<volume>570</volume>(<issue>1&#x2013;3</issue>):<fpage>138</fpage>&#x2013;<lpage>142</lpage>.
                    <pub-id pub-id-type="pmid">15251454</pub-id>
                    <pub-id pub-id-type="doi">10.1016/j.febslet.2004.06.035</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>Alsagaby</surname>
                            <given-names>SA</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Khanna</surname>
                            <given-names>S</given-names>
                        </name>
				
                        <name name-style="western">
                            <surname>Hart</surname>
                            <given-names>KW</given-names>
                        </name>
				
                        <etal/>
			</person-group>:
                    <article-title>Proteomics-based strategies to identify proteins relevant to chronic lymphocytic leukemia.</article-title>
                    <source>
				
                        <italic toggle="yes">J Proteome Res.</italic>
			</source>
                    <year>2014</year>;<volume>13</volume>(<issue>11</issue>):<fpage>5051</fpage>&#x2013;<lpage>5062</lpage>.
                    <pub-id pub-id-type="pmid">24983324</pub-id>
                    <pub-id pub-id-type="doi">10.1021/pr5002803</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>Brennan</surname>
                            <given-names>P</given-names>
                        </name>
			</person-group>:
                    <article-title>brennanpincardiff/drawProteins: F1000 publication release (Version v1.0.2).</article-title>
                    <source>
				
                        <italic toggle="yes">Zenodo.</italic>
			</source>
                    <year>2018</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.5281/zenodo.1306619">Data Source</ext-link>
                </mixed-citation>
            </ref>
        </ref-list>
    </back>
    <sub-article article-type="reviewer-report" id="report37075">
        <front-stub>
            <article-id pub-id-type="doi">10.5256/f1000research.15828.r37075</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Griffith</surname>
                        <given-names>Malachi</given-names>
                    </name>
                    <xref ref-type="aff" rid="r37075a1">1</xref>
                    <role>Referee</role>
                    <uri content-type="orcid">https://orcid.org/0000-0002-6388-446X</uri>
                </contrib>
                <aff id="r37075a1">
                    <label>1</label>McDonnell Genome Institute, Washington University School of Medicine, St. Louis, MO, USA</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>22</day>
                <month>8</month>
                <year>2018</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2018 Griffith M</copyright-statement>
                <copyright-year>2018</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="relatedArticleReport37075" related-article-type="peer-reviewed-article" xlink:href="10.12688/f1000research.14541.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>The author describes the creation of a Bioconductor/R package for generic visualization of 2D protein diagrams.&#x00a0; The tool does not address 3D visualizations or visualization of protein sequences or alignments. Rather it allows the user to view the position of protein annotations within an arbitrary number of proteins. By default, UniProt sequence identifiers and associated annotations are supported. The demonstrated examples depict protein domains/motifs and phosphorylation sites.&#x00a0; Identifying a set of proteins to view from the Gene Ontology via bioMart is also demonstrated. There are likely to be many additional useful queries that could be achieved by similar bioMart queries.</p>
            <p> The package leans on ggplot2 functionality for the actual drawing of each protein schematic. The drawings consist of simple elements: colored rectangles and circles that can be nested, overlaid, and labeled. &#x00a0;A few simple use cases are illustrated.&#x00a0; The writing is brief and straightforward. The code is available under an open access document.&#x00a0;</p>
            <p> I was able to install the package and run through the examples in the paper in a few minutes with only minor difficulties.</p>
            <p> In particular, I had trouble getting this line to work in the example:</p>
            <p> ```</p>
            <p> output &lt;- getBM(attributes = c('uniprotswissprot', 'hgnc_symbol'), filters = 'go', values = 'GO:0004707', mart = ensembl)</p>
            <p> ```</p>
            <p> Perhaps some problem with the way the single quotes are being encoded in that section?</p>
            <p> Overall the tool is quite basic but also appears to be customizable. I anticipate it could be useful to many who wish to automate visualization of protein drawings and integrate these with visualization of various types omics data.</p>
            <p>Are the conclusions about the tool and its performance adequately supported by the findings presented in the article?</p>
            <p>Yes</p>
            <p>Is the rationale for developing the new software tool clearly explained?</p>
            <p>Yes</p>
            <p>Is the description of the software tool technically sound?</p>
            <p>Yes</p>
            <p>Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others?</p>
            <p>Yes</p>
            <p>Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool?</p>
            <p>Yes</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>
    <sub-article article-type="reviewer-report" id="report37074">
        <front-stub>
            <article-id pub-id-type="doi">10.5256/f1000research.15828.r37074</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Lexa</surname>
                        <given-names>Matej</given-names>
                    </name>
                    <xref ref-type="aff" rid="r37074a1">1</xref>
                    <role>Referee</role>
                    <uri content-type="orcid">https://orcid.org/0000-0002-4213-5259</uri>
                </contrib>
                <aff id="r37074a1">
                    <label>1</label>Department of Machine Learning and Data Processing, Faculty of Informatics, Masaryk University, Botanicka 68a, 60200 Brno, Czech Republic</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>22</day>
                <month>8</month>
                <year>2018</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2018 Lexa M</copyright-statement>
                <copyright-year>2018</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="relatedArticleReport37074" related-article-type="peer-reviewed-article" xlink:href="10.12688/f1000research.14541.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>The paper describes a protein annotation visualization tool for R/Bioconductor that has already been in use for more than a year. The software is mature, I was able to install it easily, all the examples of code in the manuscript are functional. I only noticed a small deviation in the biomaRt example, most likely caused by slightly different data returned by biomaRt.</p>
            <p> </p>
            <p> The manuscripts describes the purpose and functioning of the package in sufficient detail. However, I found the introduction a bit too brief, especially in terms of mentioning other similar software and advantages of drawProteins. For example, I found a Bioconductor package called Pviz that may be able to generate protein annotation visualizations.</p>
            <p> </p>
            <p> As a minor remark, the last sentence in this paragraph on page 3 seems unclear to me:</p>
            <p> "The feature_to_dataframe() function will also add an &#x201c;order&#x201d; value to allow plotting. The order goes from the bottom in the manner of a graph."</p>
            <p> </p>
            <p> Finally, a suggestion. The software would be even more useful if it could handle reading and writing of standard protein annotation files in GFF or similar format. UniProt wikipedia page describes how it is applied to proteins in this example: https://www.uniprot.org/uniprot/P0A7B8.gff Although GFF is much more popular with genomic data, it seems to be ocassionally used for annotating protein sequences.</p>
            <p>Are the conclusions about the tool and its performance adequately supported by the findings presented in the article?</p>
            <p>Yes</p>
            <p>Is the rationale for developing the new software tool clearly explained?</p>
            <p>Partly</p>
            <p>Is the description of the software tool technically sound?</p>
            <p>Yes</p>
            <p>Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others?</p>
            <p>Yes</p>
            <p>Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool?</p>
            <p>Yes</p>
            <p>Reviewer Expertise:</p>
            <p>bioinformatics, plant biology and genomics</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-type="response" id="comment3935-37074">
            <front-stub>
                <contrib-group>
                    <contrib contrib-type="author">
                        <name>
                            <surname>Brennan</surname>
                            <given-names>Paul</given-names>
                        </name>
                        <aff/>
                    </contrib>
                </contrib-group>
                <author-notes>
                    <fn fn-type="conflict">
                        <p>
                            <bold>Competing interests: </bold>I am the author of the manuscript and the drawProteins package.</p>
                    </fn>
                </author-notes>
                <pub-date pub-type="epub">
                    <day>30</day>
                    <month>8</month>
                    <year>2018</year>
                </pub-date>
            </front-stub>
            <body>
                <p>Dear&#x00a0;Matej,&#x00a0;</p>
                <p> &#x00a0; &#x00a0; &#x00a0;Thanks for your review.&#x00a0;</p>
                <p> &#x00a0; &#x00a0; &#x00a0;I will look at extending the introduction over the next little while and also clarifying my remark about the order of the proteins.&#x00a0;</p>
                <p> &#x00a0; &#x00a0; &#x00a0;I was inspired by your suggestion about GFF formats. I have created a gff_parser() function that is now available on Github and in the development version of drawProteins. It will be interesting to see if this is found useful. Interestingly for RelA/p65, the GFF format only includes annotation about the protein folding and not annotation about the domains. For that reason, I have also created a draw_folding() function which colours the regions of the protein according to&#x00a0;STRAND, HELIX and TURN types which denote regions of the proteins that assemble as beta-strands, alpha helicies or make a turn in the 3D structure of the protein.</p>
                <p> &#x00a0; &#x00a0; &#x00a0;Thanks again,&#x00a0;</p>
                <p> Paul&#x00a0;</p>
                <p> ----</p>
                <p> Paul Brennan,&#x00a0;</p>
                <p> Cardiff University</p>
            </body>
        </sub-article>
    </sub-article>
</article>
