|
3
|
1 from __future__ import print_function
|
|
|
2
|
|
|
3 import gzip
|
|
|
4 import logging
|
|
|
5 import os
|
|
|
6 import shutil
|
|
|
7 import subprocess
|
|
|
8 import tempfile
|
|
|
9 import json
|
|
|
10
|
|
|
11 import pysam
|
|
|
12 from bx.seq.twobit import TWOBIT_MAGIC_NUMBER, TWOBIT_MAGIC_NUMBER_SWAP, TWOBIT_MAGIC_SIZE
|
|
|
13
|
|
|
14 from galaxy.datatypes import metadata
|
|
|
15 from galaxy.datatypes.metadata import DictParameter, ListParameter, MetadataElement, MetadataParameter
|
|
|
16
|
|
|
17 from binary import Binary
|
|
|
18 from text import Json
|
|
|
19
|
|
|
20 log = logging.getLogger(__name__)
|
|
|
21
|
|
|
22 class pppmodel(Json):
|
|
|
23 file_ext = ".model"
|
|
|
24 #edam_format = "format_3746"
|
|
|
25
|
|
|
26 MetadataElement(name="models", default=[], desc="Models", param=MetadataParameter, readonly=True, visible=False, optional=True, no_value=[])
|
|
|
27 MetadataElement(name="npop_dict", default={}, desc="Model population count", param=MetadataParameter, readonly=True, visible=False, optional=True, no_value={})
|
|
|
28
|
|
|
29 # Update as format becomes more defined
|
|
|
30 def set_peek(self, dataset, is_multi_byte=False):
|
|
|
31 if not dataset.dataset.purged:
|
|
|
32 dataset.blurb = "Model File"
|
|
|
33
|
|
|
34 # Update as format becomes more defined
|
|
|
35 '''
|
|
|
36 def sniff(self, filename):
|
|
|
37 try:
|
|
|
38 json.loads(filename.file_name)
|
|
|
39 return True
|
|
|
40 except Exception:
|
|
|
41 return False
|
|
|
42 '''
|
|
|
43
|
|
|
44 def set_meta(self, dataset, **kwd):
|
|
|
45 if dataset.has_data():
|
|
|
46 with open(dataset.file_name) as model_file:
|
|
|
47 try:
|
|
|
48 model_list = json.load(model_file)
|
|
|
49 except Exception:
|
|
|
50 return
|
|
|
51
|
|
|
52 # Assign models
|
|
|
53 models = [model_dict['name'] for model_dict in model_list if 'name' in model_dict]
|
|
|
54
|
|
|
55 # Assign population count per model
|
|
|
56 npop_dict = dict([(model_dict['name'], len(model_dict['pops'])) for model_dict in model_list if 'name' in model_dict])
|
|
|
57
|
|
|
58 dataset.metadata.models = models
|
|
|
59 dataset.metadata.npop_dict = npop_dict
|