<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to TechnicalManual21</title><link>https://sourceforge.net/p/chipster/wiki/TechnicalManual21/</link><description>Recent changes to TechnicalManual21</description><atom:link href="https://sourceforge.net/p/chipster/wiki/TechnicalManual21/feed" rel="self"/><language>en</language><lastBuildDate>Fri, 11 Jul 2014 12:32:34 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/chipster/wiki/TechnicalManual21/feed" rel="self" type="application/rss+xml"/><item><title>TechnicalManual21 modified by Aleksi Kallio</title><link>https://sourceforge.net/p/chipster/wiki/TechnicalManual21/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v8
+++ v9
@@ -1,6 +1,7 @@
-[TOC]
-
 # Technical manual for Chipster 2.1
+
+&amp;gt; **Note! This is an unmaintained archive site.**
+&amp;gt; Wiki has been moved to Github and current documentation is available at [https://github.com/chipster/chipster/wiki](https://github.com/chipster/chipster/wiki)

 The manual covers Chipster platform version 2.1. It instructs in setting up your own Chipster server, adding your own tools into Chipster, and more. For the user manual, please see http://chipster.csc.fi/manual/. 

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aleksi Kallio</dc:creator><pubDate>Fri, 11 Jul 2014 12:32:34 -0000</pubDate><guid>https://sourceforge.net37f24fbb55aa307fa6705af1d169ff66792330fc</guid></item><item><title>TechnicalManual21 modified by Aleksi Kallio</title><link>https://sourceforge.net/p/chipster/wiki/TechnicalManual21/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v7
+++ v8
@@ -1,13 +1,11 @@
 [TOC]

-# Technical manual for Chipster 2.1 (in progress)
+# Technical manual for Chipster 2.1

 The manual covers Chipster platform version 2.1. It instructs in setting up your own Chipster server, adding your own tools into Chipster, and more. For the user manual, please see http://chipster.csc.fi/manual/. 

 ## Introduction

-Chipster is a versatile data analysis platform with an intuitive graphical user interface. The version 1.4 of the platform has been mainly used for microarray and proteomics data. 
-
 In the basic setup, Chipster is a client-server system. Chipster server can be run on a single server computer or even a laptop. The Chipster server itself actually contains multiple independent services, so it can be scaled across a cluster of servers to distribute computational and data transfer load. 

 The system consists of compute, authentication, management and logging services, and message and file brokers, which act as communication channels between the components. 
@@ -16,75 +14,123 @@

 ## Virtual machine installation

-_** Virtual machine installation will be possible soon, we are now testing the virtual machines and writing the instructions here.**_
+The recommended way to get Chipster server running is virtual machine installation. Chipster is packaged as complete virtual machine images that can be deployed to a variety of virtualisation platforms. The images are based on Ubuntu Linux 11.10 (Oneiric). 

 ** To use the Chipster virtual machine, you need to:**

-  1. Install virtual machine player such as VirtualBox or VMware Player 
-  2. Download Chipster virtual machine images 
+  1. Install virtualisation software such as VirtualBox or VMware Player 
+  2. Download Chipster virtual machine 
   3. Start the Chipster virtual machine 
   4. Start Chipster client 

-### Installing virtual machine player
-
-  * [VirtualBox](https://www.virtualbox.org/)
-  * [VMware Player](http://www.vmware.com/products/desktop_virtualization/player/overview.html)
-
-  
-
-
-### Downloading Chipster virtual machine images
-
-Download all image files (*.vmdk) and virtual machine player specific configuration file (.vmx for VMware Player, VirtualBox coming soon, the *.vmdk image files will work also for VirtualBox, you just have to create the new virtual machine in VirtualBox). 
-
-  * http://www.nic.funet.fi/pub/sci/molbio/chipster/dist/virtual_machines/2.0.0/ 
-
-### Starting Chipster virtual machine
-
-If you are using VMware Player, select "Open a virtual machine", pick chipster.vmx, select it and click "Play virtual machine". If you get a notification about missing VMware tools, just ignore it for now. 
-
-If you are using VirtualBox, you need to create a new virtual machine and attach the image files as hard disks. 
-
-### Starting Chipster client
-
-To start the Chipster client, point your web browser to 
+### Installing virtualisation software
+
+To run a virtual machine, you need a virtualisation software installed on the computer, which is going to run the virtual machine. VirtualBox and VMware Player are two common virtualisation software products, which work with Chipster. 
+
+  * [VirtualBox](https://www.virtualbox.org/) for Linux, Mac and Windows, free 
+  * [VMware Player](http://www.vmware.com/products/desktop_virtualization/player/overview.html) for Linux and Windows, free for personal non-commercial use 
+
+  
+
+
+### Instructions for VirtualBox
+
+#### Download Chipster virtual machine
+
+Download all the files from VirtualBox directory under the desired version from: 
+
+  * http://www.nic.funet.fi/pub/sci/molbio/chipster/dist/virtual_machines/ 
+
+Note that the total size is around 80 GB. 
+
+#### Add Chipster virtual machine to VirtualBox
+
+  * Open VirtualBox 
+  * Select "Machine"-&amp;gt;"Add" 
+  * Go to the folder where you downloaded Chipster virtual machine files and select chipster.vbox and "Open" 
+
+#### Configure Chipster virtual machine
+
+  * Select "Settings" and "Network" and change the Attached to: Bridged Adapter (it's NAT by default, VirtualBox NAT does not yet work with Chipster)) 
+
+#### Start Chipster virtual machine
+
+  * Select "Start" 
+    * _Note: In Mac environment, the presence of VMware tools in the image sometimes causes troubles during the boot (freezes with kernel panic). It is solved by a reboot. In future versions of the virtual machine VMware tools will disabled by default._
+
+### Instructions for VMware Player
+
+#### Download Chipster virtual machine
+
+Download all the files from VMware directory under the desired version from: 
+
+  * http://www.nic.funet.fi/pub/sci/molbio/chipster/dist/virtual_machines/ 
+
+Note that the total size is around 80 GB. 
+
+#### Add Chipster virtual machine to VMware Player
+
+  * Run VMware Player 
+  * Select "Open a virtual machine" 
+  * Select chipster.vmx and 'Open' 
+
+#### Start Chipster virtual machine
+
+  * Click "Play virtual machine" 
+  * If you get a notification about missing VMware tools, just ignore it for now. 
+
+  
+
+
+### Start Chipster client
+
+Chipster server are configured to start when the virtual machine is started. After you have the Chipster virtual machine running, start the Chipster client by pointing your web browser to 

     http://&amp;lt;hostname or ip address of the virtual machine&amp;gt;:8081

-. 
-
-If you don't no the hostname or ip address of the virtual machine you have started: 
+and clicking on the Launch Chipster link. Login with chipster/chipster. To get started, you can open the example session (link in Datasets panel). 
+
+If you don't know the hostname or ip address of the virtual machine you have started, see instructions in the next section. 
+
+### Configuring Chipster

   * Login to vm using username: chipster, password: chipster 
-  * Check the ip address of the vm by running: 
-        
-        hostname -I
-
-  
-
-
-### Configuring Chipster virtual machine
-
-  * Login to vm using username: chipster, password: chipster 
-  * Check the ip address of the vm: 
-        
-        hostname -I
-
+  * Check the ip address of the vm 
+    * Ip address is printed in the "message of the day" when you login 
+    * Or you can use: 
+            
+            hostname -I
+
+or 
+            
+            ifconfig
+
+  * For convenience, it is recommended to set the keyboard layout and time zone 
+    * Instructions are printed to "message of the day" when you login 
   * Configure Chipster to use the given ip address:

         cd /opt/chipster2;./configure.sh

-  * Start Chipster:
+  * You can also try running 

-        ./chipster start
+        cd /opt/chipster2;./configure.sh auto
+
+which auto detects the ip address and uses default values for other settings 
+  * Restart Chipster:
+        
+        service chipster2 restart

   * Using a web browser go to the Chipster start page: 

         http://&amp;lt;vm ip address&amp;gt;:8081

+  * For administering the OS installation of the virtual machine, chipster account has sudo rights 
+    * su or sudo rights are not required for running Chipster 
+    * You can create a separate administration account and remove sudo rights from chipster 
+
 ## System installation in Linux

 These are instructions for installation using the automatic tools provided in the installation package. 
@@ -110,11 +156,11 @@

 After downloading extract the tar archive. It contains directory "chipster", where all components are in their own subdirectories. It can be placed anywhere, but usually **/opt/chipster** is used. 

-Downloading and extraction can be done easily on command line (we use version 2.0.0 here): 
+Downloading and extraction can be done easily on command line (adjust version number 2.1.0 as needed): 

     cd /opt
-    wget http://www.nic.funet.fi/pub/sci/molbio/chipster/dist/versions/2.0.0/chipster-2.0.0.tar.gz
-    tar -xzf chipster-2.0.0.tar.gz
+    wget http://www.nic.funet.fi/pub/sci/molbio/chipster/dist/versions/2.1.0/chipster-2.1.0.tar.gz
+    tar -xzf chipster-2.1.0.tar.gz

 **2) Installing external tools**
@@ -218,9 +264,6 @@
 Chipster client is fully Windows compatible and supported on Windows platforms. It installs automatically with Java Web Start. 

 Chipster server has experimental support for Windows. As the bioinformatics tool environment is Unix oriented, doing a complete installation in Windows will require significant efforts. 
-
-  
-

 # System administration

@@ -276,16 +319,41 @@

 ## Upgrading server installation

-Chipster 2.0 is a new major version and should be installed from scratch. 
-
-  
-
-
-  
-
-
-  
-
+### Upgrading VM bundled installation
+
+Chipster VM bundle comes with automatic update tool that allows you to update the installation without downloading everything again. Updates do not happen automatically, but must be initiated manually. Before the update, you should stop Chipster server. 
+    
+    
+    ./chipster stop
+    ./update.sh
+    ./chipster start
+    
+
+The system works so that the update.sh script is just a bootstrap script that downloads the actual update script and executes it. This way the update system itself also gets updated when needed. 
+
+The actual update script is called update-exec.sh and is located at &amp;lt;http://www.nic.funet.fi/pub/sci/molbio/chipster/dist/virtual_machines/updates/&amp;gt;. When run, update-exec.sh downloads files, unpacks them, moves things around when needed and does other required setup steps. 
+
+Chipster update system only concerns the Chipster installation and tool dependencies. You should also take care of keeping the operating system of the VM installation up to date, using normal Debian tools, such as aptitude. 
+    
+    
+    sudo aptitude upgrade
+    
+
+Operating system packages get updated and a reboot might be necessary. 
+
+  
+
+
+### Upgrading other installations
+
+If you installed Chipster yourself, then the automatic update mechanism is not available. The recommended approach is to make a fresh install of Chipster and move relevant functionality over from the previous installation. You should check at least these locations for things to move over: 
+
+  * chipster/*/conf/chipster-config.xml - custom configuration 
+  * chipster/comp/conf/runtimes.xml - custom analysis tool runtimes 
+  * chipster/comp/modules - custom tool scripts 
+  * chipster/webstart/web-root/manual - custom manual pages 
+
+When Chipster is upgraded, also tool dependencies need updating. For exact details on changes between versions, look at the update-exec.sh script at &amp;lt;http://www.nic.funet.fi/pub/sci/molbio/chipster/dist/virtual_machines/updates/&amp;gt;. 

 ## Directory layout

@@ -315,65 +383,14 @@

 ### Server on Linux

-Typically Chipster is installed to **/opt/chipster**. The contents of the installation directory are the following. 
-    
-    * chipster
-      * shared - content that is shared between all components
-      * tools - external analysis tools
-      * data - external data
-      * activemq - messaging broker component
-      * fileserver - file broker component
-      * comp - compute service component
-      * webstart - webstart web server component
-      * manager - manager service (logging) component
-      * auth - authentication service component
-
-The component installation directories are independent of each other, but depend on the **shared**, **tools** and **data** directories. 
-
-The contents of the shared directory are given below. 
+Typically Chipster is installed to **/opt/chipster**. Inside the installation directory there is a shared directory and several independent component directories (that depend on the shared directory). The contents of the shared directory are given below. 

     * chipster/shared
       * bin - generic executable files
       * lib - Java JAR and platform specific libraries
       * lib-src - source codes for libraries that require source code to be distributed together (LGPL)

-The **tools** directory contains the continuously evolving selection of external analysis tools. Each tools is installed in a directory that contains the complete version information and if the tools is called from the analysis scripts, there is a link without the version number that points to the complete directory. The link without the version number should be used to point to the tool. Tools that are configured as runtimes (e.g. R) do not need the link. 
-
-For example, the tools directory could contain the following. 
-    
-    * chipster/tools (small example on contents of the tool directory)
-      * R-2.12.1 - R installation that is used to run R scripts
-      * bwa-0.5.9 - BWA installation
-      * bwa - link to bwa-0.5.9
-
-The **data** directory contains the continuously evolving selection of external datasets. The datasets are used by the analysis tools and served to clients by file broker. Following principles are followed for the data directory. 
-
-  * Data is divided by their main category (reference sequences, gene locations etc.) 
-  * Organisms are separated file names 
-    * Widely known abbreviated names (e.g. hg19) are used when possible 
-    * Otherwise full scientific names are used 
-    * Full version information is included in the file name (assembly and annotation version, when possible) 
-
-An example of the structure of the directory is given below. 
-    
-    * chipster/data (small example on contents of the data directory)
-      * sequences
-       * hg19.fa - sequence file for Homo sapiens
-       * hg19.1.ebwt - Bowtie index file for Homo sapiens
-       * hg19.2.ebwt - Bowtie index file for Homo sapiens
-       * mm9.fa - sequence file for Mus musculus
-       * mm9.1.ebwt - Bowtie index file for Mus musculus
-       * mm9.2.ebwt - Bowtie index file for Mus musculus
-       * mmu_miRB17mature.fa - microRNA sequence file for Mus musculus
-       * mmu_miRB17mature.1.ebwt - Bowtie index file for Mus musculus microRNA's
-       * mmu_miRB17mature.2.ebwt - Bowtie index file for Mus musculus microRNA's
-      * genes
-       * hg19.63.gtf - gene locations for Homo sapiens
-       * mm9.63.gtf - gene locations for Mus musculus
-
-#### Server component directories
-
-All of the component directories follow the same basic layout. The contents of the components directories are given below. Wrapper means here [Java Service Wrapper](http://wrapper.tanukisoftware.org/) that is bundled with Chipster server installation. 
+All of the component directories follow the same basic layout. The contents of the components directories are given below. "Wrapper" means here [Java Service Wrapper](http://wrapper.tanukisoftware.org/) that is bundled with Chipster server installation. 

     * chipster/&amp;lt;component name&amp;gt;
       * bin - executable files and utility scripts
@@ -616,7 +633,7 @@

 ### Writing SADL header

-SADL (Simple Analysis Description Language) is a simple notation for describing analysis tools so that they can be used in the Chipster 2.0 framework. SADL describes what input files the tool takes, what output files it produces, and what parameters are needed for running it. For the syntax of SADL please see [SADLFormat] 
+SADL (Simple Analysis Description Language) is a simple notation for describing analysis tools so that they can be used in the Chipster 2 framework. SADL describes what input files the tool takes, what output files it produces, and what parameters are needed for running it. For the syntax of SADL please see [SADLFormat] 

 ### Making R scripts Chipster compatible

@@ -643,7 +660,7 @@
   * The default data format is TSV (tab separated values), with one row for each gene or probeset 
   * The first column should be unnamed or "identifier" and contain the gene/probeset name 
   * Tool should not remove any existing columns unless the row structure is changed. In other words, inputs can have annotation etc. data that just passes through analysis steps 
-  * See AnalysisToolInputsAndOutputs for more information, in version 2.0 typing will be decided by the analysis module and will be described in this page 
+  * See AnalysisToolInputsAndOutputs for more information 

 ### Sequence analysis module (Embster)

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aleksi Kallio</dc:creator><pubDate>Thu, 26 Jun 2014 06:41:57 -0000</pubDate><guid>https://sourceforge.net9f5064185b25465dbe9c3c39a6afe645af3ebbf9</guid></item><item><title>TechnicalManual21 modified by Aleksi Kallio</title><link>https://sourceforge.net/p/chipster/wiki/TechnicalManual21/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v6
+++ v7
@@ -110,12 +110,13 @@

 After downloading extract the tar archive. It contains directory "chipster", where all components are in their own subdirectories. It can be placed anywhere, but usually **/opt/chipster** is used. 

-Downloading and extraction can be done easily on command line (we use version 1.1.2 here): 
+Downloading and extraction can be done easily on command line (we use version 2.0.0 here): 

     cd /opt
-    wget http://chipster.csc.fi/downloads/chipster-1.1.2.tar
-    tar xf chipster-1.1.2.tar
-
+    wget http://www.nic.funet.fi/pub/sci/molbio/chipster/dist/versions/2.0.0/chipster-2.0.0.tar.gz
+    tar -xzf chipster-2.0.0.tar.gz
+
+  
 **2) Installing external tools**

 No external tools are needed to start the server environment, but for the microarray analysis tools to work, R and a collection of libraries are needed. You can skip this step if you just want to get the system running first. 
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aleksi Kallio</dc:creator><pubDate>Thu, 26 Jun 2014 06:41:57 -0000</pubDate><guid>https://sourceforge.netd0a029e8b2f24ac713370b1863cbf5e430c7695e</guid></item><item><title>TechnicalManual21 modified by Aleksi Kallio</title><link>https://sourceforge.net/p/chipster/wiki/TechnicalManual21/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -369,7 +369,6 @@
       * genes
        * hg19.63.gtf - gene locations for Homo sapiens
        * mm9.63.gtf - gene locations for Mus musculus
-      *

 #### Server component directories

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aleksi Kallio</dc:creator><pubDate>Thu, 26 Jun 2014 06:41:56 -0000</pubDate><guid>https://sourceforge.netd6140b81ae8fac020d16cbcb887711eaf61a25c6</guid></item><item><title>TechnicalManual21 modified by Aleksi Kallio</title><link>https://sourceforge.net/p/chipster/wiki/TechnicalManual21/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -345,12 +345,30 @@
       * bwa-0.5.9 - BWA installation
       * bwa - link to bwa-0.5.9

-The **data** directory contains the continuously evolving selection of external datasets. The datasets are used by the analysis tools and served to clients by file broker. An example of the structure of the directory is given below. 
+The **data** directory contains the continuously evolving selection of external datasets. The datasets are used by the analysis tools and served to clients by file broker. Following principles are followed for the data directory. 
+
+  * Data is divided by their main category (reference sequences, gene locations etc.) 
+  * Organisms are separated file names 
+    * Widely known abbreviated names (e.g. hg19) are used when possible 
+    * Otherwise full scientific names are used 
+    * Full version information is included in the file name (assembly and annotation version, when possible) 
+
+An example of the structure of the directory is given below. 

     * chipster/data (small example on contents of the data directory)
       * sequences
-      * variation
+       * hg19.fa - sequence file for Homo sapiens
+       * hg19.1.ebwt - Bowtie index file for Homo sapiens
+       * hg19.2.ebwt - Bowtie index file for Homo sapiens
+       * mm9.fa - sequence file for Mus musculus
+       * mm9.1.ebwt - Bowtie index file for Mus musculus
+       * mm9.2.ebwt - Bowtie index file for Mus musculus
+       * mmu_miRB17mature.fa - microRNA sequence file for Mus musculus
+       * mmu_miRB17mature.1.ebwt - Bowtie index file for Mus musculus microRNA's
+       * mmu_miRB17mature.2.ebwt - Bowtie index file for Mus musculus microRNA's
       * genes
+       * hg19.63.gtf - gene locations for Homo sapiens
+       * mm9.63.gtf - gene locations for Mus musculus
       * 

 #### Server component directories
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aleksi Kallio</dc:creator><pubDate>Thu, 26 Jun 2014 06:41:56 -0000</pubDate><guid>https://sourceforge.netca7758f73036fdb9bfbd95ce4fb36131961b4362</guid></item><item><title>TechnicalManual21 modified by Aleksi Kallio</title><link>https://sourceforge.net/p/chipster/wiki/TechnicalManual21/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -346,15 +346,14 @@
       * bwa - link to bwa-0.5.9

 The **data** directory contains the continuously evolving selection of external datasets. The datasets are used by the analysis tools and served to clients by file broker. An example of the structure of the directory is given below. 
-
-  
-

     * chipster/data (small example on contents of the data directory)
       * sequences
       * variation
       * genes
       * 
+
+#### Server component directories

 All of the component directories follow the same basic layout. The contents of the components directories are given below. Wrapper means here [Java Service Wrapper](http://wrapper.tanukisoftware.org/) that is bundled with Chipster server installation. 

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aleksi Kallio</dc:creator><pubDate>Thu, 26 Jun 2014 06:41:56 -0000</pubDate><guid>https://sourceforge.net780e81cbf172e3e07721111769932d1b731b34ef</guid></item><item><title>TechnicalManual21 modified by Aleksi Kallio</title><link>https://sourceforge.net/p/chipster/wiki/TechnicalManual21/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -314,14 +314,49 @@

 ### Server on Linux

-Typically Chipster is installed to **/opt/chipster**. Inside the installation directory there is a shared directory and several independent component directories (that depend on the shared directory). The contents of the shared directory are given below. 
+Typically Chipster is installed to **/opt/chipster**. The contents of the installation directory are the following. 
+    
+    * chipster
+      * shared - content that is shared between all components
+      * tools - external analysis tools
+      * data - external data
+      * activemq - messaging broker component
+      * fileserver - file broker component
+      * comp - compute service component
+      * webstart - webstart web server component
+      * manager - manager service (logging) component
+      * auth - authentication service component
+
+The component installation directories are independent of each other, but depend on the **shared**, **tools** and **data** directories. 
+
+The contents of the shared directory are given below. 

     * chipster/shared
       * bin - generic executable files
       * lib - Java JAR and platform specific libraries
       * lib-src - source codes for libraries that require source code to be distributed together (LGPL)

-All of the component directories follow the same basic layout. The contents of the components directories are given below. "Wrapper" means here [Java Service Wrapper](http://wrapper.tanukisoftware.org/) that is bundled with Chipster server installation. 
+The **tools** directory contains the continuously evolving selection of external analysis tools. Each tools is installed in a directory that contains the complete version information and if the tools is called from the analysis scripts, there is a link without the version number that points to the complete directory. The link without the version number should be used to point to the tool. Tools that are configured as runtimes (e.g. R) do not need the link. 
+
+For example, the tools directory could contain the following. 
+    
+    * chipster/tools (small example on contents of the tool directory)
+      * R-2.12.1 - R installation that is used to run R scripts
+      * bwa-0.5.9 - BWA installation
+      * bwa - link to bwa-0.5.9
+
+The **data** directory contains the continuously evolving selection of external datasets. The datasets are used by the analysis tools and served to clients by file broker. An example of the structure of the directory is given below. 
+
+  
+
+    
+    * chipster/data (small example on contents of the data directory)
+      * sequences
+      * variation
+      * genes
+      * 
+
+All of the component directories follow the same basic layout. The contents of the components directories are given below. Wrapper means here [Java Service Wrapper](http://wrapper.tanukisoftware.org/) that is bundled with Chipster server installation. 

     * chipster/&amp;lt;component name&amp;gt;
       * bin - executable files and utility scripts
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aleksi Kallio</dc:creator><pubDate>Thu, 26 Jun 2014 06:41:55 -0000</pubDate><guid>https://sourceforge.netfa43062d89743d242ef3907982eafe943f5f2dee</guid></item><item><title>TechnicalManual21 modified by Aleksi Kallio</title><link>https://sourceforge.net/p/chipster/wiki/TechnicalManual21/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -1,6 +1,6 @@
 [TOC]

-# Technical manual for Chipster 2.1
+# Technical manual for Chipster 2.1 (in progress)

 The manual covers Chipster platform version 2.1. It instructs in setting up your own Chipster server, adding your own tools into Chipster, and more. For the user manual, please see http://chipster.csc.fi/manual/. 

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aleksi Kallio</dc:creator><pubDate>Thu, 26 Jun 2014 06:41:55 -0000</pubDate><guid>https://sourceforge.netac0eaafe4777194c844c3392ea693a01bf708a0f</guid></item><item><title>TechnicalManual21 modified by Aleksi Kallio</title><link>https://sourceforge.net/p/chipster/wiki/TechnicalManual21/</link><description>&lt;div class="markdown_content"&gt;&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#technical-manual-for-chipster-21"&gt;Technical manual for Chipster 2.1&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#introduction"&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-installation"&gt;System installation&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#virtual-machine-installation"&gt;Virtual machine installation&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#installing-virtual-machine-player"&gt;Installing virtual machine player&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#downloading-chipster-virtual-machine-images"&gt;Downloading Chipster virtual machine images&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#starting-chipster-virtual-machine"&gt;Starting Chipster virtual machine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#starting-chipster-client"&gt;Starting Chipster client&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#configuring-chipster-virtual-machine"&gt;Configuring Chipster virtual machine&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-installation-in-linux"&gt;System installation in Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#tool-installation-in-linux"&gt;Tool installation in Linux&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#manual-tool-installation"&gt;Manual tool installation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#client-installation-in-linux"&gt;Client installation in Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#installation-in-mac-os-x"&gt;Installation in Mac OS X&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#installation-in-windows"&gt;Installation in Windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-administration"&gt;System administration&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#chipster-architecture"&gt;Chipster architecture&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#server-components-explained"&gt;Server components explained&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#simple-server-installation"&gt;Simple server installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#advanced-server-installation"&gt;Advanced server installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#chipster-and-firewalls"&gt;Chipster and firewalls&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#upgrading-server-installation"&gt;Upgrading server installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#directory-layout"&gt;Directory layout&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#client"&gt;Client&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#server-on-linux"&gt;Server on Linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#configuration-system"&gt;Configuration system&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#configuring-chipster"&gt;Configuring Chipster&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#loading-configuration-over-url"&gt;Loading configuration over URL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-configuration-file"&gt;The configuration file&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#programming-api"&gt;Programming API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#secure-communications"&gt;Secure communications&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#setting-up-ssl"&gt;Setting up SSL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#generating-ssl-keys"&gt;Generating SSL keys&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#authentication"&gt;Authentication&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#users-file"&gt;Users file&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#ldap"&gt;LDAP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#tool-development"&gt;Tool development&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#writing-chipster-tools"&gt;Writing Chipster tools&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#adding-and-modifying-tools"&gt;Adding and modifying tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#writing-sadl-header"&gt;Writing SADL header&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#making-r-scripts-chipster-compatible"&gt;Making R scripts Chipster compatible&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#tool-conventions"&gt;Tool conventions&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#ngs-analysis-module"&gt;NGS analysis module&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#microarray-analysis-module"&gt;Microarray analysis module&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#sequence-analysis-module-embster"&gt;Sequence analysis module (Embster)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#faq"&gt;FAQ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h1 id="technical-manual-for-chipster-21"&gt;Technical manual for Chipster 2.1&lt;/h1&gt;
&lt;p&gt;The manual covers Chipster platform version 2.1. It instructs in setting up your own Chipster server, adding your own tools into Chipster, and more. For the user manual, please see &lt;a href="http://chipster.csc.fi/manual/." rel="nofollow"&gt;http://chipster.csc.fi/manual/.&lt;/a&gt; &lt;/p&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Chipster is a versatile data analysis platform with an intuitive graphical user interface. The version 1.4 of the platform has been mainly used for microarray and proteomics data. &lt;/p&gt;
&lt;p&gt;In the basic setup, Chipster is a client-server system. Chipster server can be run on a single server computer or even a laptop. The Chipster server itself actually contains multiple independent services, so it can be scaled across a cluster of servers to distribute computational and data transfer load. &lt;/p&gt;
&lt;p&gt;The system consists of compute, authentication, management and logging services, and message and file brokers, which act as communication channels between the components. &lt;/p&gt;
&lt;h1 id="system-installation"&gt;System installation&lt;/h1&gt;
&lt;h2 id="virtual-machine-installation"&gt;Virtual machine installation&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt; Virtual machine installation will be possible soon, we are now testing the virtual machines and writing the instructions here.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; To use the Chipster virtual machine, you need to:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install virtual machine player such as VirtualBox or VMware Player &lt;/li&gt;
&lt;li&gt;Download Chipster virtual machine images &lt;/li&gt;
&lt;li&gt;Start the Chipster virtual machine &lt;/li&gt;
&lt;li&gt;Start Chipster client &lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="installing-virtual-machine-player"&gt;Installing virtual machine player&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="" href="https://www.virtualbox.org/" rel="nofollow"&gt;VirtualBox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="http://www.vmware.com/products/desktop_virtualization/player/overview.html" rel="nofollow"&gt;VMware Player&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="downloading-chipster-virtual-machine-images"&gt;Downloading Chipster virtual machine images&lt;/h3&gt;
&lt;p&gt;Download all image files (&lt;em&gt;.vmdk) and virtual machine player specific configuration file (.vmx for VMware Player, VirtualBox coming soon, the &lt;/em&gt;.vmdk image files will work also for VirtualBox, you just have to create the new virtual machine in VirtualBox). &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.nic.funet.fi/pub/sci/molbio/chipster/dist/virtual_machines/2.0.0/" rel="nofollow"&gt;http://www.nic.funet.fi/pub/sci/molbio/chipster/dist/virtual_machines/2.0.0/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="starting-chipster-virtual-machine"&gt;Starting Chipster virtual machine&lt;/h3&gt;
&lt;p&gt;If you are using VMware Player, select "Open a virtual machine", pick chipster.vmx, select it and click "Play virtual machine". If you get a notification about missing VMware tools, just ignore it for now. &lt;/p&gt;
&lt;p&gt;If you are using VirtualBox, you need to create a new virtual machine and attach the image files as hard disks. &lt;/p&gt;
&lt;h3 id="starting-chipster-client"&gt;Starting Chipster client&lt;/h3&gt;
&lt;p&gt;To start the Chipster client, point your web browser to &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nl"&gt;http:&lt;/span&gt;&lt;span class="c1"&gt;//&amp;amp;lt;hostname or ip address of the virtual machine&amp;amp;gt;:8081&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;. &lt;/p&gt;
&lt;p&gt;If you don't no the hostname or ip address of the virtual machine you have started: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Login to vm using username: chipster, password: chipster &lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check the ip address of the vm by running: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;hostname&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;I&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="configuring-chipster-virtual-machine"&gt;Configuring Chipster virtual machine&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Login to vm using username: chipster, password: chipster &lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check the ip address of the vm: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;hostname&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;I&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configure Chipster to use the given ip address:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;chipster2&lt;/span&gt;&lt;span class="p"&gt;;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;configure&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sh&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Start Chipster:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;chipster&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Using a web browser go to the Chipster start page: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nl"&gt;http:&lt;/span&gt;&lt;span class="c1"&gt;//&amp;amp;lt;vm ip address&amp;amp;gt;:8081&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="system-installation-in-linux"&gt;System installation in Linux&lt;/h2&gt;
&lt;p&gt;These are instructions for installation using the automatic tools provided in the installation package. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;0) Requirements&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Following software needs to be installed: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Java 1.6 or later &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Majority of the tools also require correct version of R statistical environment (see &lt;a class="" href="../ChipsterVsRVersions"&gt;list of corresponding versions&lt;/a&gt;). &lt;/p&gt;
&lt;p&gt;The following tcp ports need to be open in the firewall: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;61616 for message broker service &lt;/li&gt;
&lt;li&gt;8080 for file broker service &lt;/li&gt;
&lt;li&gt;8081 for webstart service (optional) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;1) Downloading and extracting&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Installation packages can be obtained from &lt;a href="http://chipster.sourceforge.net/downloads.shtml."&gt;http://chipster.sourceforge.net/downloads.shtml.&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;After downloading extract the tar archive. It contains directory "chipster", where all components are in their own subdirectories. It can be placed anywhere, but usually &lt;strong&gt;/opt/chipster&lt;/strong&gt; is used. &lt;/p&gt;
&lt;p&gt;Downloading and extraction can be done easily on command line (we use version 1.1.2 here): &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;
&lt;span class="n"&gt;wget&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//chipster.csc.fi/downloads/chipster-1.1.2.tar&lt;/span&gt;
&lt;span class="n"&gt;tar&lt;/span&gt; &lt;span class="n"&gt;xf&lt;/span&gt; &lt;span class="n"&gt;chipster&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.1.2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tar&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;2) Installing external tools&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;No external tools are needed to start the server environment, but for the microarray analysis tools to work, R and a collection of libraries are needed. You can skip this step if you just want to get the system running first. &lt;/p&gt;
&lt;p&gt;If you have installed R to default location /opt/chipster/tools/R-2.9.0, you can install the R libraries needed by Chipster with the setup tool directly. Otherwise you have to update &lt;strong&gt;comp/conf/environment.xml&lt;/strong&gt; first with the correct location of the R binary. Next run (as root if needed): &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sh&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;For more information on setup tool see &lt;a class="" href="#Tool_installation_in_Linux"&gt;Setup tool section&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;The setup tool will print out instruction for carrying out the remaining installation steps for additional tools and databases. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3) Configuring Chipster services&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To configure the Chipster services, run the following two scripts. Both scripts will ask for confirmation before writing changes to files. Defaults should be fine for a local installation. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;configure&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sh&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;genpasswd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sh&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;** configure.sh&lt;/strong&gt; configures all the components, and &lt;strong&gt;genpasswd.sh&lt;/strong&gt; generates secure passwords that server components use to authenticate each other.**&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4) Starting and stopping service&lt;/strong&gt;s &lt;/p&gt;
&lt;p&gt;To start all the Chipster services, run: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;chipster&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In addition to &lt;strong&gt;start&lt;/strong&gt;, you can also use &lt;strong&gt;stop&lt;/strong&gt;, &lt;strong&gt;restart&lt;/strong&gt;, and &lt;strong&gt;status&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5) Testing installation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To start the client using Java Web Start, go to the Web Start address specified when running the &lt;strong&gt;configure.sh&lt;/strong&gt;. Default address is: &lt;/p&gt;
&lt;p&gt;&lt;a href="http://hostname-of-this-machine:8081" rel="nofollow"&gt;http://hostname-of-this-machine:8081&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note!&lt;/strong&gt; Java Web Start server (Jetty) is not bundled to backported versions 1.1.x. You have to set up your own web server for serving Web Start files. &lt;/p&gt;
&lt;p&gt;To start the client locally (on the same machine as the services), run: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;chipster&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The default username/password is chipster/chipster. Users can be added by editing the userlist at &lt;strong&gt;auth/security/users&lt;/strong&gt;. Chipster also supports several more advanced authentication providers. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6) Starting services at boot time&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The steps needed for making services start at boot time are somewhat system dependent. In most Linux systems two steps are needed: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Make link from /etc/init.d/ to the executable of the service, for example &lt;code&gt;/etc/init.d/chipster-auth -&amp;amp;gt; /opt/chipster/auth/bin/chipster-auth&lt;/code&gt;. &lt;/li&gt;
&lt;li&gt;Make links from /etc/rcX.d to the link at /etc/init.d to define the runlevels at which the service is started (typically 3). &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also control Chipster as a single service &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Make link from /etc/init.d/ to the Chipster service script chipster/chipster &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In Red Hat Linux &lt;code&gt;chkconfig&lt;/code&gt; can take care of creating the runlevel links, and you can use &lt;code&gt;service &amp;amp;lt;service_name&amp;amp;gt; start | stop | status | console&lt;/code&gt; to control services. &lt;/p&gt;
&lt;p&gt;Please note that brokers must be started before other components can be started. This is taken care for you if you use the single service option. &lt;/p&gt;
&lt;h2 id="tool-installation-in-linux"&gt;Tool installation in Linux&lt;/h2&gt;
&lt;p&gt;One of the key ideas behind Chipster is to take all the high quality tools in the relevant field of data analysis and integrate them together. For the end user, this is great. Unfortunately for the person installing the system the situation is not that optimal. We really wish that substantial amount of quality data analysis algorithms were available in some clean, platform independent format and we could simply distribute them just like we distribute Chipster itself. But it is not reality, at least yet. So we have to face the facts and install different analysis applications the way the original author had in mind. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For these reasons, we strongly recommend you to &lt;a class="" href="#Virtual_machine_installation"&gt;choose the virtual machine based distribution&lt;/a&gt; and that way avoid installing external tools yourself.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="manual-tool-installation"&gt;Manual tool installation&lt;/h3&gt;
&lt;p&gt;It is also possible to install external applications and datasets manually by yourself. By external applications we mean the computational environment needed to run Chipster compute service. Chipster itself is plain Java and does not have any dependencies to external application other than Java Runtime Environment. We do package Chipster with Tanuki Software's free Java Service Wrapper for convenience, but using the wrapper is not required. So, without the external applications in place your compute service will boot up, but will not be able to run successfully any analysis jobs. If external applications are partially available, then you can use some of the tools, etc. &lt;/p&gt;
&lt;p&gt;External dependencies can be divided to 3 layers. &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;OS level packages &lt;/li&gt;
&lt;li&gt;external applications and databases (R and others) &lt;/li&gt;
&lt;li&gt;R packages &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Level 1 contains a collection of operating system packages that are required for applications at levels 2 and 3 to work. Naturally level 1 is OS specific and so the packages are installed into OS specific locations using OS specific tools (typically &lt;strong&gt;apt-get&lt;/strong&gt; or &lt;strong&gt;yum&lt;/strong&gt;). Levels 2 and 3 are contained in the &lt;strong&gt;Chipster tools directory&lt;/strong&gt;. The most important application at level 2 is &lt;strong&gt;R&lt;/strong&gt;, as it hosts most of the analysis functionality and is also the basis for layer 3. There are also some simple databases, i.e. plain files, that reside on layer 2. The R specific layer 3 consist mostly of CRAN and Bioconductor packages, with some additional third party packages. They are installed using the standard R installation methods and will be located in &lt;strong&gt;chipster/tools/R-&amp;lt;version&amp;gt;/library&lt;/strong&gt;. There is a setup tools for installing layer 3 automatically. &lt;/p&gt;
&lt;p&gt;Chipster tool directory or tool home is the place to store all external dependencies (except for OS packages). By default it is &lt;strong&gt;/opt/chipster/tools&lt;/strong&gt;. Analysis scripts have access to tool directory path via a variable so that they can access external applications and databases. You need to configure tool home to &lt;strong&gt;chipster/comp/conf/runtimes.xml&lt;/strong&gt; if you change it. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Up-to-date steps for installing all external applications and datasets can be found from the VM distribution installation script:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;http://code.google.com/p/chipster/source/browse/src/main/admin/vm/install-chipster.sh?name=default&amp;gt;&lt;/p&gt;
&lt;p&gt;Follow steps onwards from &lt;em&gt;Install external applications and datasets&lt;/em&gt;. &lt;/p&gt;
&lt;h2 id="client-installation-in-linux"&gt;Client installation in Linux&lt;/h2&gt;
&lt;p&gt;Client installs automatically with Java Web Start. &lt;/p&gt;
&lt;h2 id="installation-in-mac-os-x"&gt;Installation in Mac OS X&lt;/h2&gt;
&lt;p&gt;Chipster client is fully Mac OS X compatible and supported on Mac platforms. It installs automatically with Java Web Start. &lt;/p&gt;
&lt;p&gt;Chipster server supports Mac OS X. The installation is identical to Linux installation, so please refer there for instructions. &lt;/p&gt;
&lt;h2 id="installation-in-windows"&gt;Installation in Windows&lt;/h2&gt;
&lt;p&gt;Chipster client is fully Windows compatible and supported on Windows platforms. It installs automatically with Java Web Start. &lt;/p&gt;
&lt;p&gt;Chipster server has experimental support for Windows. As the bioinformatics tool environment is Unix oriented, doing a complete installation in Windows will require significant efforts. &lt;/p&gt;
&lt;h1 id="system-administration"&gt;System administration&lt;/h1&gt;
&lt;h2 id="chipster-architecture"&gt;Chipster architecture&lt;/h2&gt;
&lt;p&gt;The shortest description for Chipster architecture would be that it is very flexible. The Chipster environment is based on message oriented architecture (called also message passing architecture or message oriented middleware architecture). Components are connected using message broker (ActiveMQ). This results in a loosely coupled distributed system. Chipster is designed to be based on the idea of broadcast, allowing components to be unaware of each other. Also the system does not depend on the protocol used for communication. &lt;/p&gt;
&lt;p&gt;The Chipster environment consists of the following components: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;message broker (1 to many) &lt;/li&gt;
&lt;li&gt;file broker (1 to many) &lt;/li&gt;
&lt;li&gt;authenticator (1) &lt;/li&gt;
&lt;li&gt;compute server (1 to many) &lt;/li&gt;
&lt;li&gt;client (many) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All components can be added and removed on fly. In case there are multiple instances of a same component running there's no need for extra configuration, because, for example, multiple analysers can function without being aware of each other. This allows system administrator to add analyser components on fly if there is need for extra processing power, for example during large courses. Currently there can be only one and authenticator. &lt;/p&gt;
&lt;p&gt;One of the key ideas in designing Chipster architecture was to carefully consider where each bit of the system's state is managed. Chipster client follows fat client paradigm where client is functionally rich. This decision was made to keep server environment simple and lightweight, to reduce number of messages, to distribute processing load (especially data visualisation) to clients and to allow improved user experience as client application is mostly independent of server components. As most of the relevant state has the same lifecycle as one client session, managing state at the client side is also logically a good solution. &lt;/p&gt;
&lt;h3 id="server-components-explained"&gt;Server components explained&lt;/h3&gt;
&lt;p&gt;Message Broker (ActiveMQ) acts as a central point of the system, passing messages in-between components. ActiveMQ supports broker redundancy for improving scalability and reliability, so multiple brokers can be used simultaneously. &lt;/p&gt;
&lt;p&gt;File broker distributes files to other components, acting as a supplement to message broker. File distribution is based on pull mechanism, where components needing data go and retrieve needed files from the file broker. This way compute servers and clients can be behind firewalls. Using separate file broker also allows compute servers to use minimal disk space as files are cached at file server. &lt;/p&gt;
&lt;p&gt;Authenticator processes requests from clients. Each request is examined, and if valid session exists for that client it is allowed to continue. Otherwise a request is made for user to authenticate and after a successfull authentication a new session is created. Authenticator supports many types of authentication sources (Unix passwd, JAAS, LDAP...), and can use them simultanously. Server components authenticate to broker using server specific keys, and are allowed to communicate directly without going through the authenticator. Authenticator is a separate component so that it can be deployed inside intranet, as it might need access to sensitive information such as user databases. &lt;/p&gt;
&lt;p&gt;Compute service listens for computation requests. When client initiates a new task, all compute services with free resources reply and client decides which service gets to process the task. This way there is no single point of failure in distribution of tasks to server environment, and compute services can be modified easily on fly. &lt;/p&gt;
&lt;h3 id="simple-server-installation"&gt;Simple server installation&lt;/h3&gt;
&lt;p&gt;The simple way to install Chipster environment is to deploy all components to a single server and distribute clients by using Java Web Start. &lt;/p&gt;
&lt;p&gt;All server components run inside their own directories, so having them on a single server does not require any special arrangements. Message broker and file broker are running in their respective ports, and other components connect to them using local network loopback. &lt;/p&gt;
&lt;h3 id="advanced-server-installation"&gt;Advanced server installation&lt;/h3&gt;
&lt;p&gt;A good guideline for setting up advanced installation is to dedicate an untrusted server for message broker and file broker components, as they are the only components that have open server ports. That server should not be inside organisations firewall, i.e., be in DMZ network. To secure user credentials, authenticator should be installed separately on a strongly protected machine. &lt;/p&gt;
&lt;p&gt;It is possible to deploy multiple compute servers. All of them should have same tools descriptions, but it is possible to select enabled tools per server. It is also possible to configure maximum job counts. If you have many nodes available but they have also other use besides Chipster it is recommended to deploy compute servers on as many nodes as possible but limit the per server job count to keep Chipster from hogging all the resources. If there are memory intensive tools, it might be a good idea to deploy dedicated node for them with large memory and low maximum job count. Independent compute services can also be deployed to batch processing system (LSF etc.), following a worker paradigm. &lt;/p&gt;
&lt;h3 id="chipster-and-firewalls"&gt;Chipster and firewalls&lt;/h3&gt;
&lt;p&gt;One of the design guidelines in Chipster was to make it easily adaptable to various firewall configurations. Even though there are many server components, only message and file brokers are listening to open ports. In other words, they act as a hub to which other components connect to. Both of the components are designed so that they can be installed on a "untrusted" machine located in the DMZ. Compute and authentication services often have to be located inside intranet, which is not a problem as they do not act as servers from a networking point of view. &lt;/p&gt;
&lt;p&gt;Client uses TCP or SSL to connect to message and file brokers. This communication can be configured to ports 80 and 443 to bypass strict firewalls. In some high security environments practically all network access is disabled, except for HTTP using local proxy. Currently Chipster does not use HTTP, so in this extreme case deployment is not possible without changes to firewall configuration. However routing messages through HTTP is supported by ActiveMQ message broker, so in future these scenarios might also be supported directly. &lt;/p&gt;
&lt;h2 id="upgrading-server-installation"&gt;Upgrading server installation&lt;/h2&gt;
&lt;p&gt;Chipster 2.0 is a new major version and should be installed from scratch. &lt;/p&gt;
&lt;h2 id="directory-layout"&gt;Directory layout&lt;/h2&gt;
&lt;p&gt;Chipster directory layout is different on client and server sides. On client side the goal has been to make placement of files and directories to be compatitible with operating system specific conventions. On server side the goal has been to make the layout as coherent as possible (especially integrate well into Java Service Wrapper that wraps all the server components). &lt;/p&gt;
&lt;h3 id="client"&gt;Client&lt;/h3&gt;
&lt;p&gt;Application data (logs, SSL keys, user preferences ) is stored in a one place and user data (sessions, workflows) in another. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows &lt;ul&gt;
&lt;li&gt;Application data stored in Local Settings\Application Data\Chipster inside user's home directory &lt;/li&gt;
&lt;li&gt;User data stored in My Documents inside user's home directory &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Mac OS X &lt;ul&gt;
&lt;li&gt;Application data stored in Library/Application Support/Chipster inside user's home directory &lt;/li&gt;
&lt;li&gt;User data stored in My Documents inside user's home directory &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Linux/Unix &lt;ul&gt;
&lt;li&gt;Application data stored in .chipster inside user's home directory &lt;/li&gt;
&lt;li&gt;User data stored in home directory, or Document or My Documents inside the home directory if they exist &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If operating system is not recognised, we fall back to Linux/Unix. This is because most often esoteric OS's are Unix variants. &lt;/p&gt;
&lt;h3 id="server-on-linux"&gt;Server on Linux&lt;/h3&gt;
&lt;p&gt;Typically Chipster is installed to &lt;strong&gt;/opt/chipster&lt;/strong&gt;. Inside the installation directory there is a shared directory and several independent component directories (that depend on the shared directory). The contents of the shared directory are given below. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;chipster&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;shared&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;bin&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;generic&lt;/span&gt; &lt;span class="n"&gt;executable&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;lib&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Java&lt;/span&gt; &lt;span class="n"&gt;JAR&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;platform&lt;/span&gt; &lt;span class="n"&gt;specific&lt;/span&gt; &lt;span class="n"&gt;libraries&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;src&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;source&lt;/span&gt; &lt;span class="n"&gt;codes&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;libraries&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt; &lt;span class="n"&gt;require&lt;/span&gt; &lt;span class="n"&gt;source&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;distributed&lt;/span&gt; &lt;span class="n"&gt;together&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LGPL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;All of the component directories follow the same basic layout. The contents of the components directories are given below. "Wrapper" means here &lt;a class="" href="http://wrapper.tanukisoftware.org/" rel="nofollow"&gt;Java Service Wrapper&lt;/a&gt; that is bundled with Chipster server installation. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;chipster&lt;/span&gt;&lt;span class="o"&gt;/&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;component&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;bin&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;executable&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;utility&lt;/span&gt; &lt;span class="n"&gt;scripts&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;chipster&lt;/span&gt;&lt;span class="o"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;component&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt; &lt;span class="n"&gt;executable&lt;/span&gt; &lt;span class="n"&gt;script&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;use&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;linux&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;x86&lt;/span&gt;&lt;span class="o"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;platform&lt;/span&gt; &lt;span class="n"&gt;specific&lt;/span&gt; &lt;span class="n"&gt;executables&lt;/span&gt;
      &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;chipster&lt;/span&gt;&lt;span class="o"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;component&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;platform&lt;/span&gt; &lt;span class="n"&gt;specific&lt;/span&gt; &lt;span class="n"&gt;executable&lt;/span&gt; &lt;span class="n"&gt;script&lt;/span&gt;
      &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;wrapper&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;wrapper&lt;/span&gt; &lt;span class="n"&gt;binary&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;logs&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;log&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;wrapper&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;console&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;Chipster&lt;/span&gt; &lt;span class="n"&gt;itself&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;wrapper&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;chipster&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;jobs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;security&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;security&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt; &lt;span class="n"&gt;related&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;encryption&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;authentication&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="n"&gt;authentication&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;keystore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ks&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;automatically&lt;/span&gt; &lt;span class="n"&gt;generated&lt;/span&gt; &lt;span class="n"&gt;dummy&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;SSL&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;flat&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="n"&gt;database&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;conf&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;component&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="n"&gt;configuration&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;chipster&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;xml&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt; &lt;span class="n"&gt;Chipster&lt;/span&gt; &lt;span class="n"&gt;configuration&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;wrapper&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;conf&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;wrapper&lt;/span&gt; &lt;span class="n"&gt;configuration&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;jaas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;JAAS&lt;/span&gt; &lt;span class="n"&gt;authenticator&lt;/span&gt; &lt;span class="n"&gt;configuration&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;runtimes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;xml&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;compute&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="n"&gt;runtime&lt;/span&gt; &lt;span class="n"&gt;environments&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;configuration&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;compute&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;xml&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt; &lt;span class="n"&gt;runtime&lt;/span&gt; &lt;span class="n"&gt;environment&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;compute&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="n"&gt;cache&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="n"&gt;broker&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;web&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;Web&lt;/span&gt; &lt;span class="n"&gt;Start&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;webstart&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;jobs&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;working&lt;/span&gt; &lt;span class="n"&gt;directory&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;jobs&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;compute&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;modules&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;directory&lt;/span&gt; &lt;span class="n"&gt;containing&lt;/span&gt; &lt;span class="n"&gt;analysis&lt;/span&gt; &lt;span class="n"&gt;tools&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;compute&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;microarray&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;microarray&lt;/span&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt; &lt;span class="n"&gt;specific&lt;/span&gt; &lt;span class="n"&gt;subdirectories&lt;/span&gt;
       &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;R&lt;/span&gt;&lt;span class="o"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
       &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;bsh&lt;/span&gt;
       &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;java&lt;/span&gt;
       &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;microarray&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;xml&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt; &lt;span class="n"&gt;configuration&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;module&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;ngs&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;NGS&lt;/span&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt; &lt;span class="n"&gt;specific&lt;/span&gt; &lt;span class="n"&gt;subdirectories&lt;/span&gt;
       &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;R&lt;/span&gt;&lt;span class="o"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
       &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;java&lt;/span&gt;
       &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;ngs&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;xml&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt; &lt;span class="n"&gt;configuration&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;module&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;sequence&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;sequence&lt;/span&gt; &lt;span class="n"&gt;analysis&lt;/span&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt; &lt;span class="n"&gt;specific&lt;/span&gt; &lt;span class="n"&gt;subdirectories&lt;/span&gt;
       &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;shell&lt;/span&gt;
       &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;sequence&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;xml&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt; &lt;span class="n"&gt;configuration&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;module&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;third&lt;/span&gt; &lt;span class="n"&gt;party&lt;/span&gt; &lt;span class="n"&gt;modules&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;database&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;monitoring&lt;/span&gt; &lt;span class="n"&gt;database&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;manager&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;database&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;backups&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;backups&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;monitoring&lt;/span&gt; &lt;span class="n"&gt;database&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;manager&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ActiveMQ uses it's own directory layout. See &lt;a class="" href="http://swik.net/ActiveMQ/Documentation" rel="nofollow"&gt;ActiveMQ documentation&lt;/a&gt; for more information. &lt;/p&gt;
&lt;h2 id="configuration-system"&gt;Configuration system&lt;/h2&gt;
&lt;h3 id="configuring-chipster"&gt;Configuring Chipster&lt;/h3&gt;
&lt;p&gt;If you just want to get your Chipster up and running, execute &lt;strong&gt;configure.sh&lt;/strong&gt; script and your done! If you want to know more about Chipster configuration system, then read on. &lt;/p&gt;
&lt;p&gt;Chipster stores application configuration to a file called &lt;strong&gt;chipster-config.xml&lt;/strong&gt;. It is located either in a conf subdirectory (see &lt;a class="" href="../DirectoryLayout"&gt;directory layout&lt;/a&gt;) or loaded dynamically via URL. The former approach is meant for server components and the latter for clients starting over Java Web Start. The configuration file is not created automatically any more, but it must always exists (locally or behind an URL). &lt;/p&gt;
&lt;p&gt;The configuration is loaded in two steps. First an internal default configuration is loaded (&lt;strong&gt;chipster-config-specification.xml,&lt;/strong&gt; located inside the Chipster JAR) and then the normal configuration file &lt;strong&gt;chipster-config.xml&lt;/strong&gt;. The latter contains only information that needs to be set per instance basis, so it is quite minimalistic. However it is possible to overwrite configuration entries of the internal default configuration using the normal configuration file. Just include the entry in the file and it will replace the default one. &lt;/p&gt;
&lt;p&gt;The recommended way to configure a new Chipster instance is to use the &lt;strong&gt;configure.sh&lt;/strong&gt; script located at the installation root directory. It will configure all the components and the Web Start client descriptor. You can also modify the configuration files manually. For information on meaning of the different configuration entries, please refer to &lt;strong&gt;&lt;a class="" href="http://code.google.com/p/chipster/source/browse/src/main/resources/chipster-config-specification.xml" rel="nofollow"&gt;&lt;/a&gt;&lt;a href="http://code.google.com/p/chipster/sou.../chipster-config-specification.xml" rel="nofollow"&gt;http://code.google.com/p/chipster/sou.../chipster-config-specification.xml&lt;/a&gt;&lt;/strong&gt; in the code repository. &lt;/p&gt;
&lt;h3 id="loading-configuration-over-url"&gt;Loading configuration over URL&lt;/h3&gt;
&lt;p&gt;Each Chipster component (client, analysis server, file broker etc.) has its own configuration file. If configuration file is not explicitly specified, &lt;strong&gt;chipster-config.xml&lt;/strong&gt; is used. Configuration can be loaded over URL by passing an argument &lt;strong&gt;-config &amp;lt;url&amp;gt;&lt;/strong&gt; at component startup. You can also specify a local file (e.g. &lt;strong&gt;-config file:/path/to/config.xml&lt;/strong&gt;). For Web Start clients configuration file can be set in the &lt;strong&gt;chipster.jnlp&lt;/strong&gt; descriptor file. Using this mechanism allows to manage the configuration (such as the address of the broker server) centrally. &lt;/p&gt;
&lt;h3 id="the-configuration-file"&gt;The configuration file&lt;/h3&gt;
&lt;p&gt;The configuration file &lt;strong&gt;chipster-config.xml&lt;/strong&gt; contains all the configuration that different components require. See below for an example configuration file of a file broker component. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;configuration&lt;/span&gt; &lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;3&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;configuration&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt; &lt;span class="n"&gt;moduleId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;messaging&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt; &lt;span class="n"&gt;entryKey&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;broker-host&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt; &lt;span class="n"&gt;entryKey&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;broker-protocol&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt; &lt;span class="n"&gt;entryKey&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;broker-port&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;configuration&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;configuration&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt; &lt;span class="n"&gt;moduleId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;security&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt; &lt;span class="n"&gt;entryKey&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;filebroker&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt; &lt;span class="n"&gt;entryKey&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;filebroker&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;configuration&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;configuration&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt; &lt;span class="n"&gt;moduleId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;filebroker&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt; &lt;span class="n"&gt;entryKey&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;url&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//chipster.example.com:8080&amp;amp;lt;/value&amp;amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt; &lt;span class="n"&gt;entryKey&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;port&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
              &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;configuration&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;configuration&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The file contains several modules (XML element &lt;strong&gt;configuration-module&lt;/strong&gt;), and the selection of modules varies between different components. Modules &lt;strong&gt;security&lt;/strong&gt; and &lt;strong&gt;messaging&lt;/strong&gt; are related to how Chipster node connects to messaging fabric and are always required. Additionally, there are node specific modules, such as &lt;strong&gt;filebroker&lt;/strong&gt; in the example. &lt;/p&gt;
&lt;p&gt;Inside the module, there are configuration entries (XML element &lt;strong&gt;entry&lt;/strong&gt;). Every entry has a key (XML attribute &lt;strong&gt;entryKey&lt;/strong&gt;) and it contains one or more values (XML element &lt;strong&gt;value&lt;/strong&gt;). &lt;/p&gt;
&lt;h3 id="programming-api"&gt;Programming API&lt;/h3&gt;
&lt;p&gt;Configuration can be accessed programmatically as shown below. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;DirectoryLayout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;initialiseServerLayout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Arrays&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;asList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;{}));&lt;/span&gt;
&lt;span class="n"&gt;Configuration&lt;/span&gt; &lt;span class="n"&gt;configuration&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DirectoryLayout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getInstance&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;getConfiguration&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;First directory layout must be initialised. Here we initialised server layout and do not specify any node specific configuration modules that need to exist. Next we fetch a &lt;strong&gt;fi.csc.microarray.config.Configuration&lt;/strong&gt; object that can be used to read configuration modules and entries. &lt;/p&gt;
&lt;h2 id="secure-communications"&gt;Secure communications&lt;/h2&gt;
&lt;h3 id="setting-up-ssl"&gt;Setting up SSL&lt;/h3&gt;
&lt;p&gt;By default Chipster server installation uses plain TCP for communication. Setting up SSL is not trivial when using Java's default implementation, so it is not done by default. However here you'll find instructions on how to do it. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 1. Locate keystore&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can either use the &lt;span&gt;[&lt;a class="" href="http://code.google.com/p/chipster/source/browse/src/main/resources/keystore.ks|dummy" rel="nofollow"&gt;keystore&lt;/a&gt;]&lt;/span&gt; that is bundled with Chipster clients and generate your own (see &lt;span&gt;[#Generating_SSL_keys]&lt;/span&gt;). Save it to file keystore.ks. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2. Configure message broker&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You need to: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;copy keystore.ks to chipster/activemq/conf &lt;/li&gt;
&lt;li&gt;open chipster/activemq/bin/&amp;lt;platform&amp;gt;/wrapper.conf, uncomment and edit the following settings &lt;ul&gt;
&lt;li&gt;javax.net.ssl.keystorePassword=microarray (or whatever you have used) &lt;/li&gt;
&lt;li&gt;javax.net.ssl.keystore=%ACTIVEMQ_BASE/conf/keystore.ks &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;open chipster/activemq/conf/activemq.xml and change protocol to "ssl" (you can change port also) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Step 3. Configure Chipster components&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For each of the server components, you need to: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;copy keystore.ks to chipster/&amp;lt;component&amp;gt;/security &lt;/li&gt;
&lt;li&gt;open chipster/&amp;lt;component&amp;gt;/conf/chipster-config.xml and in module "messaging" change protocol to "ssl" (you can change port also) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That's it. You also need to change setting in the module "security" if you have used other than default values; see &lt;span&gt;[#Generating_SSL_keys]&lt;/span&gt; for more details. &lt;/p&gt;
&lt;h3 id="generating-ssl-keys"&gt;Generating SSL keys&lt;/h3&gt;
&lt;p&gt;Chipster comes with dummy keystore that gets you going with SSL. If you want to use SSL not only for encrypting communication but also establishing trust between server components and clients, you have to replace these publicly available keys with your own ones. Chipster uses Java's normal SSL implementation. Keystore can be manipulated as explained in &lt;span&gt;[&lt;a class="" href="http://java.sun.com/security/reference/docs/|Java" rel="nofollow"&gt;Security documentation&lt;/a&gt;]&lt;/span&gt;, so you can also use your existing keys. &lt;/p&gt;
&lt;p&gt;Here we describe how you can generate your own SSL keys. Please note that these keys will not be approved by any Certificate Authority, and cause warnings if used outside of Chipster environment. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 1.&lt;/strong&gt; Generate a new keystore &lt;/p&gt;
&lt;p&gt;Keys can be generated using Java's keytool-application. &lt;/p&gt;
&lt;p&gt;Generate key using keytool: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;keytool&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;genkey&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;alias&lt;/span&gt; &lt;span class="n"&gt;your_key_alias&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;dname&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;cn=Your name or organisation, ou=Your name or organisation, o=Your name or organisation, c=your_country_code&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;validity&lt;/span&gt; &lt;span class="mi"&gt;1800&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;keyalg&lt;/span&gt; &lt;span class="n"&gt;RSA&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;keystore&lt;/span&gt; &lt;span class="n"&gt;keystore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ks&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;keytool will ask your keystore password (twice). You can choose any name (alias) for the key and you can use any password you want. The dummy keystore uses "client" as key alias and "microarray" as keystore password. &lt;/p&gt;
&lt;p&gt;Next we need to set up trust for the newly generated key. It is done by exporting and importing the certificate. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;keytool&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;exportcert&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;alias&lt;/span&gt; &lt;span class="n"&gt;your_key_alias&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="n"&gt;cert&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;keystore&lt;/span&gt; &lt;span class="n"&gt;keystore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ks&lt;/span&gt;
&lt;span class="n"&gt;keytool&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;importcert&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;alias&lt;/span&gt; &lt;span class="n"&gt;your_trusted_key_alias&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="n"&gt;cert&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;keystore&lt;/span&gt; &lt;span class="n"&gt;keystore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ks&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can choose any name (alias) for the trusted key. The dummy keystore uses "microarray" and that is also the default in Chipster SSL configuration. &lt;/p&gt;
&lt;p&gt;Now we have set up another dummy keystore. To actually set up trust between communication endpoints, read the next step. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2.&lt;/strong&gt; Distribute keystore &lt;/p&gt;
&lt;p&gt;Chipster components have subdirectory "security" where keystore is stored in file keystore.ks, and message broker stores keystore in "conf" subdirectory. You can replace it with your newly generated keystore. If you wish to establish trust between different Chipster components, you should generate at least two dedicated keys: one for clients and one for server components. You might also generate a dedicated key for each server component. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 3.&lt;/strong&gt; Update configuration &lt;/p&gt;
&lt;p&gt;After deploying new keystore you have to configure modules to understand them. If you used default trusted key alias or keystore password, no changes are required. Keystore related settings are placed to configuration module "security", in configuration files chipster-config.xml. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;configuration-module moduleId=&amp;quot;security&amp;quot; description=&amp;quot;encryption and authentication&amp;quot;&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;
  &lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;entry entryKey=&amp;quot;keystore&amp;quot; type=&amp;quot;string&amp;quot; description=&amp;quot;keystore file for SSL&amp;quot;&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;
    &lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;value&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;chipster_security_dir&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;/keystore.ks&lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;/value&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;
  &lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;/entry&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;

  &lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;entry entryKey=&amp;quot;keypass&amp;quot; type=&amp;quot;string&amp;quot; description=&amp;quot;keystore password for SSL&amp;quot;&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;
    &lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;value&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;microarray&lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;/value&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;
  &lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;/entry&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;

  &lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;entry entryKey=&amp;quot;keyalias&amp;quot; type=&amp;quot;string&amp;quot; description=&amp;quot;alias of key to be used for SSL&amp;quot;&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;
    &lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;value&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;microarray&lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;/value&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;
  &lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;/entry&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;

        ...
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Default configuration does not have SSL specific settings, so you need to add those entries. You should update values for "keypass" and "keyalias" to reflect appropriate settings for each component. The key alias refers to the trusted key, not the private key. The alias of the private key needs not to be configured, but the key needs to be in the keystore anyway. You can also change keystore path if you don't wish to store the keystore inside the "security" directory. &lt;/p&gt;
&lt;h2 id="authentication"&gt;Authentication&lt;/h2&gt;
&lt;h3 id="users-file"&gt;Users file&lt;/h3&gt;
&lt;p&gt;The simplest supported authentication mechanism is the users file in &lt;strong&gt;auth/security/users&lt;/strong&gt;. The format is: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;:&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;:&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;exp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt; &lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="n"&gt;YYYY&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;MM&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;DD&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;comment&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Only username and password are required. Blank lines and comment lines starting with &lt;strong&gt;#&lt;/strong&gt; are allowed. &lt;/p&gt;
&lt;h3 id="ldap"&gt;LDAP&lt;/h3&gt;
&lt;p&gt;See &lt;a class="" href="../LDAP"&gt;Authentication via LDAP&lt;/a&gt;. &lt;/p&gt;
&lt;h1 id="tool-development"&gt;Tool development&lt;/h1&gt;
&lt;h2 id="writing-chipster-tools"&gt;Writing Chipster tools&lt;/h2&gt;
&lt;p&gt;Basically, you have to do three things: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;provide the tool itself (command line executable, R script, Java class etc.) &lt;/li&gt;
&lt;li&gt;write a tool description in &lt;span&gt;[SADLFormat]&lt;/span&gt;, so that the script can be run and shown in the client application &lt;/li&gt;
&lt;li&gt;make compute service aware of the tool &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You should also follow &lt;a class="" href="../ChipsterToolConventions"&gt;conventions for Chipster analysis tools&lt;/a&gt;. &lt;/p&gt;
&lt;h3 id="adding-and-modifying-tools"&gt;Adding and modifying tools&lt;/h3&gt;
&lt;p&gt;Chipster tools are divided into modules. Modules are a high level packages that cover some area of data analysis, such as next generation sequencing. At compute server, modules are stored in &lt;strong&gt;chipster/comp/modules&lt;/strong&gt; directory. Each module has its own subdirectory, where the tools are located in tool type specific subdirectories. Tools can be R scripts, BeanShell scripts, or header stubs that define how command line tools are invoked etc. Besides the tools themselves, each module has a configuration file &lt;strong&gt;&amp;lt;module name&amp;gt;-module.xml&lt;/strong&gt; that lists all the tools, maps them to runtimes (configured at compute service level) and gives tool specific parameters, if needed. &lt;/p&gt;
&lt;p&gt;To get started, go and have a look at the &lt;strong&gt;modules&lt;/strong&gt; directory. Changes to tool files are detected dynamically, so you can make a change and see what happens when you run the tool through the client. Changes to tool code does not require any restarting, allowing you to write and test tools simultaneously. However, please note that changes to tool headers and module configuration files require client and compute service restart. &lt;/p&gt;
&lt;h3 id="writing-sadl-header"&gt;Writing SADL header&lt;/h3&gt;
&lt;p&gt;SADL (Simple Analysis Description Language) is a simple notation for describing analysis tools so that they can be used in the Chipster 2.0 framework. SADL describes what input files the tool takes, what output files it produces, and what parameters are needed for running it. For the syntax of SADL please see &lt;span&gt;[SADLFormat]&lt;/span&gt; &lt;/p&gt;
&lt;h3 id="making-r-scripts-chipster-compatible"&gt;Making R scripts Chipster compatible&lt;/h3&gt;
&lt;p&gt;Chipster uses regular R scripts. The only thing to remember is that interactive functions can not be used. &lt;/p&gt;
&lt;p&gt;Before running the script, the system runs the following initialisation snippet: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;setwd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The script should output results in table format to a file specified in description header. So, for example like this: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mytable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;results.txt&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;quote&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;FALSE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;names&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;FALSE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;names&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;FALSE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="tool-conventions"&gt;Tool conventions&lt;/h2&gt;
&lt;p&gt;The goal in Chipster is always to produce a coherent user experience. Here are some conventions that can be useful when integrating tools into Chipster and should be followed when writing tools that are to be integrated into Chipster main repository. &lt;/p&gt;
&lt;h3 id="ngs-analysis-module"&gt;NGS analysis module&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Tools should accept and produce read data in FASTQ and BAM format when possible &lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="microarray-analysis-module"&gt;Microarray analysis module&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The default data format is TSV (tab separated values), with one row for each gene or probeset &lt;/li&gt;
&lt;li&gt;The first column should be unnamed or "identifier" and contain the gene/probeset name &lt;/li&gt;
&lt;li&gt;Tool should not remove any existing columns unless the row structure is changed. In other words, inputs can have annotation etc. data that just passes through analysis steps &lt;/li&gt;
&lt;li&gt;See AnalysisToolInputsAndOutputs for more information, in version 2.0 typing will be decided by the analysis module and will be described in this page &lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="sequence-analysis-module-embster"&gt;Sequence analysis module (Embster)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Follow EMBOSS conventions &lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="faq"&gt;FAQ&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; Chipster seems to ignore Java proxy settings and our firewall allows connections only through proxy.&lt;br /&gt;
&lt;strong&gt;A:&lt;/strong&gt; By default Chipster ignores proxy settings and always uses direct connection. It is possible the disable the override and make Chipster to use Java proxy settings. In chipster-config.xml, add the following under the module messaging: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt; &lt;span class="n"&gt;entryKey&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;disable-proxy&amp;quot;&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;boolean&amp;quot;&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;should we ignore Java proxy settings and connect directly&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The change needs to made to chipster-config.xml of clients. In normal setups it is served by webstart server and will be in effect when clients are restarted. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; Client application fails to start with UnknownHostException.&lt;br /&gt;
&lt;strong&gt;A:&lt;/strong&gt; You are running a Linux workstation (say "foobar") and startup fails with "fi.csc.microarray.MicroarrayException: could not connect to message broker at ssl://chipster.csc.fi:61617 (Could not connect to broker URL: ssl://chipster.csc.fi:61617. Reason: java.net.UnknownHostException: foobar: foobar)". The problem is that your hostname cannot be resolved for your workstation (Java SSL requires that hostnames can be resolved for both endpoints). Try "host foobar" on shell. If it says "host not found" your network is a bit problematic. You can add "foobar" to your /etc/hosts after localhost, like "127.0.0.1 localhost foobar", and it should work. You can also contact system administrator to find out why your hostname cannot be resolved. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; Starting Chipster server environment results in: "Could not detect hardware architecture, please set platform manually."&lt;br /&gt;
&lt;strong&gt;A:&lt;/strong&gt; If hardware architecture is not detected automatically, it can be set manually by editing all instances of &lt;strong&gt;chipster-generic.sh&lt;/strong&gt;. Architecture is configured by changing the PLATFORM line to match your hardware architecture (see comment above the line for options). &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; I get "RSA premaster secret error" when trying to run Chipster server.&lt;br /&gt;
&lt;strong&gt;A:&lt;/strong&gt; Some JRE's are not bundled with complete security files (needed by Chipster for SSL). Installing "Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files" should fix it. They can be installed using your system's package manager (if available there) or from &lt;a href="http://java.sun.com/javase/downloads/index_jdk5.jsp." rel="nofollow"&gt;http://java.sun.com/javase/downloads/index_jdk5.jsp.&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; Attempts to start client always end with: &lt;em&gt;"fi.csc.microarray.MicroarrayException: could not connect to message broker at ssl://chipster.csc.fi:61617 (Could not connect to broker URL: ssl://chipster.csc.fi:61617. Reason: java.net.ConnectException: Connection timed out: connect)"&lt;/em&gt;.&lt;br /&gt;
&lt;strong&gt;A:&lt;/strong&gt; If broker is running properly, the reason is a firewall blocking communication between servers and client. To configure firewall, the default configuration of Chipster needs port 61616 (TCP) or 61617 (SSL) for messaging and port 8080 (HTTP) for file transfers. Also make sure that Java is not configured to use a non-compliant proxy server for HTTP. &lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aleksi Kallio</dc:creator><pubDate>Thu, 26 Jun 2014 06:41:53 -0000</pubDate><guid>https://sourceforge.net23c4ed98b4aa454d6446e9c02ab4260fd86b8c0f</guid></item></channel></rss>