BACKGROUND
web-based computational services have gained wide popularity within the bioinformatics community.
bioinformatics service providers have established computational infrastructures, where selected applications of interest are pre-installed and configured according to the system architecture.
the model of service provision is that the users interact only with the pre-installed applications through web-interface or web-service.
the resources are shared among multiple users according to certain rules and priorities defined by the provider.
in spite of the efficiency of this model in facilitating the execution of bioinformatics tasks, both the users and service providers can face a number of limitations due to the rigid design of the infrastructure.
as for the users, they cannot use software tools not pre-installed in the system and cannot boost the performance of their tasks by utilizing more computational resources.
as for the service providers, it is tedious, complicated, and usually infeasible to scale the infrastructure in response to the increasing computation and data load, which might be abrupt and temporal.
to take one example, huson et al.,  <cit>  discussed the computational challenges in analyzing the metagenomics sargasso sea dataset  <cit> .
they indicated that the whole analysis pipeline can run on a moderate infrastructure except for the sequence comparison step based on blast, which is the most demanding task that need to be performed on a high performance computer cluster.
they estimated that processing the  <dig>  million reads of the complete sargasso sea dataset would require ≈  <dig> hour on a cluster of  <dig> cpu.
such intensive computation is a bottleneck for individual users and it is an immense burden for service providers.
cloud computing is a new form of providing computing services, and in our view it provides a promising solution to overcome the limitations for both the individual users seeking personalized computational power and the computational service providers seeking elasticity of the service.
based on virtualization technology, it enables on-demand allocation, expansion, and reduction of computational resources.
it also enables assignment of multiple computing environments with different configurations to multiple users.
these services can be offered free of charge or on a pay-as-you-go basis.
currently, there is a number of both academic as well as commercial cloud computing providers worldwide; these include amazon web services   <cit>  , microsoft azure  <cit> , rackspace  <cit> , magellan  <cit> , and diag  <cit> , to name a few.
the bioinformatics academic community has recognized the advantages of cloud computing  <cit> , and the life science industry has started to support its use as well.
interestingly, recent ngs machines can stream the sequenced reads to the client cloud account during the course of sequencing run https://basespace.illumina.com.
this means that all the new sequence data become available in the cloud by completion of the wet-lab work.
the features of cloud computing suggests a new model of providing bioinformatics services, where the users do not necessarily share the same environment.
rather, each user can create and configure own infrastructure  and use software tools of interest.
this model of use is advantageous to both the bioinformatics user as well as the service provider.
the user has the flexibility, better service, and cost saving.
the provider no longer worries about scalability and maintenance of resources.
despite of its advantages, the cloud computing model has not yet been widely used among the community to support bioinformatics services.
this can be attributed to two major reasons: first, cloud computing providers offer their services in terms of hardware components  and not in terms of application parameters .
this could be a sever barrier for many application scientists who have to dig into many system administration details.
second, there is no well-defined use cases for providing cloud-based bioinformatics servers, considering the platform specifications and the underlying business model.
that is, there is a gap between the low-level cloud computing specifications and the application requirements.
to bridge this gap, there is a need to 1) develop an efficient middle-ware layer to map the user requirements to low level infrastructure configurations, 2) to define bioinformatics use cases that take technical as well as business details into account.
our contribution
models of use
we provide different models of using cloud computing platforms to offer flexible and scalable bioinformatics services.
our models consider not only the technical issues about providing these services, but also the financial aspects, which could be the major concern with respect to the bioinformatics service provider.
the scenarios we suggest are divided into two groups: one for individual users/developers who seek computational power for specific need and one for service providers who wish to provide personalized bioinformatics services.
the individual user/developer use cases include the establishment of a computer cluster and running cloud-based jobs either through web, command-line, or programmatic interface.
the service provider use case scenarios show how the service provider can scale its resources in case of overload and how a personalized environment can be offered to boost the performance of certain pre-installed tools or the whole system.
in these scenarios, we particularly highlight the interaction between the user and the provider server at one side and the interaction between the bioinformatics server and the cloud provider at the other side.
we also suggest different options to consider the related financial issues.
elastichpc
we present elastichpc , a software package and a library to facilitate the use of high performance cloud computing resources for bioinformatics applications.
although elastichpc is currently based on the amazon cloud computing platform , which is the most popular provider of cloud computing services, the concepts presented here are applicable to other cloud computing platforms and this will be achieved in future versions of the library.
the basic features of elastichpc include:
• establishment and management of high performance computer cluster ,
• submission of jobs  to the cloud machines and monitoring them,
• establishment of persistent storage in the cloud and linking it to the computing machines, and
• cost management layer to start-terminate jobs based on certain price constraints.
details of the usage scenarios and their implementation using elastichpc are handled in details in the following implementation section.
related technical work
currently, there are some cloud based programs for bioinformatics applications, especially in the area of analyzing next generation sequencing data.
these include, among others, crossbow  <cit> , rsd-cloud  <cit> , myrna  <cit> , and cloudburst  <cit> .
however, the main focus of these programs was to solve certain problems using parallel infrastructure, and the use of cloud computing was specific to these tools and not of generic nature.
in the time of developing elastichpc, other related software solutions and libraries for aws have been released.
to the best of our knowledge, these include so far starcluster  <cit> , vappio  <cit> , and cloudman  <cit> .
starcluster  <cit>  was developed as a general cluster management solution for aws and it is not specific to bioinformatics applications or any bioinformatics use cases.
cloudman  <cit>  was developed as part of the galaxy project to basically provide a version of the galaxy workflow system  <cit>  in the cloud.
cloudman is not offered as a library but it is offered as a cluster solution with a specific use case scenario.
this scenario starts with a creation of a master machine  in the cloud from the aws site using a prepared virtual machine image.
from a web-interface on the running master node, the user can add/delete more cluster nodes and start the galaxy workflow system.
vappio  <cit> , unlike cloudman, is a standalone library for supporting the creation of a computer cluster in the cloud.
it enables submission of remote jobs to the cloud instances.
table  <dig> shows a comparison between the different features available in the three libraries and elastichpc.
as can be observed from this table, elastichpc includes all the features of both vappio and cloudman, and these features along with other unique ones of elastichpc collectively enable the implementation of different use case scenarios for providing personalized bioinformatics services.
implementation
amazon web services
amazon web services  is the most popular cloud computing platform.
it offers infrastructure as a service  in terms of computational power , storage, and connectivity.
the aws products that are of major relevance to solve bioinformatics computational problems include elastic compute cloud , simple storage service , and elastic block storage .
ec <dig> includes a variety of user selectable machine instance types that range in computing power and cost.
table  <dig> summaries the features of some instance types including the strongest ones.
with each of these types, mounted disks  are also provided.
virtual machine instances are created from amazon machine images , which are templates containing software configurations .
to facilitate the creation of virtual machine instances, ec <dig> includes a directory of ami's either prepared by aws or by the community.
this directory includes a variety of ami's with different operating systems and additional applications.
from the aws web-interface, the user can set-up, launch, terminate any number of instances within a few minutes.
because the ephemeral disks are volatile and vanishes with the termination of the machine, aws offers two types of persistent storage: ebs and s <dig>  the former is defined in terms of volumes, where one or more ebs volumes can be attached  to a running instance, similar to a usb thumb drive .
the latter is like a data center accessed through certain programmatic methods.
the aws business model is "pay-as-you-go", where the user is charged only when the machines are running.
the user is also charged for reserved storage and for data transfer out of the aws site and from/to persistent storage solutions.
table  <dig> summarizes the storage options and their prices in aws .
for more information about the aws pricing schemes, we refer the reader to the documentation available on aws web-site  <cit> .
in addition to the web-based interface, aws's services can be accessed programmatically through command line interface and aws-specific api's.
we use programmatic methods in elastichpc and build upon them to provide an efficient implementation and an easy to use interface for the use case scenarios presented below in this section.
use case scenarios
as mentioned in the introduction, we suggest two groups of use case scenarios: one for individual users and one for bioinformatics service provider.
in this part of the paper, we discuss these scenarios and their implementation using elastichpc.
use case scenarios for individual users
use case scenarios for individual bioinformatics users have been implicitly introduced with cloudman and vappio.
for completeness of presentation, we will discuss these scenarios.
then we will show the major differences between them and suggest further usage and implementation enhancement.
the suggested use case scenarios for individual users involve two cases: 1) web based usage, and 2) desktop based usage.
scenario 1: web-based usage
in this scenario, a bioinformatics user, who already has an aws account, heads for establishing an infrastructure composed of a computer cluster with multiple machines of certain types in the cloud.
the major steps for achieving this task include the following:
<dig>  a third-party development team prepares a virtual machine image, equipped with necessary bioinformatics tools and middleware to create and manage a computer cluster.
this machine is then deposited in the public ami's repository of aws.
the bioinformatics tools can be augmented with the associated web-interface.
<dig>  the bioinformatics user who wishes to run an application in the cloud selects that image from the public amis page of aws.
<dig>  a machine instance is created from the selected ami and is kept running.
this machine is the master node of a cluster.
<dig>  the ip address of the running machine is retrieved from the amazon console, and the machine is accessed remotely by one of two means:
a. secure shell, where any further interaction with the cluster takes place at the command line level.
b. web-interface, where the machine includes a web-server that receives requests and processes them.
each computational tool can have its own web-page to set related parameters and enter the input.
<dig>  based on installed api's on the master node, the user builds and configures a computer cluster in the cloud with the desired number and types of machines instances.
the rationale behind that a cluster node creates other nodes is twofold: 1) the ami contains all the required and tested modules with all settings and technical details being encapsulated, which reduces the user's effort and cost.
2) all the steps run in parallel at the aws side with no further communication overhead.
<dig>  storage in the form of s <dig> or ebs products is attached to the cluster nodes.
<dig>  the execution of tasks can proceed through the master node using either command line or web interface.
note that we mean with the task any job running in the cloud; i.e., installation of a software program is also considered tasks.
scenario 2: desktop based access
in this scenario, the user installs a desktop application  that automatically connects to aws, spots a prepared ami, and starts it.
from the desktop interface, the user specifies the size and type of cluster and storage.
the desktop communicates with the master node to extend the cluster, if required.
the submission and monitoring of the jobs is achieved through this desktop application via the master node.
the implementation of the two scenarios is very similar except that an additional piece of code should be developed in the second scenario to realize a communication protocol between the desktop program and the cloud machines.
it is worth mentioning that cloudman follows the first scenario, while vappio follows the second scenario.
data flow
the data flow for both scenarios involve the transfer of user data to the ephemeral disks, ebs, or s <dig>  it also involves how the data are made available to the cluster nodes.
there are four data flow scenarios: in the first one, each cluster node receives a copy of the whole dataset either in the ephemeral disks or ebs mounted volumes.
in the second scenario, a shared file system like  is installed, where the nodes share the whole disk space.
in the third scenario, s <dig> is used as a shared file system.
in the fourth scenario, each node fetches the data it needs from the master node or s <dig> bucket before starting computation.
vappio adopts the first data flow scenario, while cloudman and starcluster adopt the second scenario.
enhancement
elastichpc enables creation of emr cluster and use of emr framework.
this feature is not available in any other library.
it also enables use of spot instances in aws, where the cluster starts only if the machine price falls below a given threshold.
elastichpc provides the four data flow scenarios, and not limited to just one strategy.
it also provides an enhanced implementation of the first data scenario based on replication of data, where the copy operation proceeds in parallel in o time, n is the data size and p is the number of nodes.
use case scenarios involving service provider
we suggest two main use case scenarios involving a service provider.
these scenarios address not only the technical but also the financial part of the model, where the major concern of the providers is "to which account will the cloud cost be charged?"
scenario 1: bypassed provider
this scenario includes the following steps:
<dig>  the bioinformatics service provider prepares a machine image of his system.
<dig>  the provider offers a web-page, where the user defines cloud based computer cluster in terms of machine type and number.
the cluster will be established using images that have been prepared by the provider.
the provider can keep track of the users and store their preferred cluster configurations.
<dig>  the user provides its cloud computing credentials so that the created cluster is associated with the user account; i.e., the cluster runs at the cost of the user, and the provider account is not charged whatever computation time is elapsed.
<dig>  after the creation of the machines, the user is directed to the cloud version of the provider system, where all tools are available with the usual web-interface.
<dig>  the provider provides a cluster management page in the cloud version where the user can manage the cluster at the run time and can also terminate it after completion of computation.
scenario 2: usage-via-provider
in this scenario, the computer cluster in the cloud is hidden from the user, and every step runs through the main web-site of the bioinformatics service provider.
this scenario includes the following sequence of events.
<dig>  the user opens a  page on the provider site, and selects that the execution takes place in the cloud.
in this case, the user is prompted to configure and to create a new cluster or select one of running clusters .
once the cluster is created, the respective tool in the cloud image of the cluster is the one that is invoked.
<dig>  the data, if not residing in s <dig>  could be uploaded to the cloud cluster by one of two means: first, the data is uploaded to the provider, who forwards it to the cloud.
second, the data can be uploaded directly to the cloud through a special client side script installed at the user machine.
the second method has the advantage of reducing traffic at the provider site.
<dig>  the provider monitors the progress of the job and the user follows this progress from the provider web-pages.
<dig>  after completion, the provider could buffer the data to be downloaded from the tool page or provide links so that the user downloads the results from the cloud.
the latter scenario reduces traffic at the server site.
figures  <dig> and  <dig> show the traditional way of running jobs on provider infrastructure and show these cloud based scenarios.
there are some issues related to these two scenarios:
• the first scenario is usually offered to users that are considered foreigner with respect to the provider.
the computation runs at the cost of the users and the provider is not charged whatever computation time is elapsed and whatever data is transferred.
in the second scenario, the cost of using the cloud can be taken over by the user  or by the provider.
• the second scenario can be used when the provider wishes to scale up infrastructure in a hidden manner in response to an increasing server load.
here, the user requests are forwarded to the cloud cluster and the results are provided back to the user through the server web-interface.
• the second scenario can help those users that are related to the provider and have no cloud account to use the cloud based services.
the cloud server runs at the cost of the provider, who can manage the consumption of each user through one of two scenarios:
<dig>  the provider uses a user management layer to control the computation for each of such users.
for example, each user could be dedicated some free computation time.
the provider controls the cost by starting and terminating the machines according to the available user credit.
<dig>  the provider associates his account with the user account such that the provider takes over the computation cost until certain amount.
this is achieved through the consolidating billing option in aws.
• the bioinformatics service provider can offer an additional service in which the snapshots of the databases needed by the users are made accessible to them.
the cost of maintaining the snapshots in the cloud is covered by the provider.
these snapshots can be used to create any number of ebs volumes to be used in computation.
• for each scenario, the provider can offer the whole system in the cloud or just some tools.
when the focus is on using a certain tool in the cloud, further abstraction and optimization can be offered to the user.
the idea is that the provider, based on his log data and knowledge of tool characteristics, can provide the service in terms of application parameters and not in terms of hardware parameters.
for example, if the program in use were blast, then the user could be asked to specify the cost limit or the desired time by which the computation is over, in addition to other information about amount of data, its type , the blast program .
the provider, based on these parameters, could then create the suitable infrastructure to accomplish the given computation task.
• the second scenario at the tool level can support execution of pipelines, where a part of the pipeline is executed at the cloud and the other parts at the provider's local infrastructure.
this pipelining can be done through pipeline/workflow authoring interface at the provider site.
the cost of cloud in this case can be taken over either by the provider or the user, when the latter submits own credentials.
elastichpc design and implementation
client-server based approach: the elastichpc package is composed of a server and a client modules as well as a set of methods for creating and managing the cloud cluster and for running jobs.
the server and client are written in python.
to save user's time, we already prepared a machine image and pre-installed the elastichpc package in it.
the security settings are pre-configured within the machine images.
that is each machine instance works as both a client and a server.
the idea to have a server module on each node is to enable execution of a task  on this node from another remote node.
an asynchronous protocol is used to enable the client module to execute different tasks on the server side.
the client module is standalone and can be installed on any machine, for example the user's local desktop, to submit jobs to the cloud cluster.
the tasks executed on the server can be broadly categorized into the following two categories:
• cloud-oriented tasks: these include functions for the establishment of additional cluster nodes and terminating some of or all the running ones.
it also includes the configuration of the nodes and the set-up of the network connectivity, the storage, and job-scheduler.
these tasks are accomplished by executing special elastichpc programs which are pre-installed on the server machine.
these programs invoke aws api's to run the cloud related functions and invoke other scripts to administrate the nodes.
the creation of the master node takes up to 2- <dig> minutes for a single node.
the creation  of the other cluster nodes is accomplished in parallel and it takes similar time per node.
by means of this parallelization, the total time for establishing a cluster of any size ranges between 2- <dig> minutes.
• computation-oriented tasks: this includes the reception of a job from a client program and executing it on the computer cluster.
this job is basically an invocation of a program already installed on the cluster.
the user can submit the input data and fix the location of the output in the cluster.
the server can also report the status of submitted job to the client.
note that the user can invoke an installer program as a job to install other programs.
included middle-ware and libraries: an elastichpc image is based on linux ubuntu and it is equipped with a number of programs to facilitate its usage.
these include amazon command line tools, apache server, pbs torque as a job scheduler, nfs as a shared file system, s3fs  <cit>  to handle the s <dig> as a shared file system, the boto library http://code.google.com/p/boto, python/perl interpreters, mpich <dig>  and c/c++ and java libraries.
RESULTS
elastichpc features and distribution
the elastichpc package and library supports the use case scenarios presented in this paper.
the distribution includes the library source code and full documentation of its entire api's.
for individual users wishing to exploit cloud computing, we prepared a machine image with the elastichpc package pre-installed in it with additional features described below.
this image can be directly used from amazon ami directory as given in the manual.
the running image has a simple web-based user interface on the master node to manage the cluster.
this interface enables management of the cluster and submission of tasks.
this image can also be started from the elastichpc website http://www.elastichpc.org where the user can set-up the cluster; note that in this case the elastichpc website represents a service provider.
figure  <dig> shows screen shots for the set-up in the elastichpc website and the cluster management page in the master node of the cloud cluster.
the provider can use a similar set-up page in his web-site to start the personalized cloud service.
in the set-up page, the user can set the number and type of cluster machines.
in the management page, the user manages the created and currently running cluster.
form this page, nodes can be added or terminated and storage volumes can be mounted to one or all the machines.
status of each node can also be monitored.
the elastichpc image/machine has additional features that leverage the use of cloud to the bioinformatics domain.
these include the following:
• the elastichpc image includes a set of pre-installed tools that can be directly accessed upon the creation of the cluster.
in the current version of elastichpc, there are about  <dig> tools, coming from biolinux, emboss  <cit> , samtools  <cit> , fastx  <cit> , ncbi blast toolkit  <cit> , and other individual sequence and rna analysis programs.
these tools come from the bibiserv and nubios bioinformatics servers.
addition of extra tools and updating this image is explained in the elastichpc manual.
in the management page in figure  <dig>  the button titled 'bibiserv-nubios' let the user move to the library and the web-pages of individual tools.
figure  <dig> shows a screen shot of the megablast web-interface on a created cluster in the cloud.
in this figure, we also show the web-interface for generic tool submission, where the user can run a tool not pre-installed on the cloud.
from this page, the user gives location  of the tool binaries, specifies the input and output files, and runs the tool.
in this way, the use of this library is not limited to any pre-defined set of tools.
• to save user's cost and to facilitate usage of database-dependent programs, we have prepared snapshots of different databases.
these snapshots are made available to the user free of charge through a simple user interface, to create ebs volumes and mount them to the cluster.
our snapshots currently include the ncbi nucleotide and protein databases in the form of raw and formatted sequences.
these also include the raw human genome sequence, and pre-computed indexes of it to be used with some tools, as explained in the manual.
in the management page in figure  <dig>  the snapshot list on the left includes identifiers for these volumes to be attached to the cluster nodes.
• the user has the option to select the location, where the cluster is hosted.
our benchmark data  has revealed that the location of the user affects the latency and quality of the service.
we found that the aws european site, for example, is the one with the reduced latency for south mediterranean countries.
for asian countries, the aws singapore would be the best choice.
furthermore, the time of acquiring the service also plays a role; e.g., the us sites have the highest load on monday , so it would be a good idea to switch to other sites.
note also that some machine instance types are offered in one site but not in the others; e.g., cluster type is so far available only in the us east site.
• elastichpc offers the creation of a mapreduce cluster.
this option facilitates the use of certain bioinformatics tools, like crossbow  <cit> , rsd-cloud  <cit> , myrna  <cit> , and cloudburst  <cit> .
from the elastichpc web-site the user can set-up a mapreduce cluster and submit jobs to it.
figure  <dig> shows a screen shot of these two steps, where the user specifies the cluster, defines initialization scripts, and the hadoop command line, as explained in the manual.
the example in the figure is for the program crossbow  <cit> , which is already included in the elastichpc image.
• clusters built by elastichpc can be used by multiple users.
the jobs and their input and output data are associated with user identification numbers.
this feature is helpful for service providers extending their infrastructure for multiple users.
• elastichpc supports different cloud storage services, like ephemeral disks, s <dig>  and ebs.
data are made available to a cluster node in elastichpc through one of three options: 1) data replication, 2) sharing, and 3) fetching.
in data replication, the user can broadcast the data  to all cluster nodes.
in the sharing option, the disk space is shared among all nodes using a shared file system .
elastichpc offers the use of nfs and s <dig> as shared file systems.
in the final mode, elastichpc can fetch necessary data for execution  from the master node or s <dig> before execution of a command.
each of these scenarios and storage solutions is advantageous for certain applications and certain types of data.
the access to s <dig> is more reliable but it is slower and more expensive.
the use of nfs over ephemeral disks or ebs volumes is better and more cost effective than using s <dig> as shared file system, but it is less reliable, as discussed in  <cit> .
ephemeral disks are as efficient as ebs volumes, but ephemeral disks are volatile and data have to be moved to them before computation and out of them after computation.
data copy option over ephemeral disks or ebs volumes is the most efficient option with respect to reliability and run-time execution, but the disadvantage is that 1) some data might not be used at all in some cluster nodes, which lead to unnecessary disk and i/o cost, and 2) the data could be very large and take much time to transfer.
the manual of elastihpc includes more details on the use of these storage solutions and related dataflow scenarios.
• elastichpc enables further cost management where the user starts the cluster only when the price of an instance falls under certain threshold in aws.
this option is based on the use of spot instances of aws.
• elastichpc has an additional api to start other machine images such as cloudbiolinux  <cit> http://cloudbiolinux.org, which encapsulates biolinux and cloudman.
this option is not specific to these images and can be used with other amis.
this feature is inspired by the biocloudcentral project https://biocloudcentral.herokuapp.comaiming at providing a central point of access to start different ami's.
overview of demonstrations and experiments
in the following subsections, we introduce demonstrations of individual user scenario and bioinformatics provider scenario.
the individual user scenario includes two experiments: the first is a metagenomics experiment based on megablast to demonstrate the use of a traditional computer cluster.
the second is an experiment for mapping ngs reads to a reference genome using crossbow to demonstrate the use of mapreduce framework on aws.
the provider scenario demonstrates the use of cloud services on the tool as well as the whole system level, as implemented in the bielefeld bioinformatics server  and the nile university bioinformatics server .
demonstrating individual user scenario
demonstrating the use of traditional computer cluster
to demonstrate the efficiency of the cloud model, we used the elastichpc web-interface from its web-site http://www.elastichpc.org to construct a cluster of  <dig> nodes to analyze metagenomics datasets.
the megablast  <cit>  program is used to annotate a set of sequences coming from a metagenomics experiment.
with this cluster, we mounted ebs volumes including the ncbi nt database.
figure  <dig> shows the web-interface of the program megablast  <cit>  on a cluster machine in the cloud.
we used the windshield dataset of  <cit> , which is composed of two collections of  <dig> flx reads.
these reads came from the dna of the organic matter on the windshield of a moving vehicle that visited two geographic locations .
for each trip a or b, there are two subsets for the left and right part of the windshield.
the number of reads are  <dig>   <dig>   <dig>   <dig>  for trips a left, b left, a right, and b right, respectively.
to make use of the parallel infrastructure, we enhanced the web-interface with an extra function that splits query set into multiple subsets, each containing roughly the same number of sequences.
these subsets are then queried in parallel against the megablast database based on the installed job scheduling system.
for the dataset at hand, we created  <dig> subsets, each with ≈  <dig> reads.
for this experiment, an ebs volume including the required databases was mounted to each cluster node.
to make the query data available to each cluster node we used the fetch strategy, in which each node fetches the queries assigned to it from the s <dig> directory before starting computation.
the average running times in minutes for traditional computer clusters of different sizes and machine types in the cloud.
the machine types are c <dig> xlarge and m <dig> xlarge.
the numbers in brackets are the computation costs in us dollar for the us-east site with $ <dig>  per hour for c <dig> xlarge and $ <dig>  per hour for m <dig> xlarge.
the cost in the column titled "total time" is not the summation of the above rows, but it is the cost of the total running time if the four datasets in the respective column were processed altogether in the cluster.
demonstrating the use of mapreduce
elastichpc supports the use of mapreduce framework on aws, where the user can create emr cluster on aws by specifying the number of nodes and machine types.
the emr cluster, despite being more difficult to use than job schedulers, has the advantage of lower machine price in aws.
the usage of emr framework within elastichpc is generic to any tool as explained in the manual.
to further facilitate the work for life science community, we included the crossbow  <cit>  tool within the elastichpc distribution.
to demonstrate the advantages of emr, we ran an experiment to map a dataset of ngs reads to a reference human genome using crossbow.
the dataset is composed of illumnia reads of around  <dig> gbp  from the african genome available at the sequence read archive .
the reads of this dataset were mapped against the human genome  available at the ucsc genome browser web-site http://genome.ucsc.edu.
we used emr clusters of different machine types and number of nodes.
table  <dig> shows the running times of these experiments and their monetary costs on amazon emr.
the results show that crossbow over emr scales well with the increasing number of machines.
the limit is the pre-processing step of crossbow, which cannot take less than ≈ <dig> minutes.
the average running times in minutes for emr clusters of different sizes and machine types in the cloud.
the machine types are c <dig> xlarge and m <dig> xlarge.
a number in the column titled 'total time" is the summation of the pre-processing and alignment times.
it is worth mentioning that we ran the same experiments using a job scheduler on non-emr clusters of corresponding sizes.
the experiments took almost the same time, but with much higher cost.
this is because the cost of a traditional cluster node is more expensive than the cost of a node of the same type in the emr product.
for example, the price of a node of the type c <dig> xlarge is $ <dig>  per hour, while the cost of a node of the same type in emr product is $ <dig>  per hour.
that is, the use of emr cluster is very cost-effective; of course only if the problem at hand can be formulated according to the mapreduce framework.
note that the cost of using  <dig>   <dig>  or  <dig> m <dig> xlargre nodes is $ <dig> , because in all these cases there are  <dig> compute hours, each with a cost of $ <dig> .
note that the use of more than  <dig> nodes will lead to more cost with no significance reduction in running time.
this is because a fraction of an hour is charged as a full hour in aws.
we also note that the use of machines of the type m <dig> xlarge mostly lead to more running time and more cost.
this is although m <dig> xlarge is less expensive than c <dig> xlarge.
reliability of the cloud based model
for our use cases, reliability of computation on cloud in our view can be addressed at two levels: the first is the ability to acquire required resources, including machine instances, storage, and connectivity.
the second is the ability to successfully execute compute jobs on the cluster machines.
the reliability of acquiring resources was limited by the contention of network bandwidth and the highest load, especially at us sites.
in the last few years, the reliability of aws is dramatically increased by establishment of many sites  worldwide and continuous improvement of the underlying cloud software stack.
before the establishment of us-west site in  <dig>  for example, users including our team have observed highest latency at us-east site and some failure of acquiring network resources for their  clusters.
we expect further improvements when more sites are established worldwide.
reliability of computation with respect to the use case scenarios, presented in this paper is associated with the use of the traditional and emr computer cluster.
failure of certain nodes and the inability of transferring data among the nodes are the most two concerns in cloud settings.
in our cloud based experiments involving tens of nodes, we did not experience such type of errors so far for traditional computer cluster.
for emr, we had encountered such problems only before amazon upgraded the hadoop version to  <dig> .
<dig> in emr and tuned its performance.
but such errors could appear when using hundreds and thousands of nodes.
although the job scheduler and hadoop implementation of emr address the failure issues by re-directing jobs failed on one node to other running nodes and by replication of data on multiple nodes, we think there is a need for another layer built upon elastichpc to assure that the data required by the re-directed jobs is available in the new node and to track the jobs that completely failed for some reasons.
this layer can make use of the elastichpc feature of reducing cluster size in run time to re-execute failed jobs with smaller cluster to save further cost.
altogether, handling fault tolerant computation in the cloud is a topic of current research and it deserves to be addressed separately in another study.
bibiserv-nubios: demonstrating service provider scenario
bibiserv http://bibiserv.techfak.uni-bielefeld.de is a bioinformatics server hosted at bielefeld university.
the server focuses on rna sequence analysis, and it includes tools for secondary structure prediction of rna , comparative structure prediction , and rna structure comparison .
the user can just use one tool or use the tools in a pipelined fashion.
this pipelined mode became possible only through consistent data types as specified in  <cit>  and through the storage of intermediate data on the server in each usage session.
nubios http://www.nubios.nileu.edu.eg is a bioinformatics server hosted at nile university.
the server focuses on sequence analysis tasks and hosts tools from emboss and ncbi toolkit.
the web-interface of the tools is generated on the fly, according to certain xml-based schema describing the interface components and the tool parameters.
the tool set in nubios complements that set of bibiserv and it is useful to have both systems accessed in the cloud.
due to infrastructure limitations, the allowed job time both in bibiserv and nubios is limited to one day per user.
statistics on the server usage show that using certain tools under certain parameter settings can cause abrupt intensive load on the server side.
rnashapes  <cit>  on bibiserv and megablast on nubios are two examples of such compute intensive tools.
therefore, it would be a good solution to delegate such computations to the cloud, while running other non-intensive parts on the local infrastructure.
nubios and bibiserv use the bypassed provider scenario presented in this paper, both at the system and tool level.
elastichpc is used for implementing both scenarios.
at the former level, the user specifies an instance of the system in the cloud.
this is enabled by accessing the cluster set-up page.
at the latter level, the user accesses a tool page and selects that this tool is executed on the cloud.
the user is also prompted to specify a cloud cluster details.
figure  <dig> shows screen shots from the nubios web-server for both levels of use.
for both scenarios, the user is then forwarded to the system or tool page in the cloud machine, where computation takes place.
the elastichpc image is used to create the machine instances because it includes the tool set of both nubios and bibiserv.
these options clearly enable personalized services and relieve the original infrastructure from abrupt computational loads.
CONCLUSIONS
in this paper, we introduced a set of use case scenarios to provide bioinformatics services based on cloud computing model.
our scenarios consider both the technical and financial issues.
we introduced elastichpc package and library to manage high performance cloud computing infrastructure with additional features to support the proposed use case scenarios.
our demos and experiments in this paper show the efficiency of cloud model in supporting computation at affordable price.
the use of elastichpc is not limited to bibiserv and nubios; it can be used to support any other bioinformatics service provider like mobyle  <cit>  and genepattern  <cit> .
currently elastichpc is used within the tavaxy workflow system http://www.tavaxy.org <cit> .
in this workflow system, the user can delegate the execution of some steps in the workflows to the cloud while other parts run on local infrastructure.
the control and data flows are coordinated between the local infrastructure and cloud instances based on functions of elastichpc.
our current version of elastichpc is limited to computer clusters.
we can support other high performance computing options like gpus, but we delayed this step because there are no bioinformatics packages so far supporting it at the production level.
cost prediction at the tool level was suggested for blast  <cit> .
this step is useful to add more abstraction to the service, in which the user can ask for faster computation time and the infrastructure is configured automatically to satisfy this requirement.
currently elastichpc is limited to aws and to linux environment.
in future versions, we will extend it to include other providers and windows operating systems.
elastichpc is useful for educational purposes to support courses for parallel programming and advanced data processing, where students can use the package to directly build clusters in the cloud and use it to test their parallel programs and scripts.
with the free start-up package of aws, the students can use the micro instances as the types of the cluster nodes.
with the job-submission interface, the students can install new tools and re-configure the machines according to the course needs.
availability and requirements
project name: elastichpc.
project home page: http://www.elastichpc.org.
operating system: linux.
programming language: python, c, java script, html.
other requirements: compatible with the browsers firefox, chrome, safari, and opera.
see the manual for more details.
license: free for academics.
authorization license needed for commercial usage .
any restrictions to use by non-academics: no restrictions.
competing interests
the authors declare that they have no competing interests.
authors' contributions
all authors contributed to theoretical developments which form the basis of the usage scenarios and elastichpc.
me and ma developed elastichpc.
all authors wrote and approved the manuscript.

 web-based computational services have gained wide popularity within the bioinformatics community. bioinformatics service providers have established computational infrastructures, where selected applications of interest are pre-installed and configured according to the system architecture. the model of service provision is that the users interact only with the pre-installed applications through web-interface or web-service. the resources are shared among multiple users according to certain rules and priorities defined by the provider. in spite of the efficiency of this model in facilitating the execution of bioinformatics tasks, both the users and service providers can face a number of limitations due to the rigid design of the infrastructure. as for the users, they cannot use software tools not pre-installed in the system and cannot boost the performance of their tasks by utilizing more computational resources. as for the service providers, it is tedious, complicated, and usually infeasible to scale the infrastructure in response to the increasing computation and data load, which might be abrupt and temporal. to take one example, huson et al., discussed the computational challenges in analyzing the metagenomics sargasso sea dataset. they indicated that the whole analysis pipeline can run on a moderate infrastructure except for the sequence comparison step based on blast, which is the most demanding task that need to be performed on a high performance computer cluster. they estimated that processing the million reads of the complete sargasso sea dataset would require ≈ hour on a cluster of cpu. such intensive computation is a bottleneck for individual users and it is an immense burden for service providers. cloud computing is a new form of providing computing services, and in our view it provides a promising solution to overcome the limitations for both the individual users seeking personalized computational power and the computational service providers seeking elasticity of the service. based on virtualization technology, it enables on-demand allocation, expansion, and reduction of computational resources. it also enables assignment of multiple computing environments with different configurations to multiple users. these services can be offered free of charge or on a pay-as-you-go basis. currently, there is a number of both academic as well as commercial cloud computing providers worldwide; these include amazon web services, microsoft azure, rackspace, magellan, and diag, to name a few. the bioinformatics academic community has recognized the advantages of cloud computing, and the life science industry has started to support its use as well. interestingly, recent ngs machines can stream the sequenced reads to the client cloud account during the course of sequencing run https://basespace.illumina.com. this means that all the new sequence data become available in the cloud by completion of the wet-lab work. the features of cloud computing suggests a new model of providing bioinformatics services, where the users do not necessarily share the same environment. rather, each user can create and configure own infrastructure and use software tools of interest. this model of use is advantageous to both the bioinformatics user as well as the service provider. the user has the flexibility, better service, and cost saving. the provider no longer worries about scalability and maintenance of resources. despite of its advantages, the cloud computing model has not yet been widely used among the community to support bioinformatics services. this can be attributed to two major reasons: first, cloud computing providers offer their services in terms of hardware components and not in terms of application parameters. this could be a sever barrier for many application scientists who have to dig into many system administration details. second, there is no well-defined use cases for providing cloud-based bioinformatics servers, considering the platform specifications and the underlying business model. that is, there is a gap between the low-level cloud computing specifications and the application requirements. to bridge this gap, there is a need to 1) develop an efficient middle-ware layer to map the user requirements to low level infrastructure configurations, 2) to define bioinformatics use cases that take technical as well as business details into account. our contribution models of use we provide different models of using cloud computing platforms to offer flexible and scalable bioinformatics services. our models consider not only the technical issues about providing these services, but also the financial aspects, which could be the major concern with respect to the bioinformatics service provider. the scenarios we suggest are divided into two groups: one for individual users/developers who seek computational power for specific need and one for service providers who wish to provide personalized bioinformatics services. the individual user/developer use cases include the establishment of a computer cluster and running cloud-based jobs either through web, command-line, or programmatic interface. the service provider use case scenarios show how the service provider can scale its resources in case of overload and how a personalized environment can be offered to boost the performance of certain pre-installed tools or the whole system. in these scenarios, we particularly highlight the interaction between the user and the provider server at one side and the interaction between the bioinformatics server and the cloud provider at the other side. we also suggest different options to consider the related financial issues. elastichpc we present elastichpc, a software package and a library to facilitate the use of high performance cloud computing resources for bioinformatics applications. although elastichpc is currently based on the amazon cloud computing platform, which is the most popular provider of cloud computing services, the concepts presented here are applicable to other cloud computing platforms and this will be achieved in future versions of the library. the basic features of elastichpc include: • establishment and management of high performance computer cluster, • submission of jobs to the cloud machines and monitoring them, • establishment of persistent storage in the cloud and linking it to the computing machines, and • cost management layer to start-terminate jobs based on certain price constraints. details of the usage scenarios and their implementation using elastichpc are handled in details in the following implementation section. related technical work currently, there are some cloud based programs for bioinformatics applications, especially in the area of analyzing next generation sequencing data. these include, among others, crossbow, rsd-cloud, myrna, and cloudburst. however, the main focus of these programs was to solve certain problems using parallel infrastructure, and the use of cloud computing was specific to these tools and not of generic nature. in the time of developing elastichpc, other related software solutions and libraries for aws have been released. to the best of our knowledge, these include so far starcluster, vappio, and cloudman. starcluster was developed as a general cluster management solution for aws and it is not specific to bioinformatics applications or any bioinformatics use cases. cloudman was developed as part of the galaxy project to basically provide a version of the galaxy workflow system in the cloud. cloudman is not offered as a library but it is offered as a cluster solution with a specific use case scenario. this scenario starts with a creation of a master machine in the cloud from the aws site using a prepared virtual machine image. from a web-interface on the running master node, the user can add/delete more cluster nodes and start the galaxy workflow system. vappio, unlike cloudman, is a standalone library for supporting the creation of a computer cluster in the cloud. it enables submission of remote jobs to the cloud instances. table shows a comparison between the different features available in the three libraries and elastichpc. as can be observed from this table, elastichpc includes all the features of both vappio and cloudman, and these features along with other unique ones of elastichpc collectively enable the implementation of different use case scenarios for providing personalized bioinformatics services. implementation amazon web services amazon web services is the most popular cloud computing platform. it offers infrastructure as a service in terms of computational power, storage, and connectivity. the aws products that are of major relevance to solve bioinformatics computational problems include elastic compute cloud, simple storage service, and elastic block storage. ec includes a variety of user selectable machine instance types that range in computing power and cost. table summaries the features of some instance types including the strongest ones. with each of these types, mounted disks are also provided. virtual machine instances are created from amazon machine images, which are templates containing software configurations. to facilitate the creation of virtual machine instances, ec includes a directory of ami's either prepared by aws or by the community. this directory includes a variety of ami's with different operating systems and additional applications. from the aws web-interface, the user can set-up, launch, terminate any number of instances within a few minutes. because the ephemeral disks are volatile and vanishes with the termination of the machine, aws offers two types of persistent storage: ebs and s the former is defined in terms of volumes, where one or more ebs volumes can be attached to a running instance, similar to a usb thumb drive. the latter is like a data center accessed through certain programmatic methods. the aws business model is "pay-as-you-go", where the user is charged only when the machines are running. the user is also charged for reserved storage and for data transfer out of the aws site and from/to persistent storage solutions. table summarizes the storage options and their prices in aws. for more information about the aws pricing schemes, we refer the reader to the documentation available on aws web-site. in addition to the web-based interface, aws's services can be accessed programmatically through command line interface and aws-specific api's. we use programmatic methods in elastichpc and build upon them to provide an efficient implementation and an easy to use interface for the use case scenarios presented below in this section. use case scenarios as mentioned in the introduction, we suggest two groups of use case scenarios: one for individual users and one for bioinformatics service provider. in this part of the paper, we discuss these scenarios and their implementation using elastichpc. use case scenarios for individual users use case scenarios for individual bioinformatics users have been implicitly introduced with cloudman and vappio. for completeness of presentation, we will discuss these scenarios. then we will show the major differences between them and suggest further usage and implementation enhancement. the suggested use case scenarios for individual users involve two cases: 1) web based usage, and 2) desktop based usage. scenario 1: web-based usage in this scenario, a bioinformatics user, who already has an aws account, heads for establishing an infrastructure composed of a computer cluster with multiple machines of certain types in the cloud. the major steps for achieving this task include the following: a third-party development team prepares a virtual machine image, equipped with necessary bioinformatics tools and middleware to create and manage a computer cluster. this machine is then deposited in the public ami's repository of aws. the bioinformatics tools can be augmented with the associated web-interface. the bioinformatics user who wishes to run an application in the cloud selects that image from the public amis page of aws. a machine instance is created from the selected ami and is kept running. this machine is the master node of a cluster. the ip address of the running machine is retrieved from the amazon console, and the machine is accessed remotely by one of two means: a. secure shell, where any further interaction with the cluster takes place at the command line level. b. web-interface, where the machine includes a web-server that receives requests and processes them. each computational tool can have its own web-page to set related parameters and enter the input. based on installed api's on the master node, the user builds and configures a computer cluster in the cloud with the desired number and types of machines instances. the rationale behind that a cluster node creates other nodes is twofold: 1) the ami contains all the required and tested modules with all settings and technical details being encapsulated, which reduces the user's effort and cost. 2) all the steps run in parallel at the aws side with no further communication overhead. storage in the form of s or ebs products is attached to the cluster nodes. the execution of tasks can proceed through the master node using either command line or web interface. note that we mean with the task any job running in the cloud; i.e., installation of a software program is also considered tasks. scenario 2: desktop based access in this scenario, the user installs a desktop application that automatically connects to aws, spots a prepared ami, and starts it. from the desktop interface, the user specifies the size and type of cluster and storage. the desktop communicates with the master node to extend the cluster, if required. the submission and monitoring of the jobs is achieved through this desktop application via the master node. the implementation of the two scenarios is very similar except that an additional piece of code should be developed in the second scenario to realize a communication protocol between the desktop program and the cloud machines. it is worth mentioning that cloudman follows the first scenario, while vappio follows the second scenario. data flow the data flow for both scenarios involve the transfer of user data to the ephemeral disks, ebs, or s it also involves how the data are made available to the cluster nodes. there are four data flow scenarios: in the first one, each cluster node receives a copy of the whole dataset either in the ephemeral disks or ebs mounted volumes. in the second scenario, a shared file system like is installed, where the nodes share the whole disk space. in the third scenario, s is used as a shared file system. in the fourth scenario, each node fetches the data it needs from the master node or s bucket before starting computation. vappio adopts the first data flow scenario, while cloudman and starcluster adopt the second scenario. enhancement elastichpc enables creation of emr cluster and use of emr framework. this feature is not available in any other library. it also enables use of spot instances in aws, where the cluster starts only if the machine price falls below a given threshold. elastichpc provides the four data flow scenarios, and not limited to just one strategy. it also provides an enhanced implementation of the first data scenario based on replication of data, where the copy operation proceeds in parallel in o time, n is the data size and p is the number of nodes. use case scenarios involving service provider we suggest two main use case scenarios involving a service provider. these scenarios address not only the technical but also the financial part of the model, where the major concern of the providers is "to which account will the cloud cost be charged?" scenario 1: bypassed provider this scenario includes the following steps: the bioinformatics service provider prepares a machine image of his system. the provider offers a web-page, where the user defines cloud based computer cluster in terms of machine type and number. the cluster will be established using images that have been prepared by the provider. the provider can keep track of the users and store their preferred cluster configurations. the user provides its cloud computing credentials so that the created cluster is associated with the user account; i.e., the cluster runs at the cost of the user, and the provider account is not charged whatever computation time is elapsed. after the creation of the machines, the user is directed to the cloud version of the provider system, where all tools are available with the usual web-interface. the provider provides a cluster management page in the cloud version where the user can manage the cluster at the run time and can also terminate it after completion of computation. scenario 2: usage-via-provider in this scenario, the computer cluster in the cloud is hidden from the user, and every step runs through the main web-site of the bioinformatics service provider. this scenario includes the following sequence of events. the user opens a page on the provider site, and selects that the execution takes place in the cloud. in this case, the user is prompted to configure and to create a new cluster or select one of running clusters. once the cluster is created, the respective tool in the cloud image of the cluster is the one that is invoked. the data, if not residing in s could be uploaded to the cloud cluster by one of two means: first, the data is uploaded to the provider, who forwards it to the cloud. second, the data can be uploaded directly to the cloud through a special client side script installed at the user machine. the second method has the advantage of reducing traffic at the provider site. the provider monitors the progress of the job and the user follows this progress from the provider web-pages. after completion, the provider could buffer the data to be downloaded from the tool page or provide links so that the user downloads the results from the cloud. the latter scenario reduces traffic at the server site. figures and show the traditional way of running jobs on provider infrastructure and show these cloud based scenarios. there are some issues related to these two scenarios: • the first scenario is usually offered to users that are considered foreigner with respect to the provider. the computation runs at the cost of the users and the provider is not charged whatever computation time is elapsed and whatever data is transferred. in the second scenario, the cost of using the cloud can be taken over by the user or by the provider. • the second scenario can be used when the provider wishes to scale up infrastructure in a hidden manner in response to an increasing server load. here, the user requests are forwarded to the cloud cluster and the results are provided back to the user through the server web-interface. • the second scenario can help those users that are related to the provider and have no cloud account to use the cloud based services. the cloud server runs at the cost of the provider, who can manage the consumption of each user through one of two scenarios: the provider uses a user management layer to control the computation for each of such users. for example, each user could be dedicated some free computation time. the provider controls the cost by starting and terminating the machines according to the available user credit. the provider associates his account with the user account such that the provider takes over the computation cost until certain amount. this is achieved through the consolidating billing option in aws. • the bioinformatics service provider can offer an additional service in which the snapshots of the databases needed by the users are made accessible to them. the cost of maintaining the snapshots in the cloud is covered by the provider. these snapshots can be used to create any number of ebs volumes to be used in computation. • for each scenario, the provider can offer the whole system in the cloud or just some tools. when the focus is on using a certain tool in the cloud, further abstraction and optimization can be offered to the user. the idea is that the provider, based on his log data and knowledge of tool characteristics, can provide the service in terms of application parameters and not in terms of hardware parameters. for example, if the program in use were blast, then the user could be asked to specify the cost limit or the desired time by which the computation is over, in addition to other information about amount of data, its type, the blast program. the provider, based on these parameters, could then create the suitable infrastructure to accomplish the given computation task. • the second scenario at the tool level can support execution of pipelines, where a part of the pipeline is executed at the cloud and the other parts at the provider's local infrastructure. this pipelining can be done through pipeline/workflow authoring interface at the provider site. the cost of cloud in this case can be taken over either by the provider or the user, when the latter submits own credentials. elastichpc design and implementation client-server based approach: the elastichpc package is composed of a server and a client modules as well as a set of methods for creating and managing the cloud cluster and for running jobs. the server and client are written in python. to save user's time, we already prepared a machine image and pre-installed the elastichpc package in it. the security settings are pre-configured within the machine images. that is each machine instance works as both a client and a server. the idea to have a server module on each node is to enable execution of a task on this node from another remote node. an asynchronous protocol is used to enable the client module to execute different tasks on the server side. the client module is standalone and can be installed on any machine, for example the user's local desktop, to submit jobs to the cloud cluster. the tasks executed on the server can be broadly categorized into the following two categories: • cloud-oriented tasks: these include functions for the establishment of additional cluster nodes and terminating some of or all the running ones. it also includes the configuration of the nodes and the set-up of the network connectivity, the storage, and job-scheduler. these tasks are accomplished by executing special elastichpc programs which are pre-installed on the server machine. these programs invoke aws api's to run the cloud related functions and invoke other scripts to administrate the nodes. the creation of the master node takes up to 2- minutes for a single node. the creation of the other cluster nodes is accomplished in parallel and it takes similar time per node. by means of this parallelization, the total time for establishing a cluster of any size ranges between 2- minutes. • computation-oriented tasks: this includes the reception of a job from a client program and executing it on the computer cluster. this job is basically an invocation of a program already installed on the cluster. the user can submit the input data and fix the location of the output in the cluster. the server can also report the status of submitted job to the client. note that the user can invoke an installer program as a job to install other programs. included middle-ware and libraries: an elastichpc image is based on linux ubuntu and it is equipped with a number of programs to facilitate its usage. these include amazon command line tools, apache server, pbs torque as a job scheduler, nfs as a shared file system, s3fs to handle the s as a shared file system, the boto library http://code.google.com/p/boto, python/perl interpreters, mpich and c/c++ and java libraries.  elastichpc features and distribution the elastichpc package and library supports the use case scenarios presented in this paper. the distribution includes the library source code and full documentation of its entire api's. for individual users wishing to exploit cloud computing, we prepared a machine image with the elastichpc package pre-installed in it with additional features described below. this image can be directly used from amazon ami directory as given in the manual. the running image has a simple web-based user interface on the master node to manage the cluster. this interface enables management of the cluster and submission of tasks. this image can also be started from the elastichpc website http://www.elastichpc.org where the user can set-up the cluster; note that in this case the elastichpc website represents a service provider. figure shows screen shots for the set-up in the elastichpc website and the cluster management page in the master node of the cloud cluster. the provider can use a similar set-up page in his web-site to start the personalized cloud service. in the set-up page, the user can set the number and type of cluster machines. in the management page, the user manages the created and currently running cluster. form this page, nodes can be added or terminated and storage volumes can be mounted to one or all the machines. status of each node can also be monitored. the elastichpc image/machine has additional features that leverage the use of cloud to the bioinformatics domain. these include the following: • the elastichpc image includes a set of pre-installed tools that can be directly accessed upon the creation of the cluster. in the current version of elastichpc, there are about tools, coming from biolinux, emboss, samtools, fastx, ncbi blast toolkit, and other individual sequence and rna analysis programs. these tools come from the bibiserv and nubios bioinformatics servers. addition of extra tools and updating this image is explained in the elastichpc manual. in the management page in figure the button titled'bibiserv-nubios' let the user move to the library and the web-pages of individual tools. figure shows a screen shot of the megablast web-interface on a created cluster in the cloud. in this figure, we also show the web-interface for generic tool submission, where the user can run a tool not pre-installed on the cloud. from this page, the user gives location of the tool binaries, specifies the input and output files, and runs the tool. in this way, the use of this library is not limited to any pre-defined set of tools. • to save user's cost and to facilitate usage of database-dependent programs, we have prepared snapshots of different databases. these snapshots are made available to the user free of charge through a simple user interface, to create ebs volumes and mount them to the cluster. our snapshots currently include the ncbi nucleotide and protein databases in the form of raw and formatted sequences. these also include the raw human genome sequence, and pre-computed indexes of it to be used with some tools, as explained in the manual. in the management page in figure the snapshot list on the left includes identifiers for these volumes to be attached to the cluster nodes. • the user has the option to select the location, where the cluster is hosted. our benchmark data has revealed that the location of the user affects the latency and quality of the service. we found that the aws european site, for example, is the one with the reduced latency for south mediterranean countries. for asian countries, the aws singapore would be the best choice. furthermore, the time of acquiring the service also plays a role; e.g., the us sites have the highest load on monday, so it would be a good idea to switch to other sites. note also that some machine instance types are offered in one site but not in the others; e.g., cluster type is so far available only in the us east site. • elastichpc offers the creation of a mapreduce cluster. this option facilitates the use of certain bioinformatics tools, like crossbow, rsd-cloud, myrna, and cloudburst. from the elastichpc web-site the user can set-up a mapreduce cluster and submit jobs to it. figure shows a screen shot of these two steps, where the user specifies the cluster, defines initialization scripts, and the hadoop command line, as explained in the manual. the example in the figure is for the program crossbow, which is already included in the elastichpc image. • clusters built by elastichpc can be used by multiple users. the jobs and their input and output data are associated with user identification numbers. this feature is helpful for service providers extending their infrastructure for multiple users. • elastichpc supports different cloud storage services, like ephemeral disks, s and ebs. data are made available to a cluster node in elastichpc through one of three options: 1) data replication, 2) sharing, and 3) fetching. in data replication, the user can broadcast the data to all cluster nodes. in the sharing option, the disk space is shared among all nodes using a shared file system. elastichpc offers the use of nfs and s as shared file systems. in the final mode, elastichpc can fetch necessary data for execution from the master node or s before execution of a command. each of these scenarios and storage solutions is advantageous for certain applications and certain types of data. the access to s is more reliable but it is slower and more expensive. the use of nfs over ephemeral disks or ebs volumes is better and more cost effective than using s as shared file system, but it is less reliable, as discussed in. ephemeral disks are as efficient as ebs volumes, but ephemeral disks are volatile and data have to be moved to them before computation and out of them after computation. data copy option over ephemeral disks or ebs volumes is the most efficient option with respect to reliability and run-time execution, but the disadvantage is that 1) some data might not be used at all in some cluster nodes, which lead to unnecessary disk and i/o cost, and 2) the data could be very large and take much time to transfer. the manual of elastihpc includes more details on the use of these storage solutions and related dataflow scenarios. • elastichpc enables further cost management where the user starts the cluster only when the price of an instance falls under certain threshold in aws. this option is based on the use of spot instances of aws. • elastichpc has an additional api to start other machine images such as cloudbiolinux http://cloudbiolinux.org, which encapsulates biolinux and cloudman. this option is not specific to these images and can be used with other amis. this feature is inspired by the biocloudcentral project https://biocloudcentral.herokuapp.comaiming at providing a central point of access to start different ami's. overview of demonstrations and experiments in the following subsections, we introduce demonstrations of individual user scenario and bioinformatics provider scenario. the individual user scenario includes two experiments: the first is a metagenomics experiment based on megablast to demonstrate the use of a traditional computer cluster. the second is an experiment for mapping ngs reads to a reference genome using crossbow to demonstrate the use of mapreduce framework on aws. the provider scenario demonstrates the use of cloud services on the tool as well as the whole system level, as implemented in the bielefeld bioinformatics server and the nile university bioinformatics server. demonstrating individual user scenario demonstrating the use of traditional computer cluster to demonstrate the efficiency of the cloud model, we used the elastichpc web-interface from its web-site http://www.elastichpc.org to construct a cluster of nodes to analyze metagenomics datasets. the megablast program is used to annotate a set of sequences coming from a metagenomics experiment. with this cluster, we mounted ebs volumes including the ncbi nt database. figure shows the web-interface of the program megablast on a cluster machine in the cloud. we used the windshield dataset of, which is composed of two collections of flx reads. these reads came from the dna of the organic matter on the windshield of a moving vehicle that visited two geographic locations. for each trip a or b, there are two subsets for the left and right part of the windshield. the number of reads are for trips a left, b left, a right, and b right, respectively. to make use of the parallel infrastructure, we enhanced the web-interface with an extra function that splits query set into multiple subsets, each containing roughly the same number of sequences. these subsets are then queried in parallel against the megablast database based on the installed job scheduling system. for the dataset at hand, we created subsets, each with ≈ reads. for this experiment, an ebs volume including the required databases was mounted to each cluster node. to make the query data available to each cluster node we used the fetch strategy, in which each node fetches the queries assigned to it from the s directory before starting computation. the average running times in minutes for traditional computer clusters of different sizes and machine types in the cloud. the machine types are c xlarge and m xlarge. the numbers in brackets are the computation costs in us dollar for the us-east site with $ per hour for c xlarge and $ per hour for m xlarge. the cost in the column titled "total time" is not the summation of the above rows, but it is the cost of the total running time if the four datasets in the respective column were processed altogether in the cluster. demonstrating the use of mapreduce elastichpc supports the use of mapreduce framework on aws, where the user can create emr cluster on aws by specifying the number of nodes and machine types. the emr cluster, despite being more difficult to use than job schedulers, has the advantage of lower machine price in aws. the usage of emr framework within elastichpc is generic to any tool as explained in the manual. to further facilitate the work for life science community, we included the crossbow tool within the elastichpc distribution. to demonstrate the advantages of emr, we ran an experiment to map a dataset of ngs reads to a reference human genome using crossbow. the dataset is composed of illumnia reads of around gbp from the african genome available at the sequence read archive. the reads of this dataset were mapped against the human genome available at the ucsc genome browser web-site http://genome.ucsc.edu. we used emr clusters of different machine types and number of nodes. table shows the running times of these experiments and their monetary costs on amazon emr. the results show that crossbow over emr scales well with the increasing number of machines. the limit is the pre-processing step of crossbow, which cannot take less than ≈ minutes. the average running times in minutes for emr clusters of different sizes and machine types in the cloud. the machine types are c xlarge and m xlarge. a number in the column titled'total time" is the summation of the pre-processing and alignment times. it is worth mentioning that we ran the same experiments using a job scheduler on non-emr clusters of corresponding sizes. the experiments took almost the same time, but with much higher cost. this is because the cost of a traditional cluster node is more expensive than the cost of a node of the same type in the emr product. for example, the price of a node of the type c xlarge is $ per hour, while the cost of a node of the same type in emr product is $ per hour. that is, the use of emr cluster is very cost-effective; of course only if the problem at hand can be formulated according to the mapreduce framework. note that the cost of using or m xlargre nodes is $, because in all these cases there are compute hours, each with a cost of $. note that the use of more than nodes will lead to more cost with no significance reduction in running time. this is because a fraction of an hour is charged as a full hour in aws. we also note that the use of machines of the type m xlarge mostly lead to more running time and more cost. this is although m xlarge is less expensive than c xlarge. reliability of the cloud based model for our use cases, reliability of computation on cloud in our view can be addressed at two levels: the first is the ability to acquire required resources, including machine instances, storage, and connectivity. the second is the ability to successfully execute compute jobs on the cluster machines. the reliability of acquiring resources was limited by the contention of network bandwidth and the highest load, especially at us sites. in the last few years, the reliability of aws is dramatically increased by establishment of many sites worldwide and continuous improvement of the underlying cloud software stack. before the establishment of us-west site in for example, users including our team have observed highest latency at us-east site and some failure of acquiring network resources for their clusters. we expect further improvements when more sites are established worldwide. reliability of computation with respect to the use case scenarios, presented in this paper is associated with the use of the traditional and emr computer cluster. failure of certain nodes and the inability of transferring data among the nodes are the most two concerns in cloud settings. in our cloud based experiments involving tens of nodes, we did not experience such type of errors so far for traditional computer cluster. for emr, we had encountered such problems only before amazon upgraded the hadoop version to. in emr and tuned its performance. but such errors could appear when using hundreds and thousands of nodes. although the job scheduler and hadoop implementation of emr address the failure issues by re-directing jobs failed on one node to other running nodes and by replication of data on multiple nodes, we think there is a need for another layer built upon elastichpc to assure that the data required by the re-directed jobs is available in the new node and to track the jobs that completely failed for some reasons. this layer can make use of the elastichpc feature of reducing cluster size in run time to re-execute failed jobs with smaller cluster to save further cost. altogether, handling fault tolerant computation in the cloud is a topic of current research and it deserves to be addressed separately in another study. bibiserv-nubios: demonstrating service provider scenario bibiserv http://bibiserv.techfak.uni-bielefeld.de is a bioinformatics server hosted at bielefeld university. the server focuses on rna sequence analysis, and it includes tools for secondary structure prediction of rna, comparative structure prediction, and rna structure comparison. the user can just use one tool or use the tools in a pipelined fashion. this pipelined mode became possible only through consistent data types as specified in and through the storage of intermediate data on the server in each usage session. nubios http://www.nubios.nileu.edu.eg is a bioinformatics server hosted at nile university. the server focuses on sequence analysis tasks and hosts tools from emboss and ncbi toolkit. the web-interface of the tools is generated on the fly, according to certain xml-based schema describing the interface components and the tool parameters. the tool set in nubios complements that set of bibiserv and it is useful to have both systems accessed in the cloud. due to infrastructure limitations, the allowed job time both in bibiserv and nubios is limited to one day per user. statistics on the server usage show that using certain tools under certain parameter settings can cause abrupt intensive load on the server side. rnashapes on bibiserv and megablast on nubios are two examples of such compute intensive tools. therefore, it would be a good solution to delegate such computations to the cloud, while running other non-intensive parts on the local infrastructure. nubios and bibiserv use the bypassed provider scenario presented in this paper, both at the system and tool level. elastichpc is used for implementing both scenarios. at the former level, the user specifies an instance of the system in the cloud. this is enabled by accessing the cluster set-up page. at the latter level, the user accesses a tool page and selects that this tool is executed on the cloud. the user is also prompted to specify a cloud cluster details. figure shows screen shots from the nubios web-server for both levels of use. for both scenarios, the user is then forwarded to the system or tool page in the cloud machine, where computation takes place. the elastichpc image is used to create the machine instances because it includes the tool set of both nubios and bibiserv. these options clearly enable personalized services and relieve the original infrastructure from abrupt computational loads.  in this paper, we introduced a set of use case scenarios to provide bioinformatics services based on cloud computing model. our scenarios consider both the technical and financial issues. we introduced elastichpc package and library to manage high performance cloud computing infrastructure with additional features to support the proposed use case scenarios. our demos and experiments in this paper show the efficiency of cloud model in supporting computation at affordable price. the use of elastichpc is not limited to bibiserv and nubios; it can be used to support any other bioinformatics service provider like mobyle and genepattern. currently elastichpc is used within the tavaxy workflow system http://www.tavaxy.org. in this workflow system, the user can delegate the execution of some steps in the workflows to the cloud while other parts run on local infrastructure. the control and data flows are coordinated between the local infrastructure and cloud instances based on functions of elastichpc. our current version of elastichpc is limited to computer clusters. we can support other high performance computing options like gpus, but we delayed this step because there are no bioinformatics packages so far supporting it at the production level. cost prediction at the tool level was suggested for blast. this step is useful to add more abstraction to the service, in which the user can ask for faster computation time and the infrastructure is configured automatically to satisfy this requirement. currently elastichpc is limited to aws and to linux environment. in future versions, we will extend it to include other providers and windows operating systems. elastichpc is useful for educational purposes to support courses for parallel programming and advanced data processing, where students can use the package to directly build clusters in the cloud and use it to test their parallel programs and scripts. with the free start-up package of aws, the students can use the micro instances as the types of the cluster nodes. with the job-submission interface, the students can install new tools and re-configure the machines according to the course needs. availability and requirements project name: elastichpc. project home page: http://www.elastichpc.org. operating system: linux. programming language: python, c, java script, html. other requirements: compatible with the browsers firefox, chrome, safari, and opera. see the manual for more details. license: free for academics. authorization license needed for commercial usage. any restrictions to use by non-academics: no restrictions. competing interests the authors declare that they have no competing interests. authors' contributions all authors contributed to theoretical developments which form the basis of the usage scenarios and elastichpc. me and ma developed elastichpc. all authors wrote and approved the manuscript. 
