# HG changeset patch
# User iuc
# Date 1773407268 0
# Node ID c3cdca7f40a2a9a0d6a7dba3bfa41745ca7bc6f7
# Parent 617d95d798fae68a3c1f5753d1670a36161e79c4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/data_managers/data_manager_snpeff commit 225ce35e1c3514cdba7a3637eba9aee964fa85f7
diff -r 617d95d798fa -r c3cdca7f40a2 data_manager/data_manager_snpEff_databases.py
--- a/data_manager/data_manager_snpEff_databases.py Tue Mar 10 10:12:26 2026 +0000
+++ b/data_manager/data_manager_snpEff_databases.py Fri Mar 13 13:07:48 2026 +0000
@@ -2,10 +2,24 @@
import json
import optparse
import os
+import re
import subprocess
import sys
+def getSnpeffVersion():
+ snpeff_version = 'SnpEff ?.?'
+ args = ['snpEff', '-version']
+ try:
+ version_output = subprocess.check_output(args, shell=False).decode()
+ except subprocess.CalledProcessError as e:
+ sys.exit(e.returncode)
+ m = re.match(r'^(SnpEff)\s*(\d+\.\d+).*$', version_output)
+ if m:
+ snpeff_version = m.groups()[0] + m.groups()[1]
+ return snpeff_version
+
+
def fetch_databases(data_manager_dict, target_directory):
if not os.path.exists(target_directory):
os.makedirs(target_directory)
@@ -18,6 +32,8 @@
data_manager_dict['data_tables'] = data_manager_dict.get('data_tables', {})
data_manager_dict['data_tables']['snpeffv_databases'] = data_manager_dict['data_tables'].get('snpeffv_databases', [])
data_table_entries = []
+ snpeff_version = getSnpeffVersion()
+
with open(databases_path, 'r') as fh:
for line in fh:
fields = line.split('\t')
@@ -29,7 +45,7 @@
if genome_version == '30c2c903' or fields[1].strip() == 'TestCase' or fields[1].strip().startswith('Test_'):
continue
description = fields[1].strip() + ' : ' + genome_version
- data_table_entries.append(dict(value=genome_version, name=description))
+ data_table_entries.append(dict(key=snpeff_version + '_' + genome_version, version=snpeff_version, value=genome_version, name=description))
data_manager_dict['data_tables']['snpeffv_databases'] = data_table_entries
return data_manager_dict
diff -r 617d95d798fa -r c3cdca7f40a2 data_manager/data_manager_snpEff_databases.xml
--- a/data_manager/data_manager_snpEff_databases.xml Tue Mar 10 10:12:26 2026 +0000
+++ b/data_manager/data_manager_snpEff_databases.xml Fri Mar 13 13:07:48 2026 +0000
@@ -16,7 +16,7 @@
diff -r 617d95d798fa -r c3cdca7f40a2 data_manager/data_manager_snpEff_download.py
--- a/data_manager/data_manager_snpEff_download.py Tue Mar 10 10:12:26 2026 +0000
+++ b/data_manager/data_manager_snpEff_download.py Fri Mar 13 13:07:48 2026 +0000
@@ -47,18 +47,14 @@
def getSnpeffVersion():
snpeff_version = 'SnpEff ?.?'
- stderr_path = 'snpeff.err'
- args = ['snpEff', '-h']
- with open(stderr_path, 'w') as stderr_fh:
- return_code = subprocess.call(args=args, shell=False, stderr=stderr_fh.fileno())
- if return_code != 255:
- sys.exit(return_code)
- with open(stderr_path) as fh:
- for line in fh:
- m = re.match(r'^[Ss]npEff version (SnpEff)\s*(\d+\.\d+).*$', line)
- if m:
- snpeff_version = m.groups()[0] + m.groups()[1]
- break
+ args = ['snpEff', '-version']
+ try:
+ version_output = subprocess.check_output(args, shell=False).decode()
+ except subprocess.CalledProcessError as e:
+ sys.exit(e.returncode)
+ m = re.match(r'^(SnpEff)\s*(\d+\.\d+).*$', version_output)
+ if m:
+ snpeff_version = m.groups()[0] + m.groups()[1]
return snpeff_version
@@ -101,34 +97,40 @@
genome_path = os.path.join(data_dir, genome_version)
snpeff_version = getSnpeffVersion()
key = snpeff_version + '_' + genome_version
+ db_version = None
+ genomedb_name = regulationdb_name = ""
+
if os.path.isdir(genome_path):
for dirpath, _, files in os.walk(genome_path):
for fname in files:
if fname.startswith('snpEffectPredictor'):
# if snpEffectPredictor.bin download succeeded
- name = genome_version + (' : ' + organism if organism else '')
- data_table_entry = dict(
- key=key,
- version=getSnpeffDbVersion(os.path.join(dirpath, fname)) or snpeff_version,
- value=genome_version,
- name=name,
- path=data_dir
- )
- _add_data_table_entry(data_manager_dict, 'snpeffv_genomedb', data_table_entry)
+ genomedb_name = genome_version + (' : ' + organism if organism else '')
+ db_version = getSnpeffDbVersion(os.path.join(dirpath, fname)) or snpeff_version
else:
m = re.match(regulation_pattern, fname)
if m:
- name = m.groups()[0]
- data_table_entry = dict(key=key, version=snpeff_version, genome=genome_version, value=name, name=name)
- _add_data_table_entry(data_manager_dict, 'snpeffv_regulationdb', data_table_entry)
- return data_manager_dict
-
+ regulationdb_name = m.groups()[0]
-def _add_data_table_entry(data_manager_dict, data_table, data_table_entry):
- data_manager_dict['data_tables'] = data_manager_dict.get('data_tables', {})
- data_manager_dict['data_tables'][data_table] = data_manager_dict['data_tables'].get(data_table, [])
- data_manager_dict['data_tables'][data_table].append(data_table_entry)
- return data_manager_dict
+ if db_version:
+ data_table_entry = dict(
+ key=key,
+ version=db_version,
+ value=genome_version,
+ name=genomedb_name,
+ path=f"snpEff/{db_version}/data"
+ )
+ data_manager_dict['data_tables']['snpeffv_genomedb'].append(data_table_entry)
+
+ if regulationdb_name:
+ data_table_entry = dict(
+ key=key,
+ version=db_version or snpeff_version,
+ genome=genome_version,
+ value=regulationdb_name,
+ name=regulationdb_name
+ )
+ data_manager_dict['data_tables']['snpeffv_regulationdb'].append(data_table_entry)
def main():
@@ -143,7 +145,12 @@
params = json.load(fh)
target_directory = params['output_data'][0]['extra_files_path']
os.mkdir(target_directory)
- data_manager_dict = {}
+ data_manager_dict = {
+ 'data_tables': {
+ 'snpeffv_genomedb': [],
+ 'snpeffv_regulationdb': []
+ }
+ }
# Create SnpEff Reference Data
for genome_version, organism in zip(options.genome_version.split(','), getOrganismNames(options.genome_version, options.organism).split(',')):
diff -r 617d95d798fa -r c3cdca7f40a2 data_manager_conf.xml
--- a/data_manager_conf.xml Tue Mar 10 10:12:26 2026 +0000
+++ b/data_manager_conf.xml Fri Mar 13 13:07:48 2026 +0000
@@ -19,9 +19,9 @@
- snpEff/v4_3/data
+ ${path}
- ${GALAXY_DATA_MANAGER_DATA_PATH}/snpEff/v4_3/data
+ ${GALAXY_DATA_MANAGER_DATA_PATH}/${path}
abspath