changeset 11:015f2dcc2510 draft

Uploaded
author ric
date Thu, 22 Sep 2016 08:33:51 -0400
parents d84735cff8ed
children 8fdf5996c0fb
files boh/biosample.xml boh/birth_data.xml boh/data_collection.xml boh/data_object.xml boh/data_sample.xml boh/device.xml boh/diagnosis.xml boh/enrollment.xml boh/group.xml boh/illumina_bead_chip_measures.xml boh/importer.py boh/individual.xml boh/laneslot.xml boh/marker_alignment.xml boh/marker_definition.xml boh/markers_set.xml boh/samples_container.xml boh/sequencing_data_sample.xml boh/study.xml boh/unauthorized_access.py boh/vessels_collection.xml
diffstat 21 files changed, 2528 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/biosample.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,247 @@
+<tool id="vl_import_biosample" name="VLI.biosample">
+  <description>import BioSample definitions within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if $advanced_configuration.configuration_level == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=${input}
+    --ofile=${output}
+    --report_file=${report}
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    #if $blocking_validation
+      --blocking-validator
+    #end if
+    biosample
+    #if str($study) != 'use_provided'
+      --study ${study}
+    #end if
+    #if str($source_type) != 'use_provided'
+      --source-type ${source_type}
+    #end if
+    #if str($vessel_type_selector.vessel_type) != 'use_provided'
+      --vessel-type ${vessel_type_selector.vessel_type}
+    #end if
+    #if str($vessel_content) != 'use_provided'
+      --vessel-content=${vessel_content}
+    #end if
+    #if str($vessel_status) != 'use_provided'
+      --vessel-status=${vessel_status}
+    #end if
+    #if str($vessel_type_selector) == 'IlluminaBeadChipArray'
+        #if str($vessel_type_selector.assay_type) != 'use_provided'
+            --bead-chip-assay-type=${vessel_type_selector.assay_type}
+        #end if
+    #end if
+  </command>  
+
+  <inputs>
+    <param format="tabular" name="input" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+
+    <param name="study" type="select" label="Context study" 
+	   help="Choose from the already defined studies. See below.">    
+      <options from_parameter="tool.app.known_studies" 
+	       transform_lines="[ &quot;%s%s%s:%s&quot; 
+                                  % ( l[0], self.separator, l[0], l[1][:40] ) 
+                                  for l in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records provide study labels" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <param name="source_type" type="select"
+	   label="type of the source object"
+	   help="Choose from the legal types. See below.">
+      <option value="use_provided" selected="true">
+      Use what provided by record</option>
+      <option value="Tube">Tube</option>
+      <option value="PlateWell">PlateWell</option>
+      <option value="Individual">Individual</option>
+      <option value="NO_SOURCE">No source provided</option>
+    </param>
+
+    <conditional name="vessel_type_selector">
+        <param name="vessel_type" type="select"
+	      label="type of the vessel object"
+	      help="Choose from the legal types. See below.">
+            <option value="use_provided" selected="true">
+                Use what provided by record
+            </option>
+            <option value="Tube">Tube</option>
+            <option value="PlateWell">PlateWell</option>
+            <option value="IlluminaBeadChipArray">IlluminaBeadChipArray</option>
+        </param>
+        <when value="IlluminaBeadChipArray">
+            <param name="assay_type" type="select" label="Illumina Bead Chip Array Assay type"
+                   help="Choose from the following assay types">
+                <options from_parameter="tool.app.known_illumina_beadchip_assay_type"
+                         transform_lines="[ &quot;%s%s%s&quot;
+                                          % (o[1], self.separator, o[1])
+                                          for o in obj ]">
+                    <column name="value" index="0"/>
+                    <column name="name" index="1"/>
+                    <filter type="sort_by" column="0"/>
+                    <filter type="add_value" name="Records provide assay type"
+                            value="use_provided" index="0"/>
+                </options>
+            </param>
+        </when>
+    </conditional>
+
+    <param name="vessel_content" type="select" label="Vessel content" 
+	   help="Choose from one of the available values. See below.">    
+      <options from_parameter="tool.app.kb.VesselContent.__enums__" 
+	       transform_lines="[ &quot;%s%s%s&quot; 
+                                  % (e.enum_label(),
+                                     self.separator,
+                                     e.enum_label()) 
+                                  for e in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records provide vessel content" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+    <param name="vessel_status" type="select" label="Vessel status" 
+	   help="Choose from one of the available values. See below.">    
+      <options from_parameter="tool.app.kb.VesselStatus.__enums__" 
+	       transform_lines="[ &quot;%s%s%s&quot; 
+                                  % (e.enum_label(),
+                                     self.separator,
+                                     e.enum_label()) 
+                                  for e in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records provide vessel status" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <conditional name="extra_fields">
+      <param name="enabled" type="select" 
+	     label="Enable extra optional fields">
+	<option value="no" selected="true">no</option>	
+	<option value="yes">yes</option>
+      </param>
+      <when value="no"/>
+      <when value="yes">
+	<param name="current_volume" type="float"
+	       value="20" 
+	       help="fluid (FIXME UNITS) currently held in the vessel">
+	  <validator type="in_range" message="Volume must be positive" 
+		     min="0" max="inf"/>
+	</param>
+	<param name="used_volume" type="float"
+	       value="20" 
+	       help="amount of source fluid (FIXME UNITS) used">
+	  <validator type="in_range" message="Volume must be positive" 
+		     min="0" max="inf"/>
+	</param>
+      </when>
+    </conditional>
+
+    <!-- ************************************************** -->
+    <param name="blocking_validation" type="boolean" checked="false"
+	   label="Blocking validation"
+	   help="When this check is enabled, if at least one record doesn't pass importer's validation, the entire import procedure will be blocked"/>
+
+    <conditional name="wait_for_trigger">
+      <param name="enable_trigger" type="boolean" checked="false"
+	     label="Wait for another tool to end before running this tool"/>
+      <when value="true">
+	<param format="txt" name="trigger_file" type="data"
+	       label="Select the LOG file that will be used as trigger"/>
+      </when>
+    </conditional>
+
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What? Me_worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="output" label="${tool.name}.mapping"/>
+    <data format="tabular" name="report" label="${tool.name}.report"/>
+    <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+A biosample record will have, at least, the following fields::
+
+  label     source
+  I001-bs-2 V932814892
+  I002-bs-2 V932814892
+  I003-bs-2 None
+
+Where label is the label of the biosample container. If a 'None' value
+has been passed in the source column, the biosample will be imported
+as a new unlinked object into the biobanks. Another example, this time
+involving DNA samples::
+
+  label    source     used_volume current_volume activation_date
+  I001-dna V932814899 0.3         0.2            17/03/2007
+  I002-dna V932814900 0.22        0.2            21/01/2004
+
+A special case is when records refer to biosamples contained in plate
+wells. In this case, an additional column must be present with the VID
+of the corresponding TiterPlate object. For instance::
+
+  plate  label source
+  V39030 A01   V932814892
+  V39031 A02   V932814893
+  V39032 A03   V932814894
+
+where the label column is now the label of the well position.
+
+If row and column (optional) are provided, the program will use them;
+if they are not provided, it will infer them from label (e.g., J01 ->
+row=10, column=1). Missing labels will be generated as::
+
+  '%s%03d' % (chr(row+ord('A')-1), column)
+
+A badly formed label will result in the rejection of the record; the
+same will happen if label, row and column are inconsistent. The well
+will be filled by current_volume material produced by removing
+used_volume material taken from the bio material contained in the
+vessel identified by source. row and column are base 1.
+
+If the sample is a IlluminaBeadChipArray the plate column used in the
+PlateWell case will become a illumina_array column and a new column, named
+bead_chip_assay_type, is required::
+
+  illumina_array  label   source   bead_chip_assay_type
+  V1351235        R01C01  V412441  HUMANEXOME_12V1_B
+  V1351235        R01C02  V351151  HUMANEXOME_12V1_B
+  V1351235        R02C01  V345115  HUMANEXOME_12V1_B
+  </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/birth_data.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,82 @@
+<tool id="vl_import_birth_data" name="VLI.birth_data">
+  <description>import diagnosis data within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if $advanced_configuration.configuration_level == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=$input
+    --report_file=$report
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    birth_data
+    #if str($study) != 'use_provided'
+      --study ${study}
+    #end if 
+  </command>  
+
+  <inputs>
+    <param format="tabular" name="input" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+
+    <param name="study" type="select" label="Context study" 
+	   help="Choose from the already defined studies. See below.">    
+      <options from_parameter="tool.app.known_studies" 
+	       transform_lines="[ &quot;%s%s%s:%s&quot; 
+                                  % ( l[0], self.separator, l[0], l[1][:40] ) 
+                                  for l in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records provide study labels" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <!-- ************************************************** -->
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What?Me worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="report" label="${tool.name}.report"/>
+    <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+Will read in a tsv file with the following columns::
+
+  study   individual   timestamp      birth_date   birth_place
+  ASTUDY  V1234        1310057541608  12/03/1978   006171
+  ASTUDY  V14112       1310057541608  25/04/1983   006149
+  ASTUDY  V1241        1310057541608  12/03/2001   006172
+  .....
+
+where birth_place is a valid ISTAT code for an Italian city or a
+foreign Country and birth_date must have the dd/mm/YYYY format.
+  </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/data_collection.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,125 @@
+<tool id="vl_import_data_collection" name="VLI.data_collection">
+  <description>import DataCollection definitions within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if $advanced_configuration.configuration_level == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=$input
+    --ofile=$output
+    --report_file=$report
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    #if $blocking_validation
+      --blocking-validator
+    #end if
+    data_collection
+    #if str($study) != 'use_provided'
+      --study ${study}
+    #end if 
+    #if str($data_sample_type) != 'use_provided'
+      --data_sample-type=${data_sample_type}
+    #end if
+    #if str($label)
+      --label=${label}
+    #end if
+  </command>  
+
+  <inputs>
+    <param format="tabular" name="input" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+
+    <param name="study" type="select" label="Context study" 
+	   help="Choose from the already defined studies. See below.">    
+      <options from_parameter="tool.app.known_studies" 
+	       transform_lines="[ &quot;%s%s%s:%s&quot; 
+                                  % ( l[0], self.separator, l[0], l[1][:40] ) 
+                                  for l in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records provide study labels" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <param name="label" size="20" type="text" value="" 
+	   label="collection label"/>
+
+    <param name="data_sample_type" type="select"
+	   label="Type of the source"
+	   help="Choose from the following. See below.">
+      <option value="use_provided"       selected="true">
+      Use record provided</option>
+      <option value="DataSample">DataSample</option>
+    </param>
+
+
+    <!-- ************************************************** -->
+    <param name="blocking_validation" type="boolean" checked="false"
+	   label="Blocking validation"
+	   help="When this check is enabled, if at least one record doesn't pass importer's validation, the entire import procedure will be blocked"/>
+
+    <conditional name="wait_for_trigger">
+      <param name="enable_trigger" type="boolean" checked="false"
+	     label="Wait for another tool to end before running this tool"/>
+      <when value="true">
+	<param format="txt" name="trigger_file" type="data"
+	       label="Select the LOG file that will be used as trigger"/>
+      </when>
+    </conditional>
+
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What? Me worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="output" label="${tool.name}.mapping"/>
+    <data format="tabular" name="report" label="${tool.name}.report"/>
+    <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+Will read in a tsv file with the following columns::
+
+  study    label data_sample
+  BSTUDY   dc-01 V0390290
+  BSTUDY   dc-01 V0390291
+  BSTUDY   dc-02 V0390292
+  BSTUDY   dc-02 V390293
+  ...
+
+This will create new DataCollection(s), whose label is defined by the
+label column, and link to it, using DataCollectionItem objects,
+the DataSample object(s) identified by data_sample (a VID).
+
+Records that point to an unknown DataSample will abort the data
+collection loading. Previously seen collections will be noisily
+ignored. It is not legal to use the importer to add items to a
+previously known collection.
+  </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/data_object.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,111 @@
+<tool id="vl_import_data_object" name="VLI.data_object">
+  <description>import DataObject definitions within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if $advanced_configuration.configuration_level == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=$input
+    --ofile=$output
+    --report_file=$report
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    #if $blocking_validation
+      --blocking-validator
+    #end if
+    data_object
+    #if str($study) != 'use_provided'
+      --study ${study}
+    #end if 
+    #if str($mimetype) != 'use_provided'
+      --mimetype=${mimetype}
+    #end if
+  </command>  
+
+  <inputs>
+    <param format="tabular" name="input" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+
+    <param name="study" type="select" label="Context study" 
+	   help="Choose from the already defined studies. See below.">    
+      <options from_parameter="tool.app.known_studies" 
+	       transform_lines="[ &quot;%s%s%s:%s&quot; 
+                                  % ( l[0], self.separator, l[0], l[1][:40] ) 
+                                  for l in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records provide study labels" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <param name="mimetype" type="select"
+	   label="mimetype for the data object."
+	   help="Choose from the following. See below.">
+      <option value="use_provided"       selected="true">
+      Use record provided</option>
+      <option value="x-vl/affymetrix-cel">x-vl/affymetrix-cel</option>
+    </param>
+
+    <!-- ************************************************** -->
+    <param name="blocking_validation" type="boolean" checked="false"
+	   label="Blocking validation"
+	   help="When this check is enabled, if at least one record doesn't pass importer's validation, the entire import procedure will be blocked"/>
+
+    <conditional name="wait_for_trigger">
+      <param name="enable_trigger" type="boolean" checked="false"
+	     label="Wait for another tool to end before running this tool"/>
+      <when value="true">
+	<param format="txt" name="trigger_file" type="data"
+	       label="Select the LOG file that will be used as trigger"/>
+      </when>
+    </conditional>
+
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What? Me worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="output" label="${tool.name}.mapping"/>
+    <data format="tabular" name="report" label="${tool.name}.report"/>
+    <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+Will read in a tsv file with the following columns::
+
+   study path data_sample mimetype size sha1
+
+   TEST01 file:/share/fs/v039303.cel V2902 x-vl/affymetrix-cel 39090 E909090
+  ....
+
+Records that point to an unknown data sample will be noisily
+ignored. The same will happen to records that have the same path of a
+previously seen data_object
+  </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/data_sample.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,166 @@
+<tool id="vl_import_data_sample" name="VLI.data_sample">
+  <description>import DataSample definitions within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if $advanced_configuration.configuration_level == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=$input
+    --ofile=$output
+    --report_file=$report
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    #if $blocking_validation
+      --blocking-validator
+    #end if
+    data_sample
+    #if str($study) != 'use_provided'
+      --study ${study}
+    #end if 
+    #if str($source_type) != 'use_provided'
+      --source-type=${source_type}
+    #end if
+    #if str($device_type) != 'use_provided'
+      --device-type=${device_type}
+    #end if
+    #if str($scanner) != 'use_provided'
+      --scanner=${scanner}
+    #end if
+  </command>  
+
+  <inputs>
+    <param format="tabular" name="input" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+
+    <param name="study" type="select" label="Context study" 
+	   help="Choose from the already defined studies. See below.">    
+      <options from_parameter="tool.app.known_studies" 
+	       transform_lines="[ &quot;%s%s%s:%s&quot; 
+                                  % ( l[0], self.separator, l[0], l[1][:40] ) 
+                                  for l in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records provide study labels" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <param name="source_type" type="select"
+	   label="Type of the source"
+	   help="Choose from the following. See below.">
+      <option value="use_provided" selected="true">
+	Use record provided
+      </option>
+      <option value="Individual">Individual</option>
+      <option value="Tube">Tube</option>
+      <option value="PlateWell">PlateWell</option>
+      <option value="DataSample">DataSample</option>
+      <option value="DataCollectionItem">DataCollectionItem</option>
+      <option value="IlluminaBeadChipArray">IlluminaBeadChipArray</option>
+      <option value="IlluminaBeadChipMeasures">IlluminaBeadChipMeasures</option>
+    </param>
+
+    <param name="device_type" type="select"
+	   label="Type of the device"
+	   help="Choose from the following. See below.">
+      <option value="use_provided"       selected="true">
+      Use record provided</option>
+      <option value="Device">Device</option>
+      <option value="Chip">Chip</option>
+      <option value="SoftwareProgram">SoftwareProgram</option>
+    </param>
+
+    <param name="scanner" type="select" label="Scanner used" 
+	   help="Choose from the possible scanners. See below.">    
+      <options from_parameter="tool.app.known_scanners" 
+	       transform_lines="[ &quot;%s%s%s(%s)&quot; 
+                                  % ( l[0], self.separator, l[1], l[2]) 
+                                  for l in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="1"/>
+        <filter type="add_value" name="Records provide scanner ids" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <!-- ************************************************** -->
+    <param name="blocking_validation" type="boolean" checked="false"
+	   label="Blocking validation"
+	   help="When this check is enabled, if at least one record doesn't pass importer's validation, the entire import procedure will be blocked"/>
+
+    <conditional name="wait_for_trigger">
+      <param name="enable_trigger" type="boolean" checked="false"
+	     label="Wait for another tool to end before running this tool"/>
+      <when value="true">
+	<param format="txt" name="trigger_file" type="data"
+	       label="Select the LOG file that will be used as trigger"/>
+      </when>
+    </conditional>
+
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What? Me worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="output" label="${tool.name}.mapping"/>
+    <data format="tabular" name="report" label="${tool.name}.report"/>
+    <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+Will read in a tsv file with the following columns::
+
+  study  label source device device_type scanner options
+  ASTUDY foo01 v03909 v9309  Chip        v99020  celID=0009099090
+  ASTUDY foo02 v03909 v99022 Scanner     v99022  conf1=...,conf2=...
+  ....
+
+In this example, the first line corresponds to a dataset obtained by
+using chip v9309 on scanner v99020, while the second datasample has
+been obtained using a technology directly using a scanner, e.g., an
+Illumina HiSeq 2000. The '''scanner''' column is there as a
+convenience to support a more detailed description of a chip-based
+acquisition.
+
+The general strategy is to decide what data objects should be
+instantiated by looking at the chip column and at its corresponding
+maker,model,release.
+
+The optional column '''scanner''', the vid of the scanner device, is
+used in cases, such as Affymetrix genotyping, where it is relevant.
+
+It is also possible to import DataSample(s) that are the results of
+processing other DataSample(s). Here is an example::
+
+  study  label source device device_type     options
+  ASTUDY foo01 v03909 v99021 SoftwareProgram conf1=...,conf2=...
+  ASTUDY foo02 v03909 v99021 SoftwareProgram conf1=...,conf2=...
+  ....
+  </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/device.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,129 @@
+<tool id="vl_import_device" name="VLI.device">
+  <description>import Device definitions within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if $advanced_configuration.configuration_level == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=$input
+    --ofile=$output
+    --report_file=$report
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    #if $blocking_validation
+      --blocking-validator
+    #end if
+    device
+    #if str($study) != 'use_provided'
+      --study ${study}
+    #end if 
+    #if str($device_type) != 'use_provided'
+      --device-type=${device_type}
+    #end if
+    #if str($maker)
+      --maker=${maker}
+    #end if
+    #if str($model)
+      --model=${model}
+    #end if
+    #if str($release)
+      --relese=${release}
+    #end if
+  </command>  
+
+  <inputs>
+    <param format="tabular" name="input" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+
+    <param name="study" type="select" label="Context study" 
+	   help="Choose from the already defined studies. See below.">    
+      <options from_parameter="tool.app.known_studies" 
+	       transform_lines="[ &quot;%s%s%s:%s&quot; 
+                                  % ( l[0], self.separator, l[0], l[1][:40] ) 
+                                  for l in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records provide study labels" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <param name="device_type" type="select"
+	   label="type of the device"
+	   help="Choose from the following. See below.">
+      <option value="use_provided"       selected="true">
+      Use record provided</option>
+      <option value="Chip">Chip</option>
+      <option value="Scanner">Scanner</option>
+      <option value="SoftwareProgram">SoftwareProgram</option>
+      <option value="GenotypingProgram">GenotypingProgram</option>
+    </param>
+
+    <param name="maker" size="40" type="text" value=""  label="Device maker"/>
+    <param name="model" size="40" type="text" value=""  label="Device model"/>
+    <param name="release" size="40" type="text" value="" 
+	   label="Device release"/>
+
+    <!-- ************************************************** -->
+    <param name="blocking_validation" type="boolean" checked="false"
+	   label="Blocking validation"
+	   help="When this check is enabled, if at least one record doesn't pass importer's validation, the entire import procedure will be blocked"/>
+
+    <conditional name="wait_for_trigger">
+      <param name="enable_trigger" type="boolean" checked="false"
+	     label="Wait for another tool to end before running this tool"/>
+      <when value="true">
+	<param format="txt" name="trigger_file" type="data"
+	       label="Select the LOG file that will be used as trigger"/>
+      </when>
+    </conditional>
+
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What?Me worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="output" label="${tool.name}.mapping"/>
+    <data format="tabular" name="report" label="${tool.name}.report"/>
+    <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+Will read in a tsv file with the following columns::
+
+  study  device_type    label   barcode maker model release location
+  BSTUDY Scanner pula01  8989898 Affymetrix  GeneChip Scanner 3000 7G  Pula bld. 5
+  BSTUDY Chip    chip001 8329482 Affymetrix  Genome-Wide Human SNP Array 6.0  None
+
+All devices have a type, a label, an optional barcode, a maker, a
+model, a release and an optional physical location. In the example
+above, in the first line we have defined a scanner, which is
+physically located in the building 5 lab in Pula.  The second line
+defines a chip.
+  </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/diagnosis.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,79 @@
+<tool id="vl_import_diagnosis" name="VLI.diagnosis">
+  <description>import diagnosis data within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if $advanced_configuration.configuration_level == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=$input
+    --report_file=$report
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    diagnosis
+    #if str($study) != 'use_provided'
+      --study ${study}
+    #end if 
+  </command>  
+
+  <inputs>
+    <param format="tabular" name="input" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+
+    <param name="study" type="select" label="Context study" 
+	   help="Choose from the already defined studies. See below.">    
+      <options from_parameter="tool.app.known_studies" 
+	       transform_lines="[ &quot;%s%s%s:%s&quot; 
+                                  % ( l[0], self.separator, l[0], l[1][:40] ) 
+                                  for l in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records provide study labels" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <!-- ************************************************** -->
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What?Me worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="report" label="${tool.name}.report"/>
+    <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+Will read in a tsv file with the following columns::
+
+   study  individual timestamp      diagnosis
+   ASTUDY V899       1310057541608  icd10-cm:E10
+   ASTUDY V899       1310057541608  icd10-cm:G35
+   ASTYDY V1806      1310057541608  exclusion-problem_diagnosis
+   ...
+  </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/enrollment.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,108 @@
+<tool id="vl_import_enrollment" name="VLI.enrollment">
+  <description>Create new enrollmnents for existing individuals within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__) == 1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if str($advanced_configuration.configuration_level) == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=$input
+    --ofile=$output
+    --report_file=$report
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    #if $blocking_validation
+      --blocking-validator
+    #end if
+    enrollment
+    #if str($study_label) != 'use_provided'
+      --study=$study_label
+    #end if
+  </command>
+
+  <inputs>
+    <param format="tabular" name="input" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+
+    <param name="study_label" type="select" label="Context study"
+	   help="Choose from already defined studies. See below.">
+      <options from_parameter="tool.app.known_studies"
+	       transform_lines="[ &quot;%s%s%s:%s&quot;
+	                          % (l[0], self.separator, l[0], l[1][:40] )
+				  for l in obj ]">
+	<column name="value" index="0"/>
+	<column name="name" index="1"/>
+	<filter type="sort_by" column="0"/>
+	<filter type="add_value" name="Records will provide study labels"
+		value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <!-- ************************************************** -->
+    <param name="blocking_validation" type="boolean" checked="false"
+	   label="Blocking validation"
+	   help="When this check is enabled, if at least one record doesn't pass importer's validation, the entire import procedure will be blocked"/>
+
+    <conditional name="wait_for_trigger">
+      <param name="enable_trigger" type="boolean" checked="false"
+	     label="Wait for another tool to end before running this tool"/>
+      <when value="true">
+	<param format="txt" name="trigger_file" type="data"
+	       label="Select the LOG file that will be used as trigger"/>
+      </when>
+    </conditional>
+
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select"
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost"
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root"
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What?Me worry?"
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="output" label="${tool.name}.mapping"/>
+    <data format="tabular" name="report" label="${tool.name}.report"/>
+    <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+Import of new enrollments related to existing individuals.
+An enrollment is characterized by the following fields::
+
+ source                              study  label
+ V044DE795E7F9F42FEB9855288CF577A77  xxx    id1
+ V06C59B915C0FD47DABE6AE02C731780AF  xxx    id2
+ V01654DCFC5BB640C0BB7EE088194E629D  xxx    id3
+
+where source must be the VID of an existing Individual object, study a
+label of an existing Study object and label the enrollment code for
+the patient in the study.
+
+The enrollment sub-operation will retrieve the source individual from
+the DB, create a new enrollment related to it and output the VIDs of
+newly created enrollments. It is not possible to create two
+enrollments with the same code related to the same study, nor is it
+possible to enroll a patient twice in the same study, even with
+different codes.
+  </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/group.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,75 @@
+<tool id="vl_import_group" name="VLI.group">
+  <description>Create a new group within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if str($advanced_configuration.configuration_level) == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=$input1
+    --ofile=$output1
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    group
+   #if str($group_label) != ''
+    --group=$group_label
+   #end if
+  </command>  
+
+  <inputs>
+    <param format="tabular" name="input1" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+
+    <param name="group_label" size="40" type="text" 
+	   value="" 
+	   label="New group label"/>
+
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" 
+	       value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" 
+	       value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" 
+	       value="What?Me worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+      <when/>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="output1" label="${tool.name}.mapping"/>
+    <data format="txt" name="logfile"     label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+Will create a new group of individuals from a file with the following columns::
+
+   study   label   individual
+   foo     I0000   V06C59B915C0FD47DABE6AE02C731780AF
+   foo     I0001   V0B718B77691B145BFA8901FCCF6B37998
+   ...
+
+where the column study is optional (it can be provided via the
+group_label param). Labels should be unique within the file and the
+individual field should contain VIDs of existing (within omero/vl)
+Individual objects.
+  </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/illumina_bead_chip_measures.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,127 @@
+<tool id="vl_import_illumina_bead_chip_measures" name="VLI.illumina_bead_chip_measures">
+    <description>import IlluminaBeadChipMeasures definitions within OMERO</description>
+    <command interpreter="python">
+        #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+        #else #unauthorized_access.py
+        #end if
+        #if $advanced_configuration.configuration_level == 'advanced'
+            --host=$advanced_configuration.vl_host
+            --user=$advanced_configuration.vl_user
+            --passwd=$advanced_configuration.vl_passwd
+        #end if
+        --operator=galaxy
+        --ifile=${input}
+        --ofile=${output}
+        --report_file=${report}
+        --loglevel=$__app__.config.vl_loglevel
+        --logfile=${logfile}
+        #if $blocking_validation
+            --blocking-validator
+        #end if
+        illumina_bead_chip_measures
+        #if str($study) != 'use_provided'
+            --study=${study}
+        #end if
+        #if str($source_type) != 'use_provided'
+            --source_type=${source_type}
+        #end if
+        #if str($action_category) != 'use_provided'
+            --action_category=${action_category}
+        #end if
+    </command>
+
+    <inputs>
+        <param format="tabular" name="input" type="data"
+               label="A tabular dataset with the following columns..."/>
+
+        <param name="study" type="select" label="Context study"
+               help="Choose from the already defined studies. See below.">
+            <options from_parameter="tool.app.known_studies"
+                     transform_lines="[ &quot;%s%s%s:%s&quot;
+                                        % ( l[0], self.separator, l[0], l[1][:40] )
+                                        for l in obj]">
+                <column name="value" index="0"/>
+                <column name="name" index="1"/>
+                <filter type="sort_by" column="0"/>
+                <filter type="add_value" name="Records provide study labels"
+                        value="use_provided" index="0"/>
+            </options>
+        </param>
+
+        <param name="source_type" type="select"
+               label="Type of the source"
+               help="Choose from the following source classes. See below.">
+            <option value="use_provided" selected="true">Use record provided</option>
+            <option value="IlluminaBeadChipArray">IlluminaBeadChipArray</option>
+        </param>
+
+        <param name="action_category" type="select"
+               label="Action category"
+               help="Choose from the following action categories. See below.">
+            <options from_parameter="tool.app.known_action_categories"
+                     transform_lines="[ &quot;%s%s%s&quot;
+                                        % ( l[1], self.separator, l[1] )
+                                        for l in obj]">
+                <column name="value" index="0"/>
+                <column name="name" index="1"/>
+                <filter type="sort_by" column="0"/>
+                <filter type="add_value" name="Records provide action category"
+                        value="use_provided" index="0"/>
+            </options>
+        </param>
+
+        <!-- ********************************************** -->
+        <param name="blocking_validation" type="boolean" checked="false"
+               label="Blocking validation"
+               help="When this check is enabled, if at least one record doesn't pass importer's validation, the entire import procedure will be blocked"/>
+
+        <conditional name="wait_for_trigger">
+            <param name="enable_trigger" type="boolean" checked="false"
+                   label="Wait for another tool to end before running this tool"/>
+            <when value="true">
+                <param format="txt" name="trigger_file" type="data"
+                       label="Select the LOG file that will be used as trigger"/>
+            </when>
+        </conditional>
+
+        <conditional name="advanced_configuration">
+            <param name="configuration_level" type="select"
+                   label="Configuration level">
+                <option value="default" selected="true">Default configuration</option>
+                <option value="advanced">Advanced configuration</option>
+            </param>
+            <when value="default"/>
+            <when value="advanced">
+                <param name="vl_host" size="40" type="text" value="biobank05.crs4.it"
+                       label="OMERO host"/>
+                <param name="vl_user" size="40" type="text" value="galaxy"
+                       label="OMERO user"/>
+                <param name="vl_passwd" size="40" type="text" value="What? Me worry?"
+                       label="OMERO password"/>
+            </when>
+        </conditional>
+    </inputs>
+
+    <outputs>
+        <data format="tabular" name="output" label="${tool.name}.mapping"/>
+        <data format="tabular" name="report" label="${tool.name}.report"/>
+        <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+    </outputs>
+
+    <help>
+Will read a tsv file with the following columns::
+
+  study   label           red_channel     green_channel     source         source_type
+  ASTUDY  CHIP_01_R01C01  V1415151235513  V135135661356161  V351351351551  IlluminaBeadChipArray
+  ASTUDY  CHIP_01_R01C02  V2346262462462  V112395151351623  V135113513223  IlluminaBeadChipArray
+  ASTUDY CHIP_01_R02C01   V1351362899135  V913977551235981  V100941215192  IlluminaBeadChipArray
+
+This will create new IlluminaBeadChipMeasures whose labels are defined in the
+label column.
+    </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/importer.py	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,7 @@
+# BEGIN_COPYRIGHT
+# END_COPYRIGHT
+
+import sys
+from bl.vl.app.importer.main import main
+
+main(sys.argv[1:])
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/individual.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,99 @@
+<tool id="vl_import_individual" name="VLI.individual">
+  <description>import individual definitions within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if $advanced_configuration.configuration_level == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=$input
+    --ofile=$output
+    --report_file=$report
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=$logfile
+    #if $blocking_validation
+      --blocking-validator
+    #end if
+    individual
+    #if str($study) != 'use_provided'
+      --study $study
+    #end if
+  </command>  
+
+  <inputs>
+    <param format="tabular" name="input" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+    <param name="study" type="select" label="Context study" 
+	   help="Choose from the already defined studies. See below.">    
+      <options from_parameter="tool.app.known_studies" 
+	       transform_lines="[ &quot;%s%s%s:%s&quot; 
+                                  % ( l[0], self.separator, l[0], l[1][:40] ) 
+                                  for l in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records will provide study labels" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <!-- ************************************************** -->
+    <param name="blocking_validation" type="boolean" checked="false"
+	   label="Blocking validation"
+	   help="When this check is enabled, if at least one record doesn't pass importer's validation, the entire import procedure will be blocked"/>
+
+     <conditional name="wait_for_trigger">
+      <param name="enable_trigger" type="boolean" checked="false"
+	     label="Wait for another tool to end before running this tool"/>
+      <when value="true">
+	<param format="txt" name="trigger_file" type="data"
+	       label="Select the LOG file that will be used as trigger"/>
+      </when>
+    </conditional>   
+
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What?Me worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="output" label="${tool.name}.mapping"/>
+    <data format="tabular" name="report" label="${tool.name}.report"/>
+    <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+Will import a stream of new individual definitions defined by the
+following columns::
+
+  label gender   father mother
+  id2   male   id4    id5
+  id3   female None   None
+  ....
+
+It is not possible to import the same individual twice: the related
+file rows will be noisily ignored.
+  </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/laneslot.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,127 @@
+<tool id="vl_import_laneslot" name="VLI.laneslot">
+  <description>import LaneSlot definitions within omero.biobank</description>
+  <command interpreter="python">
+    importer.py
+    #if $advanced_configuration.configuration_level == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=${in_file}
+    --ofile=${out_file}
+    --report_file=${report_file}
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${log_file}
+    #if $blocking_validation
+      --blocking-validator
+    #end if
+    laneslot
+    #if str($study) != 'use_provided'
+      --study=${study}
+    #end if
+    #if str($source_type) != 'use_provided'
+      --source_type=${source_type}
+    #end if
+    #if str($content) != 'use_provided'
+      --content=${content}
+    #end if
+  </command>
+
+  <inputs>
+    <param format="tabular" name="in_file" type="data"
+	   label="A tabular dataset with the following columns..."/>
+
+    <param name="study" type="select" label="Context study"
+	   help="Choose from the already defined studies. See below.">
+      <options from_parameter="tool.app.known_studies"
+	       transform_lines="[ &quot;%s%s%s:%s&quot;
+	                          % ( l[0], self.separator, l[0], l[1][:40] )
+				  for l in obj ]">
+	<column name="value" index="0"/>
+	<column name="name" index="1"/>
+	<filter type="sort_by" column="0"/>
+	<filter type="add_value" name="Records provide study labels"
+		value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <param name="source_type" type="select"
+	   label="Type of the source object"
+	   help="Choose from the legal types. Seel below.">
+      <option value="use_provided" selected="true">
+	Records provide source type
+      </option>
+      <option value="Tube">Tube</option>
+      <option value="PlateWell">PlateWell</option>
+      <option value="Individual">Individual</option>
+    </param>
+
+    <param name="content" type="select"
+	   label="Type of content"
+	   help="Choose from the legal types. See below.">
+      <option value="use_provided" selected="true">
+	Records provide content type
+      </option>
+      <option value="DNA">DNA</option>
+      <option value="RNA">RNA</option>
+    </param>
+
+    <!-- ************************************************** -->
+    <param name="blocking_validation" type="boolean" checked="false"
+	   label="Blocking validation"
+	   help="When this check is enabled, if at least one record doesn't pass importer's validation, the entire import procedure will be blocked"/>
+
+    <conditional name="wait_for_trigger">
+      <param name="enable_trigger" type="boolean" checked="false"
+	     label="Wait for another tool to end before running this tool"/>
+      <when value="true">
+	<param format="txt" name="trigger_file" type="data"
+	       label="Select the LOG file that will be used as trigger"/>
+      </when>
+    </conditional>   
+
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What? Me_worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="out_file" label="${tool.name}.mapping"/>
+    <data format="tabular" name="report_file" label="${tool.name}.report"/>
+    <data format="txt" name="log_file" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+A lane slot record will have the following fields::
+
+  lane     tag     content    source
+  V123411  ATCACG  DNA        V4512415
+  V123411  CGATGT  DNA        V1415512
+  V412511          DNA        V1909012
+  V661251  TGACCA  DNA        V1123111
+  V661251  CTTGTA  DNA        V1211141
+  ....
+
+the content column can be option if passed as script's input value,
+tag column is optional too.
+  </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/marker_alignment.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,140 @@
+<tool id="vl_import_marker_alignment" name="VLI.marker_alignment">
+  <description>import marker aligments within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if $advanced_configuration.configuration_level == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=$input
+    --report_file=$report
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    marker_alignment
+    #if str($study) != 'use_provided'
+      --study ${study}
+    #end if 
+    #if str($ref_genome)
+      --ref-genome ${reg_genome}
+    #end if 
+    #if str($message)
+      --message ${message}
+    #end if 
+  </command>  
+
+  <inputs>
+    <!-- use a special format to automatically pick up the ref-gen -->
+    <param format="tabular" name="input" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+
+    <param name="study" type="select" label="Context study" 
+	   help="Choose from the already defined studies. See help below.">    
+      <options from_parameter="tool.app.known_studies" 
+	       transform_lines="[ &quot;%s%s%s:%s&quot; 
+                                  % ( l[0], self.separator, l[0], l[1][:40] ) 
+                                  for l in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records provide study labels" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <conditional name="genomeSource">
+      <param name="refGenomeSource"
+	     type="select" 
+	     label="Will you select a reference genome from your history 
+                   or use a built-in index?">
+        <option value="indexed">Use a built-in index</option>
+        <option value="history">Use one from the history</option>
+      </param>
+      <when value="indexed">
+        <param name="indices" type="select" label="Select a reference genome">
+          <options from_data_table="libbwa_indexes">
+            <filter type="sort_by" column="2" />
+            <validator type="no_options" message="No indexes are available" />
+          </options>
+        </param>
+      </when>
+      <when value="history">
+        <param name="ownFile" type="data" 
+	       format="fasta" metadata_name="dbkey" 
+	       label="Select a reference from history" />
+      </when>
+    </conditional>
+    <conditional name="paired">
+      <param name="sPaired" type="select" label="Is this library mate-paired?">
+        <option value="single">Single-end</option>
+        <option value="paired">Paired-end</option>
+      </param>
+      <when value="single">
+        <param name="input1" type="data" format="fastqsanger" label="FASTQ file" help="Must have Sanger-scaled quality values with ASCII offset 33" />
+      </when>
+      <when value="paired">
+        <param name="input1" type="data" format="fastqsanger" label="Forward FASTQ file" help="Must have Sanger-scaled quality values with ASCII offset 33" />
+        <param name="input2" type="data" format="fastqsanger" label="Reverse FASTQ file" help="Must have Sanger-scaled quality values with ASCII offset 33" />
+      </when>
+    </conditional>
+
+    <param name="source" size="40" type="text" value="" 
+	   label="source"/>
+    <param name="context" size="40" type="text" value="" 
+	   label="context"/>
+    <param name="release" size="40" type="text" value="" 
+	   label="release"/>
+
+
+    <!-- ************************************************** -->
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What?Me worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="report" label="${tool.name}.report"/>
+    <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+Will read in a tsv file with the following columns::
+
+  marker_vid ref_genome chromosome pos      strand allele copies
+  V0909090   hg18       10         82938938 True   A      1
+  V0909091   hg18       1          82938999 True   A      2
+  V0909092   hg18       1          82938938 True   B      2
+  ...
+
+Since pos is relative to 5', if the marker has been aligned on the
+other strand, it is the responsibility of the aligner app to report
+the actual distance from 5', while, at the same time, registering that
+the SNP has actually been aligned on the other strand.
+
+The chromosome field is an integer field with values in the [1, 26]
+range, with 23-26 representing, respectively, the X chromosome, the Y
+chromosome, the pseudoautosomal regions (XY) and the mitochondrial DNA
+(MT).
+ </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/marker_definition.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,119 @@
+<tool id="vl_import_marker_definition" name="VLI.marker_definition">
+  <description>import Marker definitions within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if $advanced_configuration.configuration_level == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=$input1
+    --ofile=$output1
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    marker_definition
+    #if str($study) != 'use_provided'
+      --study ${study}
+    #end if 
+    --source ${source}
+    --context ${context}
+    --release ${release}
+    --ref-genome  ${ref_genome}
+    --dbsnp-build ${dbsnp_build}
+  </command>  
+
+  <inputs>
+    <param format="tabular" name="input1" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+
+    <param name="study" type="select" label="Context study" 
+	   help="Choose from the already defined studies. See help below.">    
+      <options from_parameter="tool.app.known_studies" 
+	       transform_lines="[ &quot;%s%s%s:%s&quot; 
+                                  % ( l[0], self.separator, l[0], l[1][:40] ) 
+                                  for l in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records provide study labels" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <param name="source" size="40" type="text" value="" 
+	   optional="false"
+	   label="source"/>
+    <param name="context" size="40" type="text" value="" 
+	   optional="false"
+	   label="context"/>
+    <param name="release" size="40" type="text" value="" 
+	   optional="false"
+	   label="release"/>
+    <param name="ref_genome" size="40" type="text" value="" 
+	   optional="false"
+	   label="reference genome"/>
+    <param name="dbsnp_build" size="40" type="integer" value="0"
+	   optional="false"
+	   label="dbSNP build"/>
+
+
+    <!-- ************************************************** -->
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What?Me worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="output1" label="${tool.name}.mapping"/>
+    <data format="txt" name="logfile"     label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+Will read in a tsv file with the following columns::
+
+  label         rs_label   mask                    strand allele_a allele_b
+  SNP_A-1780419 rs6576700  <lflank/>[A/G]<rflank/> TOP    A      G
+  ...
+
+Where label is supposed to be the unique label for this marker in the
+(source, context, release) context, rs_label is the dbSNP db label for
+this snp (it could be the string ``None`` if not defined or not
+known). The column mask contains the SNP definition. The strand column
+could either be the actual 'illumina style' strand used to define the
+alleles in the alleles columns, or the string 'None', which means that
+the alleles in the allele column are defined wrt the mask in the
+mask column.
+
+It will, for each row, convert the mask to the TOP strand following
+Illumina conventions and then save a record for it in VL. The saved
+tuple is (source, context, release, label, rs_label, TOP_mask). There
+are no collision controls.
+
+It will output a a tsv file with the following columns::
+
+   study    label     type    vid
+   ASTUDY   SNP_A-xxx Marker  V000002222
+   ...
+ </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/markers_set.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,102 @@
+<tool id="vl_import_markers_set" name="VLI.markers_set">
+  <description>import Marker definitions within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if $advanced_configuration.configuration_level == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=$input
+    --ofile=$output
+    --report_file=$report
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    markers_set
+    #if str($study) != 'use_provided'
+      --study ${study}
+    #end if 
+    #if str($label)
+      --label ${label}
+    #end if 
+    #if str($maker) != 'use_provided'
+      --maker ${maker}
+    #end if 
+    #if str($model) != 'use_provided'
+      --model ${model}
+    #end if 
+    #if str($release)
+      --release ${release}
+    #end if 
+  </command>  
+
+  <inputs>
+    <param format="tabular" name="input" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+
+    <param name="study" type="select" label="Context study" 
+	   help="Choose from the already defined studies. See help below.">    
+      <options from_parameter="tool.app.known_studies" 
+	       transform_lines="[ &quot;%s%s%s:%s&quot; 
+                                  % ( l[0], self.separator, l[0], l[1][:40] ) 
+                                  for l in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records provide study labels" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <param name="label" size="40" type="text" value="" 
+	   label="label"/>
+    <param name="maker" size="40" type="text" value="" 
+	   label="maker"/>
+    <param name="model" size="40" type="text" value="" 
+	   label="model"/>
+    <param name="release" size="40" type="text" value="" 
+	   label="release"/>
+
+    <!-- ************************************************** -->
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What?Me worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="output" label="${tool.name}.mapping"/>
+    <data format="tabular" name="report" label="${tool.name}.report"/>
+    <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+Will read in a tsv file with the following columns::
+
+  marker_vid   marker_indx allele_flip
+  V902909090  0            False
+  V902909091  1            False
+  V902909092  2            True
+  ...
+ </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/samples_container.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,287 @@
+<tool id="vl_import_samples_container" name="VLI.samples_container">
+  <description>import samples container definitions within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if $advanced_configuration.configuration_level == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=$input
+    --ofile=$output
+    --report_file=$report
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    #if $blocking_validation
+      --blocking-validator
+    #end if
+    samples_container
+    #if str($study) != 'use_provided'
+      --study=${study}
+    #end if
+    #if str($container_type_selector.container_type) != 'use_provided'
+      --container-type=${container_type_selector.container_type}
+      #if str($container_type_selector.container_type) == 'TiterPlate'
+        #if str($container_type_selector.plate_shape) != 'use_provided'
+	      --plate-shape=${container_type_selector.plate_shape}
+	    #end if
+      #elif str($container_type_selector.container_type) == 'FlowCell'
+        #if str($container_type_selector.flow_cell_slots) != 'use_provided'
+	      --number-of-slots=${container_type_selector.flow_cell_slots}
+	    #end if
+      #elif str($container_type_selector.container_type) == 'IlluminaArrayOfArrays'
+        #if str($container_type_selector.ill_shape) != 'use_provided'
+          --plate-shape=${container_type_selector.ill_shape}
+        #end if
+        #if str($container_type_selector.ill_slots) != 'use_provided'
+          --number_of_slots=${container_type_selector.ill_slots}
+        #end if
+        #if str($container_type_selector.array_type) != 'use_provided'
+          --illumina-array-type=${container_type_selector.array_type}
+        #end if
+        #if str($container_type_selector.array_class) != 'use_provided'
+          --illumina-array-class=${container_type_selector.array_class}
+        #end if
+        #if str($container_type_selector.assay_type) != 'use_provided'
+          --illumina-assay-type=${container_type_selector.assay_type}
+        #end if
+      #end if
+    #end if
+    #if str($container_status) != 'use_provided'
+      --container-status=${container_status}
+    #end if
+  </command>  
+
+  <inputs>
+    <param format="tabular" name="input" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+
+    <param name="study" type="select" label="Context study" 
+	   help="Choose from the already defined studies. See below.">    
+      <options from_parameter="tool.app.known_studies" 
+	       transform_lines="[ &quot;%s%s%s:%s&quot; 
+                                  % ( l[0], self.separator, l[0], l[1][:40] ) 
+                                  for l in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records provide study labels" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <conditional name="container_type_selector">
+      <param name="container_type" type="select" label="Container type"
+	     help="Choose from the following container types">
+	<option value="use_provided" selected="true">
+	  Use record provided
+	</option>
+	<option value="TiterPlate">TiterPlate</option>
+	<option value="FlowCell">Flow Cell</option>
+	<option value="Lane">Lane</option>
+    <option value="IlluminaArrayOfArrays">IlluminaArrayOfArrays</option>
+      </param>
+      <when value="TiterPlate">
+	<param name="plate_shape" type="select" label="Titer Plate's shape"
+	       help="Choose from the following shapes">
+	  <option value="use_provided" selected="true">
+	    Use record provided
+	  </option>
+	  <option value="8x12">8 rows x 12 columns</option>
+	  <option value="32x48">32 rows x 48 columns</option>
+	</param>
+      </when>
+      <when value="FlowCell">
+	<param name="flow_cell_slots" type="select" label="Flow Cell slots"
+	       help="Choose from the following list">
+	  <option value="use_provided" selected="true">
+	    Use record provided
+	  </option>
+	  <option value="8">8</option>
+	</param>
+      </when>
+        <when value="IlluminaArrayOfArrays">
+            <param name="ill_shape" type="select" label="IlluminArrayOfArrays shape"
+                   help="Choose from the following shapes">
+                <option value="use_provided" selected="true">
+                    Use record provided
+                </option>
+                <option value="6x2">6 rows x 2 columns</option>
+                <option value="2x6">2 rows x 6 columns</option>
+            </param>
+            <param name="ill_slots" type="select" label="IlluminaArrayOfArrays slots"
+                   help="Choose from the following list">
+                <option value="use_provided" selected="true">
+                    Use record provided
+                </option>
+                <option value="12">12</option>
+            </param>
+            <param name="array_type" type="select" label="Illumina Array of Arrays type"
+                   help="choose from the following list">
+                <options from_parameter="tool.app.known_illumina_array_of_arrays_type"
+                         transform_lines="[ &quot;%s%s%s&quot;
+                                                % (o[1], self.separator, o[1])
+                                           for o in obj ]">
+                    <column name="value" index="0"/>
+                    <column name="name" index="1"/>
+                    <filter type="sort_by" column="0"/>
+                    <filter type="add_value" name="Records provide array type"
+                            value="use_provided" index="0"/>
+                </options>
+            </param>
+            <param name="array_class" type="select" label="Illumina Array of Arrays class"
+                   help="choose from the following list">
+                <options from_parameter="tool.app.known_illumina_array_of_arrays_class"
+                         transform_lines="[ &quot;%s%s%s&quot;
+                                                % (o[1], self.separator, o[1])
+                                           for o in obj ]">
+                    <column name="value" index="0"/>
+                    <column name="name" index="1"/>
+                    <filter type="sort_by" column="0"/>
+                    <filter type="add_value" name="Records provide array class"
+                            value="use_provided" index="0"/>
+                </options>
+            </param>
+            <param name="assay_type" type="select" label="Illumina Array of Arrays Assay type"
+                   help="choose from the following list">
+                <options from_parameter="tool.app.known_illumina_array_of_arrays_assay_type"
+                         transform_lines="[ &quot;%s%s%s&quot;
+                                                % (o[1], self.separator, o[1])
+                                           for o in obj ]">
+                    <column name="value" index="0"/>
+                    <column name="name" index="1"/>
+                    <filter type="sort_by" column="0"/>
+                    <filter type="add_value" name="Records provide array assay type"
+                            value="use_provided" index="0"/>
+                </options>
+            </param>
+        </when>
+    </conditional>
+
+    <param name="container_status" type="select" label="Container status" 
+	   help="Choose from one of the available values. See below.">    
+      <options from_parameter="tool.app.kb.ContainerStatus.__enums__" 
+	       transform_lines="[ &quot;%s%s%s&quot; 
+                                  % (e.enum_label(),
+                                     self.separator,
+                                     e.enum_label()) 
+                                  for e in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records provide plate status" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <!-- ************************************************** -->
+    <param name="blocking_validation" type="boolean" checked="false"
+	   label="Blocking validation"
+	   help="When this check is enabled, if at least one record doesn't pass importer's validation, the entire import procedure will be blocked"/>
+
+     <conditional name="wait_for_trigger">
+      <param name="enable_trigger" type="boolean" checked="false"
+	     label="Wait for another tool to end before running this tool"/>
+      <when value="true">
+	<param format="txt" name="trigger_file" type="data"
+	       label="Select the LOG file that will be used as trigger"/>
+      </when>
+    </conditional>
+
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What?Me worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="output" label="${tool.name}.mapping"/>
+    <data format="tabular" name="report" label="${tool.name}.report"/>
+    <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+A container record will have the following fields::
+
+  label         container_status  creation_date
+  A_CONTAINER   USABLE            13/02/2012
+  B_CONTAINER   INSTOCK           12/01/2001
+  C_CONTAINER   USABLE            25/04/2012
+  ....
+
+the creation_date column is optional, if not specified current date
+will be set as the object's creation date, also the container_status
+column can be optional if this values is passed as input parameter.
+
+
+When importing new containers, special fields can be included in the
+CSV file depending on the type of the objects that you want to
+import.
+
+For TITER PLATES objects the syntax can be the following::
+
+  label         barcode    container_status  rows  columns
+  A_TITERPLATE  XXYYZZ111  INSTOCK           8     12
+  B_TITERPLATE  XXYYZZ112  INSTOCK           8     12
+  C_TITERPLATE  XXYYZZ113  READY             8     12
+  ....
+
+rows and columns values can be optional if these values are passed as
+input parameters, barcode column is optional.
+
+For ILLUMINA ARRAY OF ARRAYS objects the syntax can be the following::
+
+  label        barcode    container_status   rows   columns   illumina_array_type   illumina_array_class   illumina_assay_type
+  A_ILLARRAY   XXYYZZ111  INSTOCK            4      2         BeadChip_12x1Q        Slide                  Infinium_HD
+  B_ILLARRAY   XXYYZZ112  INSTOCK            4      2         BeadChip_12x1Q        Slide                  Infinium_HD
+  C_ILLARRAY   XXYYZZ113  INSTOCK            4      2         BeadChip_12x1Q        Slide                  Infinium_HD
+
+rows, columns, illumina_array_type, illumina_array_class and illumina_assay_type
+can be optional if these values are passed as input parameters, barcode column
+is optional.
+
+For FLOW CELL objects the syntax can be the following::
+
+  label       barcode     container_status  number_of_slots
+  A_FLOWCELL  XXYYZZ221   INSTOCK           8
+  B_FLOWCELL  XXYYZZ222   INSTOCK           8
+  C_FLOWCELL  XXYYZZ223   INSTOCK           8
+  ....
+
+number_of_slots column can be optional if this value is passed as
+input paramter, barcode column is optional.
+
+For LANE objects the syntax can be the following::
+
+  flow_cell   slot  container_status
+  V112441441  1     INSTOCK
+  V112441441  2     INSTOCK
+  V112441441  3     INSTOCK
+  V351145519  1     INSTOCK
+  V351145519  2     INSTOCK
+  ....
+
+for Lane objects, no label column has to be provided, the importer
+will automatically calculate the labels for each imported object.
+  </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/sequencing_data_sample.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,198 @@
+<tool id="vl_import_seq_data_sample" name="VLI.seq_data_sample">
+  <description>
+    Import sequencing related DataSample definitions within omero/vl
+  </description>
+  <command interpreter="python">
+    importer.py
+    --operator=galaxy
+    --ifile=${input}
+    --ofile=${output}
+    --report_file=$report
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    #if $blocking_validation
+      --blocking-validator
+    #end if
+    seq_data_sample
+    #if str($study) != 'use_provided'
+      --study=${study}
+    #end if
+    #if str($source_type) != 'use_provided'
+      --source-type=${source_type}
+    #end if
+    #if str($seq_dsample_type) != 'use_provided'
+      --seq-dsample-type=${seq_dsample_type}
+    #end if
+    #if str($dsample_status) != 'use_provided'
+      --status=${dsample_status}
+    #end if
+    #if str($device) != 'use_provided'
+      --device=${device}
+    #end if
+    #if str($history) != 'None'
+      --history=${history}
+    #end if
+  </command>
+
+  <inputs>
+    <param format="tabular" name="input" type="data"
+	   label="A tabular dataset with the following columns..."/>
+
+    <param name="study" type="select" label="Context study"
+	   help="Choose from the already defined studies. See below.">
+      <options from_parameter="tool.app.known_studies"
+	       transform_lines="[ &quot;%s%s%s:%s&quot;
+	                          % ( l[0], self.separator, l[0], l[1][:40] )
+				  for l in obj ]">
+	<column name="value" index="0"/>
+	<column name="name" index="1"/>
+	<filter type="sort_by" column="0"/>
+	<filter type="add_value" name="Records provide study labels"
+		value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <param name="source_type" type="select"
+	   label="Type of the source"
+	   help="Choose from the following. See below.">
+      <option value="use_provided" selected="true">
+	Use record provided
+      </option>
+      <option value="FlowCell">FlowCell</option>
+      <option value="SequencerOutput">
+	SequencerOutput
+      </option>
+      <option value="RawSeqDataSample">
+	RawSeqDataSample
+      </option>
+    </param>
+
+    <!-- Choose the device after the type selection, SequencerOutput
+	 will required an HardwareDevice, RawSeqDataSample and SeqDataSample
+	 will required a SoftwareDevice. If the "use provided" is selected,
+	 load a generic Device select list -->
+    <param name="seq_dsample_type" type="select"
+	   label="Type of the DataSample"
+	   help="Choose from the following. See below.">
+      <option value="use_provided" selected="true">
+	Use record provided
+      </option>
+      <option value="SequencerOutput">
+	SequencerOutput
+      </option>
+      <option value="RawSeqDataSample">
+	RawSeqDataSample
+      </option>
+      <option value="SeqDataSample">
+	SeqDataSample
+      </option>
+    </param>
+
+    <param name="dsample_status" type="select" label="DataSample status"
+	   help="Choose from one of the available values. See below.">
+      <options from_parameter="tool.app.known_data_sample_status"
+	       transform_lines="[ &quot;%s%s%s&quot;
+	                          % (l[1], self.separator, l[1])
+				  for l in obj ]">
+	<column name="value" index="1"/>
+	<column name="name" index="0"/>
+	<filter type="sort_by" column="0"/>
+	<filter type="add_value" name="Records provide status"
+		value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <param name="device" type="select" label="device"
+	   help="Choose from the already defined devices. See below.">
+      <options from_parameter="tool.app.known_devices"
+	       transform_lines = "[ &quot;%s%s%s&quot;
+	                            % ( l[0], self.separator, l[1])
+				    for l in obj ]">
+	<column name="value" index="0"/>
+	<column name="name" index="1"/>
+	<filter type="sort_by" column="1"/>
+	<filter type="add_value" name="Records provide device ids"
+		value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <param format="txt" name="history" type="data" optional="true"
+	   label="Objects history"
+	   help="Galaxy history in JSON format, history will be shared among all objects"/>
+
+    <!-- ************************************************** -->
+    <param name="blocking_validation" type="boolean" checked="false"
+	   label="Blocking validation"
+	   help="When this check is enabled, if at least one record doesn't pass importer's validation, the entire import procedure will be blocked"/>
+
+    <conditional name="wait_for_trigger">
+      <param name="enable_trigger" type="boolean" checked="false"
+	     label="Wait for another tool to end before running this tool"/>
+      <when value="true">
+	<param format="txt" name="trigger_file" type="data"
+	       label="Select the LOG file that will be used as trigger"/>
+      </when>
+    </conditional>
+
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What? Me worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="output" label="${tool.name}.mapping"/>
+    <data format="tabular" name="report" label="${tool.name}.report"/>
+    <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+Will read a tsv file with the following columns::
+
+ study   label      source   source_type  seq_dsample_type  status  device
+ FOOBAR  seq_out_1  V012141  FlowCell     SequencerOutput   USABLE  V123141
+ FOOBAR  seq_out_2  V012141  FlowCell     SequencerOutput   USABLE  V123141
+ FOOBAR  seq_out_3  V1AD124  FlowCell     SequencerOutput   USABLE  V123141
+ ...
+
+where
+  * seq_dsample_type can assume one of the following values: SequencerOutput, RawSeqDataSample, SeqDataSample
+  * source_type can assume one of the following values: FlowCell, SequencerOutput, RawSeqDataSample
+ 
+study, source_type, seq_dsample_type, status and device columns can be
+overwritten by using command line options.
+
+A special case of the previous file is when seq_dsample_type is
+SeqDataSample, in this case a mandatory sample column is required,
+this column has to contain IDs of Tube objects.
+The file will look like this
+
+ study   label          source   source_type      seq_dsample_type  status  device   sample
+ FOOBAR  seq_dsample_1  V041241  SequencerOutput  SeqDataSample     USABLE  VBB2351  V124AA41
+ FOOBAR  seq_dsample_2  V051561  SequencerOutput  SeqDataSample     USABLE  VBB2351  V4151AAE
+ FOOBAR  seq_dsample_3  V151561  SequencerOutput  SeqDataSample     USABLE  VBB2351  V15199CD
+ ...
+
+A file containing ax export of the Galaxy history that produced the
+data that are going to be imported can be passed as input parameter,
+history details must represented as a string serialized in JSON
+format.
+  </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/study.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,83 @@
+<tool id="vl_import_study" name="VLI.study">
+  <description>import study definitions within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if $advanced_configuration.configuration_level == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=$input
+    --ofile=$output
+    --report_file=$report
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    #if $blocking_validation
+      --blocking-validator
+    #end if
+    study
+  </command>  
+
+  <inputs>
+    <param format="tabular" name="input" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+
+    <!-- ************************************************** -->
+    <param name="blocking_validation" type="boolean" checked="false"
+	   label="Blocking validation"
+	   help="When this check is enabled, if at least one record doesn't pass importer's validation, the entire import procedure will be blocked"/>
+
+    <conditional name="wait_for_trigger">
+      <param name="enable_trigger" type="boolean" checked="false"
+	     label="Wait for another tool to end before running this tool"/>
+      <when value="true">
+	<param format="txt" name="trigger_file" type="data"
+	       label="Select the LOG file that will be used as trigger"/>
+      </when>
+    </conditional>   
+
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" 
+	       value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" 
+	       value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" 
+	       value="What_Me_worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+      <when/>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="output" label="${tool.name}.mapping"/>
+    <data format="tabular" name="report" label="${tool.name}.report"/>
+    <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+Will import a stream of new study definitions defined by the following
+tab-separated columns. A typical file will look like the following::
+
+  label	 description
+  BSTUDY A basically empty description of BSTUDY
+  CSTUDY A basically empty description of CSTUDY
+  ....
+  </help>
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/unauthorized_access.py	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,6 @@
+# BEGIN_COPYRIGHT
+# END_COPYRIGHT
+
+import sys
+
+sys.exit("You are not authorized to use this tool")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boh/vessels_collection.xml	Thu Sep 22 08:33:51 2016 -0400
@@ -0,0 +1,111 @@
+<tool id="vl_import_vessels_collection" name="VLI.vessels_collection">
+  <description>import VesselsCollection definitions within omero/vl</description>
+  <command interpreter="python">
+    #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #importer.py
+    #else #unauthorized_access.py
+    #end if
+    #if $advanced_configuration.configuration_level == 'advanced'
+      --host=$advanced_configuration.vl_host
+      --user=$advanced_configuration.vl_user
+      --passwd=$advanced_configuration.vl_passwd
+    #end if
+    --operator=galaxy
+    --ifile=$input
+    --ofile=$output
+    --report_file=$report
+    --loglevel=$__app__.config.vl_loglevel
+    --logfile=${logfile}
+    #if $blocking_validation
+      --blocking-validator
+    #end if
+    vessels_collection
+    #if str($study) != 'use_provided'
+      --study ${study}
+    #end if 
+    #if str($vessel_type) != 'use_provided'
+      --vessel_type=${vessel_type}
+    #end if
+    #if str($label)
+      --label=${label}
+    #end if
+  </command>  
+
+  <inputs>
+    <param format="tabular" name="input" type="data"
+	   label="A tabular dataset with the following columns ..."/>
+
+    <param name="study" type="select" label="Context study" 
+	   help="Choose from the already defined studies. See below.">    
+      <options from_parameter="tool.app.known_studies" 
+	       transform_lines="[ &quot;%s%s%s:%s&quot; 
+                                  % ( l[0], self.separator, l[0], l[1][:40] ) 
+                                  for l in obj ]">
+        <column name="value" index="0"/>
+        <column name="name" index="1"/>
+        <filter type="sort_by" column="0"/>
+        <filter type="add_value" name="Records provide study labels" 
+                value="use_provided" index="0"/>
+      </options>
+    </param>
+
+    <param name="label" size="20" type="text" value="" 
+	   label="collection label"/>
+
+    <param name="vessel_type" type="select"
+	   label="Type of the source"
+	   help="Choose from the following. See below.">
+      <option value="use_provided"       selected="true">
+      Use record provided</option>
+      <option value="Vessel">Vessel</option>
+      <option value="TiterPlate">TiterPlate</option>
+    </param>
+
+
+    <!-- ************************************************** -->
+    <param name="blocking_validation" type="boolean" checked="false"
+	   label="Blocking validation"
+	   help="When this check is enabled, if at least one record doesn't pass importer's validation, the entire import procedure will be blocked"/>
+
+    <conditional name="wait_for_trigger">
+      <param name="enable_trigger" type="boolean" checked="false"
+	     label="Wait for another tool to end before running this tool"/>
+      <when value="true">
+	<param format="txt" name="trigger_file" type="data"
+	       label="Select the LOG file that will be used as trigger"/>
+      </when>
+    </conditional>
+
+    <conditional name="advanced_configuration">
+      <param name="configuration_level" type="select" 
+	     label="Configuration level">
+	<option value="default" selected="true">Default configuration</option>	
+	<option value="advanced">Advanced configuration</option>
+      </param>
+      <when value="default"/>
+      <when value="advanced">
+	<param name="vl_host" size="40" type="text" value="localhost" 
+	       label="Omero/VL host"/>
+	<param name="vl_user" size="20" type="text" value="root" 
+	       label="Omero/VL user"/>
+	<param name="vl_passwd" size="20" type="text" value="What? Me worry?" 
+	       label="Omero/VL passwd"/>
+      </when>
+    </conditional>
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="output" label="${tool.name}.mapping"/>
+    <data format="tabular" name="report" label="${tool.name}.report"/>
+    <data format="txt" name="logfile" label="${tool.name}.logfile"/>
+  </outputs>
+
+  <help>
+TODO: add doc here...
+  </help>
+
+
+  <stdio>
+    <exit_code range="1:" level="fatal" />
+  </stdio>
+
+</tool>