<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>IWSG</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Low latencies as conditione sine qua non for interactive data exploration and timely collaboration</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Hajo N. Krabbenhöft</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Steffen Möller</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Lübeck, Department of Dermatology</institution>
          ,
          <addr-line>Lübeck</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Lübeck, Institute for Neuroand Bioininformatics</institution>
          ,
          <addr-line>Lübeck</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2011</year>
      </pub-date>
      <volume>8</volume>
      <fpage>8</fpage>
      <lpage>10</lpage>
      <abstract>
        <p>Motivation: High-throughput technologies, like gene expression arrays and next-generation sequencing, provide enormous data sets, which are too large to transfer or download quickly. The study of such data, for our application this means explaining the measurements with a molecular interpretation of disease etiology, requires continuous updates and refinements as novel interpretations are pursued. The complexity of the problem requires a diverse range of expertise. And thus a shared view is crucial for a successful collaboration - within and between institutions. Web services and traditional web pages provide centralized data storage and synchronized presentation. Relying on a single central server, though, comes with its own flavor of reliability and performance issues. Every time the server is busy solving a request, the user is forced to wait. It is therefore very beneficial to combine the integrity of web services and the share-ability of web pages with the fluency of a desktop application. Increasing the interactivity of data presentation to each individual user allows for a more interactive knowledge exchange on the group scale.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Here, we present a combination of Open Source technologies for
distributed, synchronized and failure-resistant storage of huge data
sets as the technological basement for globally fast access to
research data. Accordingly, this work explores the derived possibilities
for interactive presentation to a group of locally distributed
researchers, as enabled by a problem-tailored web application. To aid in the
investigative work, the user interface shows minimal latencies.
These goals are achieved by capitalizing on related developments in
distributed data storage and asynchronous web technologies, most
notably the non-relational database Apache Cassandra and the
Google Web Toolkit. This combines efficient pre-processing with
parallelisation.</p>
      <p>The developed web application looks akin to a typical desktop
application and is highly responsive, since it downloads needed data in
parallel, while the user is happily working. The researcher can
prepare different data set views for different aspects of his analysis,
which are immediately available for colleagues and collaborators. By
*To whom correspondence should be addressed.
underpinning every decision and conference call with a
synchronized shared data set, group communication is greatly improved.
This work demonstrates that the interactivity with the user to work on
large data sets is strengthened with remote applications and typical
“show next page” delays are overcome by employing the latest web
technologies. This way, the strong server-user interaction allows for
the seamless extension for serving additional users and thus allow
for collaborations.</p>
      <p>Availability: Source code for the web application and the data
storage back-end was released under GNU Lesser General Public
License and is freely available for download from
http://github.com/fxtentacle/eQTL-GWT-Cassandra
1</p>
    </sec>
    <sec id="sec-2">
      <title>INTRODUCTION</title>
      <p>The problem is as old as Bioinformatics itself: biological research
yields more data than a human can handle manually.</p>
      <p>Technological advancements in biochemistry and better insights
in computational biology together have accelerated and broadened
the avalanche of information. We are already losing this fight, as
much data is generated in labs, which is never rendered available
for analyses in other contexts, since the information is not publicly
available. Given the inter-individual differences of patients and
controls, many new model organisms, many more tissues
investigated at an ever more detailed level and additional test conditions,
the avalanche of usable knowledge will not stop in any foreseeable
future.</p>
      <p>For the analysis of large data, one needs to find
humandigestible aggregations of it. It shall be a goal-oriented presentation
where the essential information to form hypotheses is brought
together. Further statistical evidence in the data will guide the
downstream analysis, as will additional external information. For
our application, the molecular interpretation of disease phenotypes,
this is a process of continuous refinements and updates,
accompanied by fruitful discussions with fellow researchers and
collaborators. Every researcher needs software to look at and evaluate all
possible measurements and explanations, without being forced to
manually download or update the huge underlying data set. The
researcher is doing investigative work and, therefore, it should be
possible to browse all of the data interactively.
1.1</p>
    </sec>
    <sec id="sec-3">
      <title>Prior art</title>
      <p>The most common approach found in the Bioinformatics
