<p><div><div><div><div data-show-faces="false" data-height="21" data-width="100" data-layout="button_count" data-send="true" data-href="https://www.r-bloggers.com/door-the-database-of-odorant-responses/"></div></div><div></div></div><div></div></div>
<div>
(This article was first published on <strong><a href="https://ropensci.org/blog/2018/03/27/door/"> rOpenSci - open tools for open science</a></strong>, and kindly contributed to <a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers)</a> </div>
<h3>Olfactory Coding</h3>
<p>Detecting volatile chemicals and encoding these into neuronal activity is a vital task for all animals that is performed by their olfactory sensory systems. While these olfactory systems vary vastly between species regarding their numerical complexity, they are amazingly similar in their general structure. The periphery of olfactory systems consists of different classes of olfactory sensory neurons (OSN). In mammals, OSNs are located in the nose, in insects, OSNs are located on the antenna. OSN classes are tuned to defined but overlapping sets of odors. Thus a single odor usually elicits differential responses across an ensemble of OSNs. This <em>ensemble code</em> is able to encode thousands of odors, even in comparably simple olfactory systems.</p>
<p>To better understand the underlying logic of this ensemble code, one would ideally want to know the specific ensemble codes each and every chemical elicits across an olfactory system, the so-called <em>“olfactome”</em>. Obviously this is not feasible to tackle experimentally, yet many labs work with e.g. the olfactory system of <em>Drosophila</em> and publish studies containing responses of different odor-OSN combinations.</p>
<p>DoOR takes these heterogeneous data measured in different labs, with different techniques in different metrics and maps/merges them into a common response space, creating a consensus data-set of all odor responses. By this, DoOR provides access to the most-complete version of the <em>Drosophila</em> olfactome available.</p>
<p>This consensus data-set is of interest in various aspects: Scientists working in olfaction use DoOR to plan experiments, i.e. to find odors that activate specific OSNs. Others performing physiological recordings use DoOR to identify OSNs based on measured odor responses and modelers use DoOR to explore the combinatorial code and to predict unmeasured odor responses.</p>
<h3>The DoOR Development Process</h3>
<p>DoOR started as the bachelor thesis of Shouwen Ma who was a bachelor’s student in Giovanni Galizia’s lab at the University of Konstanz. Shouwen took the tedious task to extract all odor responses from the existing <em>Drosophila</em> olfaction literature. When he was lucky he found digital versions of these data in the supplemental material of the studies but in many cases he had to manually copy numbers from printed tables or even extract data from plots.</p>
<p>With this data being available we then formed a team consisting of Giovanni Galizia, Shouwen Ma, Marting Strauch, Anja Nissler and me who started to discuss ways to integrate this heterogeneous data in order to make it usable (see <a rel="nofollow" href="https://ropensci.org/blog/2018/03/27/door/#merging" target="_blank">merging heterogeneous data</a> for our solution). We would then build the R code of what we discussed, with Shouwen performing almost all of the programming of this initial version of DoOR which was published in 2010 [<sup><a rel="nofollow" href="https://ropensci.org/blog/2018/03/27/door/#fn:1" target="_blank">1</a></sup>].</p>
<p>In 2014 we put the DoOR code on GitHub and started to work on a major update which included rewriting major parts of the code, addition of several new features and the integration of new data and eventually resulted in the publication of DoOR 2.0 [<sup><a rel="nofollow" href="https://ropensci.org/blog/2018/03/27/door/#fn:2" target="_blank">2</a></sup>].</p>
<p>Part of the DoOR 2.0 update was also to ask authors to contribute their original data, especially in the cases where our initial data had to be extracted from plots. It is worth mentioning that while the majority of colleagues was very responsive and helpful, there were cases where we failed to get any response of authors or where data could not be provided as it was completely or partially lost. This underlines how important it is to make use of reliable data-repositories and to push data availability policies e.g. by journals.</p>
<h3>Two Packages</h3>
<p>The DoOR project consists of two packages, <code>DoOR.data</code> and <code>DoOR.functions</code>. While the first mainly provides the raw data-sets, the latter performs the processing i.e. the actual merging process, data import and export, data analysis and visualization. We chose this structure to be able to update both, data and functions independently. This also gives the possibility to easily create new “DoORs” by providing <code>DoOR.functions</code> with another heterogeneous data-set like e.g. olfactory responses from another species or maybe something completely different.</p>
<h4>Installation &amp; Loading Data</h4>
<p>To install the latest version of both packages from the master branch on GitHub run:</p>
<pre><code>devtools::install_github(&quot;ropensci/DoOR.functions&quot;)
devtools::install_github(&quot;ropensci/DoOR.data&quot;)
</code></pre>
<p>and then load the packages</p>
<pre><code>library(DoOR.functions)
library(DoOR.data)
</code></pre>
<p>and call the <code>load_door_data()</code> function to load all data to the current workspace.</p>
<h4>DoOR.data</h4>
<p>The raw data in DoOR is stored in data.frames that are named according to the functional unit (i.e. OSN) they correspond to. There are a few header columns containing different chemical descriptors followed by data columns named according to the study these data were measured in. The example below contains all data that were measured from OSNs that express the Or22a olfactory receptor.</p>
<pre><code>> head(Or22a)
  Class               Name                    InChIKey   CID       CAS Hallem.2006.EN
1  </code></pre>