this model, however, is not flexible enough to cope with the increasing number of users, increasing data size, and new requirements in terms of speed and availability of service. bioinformatics services have been traditionally provided in the form of a web-server that is hosted at institutional infrastructure and serves multiple users. in this paper, we provide different use case scenarios for providing cloud computing based services, considering both the technical and financial aspects of the cloud computing service model. these scenarios are for individual users seeking computational power as well as bioinformatics service providers aiming at provision of personalized bioinformatics services to their users. however, cloud computing has not yet been introduced within bioinformatics servers due to the lack of usage scenarios and software layers that address the requirements of the bioinformatics domain. we also present elastichpc, a software package and a library that facilitates the use of high performance cloud computing resources in general and the implementation of the suggested bioinformatics scenarios in particular. concrete examples that demonstrate the suggested use case scenarios with whole bioinformatics servers and major sequence analysis tools like blast are presented. our use case scenarios and the elastichpc package are steps towards the provision of cloud based bioinformatics services, which would help in overcoming the data challenge of recent biological research. experimental results with large datasets are also included to show the advantages of the cloud model.
 bioinformatics services have been traditionally provided in the form of a web-server that is hosted at institutional infrastructure and serves multiple users. this model, however, is not flexible enough to cope with the increasing number of users, increasing data size, and new requirements in terms of speed and availability of service. the advent of cloud computing suggests a new service model that provides an efficient solution to these problems, based on the concepts of "resources-on-demand" and "pay-as-you-go". however, cloud computing has not yet been introduced within bioinformatics servers due to the lack of usage scenarios and software layers that address the requirements of the bioinformatics domain.  in this paper, we provide different use case scenarios for providing cloud computing based services, considering both the technical and financial aspects of the cloud computing service model. these scenarios are for individual users seeking computational power as well as bioinformatics service providers aiming at provision of personalized bioinformatics services to their users. we also present elastichpc, a software package and a library that facilitates the use of high performance cloud computing resources in general and the implementation of the suggested bioinformatics scenarios in particular. concrete examples that demonstrate the suggested use case scenarios with whole bioinformatics servers and major sequence analysis tools like blast are presented. experimental results with large datasets are also included to show the advantages of the cloud model.  our use case scenarios and the elastichpc package are steps towards the provision of cloud based bioinformatics services, which would help in overcoming the data challenge of recent biological research. all resources related to elastichpc and its web-interface are available at http://www.elastichpc.org. 3- october asia pacific bioinformatics network eleventh international conference on bioinformatics bangkok, thailand 