community for presenting and browsing data sets is to store research data
inside a relational database and write custom-made software or
web pages to present the data. Some approaches also include the
ability to produce diagrams, but most are limited to text and tabular
data. While generated web pages are usually static, this form of
presentation is to be considered interactive if the user can issue
filtering requests to the web server and retrieve a new web page
containing the response within an acceptable response time.</p>
      <p>Inside a relational database, data are stored as sorted by the
primary key and separate look-up tables are generated for column
range and equals queries. Since these look-up tables need to be
identical for every database server in the system, common database
software does not allow write requests to be distributed. There is,
however, a range of solutions for replicating databases to multiple
servers such that read requests can be distributed. This means that
a relational database scales well with huge data sets when it comes
to read requests and does not scale at all with write requests.</p>
      <p>For very basic applications where research data are imported
only once and then never modified, this works well. However, as
soon as data are being processed or annotated on the user’s behalf,
the write rate of a single server is sustained. With traditional
databases, only reads can be executed on a replica of the data and,
therefore, the system as a whole cannot scale for writes.</p>
      <p>We would like to see a word-processor like working
environment: every data editable and inspectable with local views on the
full data, helped by search tools and situation-dependent statistics
like word counts. We want to avoid data transfer (takes too long),
web-forms based “paged” interactions, any non-scalable
components and want to directly support inter-user communication.
2</p>
    </sec>
    <sec id="sec-4">
      <title>METHODS</title>
      <p>The system evolved in Java from the PHP implemented TiQS interacting
QTL System (tiqs.it). It does not require any local installation work apart
from unzipping and executing a shell script. Web service requests are
handled by a custom-written Java servlet inside a Jetty 6 (codehaus
Foundation) servlet container. Jetty was chosen for its capability to run with the
same configuration file on Windows, Mac OS X and Linux. Its direct
competitor, Apache Tomcat, instead needs to be set up individually for each
machine.</p>
      <p>
        Data describing the topology of the system are stored in a PostgreSQL
database (www.postgresql.org) with Hibernate 3 (www.hibernate.org). The
valuable scientific data is stored inside a distributed Apache Cassandra
        <xref ref-type="bibr" rid="ref8">(Lakshman and Malik, 2010)</xref>
        database. Load distribution is handled by a
nginx load balancer (wiki.nginx.org), which was chosen for its high
performance, stability and ease of configuration. Optimized example data set
refinements, for the example of our expression QTL are provided. There is
a plug-in API which allows researchers to write arbitrary filters and data
processors in Java.
3
3.1
      </p>
    </sec>
    <sec id="sec-5">
      <title>RESULTS</title>
    </sec>
    <sec id="sec-6">
      <title>Minimal technical requirements</title>
      <p>From the previous PHP implementation, no code could be saved
and a separate execution environment was designed from scratch.
It was taken special care to ensure the application to remain
compatible with common IT constraints in research institutions: the
application needs HTTP access on a random port for each worker
node, as well as two configurable ports on which the peer-to-peer
communication of the distributed database will take place.
The system can work with almost any memory and hard disk
configuration and every Windows, Mac OS X and Linux computer can
be turned into a worker node simply by copying a folder and
running a shell script. The worker node software could also be
deployed remotely.</p>
      <p>The used database is data center aware in its distribution of
redundancy. Accordingly, a complete self-contained copy of the data is
kept at each physical facility, if the researcher has appointed one or
more machines to use for data storage. The researcher can
immediately start working, even while a local copy of the data set is being
synchronized with coworkers and collaborators round the globe
automatically. There is no initial waiting time for downloading the
complete data set or manually deploying updates. Current Linux
distributions like e.g. Debian (Möller et al., 2010) have all
packages readily available or downloadable at the developers’ websites.
3.2</p>
    </sec>
    <sec id="sec-7">
      <title>Reliability and performance</title>
      <p>Most current research software does not include any sort of failure
tolerance and data replication, which comes as a surprise given the
price of good research data. With growing data sets, storing and
retrieving the correct subset is not a simple task anymore. A chain
is only as strong as its weakest limb and therefore a bad database
and schema choice will completely ruin a data exploration
software.</p>
      <p>Apache Cassandra was chosen because it is stable, fast and
