Mercurial > repos > jjohnson > data_manager_snpeff
comparison data_manager/data_manager_snpEff_databases.py @ 5:78bcf4ac437c
Use tool_data_table with key and version columns added to allow for multiple versions in a .loc file
author | Jim Johnson <jj@umn.edu> |
---|---|
date | Tue, 13 Jan 2015 12:54:20 -0600 |
parents | c6769a700e55 |
children | a329eda0cdff |
comparison
equal
deleted
inserted
replaced
4:6a378d0f4856 | 5:78bcf4ac437c |
---|---|
16 | 16 |
17 def stop_err(msg): | 17 def stop_err(msg): |
18 sys.stderr.write(msg) | 18 sys.stderr.write(msg) |
19 sys.exit(1) | 19 sys.exit(1) |
20 | 20 |
21 def getSnpeffVersion(jar_path): | |
22 snpeff_version = 'SnpEff ?.?' | |
23 (snpEff_dir,snpEff_jar) = os.path.split(jar_path) | |
24 stderr_path = 'snpeff.err' | |
25 stderr_fh = open(stderr_path,'w') | |
26 args = [ 'java','-jar', ] | |
27 args.append( snpEff_jar ) | |
28 args.append( '-h' ) | |
29 proc = subprocess.Popen( args=args, shell=False, cwd=snpEff_dir, stderr=stderr_fh.fileno() ) | |
30 return_code = proc.wait() | |
31 if return_code != 255: | |
32 sys.exit( return_code ) | |
33 stderr_fh.close() | |
34 fh = open(stderr_path,'r') | |
35 for line in fh: | |
36 m = re.match('^[Ss]npEff version (SnpEff)\s*(\d+\.\d+).*$',line) | |
37 if m: | |
38 snpeff_version = m.groups()[0] + m.groups()[1] | |
39 break | |
40 fh.close() | |
41 return snpeff_version | |
42 | |
21 def fetch_databases(data_manager_dict, target_directory, jar_path): | 43 def fetch_databases(data_manager_dict, target_directory, jar_path): |
22 (snpEff_dir,snpEff_jar) = os.path.split(jar_path) | 44 (snpEff_dir,snpEff_jar) = os.path.split(jar_path) |
23 if not os.path.exists(target_directory): | 45 if not os.path.exists(target_directory): |
24 os.makedirs(target_directory) | 46 os.makedirs(target_directory) |
25 databases_path = os.path.join( target_directory, 'databases.out' ) | 47 databases_path = os.path.join( target_directory, 'databases.out' ) |
33 proc = subprocess.Popen( args=args, shell=False, cwd=snpEff_dir, stdout=databases_output.fileno() ) | 55 proc = subprocess.Popen( args=args, shell=False, cwd=snpEff_dir, stdout=databases_output.fileno() ) |
34 return_code = proc.wait() | 56 return_code = proc.wait() |
35 if return_code: | 57 if return_code: |
36 sys.exit( return_code ) | 58 sys.exit( return_code ) |
37 databases_output.close() | 59 databases_output.close() |
60 snpeff_version = getSnpeffVersion(jar_path) | |
38 try: | 61 try: |
39 data_manager_dict['data_tables'] = data_manager_dict.get( 'data_tables', {} ) | 62 data_manager_dict['data_tables'] = data_manager_dict.get( 'data_tables', {} ) |
40 data_manager_dict['data_tables']['snpeff4_databases'] = data_manager_dict['data_tables'].get( 'snpeff4_databases', [] ) | 63 data_manager_dict['data_tables']['snpeffv_databases'] = data_manager_dict['data_tables'].get( 'snpeffv_databases', [] ) |
41 data_table_entries = [] | 64 data_table_entries = [] |
42 fh = open(databases_path,'r') | 65 fh = open(databases_path,'r') |
43 for i,line in enumerate(fh): | 66 for i,line in enumerate(fh): |
44 fields = line.split('\t') | 67 fields = line.split('\t') |
45 if len(fields) >= 2: | 68 if len(fields) >= 2: |
48 continue | 71 continue |
49 #snpeff test genome | 72 #snpeff test genome |
50 if genome_version == '30c2c903' or fields[1].strip() == 'TestCase' or fields[1].strip().startswith('Test_'): | 73 if genome_version == '30c2c903' or fields[1].strip() == 'TestCase' or fields[1].strip().startswith('Test_'): |
51 continue | 74 continue |
52 description = fields[1].strip() + ' : ' + genome_version | 75 description = fields[1].strip() + ' : ' + genome_version |
53 data_table_entries.append(dict(value=genome_version, name=description)) | 76 key = snpeff_version + '_' + genome_version |
54 data_manager_dict['data_tables']['snpeff4_databases'] = data_table_entries | 77 data_table_entries.append(dict(key=key, version=snpeff_version, value=genome_version, name=description)) |
78 data_manager_dict['data_tables']['snpeffv_databases'] = data_table_entries | |
55 except Exception, e: | 79 except Exception, e: |
56 stop_err( 'Error parsing %s %s\n' % (config,str( e )) ) | 80 stop_err( 'Error parsing %s %s\n' % (config,str( e )) ) |
57 else: | 81 else: |
58 fh.close() | 82 fh.close() |
59 return data_manager_dict | 83 return data_manager_dict |