BaseSpace is a powerful website where biologists and informaticians can easily store, analyze, and share genetic data.
Sequencing data from Illumina instruments, including MiSeq and HiSeq, are streamed in real-time over the Internet to BaseSpace. The data is automatically converted to standard file formats for analysis by Applications (Apps). Users launch Apps in BaseSpace with just a few mouse clicks to analyze and visualize their data.
Developers can create Apps using either the BaseSpace Application Programming Interface (API) or the Software Development Kits (SDKs) available for several programming languages. Both approaches offer safe and easy access to BaseSpace data for Apps to analyse, visualize, monitor, etc.
BaseSpace hopes to revolutionize the genetic field by creating an environment with large stores of sequencing data, which can be easily accessed and analyzed online with a store of applications.
Sequencing data has traditionally been stored in non-centralized locations, which offer little uniformity of data management across locations. BaseSpace greatly simplifies access to sequencing data via data centralization and ease-of-use. BaseSpace offers the following benefits as a development platform:
For more information about BaseSpace, see the BaseSpace data sheet.
BaseSpace data is stored according to a data model that includes Runs, Samples, Projects, App Results, and App Sessions.
Following sequencing on an instrument, sequencing data is uploaded to BaseSpace as a Run. Run files (BCL files) are converted and demultiplexed, if necessary, in BaseSpace to create Samples (FASTQ files).
Samples are analyzed by launching Apps. Files that are output from Apps are stored in AppResults. For example, a resequencing app executes alignment and variant calling, and an AppResult is then created for each Sample. An AppResult generally contains BAM and VCF files, however it may also contain other file types. AppResults can be used as inputs to Apps as well. App Sessions are created to record every time an App is launched. Finally, Projects are simple containers that store Samples and AppResults.
Applications access data using the BaseSpace RESTful API. The API may be accessed via simple HTTPS requests using any programming language and is organized to allow you to get to the data you need quickly.
The SDKs are available for several programming languages and make it even easier for developers to write applications or to integrate existing ones. The SDKs work by exposing what the API has to offer natively without the developer needing to worry about building their own HTTPS requests. This allows rapid development and integration with BaseSpace data and a simple mechanism of discovering what the API has to offer.
The API uses the standard OAuth v2 protocol to allow secure access to user data while letting the user stay in control of what the App can and cannot access. When an App wishes to access a user data, it uses the API to initates a 'handshaking' process between itself and BaseSpace. The BaseSpace user is presented with a dialog that informs them of the data the App is requesting, the level of access to it, and the opportunity to permit or cancel the request. The OAuth2 process ensures safe and transparent data access between users and Apps.
BaseSpace offers supports for all major types of application platforms:
The following will cover all of the steps necessary to get started with developing a BaseSpace App.
This overview will walk you through some of the main steps to get you ready to start developing your app.
Web apps are the most common types of apps on BaseSpace as they offer the quickest way for users to get started and derive value. They offer a secure environment that the user is already used to using without needing any upfront installation effort and with few concerns about cross-platform compatibility.
For web apps, BaseSpace offers a simple mechanism of getting access to user data we call App Triggering. In the My App control panel for your app you're able to select from which areas in BaseSpace your app may be launched including from a Project, a Sample, or an Appresult. Additionally, you may specify what level of access your app will need to these resources.
When the user launches a web app in BaseSpace, a dialog with this list of permissions will be displayed to the user.
The user is then redirected to your app with information about how the it was started and a simple means of getting to the granted data via the API. This is described in detail in the App Triggering guide which we urge you to look over.
Later, if your app requires more permission from the user to access other data in BaseSpace, it would need to follow the Obtaining Access Tokens Guide to make a new request for permission.
Once the user is authenticated, the next step is to use the Rest API or one of the SDKs to interact with the user's data in BaseSpace. The API and SDKs allow the developer to download data from BaseSpace, update Status for the user, report processing and error logs, and upload data back to BaseSpace. Use the API Reference as a go-to for detailed descriptions of each method. We have a few SDKs available including Java, Ruby, R, and Python. These guides will take a developer through the necessary steps to create a sample app.
For visualization, analysis, or monitoring applications, native desktop or mobile apps often provide abilities unavailable to web apps.
You may wish to integrate BaseSpace data into an already existing Desktop app. In this case, the app would not launch from BaseSpace, instead it would simply use the API to access user data.
Although BaseSpace will not host your desktop/mobile app for download, you may offer it on your web site. In the My App control panel for your app, set the
redirect_uri to your web site where you're offering the download or instructions.
Desktop and Mobile apps will need to request appropriate permission to user data by using the device code OAuth flow, this is slightly different from the standard web app OAuth protocol highlighted in the previous section.
Native applications are for developers who do not have a robust background in web development. In fact, developers use tools in the developer portal to create input forms and output reports for their applications. The application itself is a Docker image that is managed by BaseSpace, so a user will launch the app from BaseSpace and BaseSpace will determine the compute requirements, the machine to run the app on, and more!
Native apps automate a lotof the general REST API requests so that developers, for most simple apps, will never have to learn the REST API or any of the SDKs for BaseSpace.
Please refer to the Native App Overview for more information about Native applications.
Before your app is ready to be published, please review the Publishing Guidelines and Requirements and ensure that your app meets all of the requirements listed there.
If the app adheres to all of the requirements mentioned in that document, you are ready to submit the app for publishing. Please send an email to email@example.com requesting that your app be tested for publishing, you should include the app's id and please make sure that the app has been configured in the App Dashboard with all of the appropriate fields.
The app will then be tested internally by Illumina to ensure that it meets the requirements higlighted in the Publishing Requirements. After the internal testing has ensured that the app meets these requirements, we will notify you that your app is ready to be published.