replicates data. This database is used in production at Facebook with
billions of rows and therefore can be assumed to be reliable.
Moving away from conventional relational databases towards a novel
distributed system out of a key-value store and manually managed
indexes payed off well.</p>
      <p>Database query times average at 25ms and the system has shown a
maximum in throughput of 10,000 expression QTL entries written
per second on a single machine. Evaluating the performance on
three machines showed that scalability was achieved and is simple
to set up. When the database system is using the same
configuration file on every machine, different worker nodes will
automatically find each other and relocate the distributed data accordingly.
Fault tolerance was evaluated by randomly disconnecting one of
the three machines from the network. While the processing time
for background tasks did go up when disconnecting an active
worker node, the presentation front-end still responded as fast as
before.</p>
      <p>It was also verified that the data set stays complete and consistent
as long as not more than half of the worker nodes are disconnected
A
B
C</p>
      <p>D
E
at the same time. So from a scalability and reliability point of view,
this novel approach is superior to any conventional system relying
on a single centralized database.
3.3</p>
    </sec>
    <sec id="sec-8">
      <title>Example user interface for expression QTL</title>
      <p>
        Above described technologies where applied for interactively
presenting high-throughput data in statistical genetics. A web
application provides a front-end to expression QTL data in a genomic
context provided by DAS
        <xref ref-type="bibr" rid="ref3">(Dowell et al., 2001)</xref>
        . This ensures that
users can easily share data with each other by sharing their links.
By integrating a menu bar and by allowing the web page to be
viewed in full screen, the user can interact with the web application
akin to a desktop program. Since the whole program is run in the
user’s web browser, the user can use any operating system and
does not require any prerequisites, except for the aforementioned
web browser.
created and prepared for viewing in the background. The
researcher can thereby prepare different presentations of his data for
different aspects of his analysis. Since data set layers need to be
computed only once, as opposed to workflows, for example, these
views of the data set are immediately available for colleagues and
collaborators.
      </p>
      <p>On the lower half of the screen, one can see the chromosome
browser with DAS tracks and annotations for the provided research
data. One feature of the novel approach that was received
especially well was the ability to change the viewing area in the
chromosome browser without reloading the page. The user can click on
and drag the chromosome to scroll. While the user is moving the
display area using his mouse, the web application downloads the
needed data in parallel, so it can update the view while the user is
still scrolling. The table view below is also dynamically updated to
always show the most relevant data rows, in this case the 25 most
probable expression QTL in the specific area of the chromosome,
which is currently visible in the chromosome browser. The
chromosomal map view shown in figure 2 was found to work great for
getting a quick overview of which gene is interacting with which
loci and later on investigating those locations. To ease the process
of following up on these locations, transcripts and known genes
retrieved from Ensembl DAS tracks are displayed alongside the
expression QTL data when the user zooms in. The columns used
for positioning along the X and Y axis can be freely chosen to
accommodate different flavors of two-dimensional data.
The web application approach is highly reactive in comparison to
normal web pages. That is presumably because most calculations
are done when data are written. Hence, the data are stored already
prepared, sorted and preformatted, which makes their presentation
cheap in terms of network and CPU usage.</p>
      <p>By working with a synchronized local copy of the database, read
latency is as low as for traditional desktop applications. Each
separate user benefits from this increased interactivity, thereby
accelerating overall team communication.
3.4</p>
    </sec>
    <sec id="sec-9">
      <title>How to obtain reliability, scalability and interactivity</title>
      <p>3.4.1.</p>
      <sec id="sec-9-1">
        <title>Homogeneous replication of software and data</title>
        <p>With exceptions for mobile computing, a local copy is always
faster to access than relying on a remote service. However, users
are not willing to wait hours or even days for a slow initial
download of the whole data set. Therefore, our software system
replicates commonly-accessed data automatically while falling back to
remote access while replication or synchronization is in progress.
This allows new user to immediately start working and by
dynamically creating a local replica of the data set, we ensure that no row
needs to be sent twice.</p>
        <p>A research collaboration includes a number of computers
