6 from htsworkflow.submission.submission import Submission
8 from htsworkflow.util.rdfhelp import \
14 from django.conf import settings
15 from django.template import Context, loader
17 LOGGER = logging.getLogger(__name__)
19 class TrackHubSubmission(Submission):
20 def __init__(self, name, model, host):
21 super(TrackHubSubmission, self).__init__(name, model, host)
23 def make_hub(self, result_map):
25 for lib_id, result_dir in result_map.items():
26 an_analysis = self.get_submission_node(result_dir)
27 metadata = self.get_sample_metadata(an_analysis)
28 if len(metadata) == 0:
29 errmsg = 'No metadata found for {0}'
30 LOGGER.error(errmsg.format(str(an_analysis),))
32 elif len(metadata) > 1:
33 errmsg = 'Confused there are more than one sample for %s'
34 LOGGER.debug(errmsg % (str(an_analysis),))
35 metadata = metadata[0]
36 samples.append(metadata)
38 template = loader.get_template('trackDb.txt')
42 return str(template.render(context))
44 def make_manifest(self, result_map):
46 for lib_id, result_dir in result_map.items():
47 an_analysis = self.get_submission_node(result_dir)
48 metadata = self.get_manifest_metadata(an_analysis)
49 files.extend(metadata)
51 template = loader.get_template('manifest.txt')
55 return str(template.render(context))
57 def get_sample_metadata(self, analysis_node):
58 """Gather information for filling out sample section of a SOFT file
60 query_template = loader.get_template('trackhub_samples.sparql')
63 'submission': str(analysis_node.uri),
64 'submissionSet': str(self.submissionSetNS[''].uri),
67 results = self.execute_query(query_template, context)
70 def get_manifest_metadata(self, analysis_node):
71 query_template = loader.get_template('trackhub_manifest.sparql')
74 'submission': str(analysis_node.uri),
75 'submissionSet': str(self.submissionSetNS[''].uri),
77 results = self.execute_query(query_template, context)