1. Introduction to SeqWare
  2. Installation
  3. Getting Started
  4. SeqWare Pipeline
  5. SeqWare MetaDB
  6. SeqWare Portal
  7. SeqWare Web Service
  8. SeqWare Query Engine
  9. Glossary
  10. Frequently Asked Questions
  11. APIs
  12. Source Code
  13. Plugins
  14. Modules
  15. Advanced Topics

Source Code

Build Status DOI

Introduction

This README is just a quick overview of building SeqWare. See our project homepage for much more documentation.

This is top level of the SeqWare Project. This contains the 6 major components of the SeqWare project along with documentation and testing:

  • seqware-meta-db
  • seqware-webservice
  • seqware-admin-webservice
  • seqware-portal
  • seqware-pipeline
  • seqware-queryengine
  • seqware-common
  • the http://seqware.github.com website and manual
  • seqware-ext-testing
  • seqware-ext-admin-testing

The seqware-common sub-project provides a location for common code and most of the other sub-projects have this as a dependency.

Prerequisites

A Recent Linux Distribution

This pretty much goes without saying but the SeqWare project is targeted at Linux. You may be able to compile and use the software on MacOS X but, in all honesty, we recommend you use a recent Linux distribution such as Debian (Ubuntu, Linux Mint, etc) or RedHat (RedHat Enterprise, Fedora, etc). This software, although written in Java mostly, was never intended to work on Windows. If you need to use Windows for development or deployment we recommend you simply use our VirtualBox VM for both activities, see our extensive documentation on http://seqware.github.com for more information. You can also use this same approach on MacOS (or even another version of Linux).

Java

SeqWare requires Oracle JDK 1.7 or greater, we primarily write and test with JDK 1.7.x. An example of instructions on how to update your Linux installation can be found here. You will need to use the method appropriate to your distribution to install this.

Building

Getting the Source Code

Our source code is available from GitHub or the “Fork me on GitHub” banner at the upper right of our website

To get a copy of of our source code you will first need to install Git (sudo apt-get install git in Ubuntu) and then clone our repository.

~$ git clone git://github.com/SeqWare/seqware.git
Cloning into ‘seqware’…
remote: Counting objects: 8984, done.
remote: Compressing objects: 100% (2908/2908), done.
remote: Total 8984 (delta 4308), reused 8940 (delta 4265)
Receiving objects: 100% (8984/8984), 33.57 MiB | 392 KiB/s, done.
Resolving deltas: 100% (4308/4308), done.

By default, this will land you on the default branch. You will want to check-out the latest release.

For example:

~$ cd seqware_github/
~/seqware_github$ git checkout 0.13.6.5
HEAD is now at f8698e9... Merge branch 'hotfix/0.13.6.5'

Building and Automated Testing

We’re moving to Maven for our builds, this is currently how you build without running any tests in the trunk directory:

mvn clean install -DskipTests

Maven now runs unit tests as follows (unit tests in the SeqWare context are quick tests that do not require the embedded HBase or Tomcat instance):

mvn clean install  

In order to run the integration tests on the entire project, please ensure that you have followed the steps in each of the integration testing guides for our sub-projects. This includes MetaDB , Web Service , and Query Engine.

WARNING: While integration and extended tests are running, launching workflows and workflow status checking MUST not occur. If you have a cronjob performing these tasks it MUST be disabled prior to integration and extended testing.

When this is complete:

export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=512m" 

(This ensures that enough memory is allocated for integration tests)

mvn clean install -DskipITs=false

(This runs all unit tests and integration tests that only require postgres as a prerequisite)

mvn clean install -DskipITs=false -P extITs,embeddedTomcat

(runs all unit tests and all integration tests including those that require Oozie)

In the last case, the extended integration tests profile is used to trigger integration tests that run our command line utilities. In order to point your command-line tools at the web service brought up by the integration tests, you will need to comment out your crontab and modify your SeqWare ~/.seqware/settings to include:

SW_REST_URL=http://localhost:8889/seqware-webservice

It is possible to disable our embedded tomcat instance and run against both a remote postgres and Tomcat instance. Set the following variables in your .seqware/settings to override these settings for basic integration tests and extended integration tests respectively:

BASIC_TEST_DB_HOST=otherserver.ca
BASIC_TEST_DB_NAME=test_seqware_meta_db
BASIC_TEST_DB_USER=seqware
BASIC_TEST_DB_PASSWORD=seqware

EXTENDED_TEST_DB_HOST=otherserver.ca
EXTENDED_TEST_DB_NAME=test_seqware_meta_db
EXTENDED_TEST_DB_USER=seqware
EXTENDED_TEST_DB_PASSWORD=seqware

Then set your SW_REST_URL to the web service that uses the above database and invoke the following command. Note that you will need to deploy the seqware-webservice war yourself.

mvn clean install -DskipITs=false -P 'extITs,!embeddedTomcat'

Alternatively, if you wish to still use an embedded tomcat instance for testing, modify the properties at the beginning of your seqware-webservice/pom.xml to match the above databases and invoke the integration tests with your SW_REST_URL set to http://localhost:8889/seqware-webservice

mvn clean install -DskipITs=false -P extITs,embeddedTomcat

You can also run the integration tests by using a locally installed tomcat instance. Make sure the BASIC_TEST* and EXTENDED_TEST* are defined to get this to work:

mvn clean install -DskipITs=false -P extITs

You can also build individual components such as the new query engine with:

cd seqware-queryengine
mvn clean install

Coding Standards

Please refer to SeqWare’s Coding Standards.

Building Our Site

In order to publish to seqware.io , checkout our current master and publish our site:

git checkout master 
mvn site-deploy

Then you would look at the site at: http://seqware.io

In order to publish our docs leading up to 1.1.x , checkout from develop and publish:

git checkout develop 
mvn site-deploy

Then you would look at the site at: http://seqware.github.io/unstable.seqware.io/

Problems with Maven

Sometimes we run into problems when building, strange missing dependency issues and broken packages. A lot of the time this is an issue with Maven, try deleting your ~/.m2 directory and running the build process again.

Citations

Browse DOI codes for SeqWare and related software for software engineering at OICR at Software Engineering at Zenodo

Installing

See our Installation Guide for detailed installation instructions including links to a pre-configured virtual machine that can be used for testing, development, and deployment.

Contributors

Please see our partners and contributors

License

SeqWare is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

SeqWare is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with SeqWare. If not, see http://www.gnu.org/licenses/.