distributed over several networks. It is safe to assume that on such a scale,
at least one machine or network connection will fail. When scaling
to work with huge data sets, even more computational power is
needed and with more machines, component failures will get more
and more often. In fact, we planned for and accepted them as part
of the normal operation of a distributed software system.
For the system to stay operational and interactive under such
conditions, the data need to be replicated. One simply cannot afford to
lose data. Also, no worker node in the system should pose a single
point of failure. Therefore, all nodes are running the same software
and communicate with each other as equal peers. This approach is
a stark contrast to the commonly used pattern of master-slave
database replication. In cloud environments, this homogeneous
configuration enables us to provide demand driven load balancing.
3.4.2.</p>
      </sec>
      <sec id="sec-9-2">
        <title>Copy on write</title>
        <p>Not duplicating read-only data has been common sense in
operating system design for decades, however with the growing amount
of data stored in research databases, it is becoming increasingly
important for maintaining a high read throughput. While creating a
newly aggregated data presentation should preferably be fast, it is a
rare event when compared to inspecting the data through already
existing presentation views.</p>
        <p>A research database should therefore rather create a modified and
filtered copy of the data rather than using complex WHERE
clauses and JOINs. If JOINs are unavoidable, most database systems
provide a VIEW capability which gives the developer a warm
fuzzy feeling of having thought ahead. Sadly, most VIEWs are not
materialized by default. Therefore, performance of a standard
database VIEW is as bad as calling the underlying JOINs and
WHERE clauses on every access to any row of the VIEW.
This might seem trivial to state, but if one knows beforehand, that
a certain VIEW will only be modified sparingly, that VIEW should
be manually materialized. (CREATE TABLE … SELECT …)
This trades a one-time creation overhead in return for significantly
increased read throughput on following queries.</p>
        <p>Using these two optimization techniques, the computational work
can be moved from the presentation towards storage of the data,
which allows for parallelisation and distribution on a compute grid.
Keeping data stored the way it’s supposed to be presented also
ensures that all researches in the collaboration, independent of their
available computing power, can immediately access and work with
all presentations of the data.
3.4.3.</p>
      </sec>
      <sec id="sec-9-3">
        <title>Distribute work</title>
        <p>Research data sets may easily contain thousands of rows. While
enriching, annotating or filtering the data set, these rows can be
processed independently. By distributing one-time computational
tasks, such as the creation of a new presentation of the data, to all
machines in the collaboration, everyone can see the result data set
faster.</p>
        <p>In our case, using a distributed database gives every worker node
low-latency access on the whole data set and so one can actually
do workload distribution on a row scale. If you’re forced to stick
with a conventional relational database system, work distribution
Relevancy scores are stored alongside in the index table, to allow
for dynamic merging of blocks. If the user requests the range 0-500
Resolution1:
Resolution2:
Resolution3:
of low-level tasks might even be counter-productive or should at
least be done with reasonably-sized blocks of data.</p>
      </sec>
      <sec id="sec-9-4">
        <title>3.4.4. Prioritized non-blocking presentation as a stream of blocks of interest</title>
        <p>Tables are the dominant form of presentation for research data. In
Bioinformatics, gene locations and interactions play an important
role and, therefore, different flavors of genome scales,
chromosome browsers and interaction maps have been invented.
Especially graphical presentations provide the researcher with a quick
overview of his data. The possibility to zoom in and move around
in a map of his data closes the gap between an overview of the
complete data and a detailed close-up of specific features.
Interactive bars and maps constantly require new data to be shown,
as the user is moving around and inspecting different aspects of the
experiment. This puts an enormous strain on the back-end
database, since it means a constant flow of search queries for
aggregating the data to show and distance-comparisons are usually O(N2).
It is also important, that only the most relevant information for a
given zoom level is displayed, to make the resulting graphic not
only sufficient, but also succinct.</p>
        <p>While updating the data or creating a new presentation view, the
location where each item will be visible on the bar or map is
usually known beforehand. Similarly, when applying our suggestion of
copying the data on write time, the relevance of every item for
every zoom level can also be calculated offline.</p>
        <p>We therefore propose to divide the possible view area into a
hierarchical set of equally-sized blocks, as seen in figure 4. Assuming
that display position and relevancy score have already been
calculated, the data should look akin to table 1.</p>
        <p>We now compare these positions to figure 3. On zoom resolution
