diff --git a/config/datatypes_conf.xml.sample b/config/datatypes_conf.xml.sample index 51a75abd7d4..65bfb9ebdac 100644 --- a/config/datatypes_conf.xml.sample +++ b/config/datatypes_conf.xml.sample @@ -180,7 +180,7 @@ - + diff --git a/config/tool_data_table_conf.xml.sample b/config/tool_data_table_conf.xml.sample index 910889e8320..82b3079f07c 100644 --- a/config/tool_data_table_conf.xml.sample +++ b/config/tool_data_table_conf.xml.sample @@ -65,4 +65,9 @@ value, path + + + name, url, value + +
diff --git a/display_applications/igv/bam.xml b/display_applications/igv/bam.xml index 1e7058e01c9..275e6aa16ef 100644 --- a/display_applications/igv/bam.xml +++ b/display_applications/igv/bam.xml @@ -93,7 +93,20 @@ #end if - + + + + + + ${ $dataset.dbkey == $value } + + + http://www.broadinstitute.org/igv/projects/current/igv.php?sessionURL=${bam_file.qp}&genome=${bam_file.dbkey}&merge=true&name=${qp( $bam_file.name )} + + + + + diff --git a/display_applications/igv/vcf.xml b/display_applications/igv/vcf.xml index a9276745b0c..00321d22e77 100644 --- a/display_applications/igv/vcf.xml +++ b/display_applications/igv/vcf.xml @@ -93,7 +93,20 @@ #end if - + + + + + + ${ $dataset.dbkey == $value } + + + http://www.broadinstitute.org/igv/projects/current/igv.php?sessionURL=${bgzip_file.qp}&genome=$bgzip_file.dbkey&merge=true&name=${qp( $bgzip_file.name )} + + + + + diff --git a/lib/galaxy/app.py b/lib/galaxy/app.py index cc1f122e2e3..9aca94837b8 100644 --- a/lib/galaxy/app.py +++ b/lib/galaxy/app.py @@ -88,7 +88,7 @@ class UniverseApplication( object, config.ConfiguresGalaxyMixin ): # Load proprietary datatype converters and display applications. self.installed_repository_manager.load_proprietary_converters_and_display_applications() # Load datatype display applications defined in local datatypes_conf.xml - self.datatypes_registry.load_display_applications() + self.datatypes_registry.load_display_applications( self ) # Load datatype converters defined in local datatypes_conf.xml self.datatypes_registry.load_datatype_converters( self.toolbox ) # Load external metadata tool diff --git a/lib/galaxy/datatypes/display_applications/application.py b/lib/galaxy/datatypes/display_applications/application.py index 74c20e139e2..75ffcf6368f 100644 --- a/lib/galaxy/datatypes/display_applications/application.py +++ b/lib/galaxy/datatypes/display_applications/application.py @@ -80,21 +80,57 @@ class DisplayApplicationLink( object ): return True class DynamicDisplayApplicationBuilder( object ): - @classmethod + def __init__( self, elem, display_application, build_sites ): - rval = [] filename = None + data_table = None if elem.get( 'site_type', None ) is not None: filename = build_sites.get( elem.get( 'site_type' ) ) else: filename = elem.get( 'from_file', None ) - assert filename is not None, 'Filename and id attributes required for dynamic_links' + if filename is None: + data_table_name = elem.get( 'from_data_table', None ) + if data_table_name: + data_table = display_application.app.tool_data_tables.get( data_table_name, None ) + assert data_table is not None, 'Unable to find data table named "%s".' % data_table_name + + assert filename is not None or data_table is not None,'Filename or data Table is required for dynamic_links.' skip_startswith = elem.get( 'skip_startswith', None ) separator = elem.get( 'separator', '\t' ) - id_col = int( elem.get( 'id', None ) ) - name_col = int( elem.get( 'name', id_col ) ) - dynamic_params = {} + id_col = elem.get( 'id', None ) + try: + id_col = int( id_col ) + except: + if data_table: + if id_col is None: + id_col = data_table.columns.get( 'id', None ) + if id_col is None: + id_col = data_table.columns.get( 'value', None ) + try: + id_col = int( id_col ) + except: + # id is set to a string or None, use column by that name if available + id_col = data_table.columns.get( id_col, None ) + id_col = int( id_col ) + name_col = elem.get( 'name', None ) + try: + name_col = int( name_col ) + except: + if data_table: + if name_col is None: + name_col = data_table.columns.get( 'name', None ) + else: + name_col = data_table.columns.get( name_col, None ) + else: + name_col = None + if name_col is None: + name_col = id_col max_col = max( id_col, name_col ) + dynamic_params = {} + if data_table is not None: + max_col = max( [ max_col ] + data_table.columns.values() ) + for key, value in data_table.columns.items(): + dynamic_params[key] = { 'column': value, 'split': False, 'separator': ',' } for dynamic_param in elem.findall( 'dynamic_param' ): name = dynamic_param.get( 'name' ) value = int( dynamic_param.get( 'value' ) ) @@ -102,27 +138,38 @@ class DynamicDisplayApplicationBuilder( object ): param_separator = dynamic_param.get( 'separator', ',' ) max_col = max( max_col, value ) dynamic_params[name] = { 'column': value, 'split': split, 'separator': param_separator } - for line in open( filename ): - if not skip_startswith or not line.startswith( skip_startswith ): - line = line.rstrip( '\n\r' ) - if not line: - continue - fields = line.split( separator ) - if len( fields ) > max_col: - new_elem = deepcopy( elem ) - new_elem.set( 'id', fields[id_col] ) - new_elem.set( 'name', fields[name_col] ) - dynamic_values = {} - for key, attributes in dynamic_params.iteritems(): - value = fields[ attributes[ 'column' ] ] - if attributes['split']: - value = value.split( attributes['separator'] ) - dynamic_values[key] = value - #now populate - rval.append( DisplayApplicationLink.from_elem( new_elem, display_application, other_values = dynamic_values ) ) + if filename: + data_iter = open( filename ) + elif data_table: + version, data_iter = data_table.get_version_fields() + display_application.add_data_table_watch( data_table.name, version ) + links = [] + for line in data_iter: + if isinstance( line, basestring ): + if not skip_startswith or not line.startswith( skip_startswith ): + line = line.rstrip( '\n\r' ) + if not line: + continue + fields = line.split( separator ) else: - log.warning( 'Invalid dynamic display application link specified in %s: "%s"' % ( filename, line ) ) - self.links = rval + continue + else: + fields = line + if len( fields ) > max_col: + new_elem = deepcopy( elem ) + new_elem.set( 'id', fields[id_col] ) + new_elem.set( 'name', fields[name_col] ) + dynamic_values = {} + for key, attributes in dynamic_params.iteritems(): + value = fields[ attributes[ 'column' ] ] + if attributes['split']: + value = value.split( attributes['separator'] ) + dynamic_values[key] = value + #now populate + links.append( DisplayApplicationLink.from_elem( new_elem, display_application, other_values = dynamic_values ) ) + else: + log.warning( 'Invalid dynamic display application link specified in %s: "%s"' % ( filename, line ) ) + self.links = links def __iter__( self ): return iter( self.links ) @@ -166,12 +213,12 @@ class PopulatedDisplayApplicationLink( object ): class DisplayApplication( object ): @classmethod - def from_file( cls, filename, datatypes_registry ): - return cls.from_elem( parse_xml( filename ).getroot(), datatypes_registry, filename=filename ) + def from_file( cls, filename, app ): + return cls.from_elem( parse_xml( filename ).getroot(), app, filename=filename ) @classmethod - def from_elem( cls, elem, datatypes_registry, filename=None ): + def from_elem( cls, elem, app, filename=None ): att_dict = cls._get_attributes_from_elem( elem ) - rval = DisplayApplication( att_dict['id'], att_dict['name'], datatypes_registry, att_dict['version'], filename=filename, elem=elem ) + rval = DisplayApplication( att_dict['id'], att_dict['name'], app, att_dict['version'], filename=filename, elem=elem ) rval._load_links_from_elem( elem ) return rval @classmethod @@ -181,29 +228,32 @@ class DisplayApplication( object ): name = elem.get( 'name', display_id ) version = elem.get( 'version', None ) return dict( id=display_id, name=name, version=version ) - def __init__( self, display_id, name, datatypes_registry, version = None, filename=None, elem=None ): + def __init__( self, display_id, name, app, version = None, filename=None, elem=None ): self.id = display_id self.name = name - self.datatypes_registry = datatypes_registry + self.app = app if version is None: version = "1.0.0" self.version = version self.links = odict() self._filename = filename self._elem = elem + self._data_table_versions = {} def _load_links_from_elem( self, elem ): for link_elem in elem.findall( 'link' ): link = DisplayApplicationLink.from_elem( link_elem, self ) if link: self.links[ link.id ] = link for dynamic_links in elem.findall( 'dynamic_links' ): - for link in DynamicDisplayApplicationBuilder( dynamic_links, self, self.datatypes_registry.build_sites ): + for link in DynamicDisplayApplicationBuilder( dynamic_links, self, self.app.datatypes_registry.build_sites ): self.links[ link.id ] = link def get_link( self, link_name, data, dataset_hash, user_hash, trans, app_kwds ): #returns a link object with data knowledge to generate links + self._check_and_reload() return PopulatedDisplayApplicationLink( self.links[ link_name ], data, dataset_hash, user_hash, trans, app_kwds ) def filter_by_dataset( self, data, trans ): - filtered = DisplayApplication( self.id, self.name, self.datatypes_registry, version = self.version ) + self._check_and_reload() + filtered = DisplayApplication( self.id, self.name, self.app, version = self.version ) for link_name, link_value in self.links.iteritems(): if link_value.filter_by_dataset( data, trans ): filtered.links[link_name] = link_value @@ -222,9 +272,24 @@ class DisplayApplication( object ): # clear old links for key in self.links.keys(): del self.links[key] + #clear data table versions: + for key in self._data_table_versions.keys(): + del self._data_table_versions[ key ] # Set new attributes for key, value in attr_dict.iteritems(): setattr( self, key, value ) # Load new links self._load_links_from_elem( elem ) return self + def add_data_table_watch( self, table_name, version=None ): + self._data_table_versions[ table_name ] = version + def _requires_reload( self ): + for key, value in self._data_table_versions.iteritems(): + table = self.app.tool_data_tables.get( key, None ) + if table and not table.is_current_version( value ): + return True + return False + def _check_and_reload( self ): + if self._requires_reload(): + self.reload() + diff --git a/lib/galaxy/datatypes/display_applications/parameters.py b/lib/galaxy/datatypes/display_applications/parameters.py index b4d382a626c..8105fcac217 100644 --- a/lib/galaxy/datatypes/display_applications/parameters.py +++ b/lib/galaxy/datatypes/display_applications/parameters.py @@ -59,7 +59,7 @@ class DisplayApplicationDataParameter( DisplayApplicationParameter ): @property def formats( self ): if self.extensions: - return tuple( map( type, map( self.link.display_application.datatypes_registry.get_datatype_by_extension, self.extensions ) ) ) + return tuple( map( type, map( self.link.display_application.app.datatypes_registry.get_datatype_by_extension, self.extensions ) ) ) return None def _get_dataset_like_object( self, other_values ): #this returned object has file_name, state, and states attributes equivalent to a DatasetAssociation diff --git a/lib/galaxy/datatypes/registry.py b/lib/galaxy/datatypes/registry.py index 76a817a5d00..be9704015d7 100644 --- a/lib/galaxy/datatypes/registry.py +++ b/lib/galaxy/datatypes/registry.py @@ -546,7 +546,7 @@ class Registry( object ): else: self.log.exception( "Error loading converter (%s): %s" % ( converter_path, str( e ) ) ) - def load_display_applications( self, installed_repository_dict=None, deactivate=False ): + def load_display_applications( self, app, installed_repository_dict=None, deactivate=False ): """ If deactivate is False, add display applications from self.display_app_containers or self.proprietary_display_app_containers to appropriate datatypes. If deactivate is @@ -570,7 +570,7 @@ class Registry( object ): config_path = os.path.join( self.display_applications_path, display_file ) try: inherit = galaxy.util.string_as_bool( display_app.get( 'inherit', 'False' ) ) - display_app = DisplayApplication.from_file( config_path, self ) + display_app = DisplayApplication.from_file( config_path, app ) if display_app: if display_app.id in self.display_applications: if deactivate: diff --git a/lib/galaxy/webapps/reports/app.py b/lib/galaxy/webapps/reports/app.py index b545aa687ad..8b362adb05c 100644 --- a/lib/galaxy/webapps/reports/app.py +++ b/lib/galaxy/webapps/reports/app.py @@ -1,5 +1,7 @@ -import sys import config +import sys +import time + import galaxy.model from galaxy.web import security @@ -26,6 +28,8 @@ class UniverseApplication( object ): self.targets_mysql = 'mysql' in self.config.database_connection # Security helper self.security = security.SecurityHelper( id_secret=self.config.id_secret ) + # used for cachebusting -- refactor this into a *SINGLE* UniverseApplication base. + self.server_starttime = int(time.time()) def shutdown( self ): pass diff --git a/lib/galaxy/webapps/tool_shed/app.py b/lib/galaxy/webapps/tool_shed/app.py index ea736b0c9c3..fa61119c2f8 100644 --- a/lib/galaxy/webapps/tool_shed/app.py +++ b/lib/galaxy/webapps/tool_shed/app.py @@ -1,17 +1,18 @@ import config import sys -from galaxy import tools -import galaxy.tools.data -import galaxy.quota +import time import galaxy.datatypes.registry +import galaxy.quota +import galaxy.tools.data import galaxy.webapps.tool_shed.model +from galaxy import tools +from galaxy.managers.tags import CommunityTagManager from galaxy.openid.providers import OpenIDProviders from galaxy.util.dbkeys import GenomeBuilds from galaxy.web import security -from galaxy.managers.tags import CommunityTagManager -from tool_shed.grids.repository_grid_filter_manager import RepositoryGridFilterManager import tool_shed.repository_registry import tool_shed.repository_types.registry +from tool_shed.grids.repository_grid_filter_manager import RepositoryGridFilterManager class UniverseApplication( object ): @@ -70,6 +71,8 @@ class UniverseApplication( object ): self.hgweb_config_manager.hgweb_config_dir = self.config.hgweb_config_dir # Initialize the repository registry. self.repository_registry = tool_shed.repository_registry.Registry( self ) + # used for cachebusting -- refactor this into a *SINGLE* UniverseApplication base. + self.server_starttime = int(time.time()) print >> sys.stderr, "Tool shed hgweb.config file is: ", self.hgweb_config_manager.hgweb_config def shutdown( self ): diff --git a/lib/tool_shed/galaxy_install/datatypes/custom_datatype_manager.py b/lib/tool_shed/galaxy_install/datatypes/custom_datatype_manager.py index 8d56d04c540..5d829967d53 100644 --- a/lib/tool_shed/galaxy_install/datatypes/custom_datatype_manager.py +++ b/lib/tool_shed/galaxy_install/datatypes/custom_datatype_manager.py @@ -214,5 +214,5 @@ class CustomDatatypeLoader( object ): def load_installed_display_applications( self, installed_repository_dict, deactivate=False ): """Load or deactivate custom datatype display applications.""" - self.app.datatypes_registry.load_display_applications( installed_repository_dict=installed_repository_dict, + self.app.datatypes_registry.load_display_applications( self.app, installed_repository_dict=installed_repository_dict, deactivate=deactivate ) diff --git a/lib/tool_shed/galaxy_install/install_manager.py b/lib/tool_shed/galaxy_install/install_manager.py index d955ed355e7..9bfd311d7ff 100644 --- a/lib/tool_shed/galaxy_install/install_manager.py +++ b/lib/tool_shed/galaxy_install/install_manager.py @@ -621,7 +621,7 @@ class InstallRepositoryManager( object ): self.app.datatypes_registry.load_datatype_converters( self.app.toolbox, installed_repository_dict=repository_dict ) if display_path: # Load proprietary datatype display applications - self.app.datatypes_registry.load_display_applications( installed_repository_dict=repository_dict ) + self.app.datatypes_registry.load_display_applications( self.app, installed_repository_dict=repository_dict ) def handle_tool_shed_repositories( self, installation_dict, using_api=False ): # The following installation_dict entries are all required. diff --git a/lib/tool_shed/galaxy_install/tool_migration_manager.py b/lib/tool_shed/galaxy_install/tool_migration_manager.py index f8469fe96f8..e8cbcc1db54 100644 --- a/lib/tool_shed/galaxy_install/tool_migration_manager.py +++ b/lib/tool_shed/galaxy_install/tool_migration_manager.py @@ -523,7 +523,7 @@ class ToolMigrationManager( object ): installed_repository_dict=repository_dict ) if display_path: # Load proprietary datatype display applications - self.app.datatypes_registry.load_display_applications( installed_repository_dict=repository_dict ) + self.app.datatypes_registry.load_display_applications( self.app, installed_repository_dict=repository_dict ) basic_util.remove_dir( work_dir ) def install_repository( self, repository_elem, tool_shed_repository, install_dependencies, is_repository_dependency=False ): diff --git a/tool-data/shared/igv/igv_build_sites.txt.sample b/tool-data/shared/igv/igv_build_sites.txt.sample index 77d262da4f6..ce3f18f16b6 100644 --- a/tool-data/shared/igv/igv_build_sites.txt.sample +++ b/tool-data/shared/igv/igv_build_sites.txt.sample @@ -1,4 +1,4 @@ #site_id site_name site_url dbkey ivg_build_name -web_link_main web current http://www.broadinstitute.org/igv/projects/current/igv.php hg19,hg_g1k_v37,hg18,1kg_ref,hg17,hg16,mm9,mm8,mm7,panTro2,rheMac2,rn4,canFam2,bosTau6,bosTau4,bosTau3,susScrofa,galGal3,cavPor3,monDom5,xenTro2,taeGut1,zebrafish,danRer6,danRer7,gasAcu1,Aplysia,Plasmodium_3D7_v2.1,Plasmodium_3D7_v5.5,Plasmodium_6.1,PlasmoDB_7.0,pvivax,GSM552910,sacCer1,sacCer2,sk1,Y55,sacCer62,spombe_709,spombe_1.55,candida,mg8,spur_2.1,spur_2.5,spur_3.0,WS201,ce6,ce4,dm3,dm2,dmel_5.9,dmel_r5.22,dmel_r5.33,tcas_2.0,tcas_3.0,ncrassa_v3,nc10,Glamblia_2.0,me49,tb927,tbgambi,lmjr,anidulans_4.1,NC_009012,U00096.2,NC_000913.2,NC_002655.2,CSavignyi_v2.1,tair8,tair9,tair10,O_Sativa_r6,osativa_6.1,B73,ZmB73_5a,ppatens_1.2,D.discoideum hg19,b37,hg18,1kg_ref,hg17,hg16,mm9,mm8,mm7,panTro2,rheMac2,rn4,canFam2,bosTau6,bosTau4,bosTau3,susScrofa,galGal3,cavPor3,monDom5,xenTro2,taeGut1,zebrafish,danRer6,danRer7,gasAcu1,Aplysia,Plasmodium_3D7_v2.1,Plasmodium_3D7_v5.5,Plasmodium_6.1,PlasmoDB_7.0,pvivax,GSM552910,sacCer1,sacCer2,sk1,Y55,sacCer62,spombe_709,spombe_1.55,candida,mg8,spur_2.1,spur_2.5,spur_3.0,WS201,ce6,ce4,dm3,dm2,dmel_5.9,dmel_r5.22,dmel_r5.33,tcas_2.0,tcas_3.0,ncrassa_v3,nc10,Glamblia_2.0,me49,tb927,tbgambi,lmjr,anidulans_4.1,NC_009012,U00096.2,NC_000913.2,NC_002655.2,CSavignyi_v2.1,tair8,tair9,tair10,O_Sativa_r6,osativa_6.1,B73,ZmB73_5a,ppatens_1.2,D.discoideum +web_link_main web current http://www.broadinstitute.org/igv/projects/current/igv.php hg_g1k_v37 b37 #web_jnlp_1.5 web 1.5 http://www.broadinstitute.org/igvdata/jws/prod hg19,hg_g1k_v37,hg18,1kg_ref,hg17,hg16,mm9,mm8,mm7,panTro2,rheMac2,rn4,canFam2,bosTau6,bosTau4,bosTau3,susScrofa,galGal3,cavPor3,monDom5,xenTro2,taeGut1,zebrafish,danRer6,danRer7,gasAcu1,Aplysia,Plasmodium_3D7_v2.1,Plasmodium_3D7_v5.5,Plasmodium_6.1,PlasmoDB_7.0,pvivax,GSM552910,sacCer1,sacCer2,sk1,Y55,sacCer62,spombe_709,spombe_1.55,candida,mg8,spur_2.1,spur_2.5,spur_3.0,WS201,ce6,ce4,dm3,dm2,dmel_5.9,dmel_r5.22,dmel_r5.33,tcas_2.0,tcas_3.0,ncrassa_v3,nc10,Glamblia_2.0,me49,tb927,tbgambi,lmjr,anidulans_4.1,NC_009012,U00096.2,NC_000913.2,NC_002655.2,CSavignyi_v2.1,tair8,tair9,tair10,O_Sativa_r6,osativa_6.1,B73,ZmB73_5a,ppatens_1.2,D.discoideum hg19,b37,hg18,1kg_ref,hg17,hg16,mm9,mm8,mm7,panTro2,rheMac2,rn4,canFam2,bosTau6,bosTau4,bosTau3,susScrofa,galGal3,cavPor3,monDom5,xenTro2,taeGut1,zebrafish,danRer6,danRer7,gasAcu1,Aplysia,Plasmodium_3D7_v2.1,Plasmodium_3D7_v5.5,Plasmodium_6.1,PlasmoDB_7.0,pvivax,GSM552910,sacCer1,sacCer2,sk1,Y55,sacCer62,spombe_709,spombe_1.55,candida,mg8,spur_2.1,spur_2.5,spur_3.0,WS201,ce6,ce4,dm3,dm2,dmel_5.9,dmel_r5.22,dmel_r5.33,tcas_2.0,tcas_3.0,ncrassa_v3,nc10,Glamblia_2.0,me49,tb927,tbgambi,lmjr,anidulans_4.1,NC_009012,U00096.2,NC_000913.2,NC_002655.2,CSavignyi_v2.1,tair8,tair9,tair10,O_Sativa_r6,osativa_6.1,B73,ZmB73_5a,ppatens_1.2,D.discoideum -#local_default local http://localhost:60151/load hg19,hg_g1k_v37,hg18,1kg_ref,hg17,hg16,mm9,mm8,mm7,panTro2,rheMac2,rn4,canFam2,bosTau6,bosTau4,bosTau3,susScrofa,galGal3,cavPor3,monDom5,xenTro2,taeGut1,zebrafish,danRer6,danRer7,gasAcu1,Aplysia,Plasmodium_3D7_v2.1,Plasmodium_3D7_v5.5,Plasmodium_6.1,PlasmoDB_7.0,pvivax,GSM552910,sacCer1,sacCer2,sk1,Y55,sacCer62,spombe_709,spombe_1.55,candida,mg8,spur_2.1,spur_2.5,spur_3.0,WS201,ce6,ce4,dm3,dm2,dmel_5.9,dmel_r5.22,dmel_r5.33,tcas_2.0,tcas_3.0,ncrassa_v3,nc10,Glamblia_2.0,me49,tb927,tbgambi,lmjr,anidulans_4.1,NC_009012,U00096.2,NC_000913.2,NC_002655.2,CSavignyi_v2.1,tair8,tair9,tair10,O_Sativa_r6,osativa_6.1,B73,ZmB73_5a,ppatens_1.2,D.discoideum hg19,b37,hg18,1kg_ref,hg17,hg16,mm9,mm8,mm7,panTro2,rheMac2,rn4,canFam2,bosTau6,bosTau4,bosTau3,susScrofa,galGal3,cavPor3,monDom5,xenTro2,taeGut1,zebrafish,danRer6,danRer7,gasAcu1,Aplysia,Plasmodium_3D7_v2.1,Plasmodium_3D7_v5.5,Plasmodium_6.1,PlasmoDB_7.0,pvivax,GSM552910,sacCer1,sacCer2,sk1,Y55,sacCer62,spombe_709,spombe_1.55,candida,mg8,spur_2.1,spur_2.5,spur_3.0,WS201,ce6,ce4,dm3,dm2,dmel_5.9,dmel_r5.22,dmel_r5.33,tcas_2.0,tcas_3.0,ncrassa_v3,nc10,Glamblia_2.0,me49,tb927,tbgambi,lmjr,anidulans_4.1,NC_009012,U00096.2,NC_000913.2,NC_002655.2,CSavignyi_v2.1,tair8,tair9,tair10,O_Sativa_r6,osativa_6.1,B73,ZmB73_5a,ppatens_1.2,D.discoideum \ No newline at end of file +#local_default local http://localhost:60151/load hg19,hg_g1k_v37,hg18,1kg_ref,hg17,hg16,mm9,mm8,mm7,panTro2,rheMac2,rn4,canFam2,bosTau6,bosTau4,bosTau3,susScrofa,galGal3,cavPor3,monDom5,xenTro2,taeGut1,zebrafish,danRer6,danRer7,gasAcu1,Aplysia,Plasmodium_3D7_v2.1,Plasmodium_3D7_v5.5,Plasmodium_6.1,PlasmoDB_7.0,pvivax,GSM552910,sacCer1,sacCer2,sk1,Y55,sacCer62,spombe_709,spombe_1.55,candida,mg8,spur_2.1,spur_2.5,spur_3.0,WS201,ce6,ce4,dm3,dm2,dmel_5.9,dmel_r5.22,dmel_r5.33,tcas_2.0,tcas_3.0,ncrassa_v3,nc10,Glamblia_2.0,me49,tb927,tbgambi,lmjr,anidulans_4.1,NC_009012,U00096.2,NC_000913.2,NC_002655.2,CSavignyi_v2.1,tair8,tair9,tair10,O_Sativa_r6,osativa_6.1,B73,ZmB73_5a,ppatens_1.2,D.discoideum hg19,b37,hg18,1kg_ref,hg17,hg16,mm9,mm8,mm7,panTro2,rheMac2,rn4,canFam2,bosTau6,bosTau4,bosTau3,susScrofa,galGal3,cavPor3,monDom5,xenTro2,taeGut1,zebrafish,danRer6,danRer7,gasAcu1,Aplysia,Plasmodium_3D7_v2.1,Plasmodium_3D7_v5.5,Plasmodium_6.1,PlasmoDB_7.0,pvivax,GSM552910,sacCer1,sacCer2,sk1,Y55,sacCer62,spombe_709,spombe_1.55,candida,mg8,spur_2.1,spur_2.5,spur_3.0,WS201,ce6,ce4,dm3,dm2,dmel_5.9,dmel_r5.22,dmel_r5.33,tcas_2.0,tcas_3.0,ncrassa_v3,nc10,Glamblia_2.0,me49,tb927,tbgambi,lmjr,anidulans_4.1,NC_009012,U00096.2,NC_000913.2,NC_002655.2,CSavignyi_v2.1,tair8,tair9,tair10,O_Sativa_r6,osativa_6.1,B73,ZmB73_5a,ppatens_1.2,D.discoideum