1, all items are in the first block. The same applies to zoom
resolution 2. On resolution 3, the item with ID=1 is in the second block,
while the other two items are in the first block. Now we can create
a look-up table for every block at every resolution, which is easy
given the schema-less nature of our chosen distributed key-value
store. Example look-up tables are shown in table 2. Please note
that the rows of each table have been sorted by their relevancy
scores.
shall compare other contemporary eQTL infrastructures with what
they could achieve, when they adopted those technologies.
4.1</p>
      </sec>
    </sec>
    <sec id="sec-10">
      <title>XGAP</title>
      <p>
        A related project is the eXtensible Genotype And Phenotype
platform (XGAP)
        <xref ref-type="bibr" rid="ref13">(Swertz et al., 2010)</xref>
        . The XGAP project aims to
provide a flexible and open platform for working with data sets,
specifically developed with expression QTL data in mind. The
XGAP project aims to make working collaboratively easy and
provides integrated tools for importing and exporting data.
It is noteworthy, that the XGAP project shares many design
decisions with the web application approach presented here. For
example, developing a web page rather than a program gives researchers
the freedom to share the interface and therefore access to the data
without requiring the recipient to have a matching operating
system and sufficient processing power available. It is expected, that
more and more applications and data interfaces in general will be
developed as web pages to shift the burden of installation and
configuration from the users towards the software developers.
The second shared approach is that of grid computing and
background processing. XGAP supports invocation of computationally
intensive tasks asynchronously in the background, with the
workload distributed on a PBS cluster. The novel approach presented in
this paper incorporates asynchronous distributed processing as a
core feature and can therefore support load-balancing and failure
tolerance at a level deeper than XGAP. It is expected that this trend
will continue and eventually flash over to consumer applications.
This is essential in order to reap the full benefits of newer
processors, which come with more and more cores whereas further
increasing the frequency is getting more and more difficult.
XGAP completely lacks a distributed data storage. When their
MySQL database as a storage back-end breaks down, the XGAP
system will loose all of its data, therefore presenting a single point
of failure. Neither is it prepared for parallel data management.
4.2
      </p>
    </sec>
    <sec id="sec-11">
      <title>Gene Network</title>
      <p>
        Another related project is Gene Network
        <xref ref-type="bibr" rid="ref15">(Wang et al., 2003)</xref>
        . Gene
Network providing follow-up information about genes, loci and
gene networks and their module WebQTL allows the user to
upload own research data for further analysis. Gene Network says to
archive more than 25 years of research data and provides a very
good coverage of additional information.
      </p>
      <p>Obvious shortcomings of the Gene Network are that data transfer
is not being encrypted using the industry standard HTTPS and that
there exists no version which the researchers could deploy on-site
inside their own firewall. Apart from security issues, WebQTL
allows for a very convenient analysis of small data sets. It provides
a plentiful selection of visualization methods, such as box plots,
correlation diagrams and even directed graphs.</p>
      <p>From a technical point of view, the Gene Network is considered to
be inferior to both the novel approach presented as well as XGAP.
Data set presentation in Gene Network is implemented as
downloading ready-made images from their web servers. This leaves the
user with no further possibility for interaction than changing
parameters and waiting for the next image to be downloaded. Since
the researcher has no possibility of running Gene Network on own
computational resources, the web servers provided by Gene
Network are essentially shared by all users.</p>
      <p>In its choice of presentation methods, Gene Network is very
similar to the R language for scientific computing. Due to Gene
Networks focus on reasonably small data sets, using such a scripting
language as computational back-end seems a wise choice. Gene
Network is there wholeheartedly recommended for analytical and
investigative work on classical QTL.
4.3</p>
    </sec>
    <sec id="sec-12">
      <title>Extendability of presented concepts</title>
      <p>By going new ways in terms of data storage, we combined the low
latency of local data storage with the benefits and integrity of a
centralized storage server. This technological design decision
allowed us to greatly increase interactivity of our data presentation,
without forcing the user to download the complete data set
beforehand. While during development, there was a strong focus on
expression QTL, that is their positioning on the chromosome and
their associated genes, the system was designed to be plug-able for
a multitude of data processors and data visualisation applications.
The chromosome browser allows for arbitrary chromosomes to be
displayed along with arbitrary annotation information, as long as
the DAS file format is being used. Similarly, the map view allows
for arbitrary positioning measures to be used on the X and Y axis,
as long as there is a data processor available to calculate said
positions. While theoretically any user could develop such data
processors using a simple Java API, it might be beneficial to broaden our
showcase of example processors to support additional forms of
high-throughput data.</p>
      <p>Data replication allows a whole team a consistent shared view of
their experiment. A new presentation created by one collaborator is
immediately available to the entire team. Driven by the high
interactivity between every user and the web application, overall team
communication is speeding up, and there is a general demand for a
deeper integration of social aspects into the data presentation. We
envision a future version of our system where researchers can
discuss current and past measurements in real-time using a special
comment and annotation system adapted to work directly on the
data presentation.</p>
      <p>With computing nodes gradually getting cheaper and more readily
available, dynamic grid brokering will replace static worker queues
and present us with unprecedented peak amounts of compute
power. While grid technologies traditionally suffer from their own
transiency, the distributed and homogeneous nature of our
proposed system can easily compensate for node failures, while still
retaining near-perfect performance.</p>
    </sec>
    <sec id="sec-13">
      <title>ACKNOWLEDGEMENTS</title>
      <p>The authors thank Thomas Martinetz and Saleh Ibrahim for
comments and a nice working atmosphere. Lydia Lutter is thanked for
her critical reading of the manuscript.
Jay Shendure, Gregory J. Porreca, Nikos B. Reppas, Xiaoxia Lin, John P.
McCutchJonathan Brown.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>codehaus Foundation</surname>
          </string-name>
          .
          <article-title>Jetty 6 http server</article-title>
          . URL http://jetty.codehaus.org/jetty/.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <given-names>William</given-names>
            <surname>Cookson</surname>
          </string-name>
          , Liming Liang, Goncalo Abecasis, Miriam Moffatt, and
          <string-name>
            <given-names>Mark</given-names>
            <surname>Lathrop</surname>
          </string-name>
          .
          <article-title>Mapping complex disease traits with global gene expression</article-title>
          .
          <source>Nat Rev Genet</source>
          ,
          <volume>10</volume>
          (
          <issue>3</issue>
          ):
          <fpage>184</fpage>
          -
          <lpage>194</lpage>
          ,
          <year>03 2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <given-names>Robin</given-names>
            <surname>Dowell</surname>
          </string-name>
          , Rodney Jokerst, Allen Day, Sean Eddy, and
          <string-name>
            <given-names>Lincoln</given-names>
            <surname>Stein</surname>
          </string-name>
          .
          <article-title>The distributed annotation system</article-title>
          .
          <source>BMC Bioinformatics</source>
          ,
          <volume>2</volume>
          (
          <issue>1</issue>
          ):
          <fpage>7</fpage>
          ,
          <year>2001</year>
          . ISSN 1471-
          <fpage>2105</fpage>
          . doi:
          <volume>10</volume>
          .1186/
          <fpage>1471</fpage>
          -2105-2-7
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <given-names>David</given-names>
            <surname>Flanagan. JavaScript: The Definitive Guide. O'Reilly Media</surname>
          </string-name>
          , Inc.,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>Sams</surname>
          </string-name>
          , Indianapolis, IN, USA,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <given-names>International</given-names>
            <surname>Human Genome Sequencing Consortium</surname>
          </string-name>
          .
          <article-title>Finishing the euchromatic sequence of the human genome</article-title>
          .
          <source>Nature</source>
          ,
          <volume>431</volume>
          (
          <issue>7011</issue>
          ):
          <fpage>931</fpage>
          -
          <lpage>945</lpage>
          ,
          <year>Oct 2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <given-names>FA</given-names>
            <surname>Kolpakov</surname>
          </string-name>
          ,
          <article-title>EA Ananko, GB Kolesov, and NA Kolchanov</article-title>
          .
          <article-title>GeneNet: a gene network database and its automated visualization</article-title>
          .
          <source>Bioinformatics</source>
          ,
          <volume>14</volume>
          (
          <issue>6</issue>
          ):
          <fpage>529</fpage>
          -
          <lpage>537</lpage>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <given-names>Avinash</given-names>
            <surname>Lakshman</surname>
          </string-name>
          and
          <string-name>
            <given-names>Prashant</given-names>
            <surname>Malik</surname>
          </string-name>
          .
          <article-title>Cassandra: a decentralized structured storage system</article-title>
          .
          <source>SIGOPS Oper. Syst. Rev.</source>
          ,
          <volume>44</volume>
          (
          <issue>2</issue>
          ):
          <fpage>35</fpage>
          -
          <lpage>40</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <given-names>Steffen</given-names>
            <surname>Möller</surname>
          </string-name>
          , Hajo Nils Krabbenhöft, Andreas Tille, David Paleino,
          <string-name>
            <given-names>Alan</given-names>
            <surname>Williams</surname>
          </string-name>
          , Katy Wolstencroft, Carole Goble, Richard Holland, Dominique Belhachemi,
          <string-name>
            <given-names>Charles</given-names>
            <surname>Plessy</surname>
          </string-name>
          .
          <article-title>Community-driven computational biology with Debian Linux</article-title>
          .
          <source>BMC Bioinformatics 11 Suppl</source>
          <volume>12</volume>
          (
          <year>2010</year>
          ):
          <fpage>S5</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <given-names>M</given-names>
            <surname>Rosenberg</surname>
          </string-name>
          and
          <string-name>
            <given-names>D</given-names>
            <surname>Court</surname>
          </string-name>
          .
          <article-title>Regulatory sequences involved in the promotion and termination of rna transcription</article-title>
          .
          <source>Annu. Rev. Genet</source>
          ,
          <volume>13</volume>
          :
          <fpage>319</fpage>
          -
          <lpage>53</lpage>
          ,
          <year>1979</year>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <string-name>
            <given-names>R</given-names>
            <surname>Sachidanandam</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D</given-names>
            <surname>Weissman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S C</given-names>
            <surname>Schmidt</surname>
            , J M Kakol
          </string-name>
          ,
          <string-name>
            <given-names>L D</given-names>
            <surname>Stein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G</given-names>
            <surname>Marth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S</given-names>
            <surname>Sherry</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J C</given-names>
            <surname>Mullikin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B J</given-names>
            <surname>Mortimore</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D L</given-names>
            <surname>Willey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S E</given-names>
            <surname>Hunt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C G</given-names>
            <surname>Cole</surname>
            , P C Coggill
          </string-name>
          ,
          <string-name>
            <given-names>C M</given-names>
            <surname>Rice</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z</given-names>
            <surname>Ning</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J</given-names>
            <surname>Rogers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D R</given-names>
            <surname>Bentley</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P Y</given-names>
            <surname>Kwok</surname>
            , E R Mardis, R T Yeh
          </string-name>
          ,
          <string-name>
            <given-names>B</given-names>
            <surname>Schultz</surname>
          </string-name>
          ,
          <string-name>
            <surname>L Cook</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R</given-names>
            <surname>Davenport</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M</given-names>
            <surname>Dante</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L</given-names>
            <surname>Fulton</surname>
          </string-name>
          ,
          <string-name>
            <surname>L Hillier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R H</given-names>
            <surname>Waterston</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J D</given-names>
            <surname>McPherson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B</given-names>
            <surname>Gilman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S</given-names>
            <surname>Schaffner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W J</given-names>
            <surname>Van Etten</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D</given-names>
            <surname>Reich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J</given-names>
            <surname>Higgins</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M J</given-names>
            <surname>Daly</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B</given-names>
            <surname>Blumenstiel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J</given-names>
            <surname>Baldwin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N</given-names>
            <surname>Stange-Thomann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M C</given-names>
            <surname>Zody</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L</given-names>
            <surname>Linton</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E S</given-names>
            <surname>Lander</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D</given-names>
            <surname>Altshuler</surname>
          </string-name>
          , and International SNP Map Working Group.
          <article-title>A map of human genome sequence variation containing 1.42 million single nucleotide polymorphisms</article-title>
          .
          <source>Nature</source>
          ,
          <volume>409</volume>
          (
          <issue>6822</issue>
          ):
          <fpage>928</fpage>
          -
          <lpage>33</lpage>
          ,
          <year>Feb 2001</year>
          . doi:
          <volume>10</volume>
          .1038/35057149.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <string-name>
            <surname>eon</surname>
          </string-name>
          ,
          <string-name>
            <surname>Abraham M. Rosenbaum</surname>
            ,
            <given-names>Michael D.</given-names>
          </string-name>
          <string-name>
            <surname>Wang</surname>
          </string-name>
          , Kun Zhang, Robi D.
          <string-name>
            <surname>Mitra</surname>
          </string-name>
          , and
          <string-name>
            <surname>George</surname>
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Church</surname>
          </string-name>
          .
          <source>Accurate Multiplex Polony Sequencing of an Evolved Bacterial Genome. Science</source>
          ,
          <volume>309</volume>
          (
          <issue>5741</issue>
          ):
          <fpage>1728</fpage>
          -
          <lpage>1732</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          <string-name>
            <given-names>Morris</given-names>
            <surname>Swertz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K Joeri</given-names>
            <surname>Velde</surname>
          </string-name>
          , Bruno Tesson, Richard Scheltema, Danny Arends, Gonzalo Vera, Rudi Alberts, Martijn Dijkstra, Paul Schofield, Klaus Schughart, John Hancock, Damian Smedley, Katy Wolstencroft, Carole Goble, Engbert de Brock, Andrew Jones,
          <article-title>and</article-title>
          <string-name>
            <given-names>Helen ...</given-names>
            <surname>Parkinson</surname>
          </string-name>
          .
          <article-title>Xgap: a uniform and extensible data model and software platform for genotype and phenotype experiments</article-title>
          .
          <source>Genome Biology</source>
          ,
          <volume>11</volume>
          (
          <issue>3</issue>
          ):
          <fpage>R27</fpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          <string-name>
            <surname>J M Trent</surname>
            ,
            <given-names>M</given-names>
          </string-name>
          <string-name>
            <surname>Bittner</surname>
            ,
            <given-names>J Zhang</given-names>
          </string-name>
          , R Wiltshire,
          <string-name>
            <given-names>M</given-names>
            <surname>Ray</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y</given-names>
            <surname>Su</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E</given-names>
            <surname>Gracia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P</given-names>
            <surname>Meltzer</surname>
          </string-name>
          , J De Risi,
          <string-name>
            <given-names>L</given-names>
            <surname>Penland</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P</given-names>
            <surname>Brown</surname>
          </string-name>
          .
          <article-title>Use of microgenomic technology for analysis of alterations in dna copy number and gene expression in malignant melanoma</article-title>
          .
          <source>Clin. Exp. Immunol.</source>
          ,
          <volume>107</volume>
          <issue>Suppl 1</issue>
          :
          <fpage>33</fpage>
          -
          <lpage>40</lpage>
          ,
          <year>Jan 1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          <string-name>
            <given-names>Jintao</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <surname>Robert W Williams</surname>
          </string-name>
          , and Kenneth F Manly.
          <article-title>Webqtl: web-based complex trait analysis</article-title>
          .
          <source>Neuroinformatics</source>
          ,
          <volume>1</volume>
          (
          <issue>4</issue>
          ):
          <fpage>299</fpage>
          -
          <lpage>308</lpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          <string-name>
            <given-names>W3C</given-names>
            <surname>Consortium</surname>
          </string-name>
          .
          <source>Soap version 1</source>
          .
          <article-title>2 part 1: Messaging framework (second edition), a</article-title>
          .
          <source>W3C Consortium</source>
          .
          <article-title>Web services description language (wsdl), b</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          <string-name>
            <given-names>Adam</given-names>
            <surname>Warski</surname>
          </string-name>
          . Envers:
          <article-title>Easy entity auditing</article-title>
          . URL http://jboss.org/envers/. 37
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          <string-name>
            <given-names>Michael</given-names>
            <surname>Widenius</surname>
          </string-name>
          , David Axmark,
          <article-title>and</article-title>
          <string-name>
            <given-names>A. B.</given-names>
            <surname>Mysql. MySQL Reference Manual. O'Reilly Media</surname>
          </string-name>
          , Inc.,
          <source>1st edition</source>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>